patchable indistinguishability obfuscation io for
play

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


  1. Patchable (Indistinguishability) Obfuscation: iO for evolving software Prabhanjan Abhishek Amit Ananth Jain Sahai

  2. Software Evolution 1990

  3. Software Evolution 1990 1995

  4. Software Evolution 1997 1990 1995

  5. Software Evolution 1997 1990 1995 2000

  6. Software Evolution 1997 1990 1995 2003 2000

  7. Software Evolution 1997 1990 1995 2003 2000 2007

  8. Software Evolution 1997 1990 2010 1995 2003 2000 2007

  9. Software Evolution 1997 1990 2010 1995 2003 2000 2013 2007

  10. Software Evolution 1997 1990 2010 2016 1995 2003 2000 2013 2007

  11. Why does software evolve? 1. Changes in hardware requirements 2. Changes in functionality requirements 3. Resolve compatibility issues 4. Performance of the system has to be upgraded 5. Fixing bugs …

  12. How to model Software Evolution?

  13. M Patch P Update M’

  14. Goal: To protect evolving software Ensure software privacy from the user yet allowing for software updates

  15. This Work: iO for Evolving Software

  16. This Work: Patchable iO

  17. Why doesn't (static) iO suffice? iO( M ) M M

  18. Why doesn't (static) iO suffice? iO( M ) M M P Update M’

  19. Why doesn't (static) iO suffice? iO( M ) M M P Update iO( M’ ) M’ M’

  20. Communication Complexity? iO( M M P Update |iO( M’ )| ~ | M’ | M M

  21. Patchable iO Communication complexity P ~

  22. Patchable iO iO( M ) M M P P GenPatch

  23. Patchable iO iO( M ) M M P P ApplyPatch GenPatch M’

  24. Syntax: Patchable iO • Setup (1 k ) = sk • Obfuscate ( sk , M ) = M • GenPatch ( sk , P ) = P • ApplyPatch M M’ = P ,

  25. Syntax: Patchable iO • Setup (1 k ) = sk • Obfuscate ( sk , M ) = M Efficiency: • GenPatch ( sk , P ) = P | | ~ | P | P • ApplyPatch M M’ = P ,

  26. Definitional Issues

  27. 1. How to Apply Patches

  28. 1. How to Apply Patches Sequential Patching: P 1 P 2 M 0 M 1 M 2

  29. 2. How many Patches?

  30. 2. How many Patches? Want: Unbounded number of patches (chosen adaptively ) P 1 P 2 M 0 M 1 M 2

  31. 3. Patching Multiple Programs M M P M M M M

  32. 3. Patching Multiple Programs P P M M P M M P M M P P

  33. 3. Patching Multiple Programs M’ M’ M’ M’ M’ M’

  34. Multi-program Patchable iO M’ M’ M’ M’ M’ M’

  35. Summary of Requirements (so far) • Patch encoding size only depends on patch size • Patches can modify the program arbitrarily - modeled as Turing machine • Unbounded number of patches • Support for patching multiple programs

  36. Correctness and Security?

  37. Single-Program Patchable iO 1. Correctness for Sequential Patching • For every TM M 0 and patch sequence P 1 ,…,P L M 1 =Update( M 0, P 1 ) ≡ M 1 = ApplyPatch M 0 P 1 , M 1 P 2 M 2 =Update( M 1, P 2 ) M 2 = ApplyPatch ≡ , P L M L-1 M L M L =Update( M L-1, P L ) = ApplyPatch ≡ ,

  38. Single-Program Patchable iO 1. Correctness for Sequential Patching • For every TM M 0 and patch sequence P 1 ,…,P L M 1 =Update( M 0, P 1 ) ≡ M 1 = ApplyPatch M 0 P 1 , M 1 P 2 M 2 =Update( M 1, P 2 ) M 2 = ApplyPatch ≡ , P L M L-1 M L M L =Update( M L-1, P L ) = ApplyPatch ≡ , • Remark 1 : Patches must be applied sequentially “in order”

  39. Single-Program Patchable iO 1. Correctness for Sequential Patching • For every TM M 0 and patch sequence P 1 ,…,P L M 1 =Update( M 0, P 1 ) ≡ M 1 = ApplyPatch M 1 P 1 , M 1 P 2 M 2 =Update( M 1, P 2 ) M 2 = ApplyPatch ≡ , P L M L-1 M L M L =Update( M L-1, P L ) = ApplyPatch ≡ , • Remark 1 : Patches must be applied sequentially “in order” • Remark 2 : Each patch can only be used once

  40. Single-Program Patchable iO 2. Security for Adaptive Patches ( M 0 ) 0 , ( M 1 ) 0 ( M b ) 0 ( P 0 ) i , ( P 1 ) i (P b ) i Adversary Challenger ( M 0 ) j = Update( ( M 0 ) j-1 , ( P 0 ) j ) ( M 0 ) j ≡ ( M 1 ) j where ( M 1 ) j = Update( ( M 1 ) j-1 , ( P 1 ) j )

  41. Single-Program Patchable iO 2. Security for Adaptive Patches ( M 0 ) 0 , ( M 1 ) 0 ( M b ) 0 ( P 0 ) i , ( P 1 ) i Correctness and Security can be generalized to multiprogram setting in a similar manner (P b ) i Adversary Challenger ( M 0 ) j = Update( ( M 0 ) j-1 , ( P 0 ) j ) ( M 0 ) j ≡ ( M 1 ) j where ( M 1 ) j = Update( ( M 1 ) j-1 , ( P 1 ) j )

  42. Our Results Theorem. Assuming sub-exp. iO for circuits and sub- exp. DDH (or sub-exp. LWE), there exists multi-program patchable iO for TMs * . In paper, we also consider other types of patching processes * The input length to the TMs is fixed a priori

  43. Incremental/ Updatable Cryptography • Incremental signatures [BGG94,…] • Incremental encryption [BGG95,…] … Concurrent work : Incremental Obfuscation [Garg-Pandey’15]

  44. Theoretical Applications

  45. Functional Encryption for Turing Machines Functional Key of M Ciphertext of y M x= ⊥ Set x := y Let M x be an input-less machine that outputs M(x)

  46. Functional Encryption for Turing Machines Functional Key of M Ciphertext of y M x= ⊥ Set M x=y x := y Let M x be an input-less machine that outputs M(x)

  47. Functional Encryption for Turing Machines Functional Key of M Ciphertext of y M x= ⊥ Set x := y ADVANTAGE: Simple construction! previous construction by A-Sahai’16 from iO is more involved

  48. Other Applications of Patchable iO • Multi-Input Functional Encryption for TMs • iO for TMs with unbounded input length - requires reusable patching mechanism

  49. Technical Overview

  50. Template of Single-Program Patchable iO

  51. Template of Single-Program Patchable iO Patchable Obfuscation of M Obf ( 1. Decode ) + Encode( M ) 2. Evaluate M on x Input = ( Encode(M), x ) Use an encoding scheme to encode M

  52. Template of Single-Program Patchable iO Patchable Obfuscation of M Obf ( 1. Decode ) + Encode( M ) 2. Evaluate M on x Input = ( Encode(M), x ) Evaluation On input x, • Evaluate obfuscated ckt on (Encode(M),x) to get M(x)

  53. Template of Single-Program Patchable iO Patchable Obfuscation of M Obf ( 1. Decode ) + Encode( M ) 2. Evaluate M on x What properties should the encoding scheme satisfy? 1. Correctness 2. Hiding 3. Patching

  54. Properties of Encoding Scheme 1. Correctness: Decoding ‘Encode( M )’ should yield M 2. Hiding: Encode( M 0 ) ≈ c Encode( M 1 ) 3. Patching: For patch P: Encode( M ) + Encode( P ) := Encode( M’ )

  55. Properties of Encoding Scheme We call such a scheme, patchable encoding scheme

  56. Properties of Encoding Scheme e : a t d i d n a C c i h p r o m o m o h y l l u F ! n o i t p y r c n e We call such a scheme, patchable encoding scheme

  57. Template of Single-Program Patchable iO Patchable Obfuscation of M Obf ( 1. Decode ) + Encode( M ) 2. Evaluate M on x Issue: Adversary can apply encoded patches of his choice

  58. Template of Single-Program Patchable iO Patchable Obfuscation of M Obf ( 1. Decode ) + Encode( M ) 2. Evaluate M on x Issue: Adversary can apply encoded patches of his choice Fix: Sign the patches!

  59. M P Encode( M ) + Obf ( ) Encode( P ) , sgn Ptch 1. Verify 2. Decode +Upd. 3. Evaluate M on x Input = ( Encode(M), Encode(P), sgn Ptch , x )

  60. M P Encode( M ) + Obf ( ) Encode( P ) , sgn Ptch 1. Verify 2. Decode +Upd. 3. Evaluate M on x Issue: Adversary can apply patches out of order Apply P 50 , P 4 , P 10 , …

  61. M P Encode( M ) + Obf ( ) Encode( P ) , sgn Ptch 1. Verify 2. Decode +Upd. 3. Evaluate M on x Issue: Adversary can apply patches out of order Fix: Authenticate the patched machine!

  62. M P Encode( M ) + Obf ( ) Encode( P ) , sgn M/c 1. Verify 2. Decode +Upd. sgn M/c 3. Evaluate M on x signature on Encode(M’) sgn M/c ensures that Encode(P) is only applied to Encode(M)

  63. Encode( M ) + 1. Verify STATE:= Encode(M), SK ( 3. Evaluate M on x ) 2. Decode + Update

  64. Encode( M ) + 1. Verify STATE:= Encode(M), SK ( 3. Evaluate M on x ) 2. Decode + Update P Encode( P ) Update Encode( M’ ) Encode( P ) Sign Encode( M’ ) to get sgn M/c + sgn M/c

  65. STATE:= Encode(M), SK Issue: Authority needs to maintain large state! Not scalable to multiple programs

  66. STATE:= Encode(M), SK Issue: Authority needs to maintain large state! Solution: Reverse delegation

  67. STATE:= Encode(M), SK Issue: Authority needs to maintain large state! Solution: Reverse delegation (delegate to client)

  68. Implementation Issues 1. The state should be hidden from the user - state contains secret information 2. How does Apple generate secure patches? - It no longer has access to the state

  69. Implementation Issues 1. The state should be hidden from the user - state contains secret information 2. How does Apple generate secure patches? - It no longer has access to the state TOOL: Adaptive garbled TMs for persistent memory [Canetti-Chen-Holmgren-Raykova’16, A-Chen-Chung-Lin-Lin’16]

Recommend


More recommend