adaptively secure succinct garbled ram with persistent
play

Adaptively Secure Succinct Garbled RAM with Persistent Memory Ran - PowerPoint PPT Presentation

Adaptively Secure Succinct Garbled RAM with Persistent Memory Ran Canetti, Yilei Chen, Justin Holmgren, Mariana Raykova DIMACS workshop MIT Media Lab June 8~10, 2016 1 : June 11, 2016, Boston, heavy snow. 2 : June 11, 2016, Boston, heavy


  1. Starting point: Canetti-Holmgren’s selective secure scheme. High-level idea of the Canetti-Holmgren construction: Garble the CPU-step circuit, encrypt and authenticate the intermediate states, memories. Canetti-Holmgren scheme details: Fixed-transcript => Fixed-access => Fixed-address => Fully secure Indistinguishable as long as q can be different Memory content transc = (q, op) are the same. [encrypt the state] can be different [KLW-technique] [encrypt the data] 58

  2. Starting point: Canetti-Holmgren’s selective secure scheme. High-level idea of the Canetti-Holmgren construction: Garble the CPU-step circuit, encrypt and authenticate the intermediate states, memories. Canetti-Holmgren scheme details: Fixed-transcript => Fixed-access => Fixed-address => Fully secure Indistinguishable as long as q can be different Memory content Hide access transc = (q, op) are the same. [encrypt the state] can be different pattern. [KLW-technique] [encrypt the data] [oram] 59

  3. Starting point: Canetti-Holmgren’s selective secure scheme. High-level idea of the Canetti-Holmgren construction: Garble the CPU-step circuit, encrypt and authenticate the intermediate states, memories. Canetti-Holmgren scheme details: Fixed-transcript => Fixed-access => Fixed-address => Fully secure Indistinguishable as long as q can be different Memory content Hide access transc = (q, op) are the same. [encrypt the state] can be different pattern. [KLW-technique] [encrypt the data] [oram] 60

  4. Canetti-Holmgren (ITCS16) 61

  5. Canetti-Holmgren (ITCS16) + Zoom-in the core step: 62

  6. Canetti-Holmgren (ITCS16) + Zoom-in the core step: Koppula-Lewko-Waters (STOC15) (iO-friendly) Iterator (iO-friendly) Accumulator (iO-friendly) Splittable signature 63

  7. Canetti-Holmgren (ITCS16) + Zoom-in the core step: Koppula-Lewko-Waters (STOC15) (iO-friendly) Iterator (iO-friendly) Accumulator (iO-friendly) Splittable signature Accumulator iO-friendly Merkle-tree What is written in eprint 2015/1074 64

  8. Canetti-Holmgren (ITCS16) + Zoom-in the core step: Koppula-Lewko-Waters (STOC15) (iO-friendly) Iterator G(D 0 ) (iO-friendly) Accumulator (iO-friendly) Splittable signature e z i l a i t i n i Accumulator iO-friendly Merkle-tree What is written in eprint 2015/1074 65

  9. Canetti-Holmgren (ITCS16) + Zoom-in the core step: Koppula-Lewko-Waters (STOC15) (iO-friendly) Iterator G(D 0 ) (iO-friendly) Accumulator (iO-friendly) Splittable signature e z i l a i t i n i G(P i+1 ) e t a c t i n e h t u A Accumulator iO-friendly Merkle-tree key What is written in eprint 2015/1074 66

  10. Canetti-Holmgren (ITCS16) + Zoom-in the core step: Koppula-Lewko-Waters (STOC15) (iO-friendly) Iterator G(D 0 ) (iO-friendly) Accumulator (iO-friendly) Splittable signature e z i l a i t i n i G(P i+1 ) e t a c t i n e h t u A Accumulator iO-friendly Merkle-tree key update G(D i+1 ) What is written in eprint 2015/1074 67

  11. Canetti-Holmgren (ITCS16) + Zoom-in the core step: ++ Zoom-in the accumulator 68

  12. Canetti-Holmgren (ITCS16) + Zoom-in the core step: ++ Zoom-in the accumulator Properties needed for the Accumulator - Normal property like a Merkle-tree. #Merkletree 69

  13. Canetti-Holmgren (ITCS16) + Zoom-in the core step: ++ Zoom-in the accumulator Properties needed for the Accumulator - Normal property like a Merkle-tree. #Merkletree 70

  14. Canetti-Holmgren (ITCS16) + Zoom-in the core step: ++ Zoom-in the accumulator Properties needed for the Accumulator - Normal property like a Merkle-tree. #Merkletree 71

  15. Canetti-Holmgren (ITCS16) + Zoom-in the core step: ++ Zoom-in the accumulator Properties needed for the Accumulator - Normal property like a Merkle-tree. #Merkletree 72

  16. y* Canetti-Holmgren (ITCS16) + Zoom-in the core step: ++ Zoom-in the accumulator Properties needed for the Accumulator - Normal property like a Merkle-tree. - Enforcement (iO-friendly property): there’s only one preimage x* of the current root value y*. x* #Merkletree 73

  17. y* Canetti-Holmgren (ITCS16) + Zoom-in the core step: ++ Zoom-in the accumulator Properties needed for the Accumulator - Normal property like a Merkle-tree. - Enforcement (iO-friendly property): there’s only one preimage x* of the current root value y*. Impossible information theoretically. x* #Merkletree 74

  18. y* Canetti-Holmgren (ITCS16) + Zoom-in the core step: ++ Zoom-in the accumulator Properties needed for the Accumulator - Normal property like a Merkle-tree. - Enforcement (iO-friendly property): there’s only one preimage x* of the current root value y*. Impossible information theoretically. x* #Merkletree KLW’s computational enforcement: Normal.Gen( )->H Enforce.Gen( x*, y*)->H*, H ≈ H* 75

  19. y* Canetti-Holmgren (ITCS16) + Zoom-in the core step: ++ Zoom-in the accumulator Properties needed for the Accumulator - Normal property like a Merkle-tree. - Enforcement (iO-friendly property): there’s only one preimage x* of the current root value y*. Impossible information theoretically. x* #Merkletree KLW’s computational enforcement: Normal.Gen( )->H Enforce.Gen( x*, y*)->H*, H ≈ H* Alternatively: SSB hashing => [Ananth-Chen-Chung-Lin-Lin] 76

  20. Selective Enforcing Adaptive Enforcing 77

  21. Selective Enforcing Adaptive Enforcing x* <= Adversary 78

  22. Selective Enforcing Adaptive Enforcing x* <= Adversary Gen( ) => H Enforcing(x*, y*) => H* 79

  23. Selective Enforcing Adaptive Enforcing x* <= Adversary Gen( ) => H Gen( ) => H Enforcing(x*, y*) => H* 80

  24. Selective Enforcing Adaptive Enforcing x* <= Adversary Gen( ) => H x* <= Adversary(H) Gen( ) => H Enforcing(x*, y*) => H* 81

  25. Selective Enforcing Adaptive Enforcing x* <= Adversary Gen( ) => H x* <= Adversary(H) Gen( ) => H Enforcing(x*, y*) => H* Enforcing(x*, y*) => H* 82

  26. Selective Enforcing Adaptive Enforcing x* <= Adversary Gen( ) => H x* <= Adversary(H) Gen( ) => H Enforcing(x*, y*) => H* Enforcing(x*, y*) => H* ( … wait, what?) 83

  27. #Mindblowing 84

  28. Fact I Can separate the key 85

  29. key = hk + vk G(D 0 ) e z i l a i t i n i G(P i+1 ) e t a c t i n e h t u A Accumulator iO-friendly Merkle-tree key update G(D i+1 ) What is written in eprint 2015/1074 86

  30. key = hk + vk G(D 0 ) hk e z i l a i t i n i G(P i+1 ) e t a c t i n e h t u A Accumulator vk iO-friendly Merkle-tree key update G(D i+1 ) hk What is written in eprint 2015/1074 87

  31. Adaptive Enforcing hk 88

  32. Adaptive Enforcing hk x* <= Adversary( hk ) 89

  33. Adaptive Enforcing hk x* <= Adversary( hk ) ≈ vk vk*(x*) 90

  34. Fact II If you believe diO ... 91

  35. Adaptive Enforcing key = hk + vk 92

  36. Adaptive Enforcing key = hk + vk hk always_hk_Gen( ) -> hk := CRHF key h 93

  37. Adaptive Enforcing key = hk + vk hk x* <= Adversary(H) always_hk_Gen( ) -> hk := CRHF key h 94

  38. Adaptive Enforcing key = hk + vk hk x* <= Adversary(H) vk always_hk_Gen( ) -> hk := CRHF key h normal_vk_Gen( ) -> vk vk(x,y) = diO( if h(x)=y, output 1; else: output 0 ) 95

  39. Adaptive Enforcing key = hk + vk hk x* <= Adversary(H) ≈ vk vk*(x*) always_hk_Gen( ) -> hk := CRHF key h normal_vk_Gen( ) -> vk vk(x,y) = diO( if h(x)=y, output 1; else: output 0 ) enforce_vk_Gen( x*, y* ) -> vk* vk*(x,y) = diO( if y!=y* and h(x)=y, output 1; Elseif y=y* and x=x*, output 1; Else: output 0 ) 96

  40. Fact III: If you don’t believe diO, can still do this with iO. 97

  41. From iO + preimage-bounded CRHF: c-to-1 CRHF can be constructed from discrete-log or factoring 98

  42. From iO + preimage-bounded CRHF: c-to-1 CRHF can be constructed from discrete-log or factoring enforce_vk( x*, y* ) -> vk* vk*(x,y) = diO( if y!=y* and h(x)=y, output 1; Elseif y=y* and x=x*, output 1; Else: output 0 ) 99

  43. From iO + preimage-bounded CRHF: c-to-1 CRHF can be constructed from discrete-log or factoring enforce_vk( x*, y* ) -> vk* vk*(x,y) = diO( if y!=y* and h(x)=y, output 1; Elseif y=y* and x=x*, output 1; Else: output 0 ) By diO-iO equivalence lemma [ Boyle-Chung-Pass ‘14 ]: “ If f1 and f2 differ only on polynomially many input-output values, and they are hard to find, then iO(f1) ≈ iO(f2) ” 100

Recommend


More recommend