Patchable (Indistinguishability) Obfuscation: iO for evolving software
Prabhanjan
Ananth
Amit
Sahai
Abhishek
Jain
Patchable (Indistinguishability) Obfuscation: iO for evolving - - PowerPoint PPT Presentation
Patchable (Indistinguishability) Obfuscation: iO for evolving software Prabhanjan Abhishek Amit Ananth Jain Sahai Software Evolution 1990 Software Evolution 1990 1995 Software Evolution 1997 1990 1995 Software Evolution 1997 1990
Patchable (Indistinguishability) Obfuscation: iO for evolving software
Prabhanjan
Ananth
Amit
Sahai
Abhishek
Jain
1990
1990 1995
1990 1995 1997
1990 1995 1997 2000
1990 1995 1997 2000 2003
1990 1995 1997 2000 2003 2007
1990 1995 1997 2000 2003 2007 2010
1990 1995 1997 2000 2003 2007 2013 2010
1990 1995 1997 2000 2003 2007 2013 2010 2016
Why does software evolve?
…
How to model Software Evolution?
Patch P
Update
Goal: To protect evolving software
Ensure software privacy from the user yet allowing for software updates
M M
Why doesn't (static) iO suffice?
iO(M)
M M Update
Why doesn't (static) iO suffice?
iO(M) P M’
M M Update M’
Why doesn't (static) iO suffice?
iO(M) iO(M’) P M’
M M Update M iO( P M
Communication Complexity?
|iO(M’)| ~ |M’|
Communication complexity
~
P
Patchable iO
M M
Patchable iO
iO(M) P GenPatch P
M M ApplyPatch M’
Patchable iO
iO(M) P GenPatch P
Syntax: Patchable iO
M
,
=
M P M’
Syntax: Patchable iO
M
,
=
M P M’
Efficiency:
P
Definitional Issues
M0 M1 M2
P1 P2
Sequential Patching:
Want: Unbounded number of patches (chosen adaptively)
M0 M1 M2
P1 P2
M M M M M M
P
M M M M M M
P
P P P P P
M’ M’ M’ M’ M’ M’
M’ M’ M’ M’ M’ M’
Multi-program Patchable iO
Summary of Requirements
(so far)
Correctness and Security?
Single-Program Patchable iO
,
M2 M1 P2 M1
,
= ApplyPatch
M0 P1 ML
M1=Update(M0, P1) M2=Update(M1, P2) ML=Update(ML-1, PL)
≡ ≡ ≡
= ApplyPatch
,
ML-1 PL
= ApplyPatch
Single-Program Patchable iO
,
M2 M1 P2 M1
,
= ApplyPatch
M0 P1 ML
M1=Update(M0, P1) M2=Update(M1, P2) ML=Update(ML-1, PL)
≡ ≡ ≡
= ApplyPatch
,
ML-1 PL
= ApplyPatch
Single-Program Patchable iO
,
M2 M1 P2 M1
,
= ApplyPatch
M1 P1
,
ML ML-1 PL
M1=Update(M0, P1) M2=Update(M1, P2) ML=Update(ML-1, PL)
≡ ≡ ≡
= ApplyPatch = ApplyPatch
Single-Program Patchable iO
(M0)0, (M1)0 (Mb)0 (P0)i, (P1)i (Pb)i
Adversary Challenger
(M0)j ≡ (M1)j where (M0)j = Update( (M0)j-1, (P0)j) (M1)j = Update( (M1)j-1, (P1)j)
Single-Program Patchable iO
(M0)0, (M1)0 (Mb)0 (P0)i, (P1)i (Pb)i
Adversary Challenger
(M0)j ≡ (M1)j where (M0)j = Update( (M0)j-1, (P0)j) (M1)j = Update( (M1)j-1, (P1)j)
Correctness and Security can be generalized to multiprogram setting in a similar manner
there exists multi-program patchable iO for TMs*.
* The input length to the TMs is fixed a priori
In paper, we also consider
processes
Incremental/ Updatable Cryptography
…
Concurrent work: Incremental Obfuscation [Garg-Pandey’15]
Mx=⊥
Set x := y
Functional Encryption for Turing Machines
Functional Key of M Ciphertext of y
Let Mx be an input-less machine that outputs M(x)
Mx=⊥
Set x := y
Functional Encryption for Turing Machines
Functional Key of M Ciphertext of y
Mx=y
Let Mx be an input-less machine that outputs M(x)
Mx=⊥
Set x := y
Functional Encryption for Turing Machines
Functional Key of M Ciphertext of y
ADVANTAGE: Simple construction!
previous construction by A-Sahai’16 from iO is more involved
Other Applications of Patchable iO
Technical Overview
Template of Single-Program Patchable iO
Encode(M)
+
Obf (
Template of Single-Program Patchable iO Patchable Obfuscation of M
Input = ( Encode(M), x ) Use an encoding scheme to encode M
Encode(M)
+
Obf (
Template of Single-Program Patchable iO Patchable Obfuscation of M
Input = ( Encode(M), x ) Evaluation
On input x,
What properties should the encoding scheme satisfy?
Encode(M)
Obf (
+ Patchable Obfuscation of M Template of Single-Program Patchable iO
Properties of Encoding Scheme
Decoding ‘Encode(M)’ should yield M
Encode(M0) ≈c Encode(M1)
For patch P: Encode(M) + Encode(P) := Encode(M’)
Properties of Encoding Scheme
We call such a scheme,
patchable encoding scheme
Properties of Encoding Scheme
We call such a scheme,
patchable encoding scheme
C a n d i d a t e : F u l l y h
p h i c e n c r y p t i
!
Encode(M)
Obf (
+ Patchable Obfuscation of M Template of Single-Program Patchable iO
Issue: Adversary can apply encoded patches of his choice
Encode(M)
Obf (
+ Patchable Obfuscation of M Template of Single-Program Patchable iO
Issue: Adversary can apply encoded patches of his choice Fix: Sign the patches!
P Encode(P) , sgnPtch Encode(M)
Obf (
+
M
Input = ( Encode(M), Encode(P), sgnPtch, x )
Encode(M)
Obf (
+
M P Encode(P) , sgnPtch
Issue: Adversary can apply patches out of order Apply P50, P4, P10, …
Encode(M)
Obf (
+
M Encode(P) , sgnPtch
Issue: Adversary can apply patches out of order Fix: Authenticate the patched machine!
P
Encode(M)
Obf (
+
M Encode(P) , sgnM/c
sgnM/c ensures that Encode(P) is only applied to Encode(M)
P sgnM/c
signature on Encode(M’)
Encode(M)
+
STATE:= Encode(M), SK
Encode(M)
+
STATE:= Encode(M), SK
Update
Encode(P)
P
Encode(M’)
Sign Encode(M’) to get sgnM/c
Encode(P) + sgnM/c
Issue: Authority needs to maintain large state! Not scalable to multiple programs
STATE:= Encode(M), SK
Issue: Authority needs to maintain large state! Solution: Reverse delegation
STATE:= Encode(M), SK
Issue: Authority needs to maintain large state! Solution: Reverse delegation (delegate to client)
STATE:= Encode(M), SK
TOOL: Adaptive garbled TMs for persistent memory
[Canetti-Chen-Holmgren-Raykova’16, A-Chen-Chung-Lin-Lin’16]
TOOL: Adaptive garbled TMs for persistent memory
[Canetti-Chen-Holmgren-Raykova’16, A-Chen-Chung-Lin-Lin’16]
For simpler updates, can use garbled RAMs based on owfs
Single-Program to Multi-Program?
user
users
Idea: Maintain the garbling key at user’s end
Single-Program to Multi-Program?
user
users
Idea: Maintain the garbling key at user’s end
TOOL: Functional Encryption [Yao’86, BSW’11, GKPVZ’13, GGHRSW’13]
How to implement the template of single-program patchable iO?
Encode(M)
+
Obf (
Recall: Template of Single-Program Patchable iO Patchable Obfuscation of M
REQUIRE:
iO for Turing machines construction with the above structure
Encode(M)
+
Obf (
Recall: Template of Single-Program Patchable iO Patchable Obfuscation of M
REQUIRE:
iO for Turing machines construction with the above structure
i O w i t h c
s t a n t
e r h e a d
A-Jain-Sahai'15
(TECHNICAL PART)
patchable
update …
SEE PAPER