zkpdl a language based system for zero knowledge proofs
play

ZKPDL: A Language-Based System for Zero- Knowledge Proofs and - PowerPoint PPT Presentation

ZKPDL: A Language-Based System for Zero- Knowledge Proofs and Electronic Cash Sarah Meiklejohn (UC San Diego) C. Chris Erway (Brown University) Alptekin Kpc (Brown University) Theodora Hinkle (UW Madison) Anna Lysyanskaya (Brown


  1. Sample usage of the interpreter public values secret Prover Verifier values PROOF / Interpreter Interpreter • At compile time, check program syntax, types, etc. • At run time, need all values to be proved 9

  2. Step 2: using the interpreter to write a library 10

  3. Step 2: using the interpreter to write a library Use simple procedure to create wrapper classes for interpreter 10

  4. Step 2: using the interpreter to write a library Use simple procedure to create wrapper classes for interpreter program Interpreter 10

  5. Step 2: using the interpreter to write a library Use simple procedure to create wrapper classes for interpreter publics secrets Interpreter 10

  6. Step 2: using the interpreter to write a library Use simple procedure to create wrapper classes for interpreter publics secrets PROOF Interpreter 10

  7. Step 2: using the interpreter to write a library Use simple procedure to create wrapper classes for interpreter Proof MyZKP::prove(group_map g, variable_map v, string program) { InterpreterProver p; p.check(program); p.compute(g,v); return p.prove(); } 10

  8. Step 2: using the interpreter to write a library Use simple procedure to create wrapper classes for interpreter Proof MyZKP::prove(group_map g, variable_map v, string program) { InterpreterProver p; p.check(program); p.compute(g,v); return p.prove(); } • Specify crypto protocol of choice in the program string 10

  9. Step 2: using the interpreter to write a library Use simple procedure to create wrapper classes for interpreter Proof MyZKP::prove(group_map g, variable_map v, string program) { InterpreterProver p; p.check(program); p.compute(g,v); return p.prove(); } • Specify crypto protocol of choice in the program string • Feed numeric values in and you’re done! 10

  10. Step 2: using the interpreter to write a library Use simple procedure to create wrapper classes for interpreter Proof MyZKP::prove(group_map g, variable_map v, string program) { InterpreterProver p; p.check(program); p.compute(g,v); return p.prove(); } • Specify crypto protocol of choice in the program string • Feed numeric values in and you’re done! Solves issues of reusability and of time 10

  11. Step 2: using the interpreter to write a library Use simple procedure to create wrapper classes for interpreter Proof MyZKP::prove(group_map g, variable_map v, string program) { InterpreterProver p; p.check(program); p.compute(g,v); return p.prove(); } • Specify crypto protocol of choice in the program string • Feed numeric values in and you’re done! Solves issues of reusability and of time Took 3-4 months to build interpreter, then one month to reconstruct library 10

  12. Optimizations: caching In addition to usability, can achieve improvements in efficiency 11

  13. Optimizations: caching In addition to usability, can achieve improvements in efficiency Have optimizations built into the interpreter 11

  14. Optimizations: caching In addition to usability, can achieve improvements in efficiency Have optimizations built into the interpreter • Cache powers of bases used for modular exponentiation Often have g^x*h^r mod N , numbers are 1000 bits long! Use common single- and multi-exponentiation techniques 11

  15. Optimizations: caching In addition to usability, can achieve improvements in efficiency Have optimizations built into the interpreter • Cache powers of bases used for modular exponentiation Often have g^x*h^r mod N , numbers are 1000 bits long! Use common single- and multi-exponentiation techniques • Save copy of interpreter state after compilation 11

  16. Did caching help? On the prover side, saw about a 50% speed-up using all optimizations On the verifier side, about 30% (less computation) 12

  17. Did caching help? On the prover side, saw about a 50% speed-up using all optimizations On the verifier side, about 30% (less computation) 12

  18. Did caching help? On the prover side, saw about a 50% speed-up using all optimizations On the verifier side, about 30% (less computation) 12

  19. Case study: using ZKPDL for e-cash Crypto Systems } e-cash Zero knowledge interpreter library P2P file sharing 13

  20. Case study: using ZKPDL for e-cash Crypto Systems } e-cash Zero knowledge interpreter library P2P file sharing 13

  21. Case study: using ZKPDL for e-cash Crypto Systems } e-cash Zero knowledge interpreter library P2P file sharing 13

  22. Case study: using ZKPDL for e-cash Crypto Systems } e-cash Zero knowledge interpreter library P2P file sharing 13

  23. Case study: using ZKPDL for e-cash Crypto Systems } e-cash Zero knowledge interpreter library P2P file sharing E-cash was originally developed [Ch82] as replacement for currency Now, view e-cash in context of token systems • Our usage in P2P file-sharing schemes [BCE+07] • Provides anonymous transportation ticketing (future work) 13

  24. How e-cash works [Ch82, CHL05, CLM07] 14

  25. How e-cash works [Ch82, CHL05, CLM07] Withdraw: Alice gets coins from bank 14

  26. How e-cash works [Ch82, CHL05, CLM07] Withdraw: Alice gets coins from bank 14

  27. How e-cash works [Ch82, CHL05, CLM07] Withdraw: Alice gets coins from bank Buy: Alice gives Bob coin in exchange for her purchase 14

  28. How e-cash works [Ch82, CHL05, CLM07] Withdraw: Alice gets coins from bank Buy: Alice gives Bob coin in exchange for her purchase 14

  29. How e-cash works [Ch82, CHL05, CLM07] Withdraw: Alice gets coins from bank Buy: Alice gives Bob coin in exchange for her purchase 14

  30. How e-cash works [Ch82, CHL05, CLM07] Withdraw: Alice gets coins from bank Buy: Alice gives Bob coin in exchange for her purchase Unlinkability: if Alice spends twice, Bob won’t even know it’s the same person 14

  31. How e-cash works [Ch82, CHL05, CLM07] Withdraw: Alice gets coins from bank Buy: Alice gives Bob coin in exchange for her purchase Unlinkability: if Alice spends twice, Bob won’t even know it’s the same person Deposit: Bob deposits these coins with the bank 14

  32. How e-cash works [Ch82, CHL05, CLM07] Withdraw: Alice gets coins from bank Buy: Alice gives Bob coin in exchange for her purchase Unlinkability: if Alice spends twice, Bob won’t even know it’s the same person Deposit: Bob deposits these coins with the bank 14

  33. How e-cash works [Ch82, CHL05, CLM07] Withdraw: Alice gets coins from bank Buy: Alice gives Bob coin in exchange for her purchase Unlinkability: if Alice spends twice, Bob won’t even know it’s the same person Deposit: Bob deposits these coins with the bank Untraceability: Bank cannot trace the deposited coins back to Alice 14

  34. CashLib: integrating e-cash into a P2P system 15

  35. CashLib: integrating e-cash into a P2P system 15

  36. CashLib: integrating e-cash into a P2P system Operations: Actors: How e-cash can improve P2P interactions: 15

  37. CashLib: integrating e-cash into a P2P system Operations: Actors: • Buy How e-cash can improve P2P interactions: 15

  38. CashLib: integrating e-cash into a P2P system Operations: Actors: • Buy • Buyer • Seller How e-cash can improve P2P interactions: 15

  39. CashLib: integrating e-cash into a P2P system Operations: Actors: • Buy • Buyer • Seller How e-cash can improve P2P interactions: 15

  40. CashLib: integrating e-cash into a P2P system Operations: Actors: • Buy • Buyer • Seller How e-cash can improve P2P interactions: 15

  41. CashLib: integrating e-cash into a P2P system Operations: Actors: • Buy • Buyer • Seller How e-cash can improve P2P interactions: 15

  42. CashLib: integrating e-cash into a P2P system Operations: Actors: • Buy • Buyer • Seller How e-cash can improve P2P interactions: 15

  43. CashLib: integrating e-cash into a P2P system Operations: Actors: • Buy • Buyer • Seller How e-cash can improve P2P interactions: • Guarantees fair exchange [BCE+07,KL10] between peers 15

  44. CashLib: integrating e-cash into a P2P system Operations: Actors: • Buy • Buyer • Barter • Seller How e-cash can improve P2P interactions: • Guarantees fair exchange [BCE+07,KL10] between peers 15

  45. CashLib: integrating e-cash into a P2P system Operations: Actors: • Buy • Buyer • Barter • Seller • Withdraw How e-cash can improve P2P interactions: • Guarantees fair exchange [BCE+07,KL10] between peers 15

  46. CashLib: integrating e-cash into a P2P system Operations: Actors: • Buy • Buyer • Barter • Seller • Withdraw • Bank • Peer How e-cash can improve P2P interactions: • Guarantees fair exchange [BCE+07,KL10] between peers 15

  47. CashLib: integrating e-cash into a P2P system Operations: Actors: • Buy • Buyer • Barter • Seller • Withdraw • Bank • Deposit • Peer How e-cash can improve P2P interactions: • Guarantees fair exchange [BCE+07,KL10] between peers 15

  48. CashLib: integrating e-cash into a P2P system Operations: Actors: • Buy • Buyer • Barter • Seller • Withdraw • Bank • Deposit • Peer How e-cash can improve P2P interactions: • Guarantees fair exchange [BCE+07,KL10] between peers • Allows bank to monitor upload/download ratio without sacrificing privacy 15

  49. Related work 16

  50. Related work So what aren’t we doing? 16

  51. Related work So what aren’t we doing? • Aren’t guaranteeing anything about the quality of the proofs You give us a bad (e.g., not sound) proof, get a bad proof back Checking soundness is well studied by others [CACE] 16

  52. Related work So what aren’t we doing? • Aren’t guaranteeing anything about the quality of the proofs You give us a bad (e.g., not sound) proof, get a bad proof back Checking soundness is well studied by others [CACE] • As application of zero knowledge, provide library only for e-cash Idemix project [CH02, BBC+09] provides anonymous credentials 16

  53. In summary... • Wrote interpreter to make cryptographer’s job easier • Demonstrated efficiency and usability • Wrote library to make programmer’s job easier • All source code and documentation available freely online: • http://github.com/brownie/cashlib 17

  54. In summary... • Wrote interpreter to make cryptographer’s job easier • Demonstrated efficiency and usability • Wrote library to make programmer’s job easier • All source code and documentation available freely online: • http://github.com/brownie/cashlib Any questions? 17

Recommend


More recommend