Zero-Knowledge Proofs: Simultaneously Ensuring Integrity and Privacy - Tjerand Silde ![rw-book-cover](https://img.youtube.com/vi/H8cRnw98q8k/maxresdefault.jpg) ๐Ÿ”— **Source:** [Zero-Knowledge Proofs: Simultaneously Ensuring Integrity and Privacy - Tjerand Silde](https://www.youtube.com/watch?v=H8cRnw98q8k) > [!note]+ Document Notes > tags: #zero-knowledge-proofs #cryptography #privacy #data-integrity #security #quantum-cryptography #digital-signatures #anonymous-credentials #machine-learning > author: Tjerand Silde > source: YouTube > reference: https://www.youtube.com/watch?v=H8cRnw98q8k > date created: 2024-12-29 09:45 > > # ๐Ÿท๏ธ Title: Zero-Knowledge Proofs: Simultaneously ensuring integrity and privacy > <!-- deep-read:sections start --> ## ๐Ÿงฐ Action Inbox - [H1] Explore open-source ZKP libraries for educational purposes โ€” 45:23 #cryptography - [H2] Investigate EU digital identity wallet regulations โ€” 35:12 #privacy - [H3] Consider ZKP applications for age verification systems โ€” 08:45 #anonymous-credentials ## ๐Ÿงญ Table of Contents - [[#๐Ÿ“ Summary]] - [[#๐Ÿ“– Main Content]] - [[#๐Ÿ—’๏ธ Notes]] - [[#๐Ÿ“š References]] - [[#๐Ÿ—ฃ๏ธ Paraphrase]] - [[#๐Ÿ“ฐ Newsletter]] - [[#โœ… Action Items]] - [[#๐Ÿงช Hypotheses]] - [[#๐Ÿ“Š Methodology]] - [[#โ“ Questions]] - [[#๐Ÿ”ฎ Future Research]] - [[#๐Ÿ’ก Implications]] - [[#๐Ÿง  Learning Styles Assessment]] - [[#๐Ÿ“Š Accessibility Assessment]] - [[#๐ŸŒ DEIB Assessment]] - [[#โœ… Logical Validity]] - [[#๐Ÿ›ก๏ธ DARVO Analysis]] - [[#๐ŸŽฏ Conclusion]] ### ๐Ÿ”— References - [NIST Zero-Knowledge Proof Standardization](https://csrc.nist.gov) - [Baby Snark Educational Library](https://github.com) - [Zcash Implementation](https://z.cash) ## ๐Ÿ“ Summary - Zero-knowledge proofs enable proving statements without revealing underlying data, solving the privacy-integrity tradeoff in digital systems - Applications include quantum-safe signatures, electronic voting, anonymous credentials, and verifiable machine learning - The technology addresses real-world needs like age verification without exposing personal information - NIST and industry consortiums are working on standardization efforts - Open-source educational libraries are available for experimentation ## ๐Ÿ“– Main Content Zero-knowledge proofs represent a breakthrough in cryptography that allows proving the validity of information without revealing the information itself. Traditional cryptographic primitives (public key encryption, symmetric encryption, and digital signatures) provide either confidentiality or integrity, but zero-knowledge proofs achieve both simultaneously. The technology works through interactive protocols between a prover and verifier, with three key properties: correctness (valid proofs are accepted), soundness (false statements cannot be proven), and zero-knowledge (no information about the witness is revealed). This enables applications like age verification where users can prove they're over 18 without sharing birth dates or identity details. Current implementations include quantum-safe signature schemes (FIPS 204 ML-DSA), anonymous cryptocurrency transactions (Zcash), and electronic voting systems. The EU digital identity wallet regulation will likely drive standardization and adoption of zero-knowledge credential systems. ## ๐Ÿ—’๏ธ Notes #### โฑ๏ธ [00:00](https://youtu.be/H8cRnw98q8k?t=0) โ€” [H1] Introduction to cryptographic privacy-integrity tradeoff - Key idea: Traditional cryptography achieves either privacy or integrity, but not both simultaneously - Evidence: "Sometimes we want to have applications where we care about both the privacy of data on one hand, but also to show that or to prove to the world that it satisfies certain properties" #### โฑ๏ธ [02:15](https://youtu.be/H8cRnw98q8k?t=135) โ€” [H2] Current cryptographic primitives overview - Key idea: Three main primitives provide foundation for secure communication today - Evidence: "Public key encryption, symmetric key schemes like AES, and digital signatures give you confidentiality and integrity separately" #### โฑ๏ธ [05:30](https://youtu.be/H8cRnw98q8k?t=330) โ€” [H2] Age verification as motivating example - Key idea: Current systems require oversharing personal information for simple binary verification - Evidence: "We only need this binary value saying if you're below or above 18 years old, but that's the only solution we have for it now" #### โฑ๏ธ [08:45](https://youtu.be/H8cRnw98q8k?t=525) โ€” [H1] Zero-knowledge proof definition and properties - Key idea: Interactive protocols proving statements without revealing witnesses - Evidence: "Three properties: correctness, soundness, and zero-knowledge - the verifier learns nothing about the witness" #### โฑ๏ธ [12:30](https://youtu.be/H8cRnw98q8k?t=750) โ€” [H3] Historical context and theoretical foundations - Key idea: Goldwasser, Micali, and Rackoff laid theoretical groundwork in 1980s - Evidence: "Published in mid-80s and later won Gรถdel Prize, but quite theoretical and without clear use cases for a long time" #### โฑ๏ธ [15:45](https://youtu.be/H8cRnw98q8k?t=945) โ€” [H1] Quantum-safe signatures using zero-knowledge proofs - Key idea: First standardized quantum-safe signature scheme is actually a zero-knowledge proof - Evidence: "FIPS 204 ML-DSA signature scheme based on lattices is in reality a zero-knowledge proof that you know a secret signing key" #### โฑ๏ธ [20:12](https://youtu.be/H8cRnw98q8k?t=1212) โ€” [H2] Electronic voting applications - Key idea: Zero-knowledge proofs enable privacy-preserving vote validation - Evidence: "Prove that one of these votes, without saying which one, is encrypted in this ciphertext, so this should be counted" #### โฑ๏ธ [24:30](https://youtu.be/H8cRnw98q8k?t=1470) โ€” [H2] Anonymous transactions in Zcash - Key idea: Cryptocurrency transactions can be validated without revealing sender, receiver, or amount - Evidence: "Encrypt your transaction and prove that the sender have this amount available without disclosing who or how much" #### โฑ๏ธ [27:45](https://youtu.be/H8cRnw98q8k?t=1665) โ€” [H1] Anonymous credentials and EU digital identity wallet - Key idea: Digital credentials can prove properties without revealing underlying personal information - Evidence: "Instead of providing the passport, give a zero-knowledge proof that says my date of birth is earlier than one given value" #### โฑ๏ธ [32:15](https://youtu.be/H8cRnw98q8k?t=1935) โ€” [H3] Norwegian contact tracing implementation - Key idea: Real-world deployment used randomized tokens to disconnect identity from contact data - Evidence: "Randomize this token so it could not be tied to you while ensuring it was valid" #### โฑ๏ธ [35:12](https://youtu.be/H8cRnw98q8k?t=2112) โ€” [H2] Verifiable machine learning applications - Key idea: ML models can be trained and evaluated on encrypted data with proof of correctness - Evidence: "Prove without revealing your model that it was actually trained on this data, or evaluated correctly" #### โฑ๏ธ [38:45](https://youtu.be/H8cRnw98q8k?t=2325) โ€” [H1] Succinct arguments and ZK-SNARKs - Key idea: Proofs can be much smaller than the underlying computation or witness - Evidence: "Constant size proofs - no matter what you want to prove, the proof is 1 kilobyte always" #### โฑ๏ธ [42:30](https://youtu.be/H8cRnw98q8k?t=2550) โ€” [H2] Current standardization efforts - Key idea: NIST and industry consortiums working on standardizing zero-knowledge proof systems - Evidence: "NIST currently having a process to collect proof protocols and standardize them for secure implementation" #### โฑ๏ธ [45:23](https://youtu.be/H8cRnw98q8k?t=2723) โ€” [H3] Open source educational libraries - Key idea: Educational tools available for learning zero-knowledge proof development - Evidence: "Baby Snark written in Python specifically to learn about these systems, Aurora works used in Zcash" #### โฑ๏ธ [47:15](https://youtu.be/H8cRnw98q8k?t=2835) โ€” [H2] Integration with other privacy-enhancing technologies - Key idea: Zero-knowledge proofs work synergistically with homomorphic encryption and multi-party computation - Evidence: "Often used in combination where fully homomorphic encryption protects input data and zero-knowledge proofs prove integrity" ## ๐Ÿ“š References - [Goldwasser, Micali, Rackoff Paper on Interactive Proof Systems](https://people.csail.mit.edu/silvio/Selected%20Scientific%20Papers/Zero%20Knowledge/The_Knowledge_Complexity_of_Interactive_Proof_Systems.pdf) - [NIST Post-Quantum Cryptography Standardization](https://csrc.nist.gov/Projects/post-quantum-cryptography) - [Zcash Technical Documentation](https://z.cash/technology/) - [Baby Snark Educational Library](https://github.com/initc3/babySNARK) ## ๐Ÿ—ฃ๏ธ Paraphrase - Zero-knowledge proofs solve the fundamental tradeoff between data privacy and verification by allowing mathematical proof of statements without revealing underlying sensitive information - Real-world applications span from quantum-resistant digital signatures to anonymous voting systems and privacy-preserving machine learning verification - Standardization efforts by NIST and industry groups are making these advanced cryptographic techniques more accessible for practical deployment in identity systems and secure computation ## ๐Ÿ“ฐ Newsletter ๐Ÿ” **Zero-Knowledge Proofs: The Future of Privacy-Preserving Verification** Imagine proving you're old enough to access a website without sharing your birth date, or verifying a financial transaction without revealing the amount. Zero-knowledge proofs make this possible by solving cryptography's age-old tradeoff between privacy and integrity. **What's New:** NIST is standardizing these techniques, with the first quantum-safe signature scheme (FIPS 204) already being a zero-knowledge proof. The EU digital identity wallet regulation will drive broader adoption. **Why It Matters:** From anonymous credentials to verifiable AI training, zero-knowledge proofs enable new models of digital trust where users control exactly what information they share. **Get Started:** Explore educational libraries like Baby Snark to understand the fundamentals, or investigate how these proofs could enhance your authentication and verification systems. Resources: [NIST Cryptography Standards](https://csrc.nist.gov/), [Zcash Documentation](https://z.cash/), [Privacy-Enhancing Technologies Guide](https://developer.mozilla.org/) ## โœ… Action Items #### DevRel - Developer education: Create workshops on zero-knowledge proof fundamentals and practical applications - Documentation: Develop integration guides for ZKP libraries in common development frameworks - Community engagement: Host cryptography meetups focused on privacy-preserving technologies #### OSPO - License compliance: Review open-source ZKP libraries for patent considerations and license compatibility - Security management: Establish guidelines for cryptographic library evaluation and adoption - Strategic alignment: Track standardization efforts at NIST and industry consortiums #### Community - Contributors: Support educational ZKP projects and improve documentation for learning resources - Maintainers: Consider privacy-preserving features using zero-knowledge proofs in existing projects - Ecosystem: Foster collaboration between cryptography researchers and application developers #### WordPress - Core: Investigate zero-knowledge proofs for privacy-preserving authentication and user verification - Security: Explore anonymous credential systems for user management without tracking - Privacy: Consider ZKP applications for GDPR compliance and data minimization - Accessibility: Ensure cryptographic interfaces remain usable for non-technical users ## ๐Ÿงช Hypotheses - Zero-knowledge proofs will become standard components in identity verification systems within 5 years as EU regulations drive adoption - Educational ZKP libraries will accelerate developer adoption by reducing the cryptographic knowledge barrier - Integration with existing authentication systems will be the primary driver for practical ZKP deployment - Performance improvements in proof generation will make real-time applications feasible for mobile devices ### ๐Ÿ“Š Methodology - Analyze adoption rates of FIPS 204 ML-DSA in production systems over the next 2 years - Survey developer communities on cryptographic library preferences and learning barriers - Benchmark proof generation times across different hardware configurations and ZKP schemes ### โ“ Questions - How will ZKP standardization affect existing PKI infrastructure and certificate authorities? - What are the practical performance limits for real-time zero-knowledge proof verification on mobile devices? - How can ZKP education be integrated into computer science curricula without requiring advanced mathematics? ### ๐Ÿ”ฎ Future Research - Integration patterns between zero-knowledge proofs and existing web authentication standards - Usability studies on ZKP-based credential systems compared to traditional authentication - Cross-platform compatibility and interoperability standards for anonymous credential systems ### ๐Ÿ’ก Implications - Practice: Developers need new skills in cryptographic protocol design and zero-knowledge proof implementation - Policy: Regulations like EU digital identity wallet will require ZKP integration in identity systems - Security: Zero-knowledge proofs provide new defense against data breaches and surveillance - Education: Cryptography education must balance theoretical foundations with practical application development - Funding: Investment in privacy-preserving technologies will increase as regulations and user demands grow ### ๐Ÿง  Learning Styles Assessment Reading level estimate: Graduate Level (16-18) #### ๐Ÿ‘€ Visual learners - Present: Mathematical notation and protocol diagrams throughout presentation - Improve: Interactive flow charts showing ZKP protocol steps, comparison tables of cryptographic primitives #### ๐Ÿ”Š Aural learners - Present: Technical lecture format with verbal explanations - Improve: Audio-only summary explaining core concepts, pronunciation guide for technical terms #### ๐Ÿ—ฃ๏ธ Verbal learners - Present: Clear definitions and real-world analogies (ballot box shuffling, passport verification) - Improve: Glossary of cryptographic terms, step-by-step protocol explanations #### ๐Ÿงฉ Kinesthetic learners - Present: References to open-source libraries for hands-on experimentation - Improve: Coding tutorials, interactive ZKP demonstrations, implementation exercises #### ๐Ÿง  Logical learners - Present: Mathematical proofs and security property definitions - Improve: Decision trees for choosing ZKP schemes, performance comparison charts #### ๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘ Social learners - Present: Q&A session and reference to community workshops - Improve: Discussion forums for ZKP applications, collaborative learning projects #### ๐Ÿง˜โ€โ™€๏ธ Solitary learners - Present: Technical paper references and self-directed library exploration - Improve: Self-assessment quizzes, independent research prompts #### ๐ŸŒฟ Naturalistic learners - Present: Real-world application examples across multiple domains - Improve: Use cases in environmental monitoring, ecosystem thinking about privacy technologies ### ๐Ÿ“Š Accessibility Assessment #### Screen reader semantics - Present: Clear heading structure and technical term definitions - Improve: Mathematical notation descriptions, diagram alt text for protocol flows #### Keyboard navigation - Present: Standard presentation format allows keyboard control - Improve: Interactive elements for code examples need keyboard accessibility #### Contrast and readability - Present: High contrast slides with clear typography - Improve: Ensure code examples maintain contrast ratios, larger font sizes for formulas #### Text resizing and reflow - Present: Presentation scales appropriately - Improve: Ensure mathematical notation remains readable at 200% zoom #### Media and captions - Present: Video includes spoken content - Improve: Captions for technical terms, transcript with mathematical notation #### Forms and interactions - Present: Minimal interactive elements - Improve: Accessible feedback for code examples and demonstrations #### Standards reference - Mathematical content accessibility follows MathML standards for screen readers ### ๐ŸŒ DEIB Assessment #### Cultural breadth - Present: Norwegian contact tracing example provides specific cultural context - Improve: Examples from diverse regulatory environments, global use cases #### Inclusive language - Present: Technical language with clear definitions - Improve: Gender-neutral examples, avoid assumptions about technical background #### Neurodiversity support - Present: Structured presentation with clear sections - Improve: Content warnings for complex mathematical sections, processing time considerations #### Representation - Present: References diverse application domains - Improve: Include perspectives from different stakeholder groups affected by privacy technologies #### Psychological safety - Present: Academic presentation encourages questions --- ## Full Transcript [00:06] Um so I'm going to talk about zero<br>[00:08] knowledge proofs in this session. So<br>[00:10] this is going to be a talk about<br>[00:11] cryptography.<br>[00:13] And kind of new crypto new new<br>[00:15] cryptography. So today<br>[00:18] we all use encryptions and signatures<br>[00:20] and so forth in everyday applications to<br>[00:23] ensure security and privacy.<br>[00:25] But sometimes we want to have<br>[00:28] applications where we care about both<br>[00:30] the privacy of data on one hand, but<br>[00:32] also to show that or to prove to the<br>[00:35] world that it satisfies certain<br>[00:38] properties or is well-formed or have<br>[00:40] some kind of integrity<br>[00:42] to it without revealing the data itself.<br>[00:45] Okay, so it's kind of<br>[00:47] um<br>[00:48] a view into recent research development<br>[00:51] that is coming and that might have some<br>[00:53] interesting applications that you maybe<br>[00:56] can use in your situations organizations<br>[00:58] going forward.<br>[01:00] So I'm going to talk a bit about what<br>[01:01] kind of use cases, how this works, some<br>[01:04] tools you can start playing around with<br>[01:06] for maybe something interesting in the<br>[01:08] future.<br>[01:10] Uh first a few words about myself. I'm a<br>[01:13] social professor at NTNU working in<br>[01:16] cryptology<br>[01:17] and I'm<br>[01:18] leading the the lab we have at NTNU<br>[01:20] working on these topics.<br>[01:22] My own research is about quantum safe<br>[01:25] cryptography that you might hear more<br>[01:27] about tomorrow if you attend my<br>[01:28] workshop.<br>[01:30] Uh I'm also working on different pri-<br>[01:32] privacy applications which is related to<br>[01:34] this topic and also secure<br>[01:36] implementation of these protocols.<br>[01:39] Uh I'm also working part-time as a<br>[01:41] cryptography expert at the startup<br>[01:42] called Biometrics here in Oslo.<br>[01:46] Okay, so as I mentioned we use<br>[01:49] cryptography today and we can roughly<br>[01:51] divide them into three categories.<br>[01:55] So on the top left we have public key<br>[01:57] encryption.<br>[01:58] Okay, so you have some kind of public<br>[02:00] key that is available to everyone in the<br>[02:02] world.<br>[02:03] You can use this key to encrypt the<br>[02:05] message to generate ciphertext and this<br>[02:09] can be sent over insecure channel to the<br>[02:12] owner of the public key and they are the<br>[02:14] only one who can decrypt.<br>[02:17] So this is usually used for key transfer<br>[02:20] today where you want to talk to someone,<br>[02:22] you generate a key and then you send<br>[02:25] this to the recipient and then you can<br>[02:27] use this shared key to communicate<br>[02:29] further.<br>[02:30] So that's the<br>[02:32] middle on the right where you have a<br>[02:33] symmetric key scheme, for example AES,<br>[02:36] where you have a shared key and you want<br>[02:39] to send some application data, some<br>[02:41] messages and you use this to encrypt it.<br>[02:44] Okay, and you can do this because you<br>[02:46] already have the shared key using the<br>[02:49] public key encryption scheme first.<br>[02:51] Yeah, so this is often how it works in<br>[02:53] TLS and Signal and most applications<br>[02:55] today.<br>[02:57] Um so this gives you confidentiality.<br>[03:01] Yeah, you protect the the data itself.<br>[03:04] Um but sometimes we want to know that no<br>[03:06] one messed with our ciphertext or<br>[03:09] changed it or replaced it or<br>[03:12] and also that we know where the data is<br>[03:14] coming from.<br>[03:15] So then we need the primitive on the<br>[03:17] bottom left which is a digital<br>[03:18] signature.<br>[03:20] So there you have some kind of message.<br>[03:21] It could this could be a software<br>[03:23] update, it could be the ciphertext that<br>[03:25] you just sent or something else.<br>[03:28] You hash this down to a fixed size<br>[03:30] string and then you sign this using a<br>[03:33] private signing key.<br>[03:34] Yeah, and there is a public verification<br>[03:37] key that everyone knows and they can<br>[03:39] check that the signature is valid and<br>[03:41] then you are certain that the data that<br>[03:43] you received<br>[03:44] has integrity, so it didn't change and<br>[03:47] you know where it came from because<br>[03:49] there was only one person who could sign<br>[03:51] this.<br>[03:52] Okay, so these are the three most common<br>[03:54] priv- primitives we have available today<br>[03:56] for<br>[03:57] secure communication.<br>[04:00] And there's so many applications that<br>[04:02] use these under the hood and you<br>[04:04] probably either have used or<br>[04:07] know of most of these, but secure<br>[04:09] messaging is<br>[04:11] is a very common application.<br>[04:13] A lot of people use Signal or WhatsApp<br>[04:15] or iMessage for for communicating.<br>[04:18] You have secure connections to websites,<br>[04:20] servers and so forth using TLS or SSL<br>[04:24] SSH or IPsec.<br>[04:26] You have digital authentication. A lot<br>[04:28] of uh uh the community is kind of<br>[04:31] switching over to FIDO for secure<br>[04:33] authentication instead of passwords. We<br>[04:36] have BankID and other services in Norway<br>[04:38] where you want can use this to log in to<br>[04:41] government services and other things.<br>[04:44] And as well as different payment<br>[04:46] systems. Okay, so this is kind of the<br>[04:48] most common things.<br>[04:50] Um but then a natural follow-up question<br>[04:52] is what else is out there? What can we<br>[04:55] do? What kind of research and<br>[04:57] development have taken place and is kind<br>[04:59] of ready-ish for new applications to be<br>[05:03] deployed.<br>[05:05] So we're going to talk about some of<br>[05:06] them<br>[05:08] and you often have this kind of<br>[05:11] relationship between privacy and<br>[05:12] integrity where it seems hard or<br>[05:14] impossible to achieve both at the same<br>[05:17] time.<br>[05:18] So often you have users who have some<br>[05:20] kind of private sensitive information.<br>[05:24] It could be their identity if they have<br>[05:26] authentication platform, it could be a<br>[05:28] vote in a voting system, it could be a<br>[05:31] transaction<br>[05:33] and so forth. So you might have some<br>[05:35] sensitive or private data that you want<br>[05:37] to keep secret from others.<br>[05:40] But you sometimes still want to maybe<br>[05:43] apply this kind of data in some machine<br>[05:46] learning algorithm or to authenticate<br>[05:49] yourself to some server<br>[05:51] and you want to then on the server side<br>[05:54] know that this information is valid,<br>[05:56] it's correct, it's something you can<br>[05:57] trust.<br>[05:59] Okay, so the class gives classical<br>[06:01] example there would be the newly<br>[06:04] discussion about age verification.<br>[06:07] Yeah, so then if you want to log in to<br>[06:09] some system, you need to be say 18 years<br>[06:11] old to access it<br>[06:13] and the server need to know this because<br>[06:15] otherwise they might be penalized or<br>[06:17] fined or something.<br>[06:19] Yeah.<br>[06:20] And the way they do it is often by<br>[06:22] asking you to<br>[06:23] to give over like a passport or identity<br>[06:26] card or something<br>[06:28] which is not just saying that you're<br>[06:30] more than 18 years old, it's also saying<br>[06:32] a lot about you. It might be your birth<br>[06:34] date of birth, it might be your address,<br>[06:37] a lot of sensitive information. Okay,<br>[06:39] and this we don't really want to share<br>[06:41] and it's not really what's asked about.<br>[06:44] We only need this binary value saying if<br>[06:47] you're below or above 18 years old.<br>[06:50] Yeah, then we're not really asking for<br>[06:52] your whole identity, but that's the only<br>[06:53] solution we have for it now.<br>[06:55] So this is a problem that we would like<br>[06:57] to solve where we want to kind of<br>[06:59] achieve some form of data sharing<br>[07:01] without breaking the privacy for the<br>[07:03] user side and also still ensure<br>[07:06] integrity on the server side.<br>[07:08] Yeah.<br>[07:10] So the solution to this is zero<br>[07:12] [clears throat] knowledge proofs. So<br>[07:14] we're going to talk about what these<br>[07:15] what these proofs are and what kind of<br>[07:18] application we can or are already using<br>[07:21] them.<br>[07:24] So when we think about proofs, we<br>[07:27] kind of the first thing that comes to<br>[07:28] mind usually is some kind of<br>[07:30] mathematical proof. You want to ensure<br>[07:32] that some statement is correct. Yeah.<br>[07:35] So you present that well, this is kind<br>[07:38] of the area in this square and so forth<br>[07:40] have some certain relations. So this is<br>[07:43] the Pythagorean theorem.<br>[07:46] Uh and you can kind of prove that this<br>[07:49] figure on the left is equivalent to the<br>[07:51] figure on the right by kind of measuring<br>[07:54] and and swapping pieces and then you can<br>[07:56] convince someone that this statement<br>[07:58] holds.<br>[08:00] Yeah.<br>[08:01] And this is a quite simple this we can<br>[08:03] draw.<br>[08:04] But we also have a lot of more<br>[08:05] complicated statements. For example,<br>[08:08] Fermat's theorem<br>[08:10] where you have this famous equation that<br>[08:11] for some integer X and integer Y and Z,<br>[08:16] this relation does not hold if the<br>[08:18] exponent N is larger than two.<br>[08:22] And we were able to prove this or or<br>[08:24] Andrew Wiles in this photo was able to<br>[08:25] prove this<br>[08:27] some 20 years ago. Yeah. But the proof<br>[08:30] of this statement is so difficult that<br>[08:33] just a handful of people in the world<br>[08:35] can understand it.<br>[08:38] So we kind of we are convinced about<br>[08:40] this truth<br>[08:42] by proxy because we have someone else<br>[08:44] kind of verifying on our behalf that<br>[08:46] this statement is true.<br>[08:48] Yeah.<br>[08:50] Um so<br>[08:52] also in mathematical proofs we kind of<br>[08:54] we write it down. Yeah, there is no<br>[08:56] really private information. It's more<br>[08:58] about you have some statement or or<br>[09:01] something that you claim<br>[09:02] and then the witness or the proof of<br>[09:05] this is by describing, you know, why<br>[09:07] this is true or giving some information<br>[09:11] that you can check that the statement<br>[09:13] holds.<br>[09:16] But in zero knowledge proofs,<br>[09:18] um<br>[09:19] this is also some kind of<br>[09:21] say interactive protocol between two<br>[09:23] parties. You have a prover and a<br>[09:24] verifier<br>[09:26] and you want to convince the verifier as<br>[09:29] a prover that some given statement is<br>[09:31] true.<br>[09:33] Yeah, and you are allowed to communicate<br>[09:35] back and forth.<br>[09:36] Maybe two messages, maybe more.<br>[09:38] And at the end the verifier should be<br>[09:41] convinced<br>[09:42] that the statement hold.<br>[09:45] Yeah, not necessarily by you providing<br>[09:47] the sensitive information that obviously<br>[09:51] shows that this hold, but<br>[09:53] through this communication they should<br>[09:55] be convinced of this claim.<br>[09:59] And for these kind of protocols, we have<br>[10:01] three properties.<br>[10:04] So, the prover publish some statement or<br>[10:08] some claim.<br>[10:09] And we're going to talk about more like<br>[10:11] what kind of concrete claims can be<br>[10:13] made.<br>[10:14] And they keep a secret witness, which<br>[10:17] kind of shows that the claim holds.<br>[10:21] And for this communication or for this<br>[10:23] protocol,<br>[10:24] we want it to be correct. So, if the<br>[10:27] prover actually holds a valid witness,<br>[10:31] say if you have a passport that says you<br>[10:33] are more than 18 years old,<br>[10:36] then you if you follow this protocol,<br>[10:38] then the verifier should accept it in<br>[10:40] the end.<br>[10:42] Yeah? So, you can have some<br>[10:44] pre-kind of described communication. If<br>[10:47] you follow this plan, then you will end<br>[10:50] up with the verifier accepting if you<br>[10:52] hold the witness.<br>[10:55] So, that's a correctness statement.<br>[10:57] And then we have something we call<br>[10:58] soundness,<br>[11:00] which is essentially means it should be<br>[11:01] difficult or basically impossible to<br>[11:04] cheat.<br>[11:05] So, if you don't have this witness, say<br>[11:08] if your passport actually says you are<br>[11:10] below 18,<br>[11:12] you should not be able to convince the<br>[11:13] verifier that you are above.<br>[11:16] Yeah? You should not be able to<br>[11:18] uh convince someone of a false<br>[11:21] statement.<br>[11:22] So, that's the the soundness.<br>[11:25] And finally, in the end of this is the<br>[11:26] privacy property of this uh protocols is<br>[11:29] the zero-knowledge protocol. Yeah? Or<br>[11:32] the zero-knowledge property.<br>[11:34] And this says that if you complete this<br>[11:37] protocol by communicating back and<br>[11:39] forth,<br>[11:40] the verifier is convinced that the<br>[11:43] statement is true,<br>[11:45] but it doesn't learn anything whatsoever<br>[11:48] about the witness that<br>[11:51] proves that it's true.<br>[11:53] So, for example, they they are convinced<br>[11:56] that you are above 18 years old, but<br>[11:58] they don't learn anything about your<br>[12:00] passport.<br>[12:02] Yeah? Only this binary value saying yes,<br>[12:04] you are above.<br>[12:06] Yeah? And nothing else. And this is<br>[12:08] often what we want. We often give a lot<br>[12:11] of extra information<br>[12:12] to convince someone about something,<br>[12:15] which is much more than what they<br>[12:17] actually need<br>[12:18] and what we often would like to provide.<br>[12:22] Yeah? So, this says<br>[12:24] we can design these protocols where this<br>[12:26] information, this bit,<br>[12:28] is the only thing that the verifier<br>[12:30] learns, and that was the goal of the<br>[12:32] protocol, and everything else is still<br>[12:34] secret.<br>[12:37] And this was actually introduced<br>[12:40] uh quite some years ago. So, Goldwasser,<br>[12:42] Micali, and Rackoff published a paper<br>[12:44] about these proof systems in the mid-80s<br>[12:48] and have later won uh<br>[12:51] uh Gรถdel Prize for this, which is kind<br>[12:53] of like the Abel Prize or or the uh<br>[12:56] Nobel Prize, but in uh theoretical<br>[12:58] computer science.<br>[13:00] So, this kind of laid the foundation for<br>[13:02] achieving these things, but they're<br>[13:04] quite theoretical, abstract, and have<br>[13:07] been without clear use cases for a long<br>[13:09] time. So, we kind of<br>[13:11] we're finally there where we have a lot<br>[13:13] of interesting use cases and<br>[13:14] implementations and applications where<br>[13:17] these might make sense to you start<br>[13:18] being used today. So, that's what I<br>[13:21] want to talk about today and why I I<br>[13:23] kind of submitted this topic because<br>[13:24] it's something out there that is very<br>[13:26] interesting that very few people know<br>[13:29] anything about, and it might open a few<br>[13:31] doors going forward. Yeah? So, let's<br>[13:34] talk about some of these opportunities.<br>[13:38] Well, okay. One final thing about uh<br>[13:40] these proofs is that<br>[13:42] well,<br>[13:43] I draw the picture of a zero-knowledge<br>[13:46] proof where you have a protocol with two<br>[13:48] parties talking. Yeah?<br>[13:50] And<br>[13:52] we might have a protocol that is<br>[13:54] interactive where you're actually<br>[13:55] sending<br>[13:56] messages back and forth, maybe several<br>[13:58] rounds,<br>[13:59] but you could<br>[14:01] uh do it in a non-interactive way as<br>[14:03] well where you just write down this<br>[14:05] zero-knowledge proof once and for all<br>[14:06] and send it.<br>[14:08] But in general, you might have an<br>[14:09] interactive protocol<br>[14:11] where in the mathematical proof, you you<br>[14:13] do always write down, you know, all the<br>[14:15] details about why this is true.<br>[14:18] For soundness,<br>[14:20] um<br>[14:21] well, in a mathematical proof, we would<br>[14:23] like it to just always be true. Like<br>[14:25] either the proof is true and everyone<br>[14:28] can accept it, or it's false and no one<br>[14:30] does.<br>[14:31] In zero-knowledge proofs, we do allow<br>[14:34] for small cheating probability,<br>[14:37] but you can usually control how likely<br>[14:40] it should be to cheat, and you can uh<br>[14:43] basically say that this is, you know, as<br>[14:45] hard to cheat in this protocol as<br>[14:48] breaking AES or breaking the RSA scheme<br>[14:50] that we use in other cryptographic<br>[14:52] protocols. Okay? So, it's not<br>[14:54] impossible.<br>[14:55] It's just as hard as breaking<br>[14:57] cryptography in general.<br>[14:59] And one interesting thing that I'll also<br>[15:01] bring up closer to the end is that<br>[15:05] if you have a mathematical proof,<br>[15:07] you need to describe everything.<br>[15:10] Yeah? You need to be able to follow it<br>[15:11] step by step and understand why this is<br>[15:13] true, and the proof might be very long.<br>[15:18] But in zero-knowledge proofs, you can<br>[15:19] sometimes have proofs,<br>[15:22] you know, in in terms of, you know, byte<br>[15:24] that you're sending,<br>[15:25] that is much smaller than the witness<br>[15:29] for your statement.<br>[15:31] Okay? So, you're actually saving space<br>[15:33] by producing this proof,<br>[15:35] not only giving privacy.<br>[15:38] Yeah.<br>[15:39] So, we'll get back to that.<br>[15:42] Um okay. So, let's talk a bit about<br>[15:44] potential applications of zero-knowledge<br>[15:46] proofs. So, this is something that, you<br>[15:48] know, is already deployed and is out<br>[15:50] there, and you might have uh<br>[15:52] other related applications in mind for,<br>[15:55] you know, your own situation.<br>[15:58] So, one thing is actually quantum-safe<br>[16:01] signatures.<br>[16:03] So, um as you might be aware, we are<br>[16:06] currently transmission or um migrating<br>[16:10] to<br>[16:11] uh from normal digital signatures that I<br>[16:13] mentioned in the start based on<br>[16:15] factoring and discrete log assumptions,<br>[16:17] for example, using the RSA scheme or<br>[16:19] ECDSA.<br>[16:21] These are the most two common digital<br>[16:22] signature schemes today.<br>[16:24] They are not secure against quantum<br>[16:26] computers,<br>[16:28] so we need to replace them with<br>[16:29] something that is.<br>[16:31] And one way to build such uh signature<br>[16:34] schemes is essentially by using or<br>[16:37] building a zero-knowledge proof<br>[16:40] of uh know- that I know a secret signing<br>[16:43] key that corresponds to this public<br>[16:46] signing key.<br>[16:48] And the first standard that we have<br>[16:50] available, FIPS 204,<br>[16:53] which is the ML-DSA<br>[16:56] signature scheme based on lattices,<br>[16:58] this is in reality a zero-knowledge<br>[17:00] proof<br>[17:01] of know- that you know a secret signing<br>[17:04] key,<br>[17:05] um which is uh<br>[17:07] now standardized as a digital signature<br>[17:09] scheme. Okay?<br>[17:11] So,<br>[17:12] um what you can have is this protocol.<br>[17:16] So, I'm not going to go into detail of<br>[17:17] it, but if you're interested, I'm going<br>[17:19] to talk more about this tomorrow.<br>[17:22] But essentially,<br>[17:23] uh you have two vectors<br>[17:26] that are secret and are all the<br>[17:28] coefficients in these vectors are small.<br>[17:31] Think binary.<br>[17:33] And then you have a public matrix,<br>[17:35] and you compute the product between<br>[17:38] these vectors and this public matrix,<br>[17:40] and that's your public signing key.<br>[17:43] And then you're able to sign a message<br>[17:45] by sampling some randomness. So, the<br>[17:47] prover is sampling some other vectors<br>[17:49] and compute matrix vector plus vector<br>[17:52] product.<br>[17:54] Okay?<br>[17:55] It's sent to to the verifier. It gets<br>[17:57] some kind of challenge, which is just a<br>[17:59] random value to kind of challenge the<br>[18:01] prover,<br>[18:02] and then the prover answer with<br>[18:04] something that is related to the<br>[18:06] randomness, the challenge, and the<br>[18:07] secret.<br>[18:09] Yeah? Again, I'm not going to go into<br>[18:11] details, and this is also how discrete<br>[18:14] log<br>[18:15] signature schemes works today.<br>[18:17] Uh and then there is a response in the<br>[18:19] end. There's some back and forth. Yeah?<br>[18:21] That's the goal. And then you check if<br>[18:23] the<br>[18:24] um some equation is verified in the end.<br>[18:28] Yeah? If this equation is verified, then<br>[18:31] you accept this proof.<br>[18:33] If not, you reject it.<br>[18:36] And the goal here is that you are only<br>[18:38] able to produce a valid proof if you<br>[18:41] know these secret vectors S1 and S2.<br>[18:44] If not, you're not able to convince<br>[18:46] anyone about this.<br>[18:48] And we can trans- transfer this into a<br>[18:51] signature scheme by instead of having a<br>[18:54] verifier that sends something back, you<br>[18:56] hash<br>[18:58] everything you would send in the first<br>[18:59] message together with the the message<br>[19:02] that you want to sign. So, this W value<br>[19:05] and the message is being hashed,<br>[19:07] and then you respond with both this hash<br>[19:11] and the response in the last message.<br>[19:14] Okay? And then you have a signature<br>[19:16] scheme, which is only one message<br>[19:18] instead of back and forth, and it's tied<br>[19:20] to a message that you want to sign, for<br>[19:23] example, a code update or a ciphertext<br>[19:26] or something else.<br>[19:27] Yeah?<br>[19:28] So, we can create digital signatures<br>[19:31] from zero-knowledge proofs<br>[19:34] where the statement is I know a secret<br>[19:36] key that corresponds to this public key.<br>[19:40] So, this is actually the most common way<br>[19:43] today to design signature schemes.<br>[19:46] So, this new standard is already in<br>[19:47] application kind of uh under the hood of<br>[19:51] zero knowledge proofs.<br>[19:55] >> [snorts]<br>[19:55] >> Another application is electronic<br>[19:57] voting.<br>[19:58] So, we don't do that in Norway, but a<br>[20:00] lot of other countries have elections<br>[20:02] where you are able to vote from your own<br>[20:05] computer.<br>[20:07] And then we need to know that whenever a<br>[20:10] vote is submitted, that this is correct.<br>[20:14] So, for example, if you<br>[20:18] provide a ciphertext into the voting<br>[20:20] system,<br>[20:21] you need to prove that this is a valid<br>[20:24] vote.<br>[20:26] And then you can use a zero knowledge<br>[20:28] proof saying that here is a ciphertext,<br>[20:32] and here is the list of all possible<br>[20:34] valid votes,<br>[20:36] and you prove that one of these votes,<br>[20:39] without saying which one,<br>[20:41] is encrypted in this ciphertext, so this<br>[20:44] should be counted.<br>[20:47] And then you protect the privacy of the<br>[20:49] user because you don't reveal what this<br>[20:51] specific user voted for,<br>[20:54] while this voting system can be sure<br>[20:56] that this is actually a valid vote, so<br>[20:59] that it's well-formed and it can be<br>[21:00] counted later on.<br>[21:04] Um often we shuffle votes in a voting<br>[21:06] system, so think of the physical ballot<br>[21:09] box, if you, you know, shake it a bit<br>[21:12] to make sure that the order of votes are<br>[21:14] when you pick it up is different from<br>[21:16] the order when it went in, so that you<br>[21:18] cannot make the connection between who<br>[21:20] voted and their vote.<br>[21:23] And we have a digital way of doing this<br>[21:24] as well, where you have a bunch of<br>[21:26] ciphertexts,<br>[21:27] and then you re-randomize them<br>[21:29] essentially by adding an encryption of<br>[21:31] zero to it,<br>[21:32] and then the ciphertext looks different,<br>[21:34] but it's still encrypting the same<br>[21:36] value.<br>[21:37] And then you permute them.<br>[21:39] Yeah?<br>[21:40] And if you do this, we want to ensure<br>[21:43] that no one swapped a vote with<br>[21:44] something else, so then you also need a<br>[21:46] zero knowledge proof,<br>[21:48] which says, I re-randomized them in an<br>[21:51] honest way, and I permuted them, and I<br>[21:53] did not uh replace any of the votes.<br>[21:57] Yeah? Then you get privacy of the<br>[21:59] permutation and the re-randomization,<br>[22:02] and you get integrity of the<br>[22:04] permutation.<br>[22:05] Then everyone else can trust that this<br>[22:08] is still the same voting set.<br>[22:11] And finally, you need to decrypt it,<br>[22:14] and of course, you don't want to give<br>[22:16] out your decryption key to the world.<br>[22:19] Yeah? So, what you do is you decrypt all<br>[22:21] of the ciphertext, and then you prove<br>[22:23] that I used the correct decryption key<br>[22:27] to decrypt all of these ciphertexts, and<br>[22:30] then you can look at the votes yourself<br>[22:31] and count it in the election.<br>[22:34] Okay? So, this is a very important<br>[22:36] building block to ensure both privacy<br>[22:39] and integrity in electronic<br>[22:41] voting systems.<br>[22:44] Yeah.<br>[22:47] Another application is anonymous<br>[22:49] transactions.<br>[22:51] So, for example, you want to pay<br>[22:53] someone, but you don't want anyone else<br>[22:55] to know<br>[22:56] how much you paid or which account it<br>[23:00] went from and which account it went to.<br>[23:03] And this is for example possible in one<br>[23:05] of the cryptocurrencies called Zcash.<br>[23:09] So, what you do is<br>[23:11] you encrypt your transaction,<br>[23:13] the sender, the receiver, and the<br>[23:15] amount,<br>[23:17] and then you prove that<br>[23:19] uh<br>[23:20] the sender, whoever that is,<br>[23:22] have this amount that is not disclosed<br>[23:25] available in their account.<br>[23:28] So, this is a valid transaction, you<br>[23:30] actually do have the funds that you<br>[23:32] you're trying to send.<br>[23:34] And<br>[23:35] uh you prove that these funds are not<br>[23:37] spent, you know, otherwise.<br>[23:40] Okay? So, you want to make sure that<br>[23:41] this is a valid transaction, you're not<br>[23:44] creating money out of thin air,<br>[23:46] you're actually using money that you<br>[23:48] own, and you're sending it to someone<br>[23:50] else.<br>[23:51] Yeah? So, then you get privacy of the<br>[23:53] transaction, but you do get integrity in<br>[23:56] the payment system.<br>[24:03] Uh so, this is how this could be done.<br>[24:04] So, you have this red box, which is like<br>[24:07] all transactions in the network,<br>[24:10] all the addresses, and so forth.<br>[24:13] And then you can have a top layer, which<br>[24:16] then encrypt the transaction,<br>[24:19] prove something about it with respect to<br>[24:21] the public ledger. You might have other<br>[24:23] properties you want to prove as well,<br>[24:25] for example, that this satisfies some<br>[24:28] regulations or something like this.<br>[24:31] And then you can get the both shielded<br>[24:33] address, shield for sending, for<br>[24:36] recipient, and for the amount being<br>[24:38] sent.<br>[24:40] And this is actually implemented and<br>[24:42] used today.<br>[24:45] Okay? And um<br>[24:48] another interesting application, and<br>[24:50] this is was kind of my motivating<br>[24:52] example to begin with,<br>[24:54] uh we want to have what we call<br>[24:56] anonymous credentials.<br>[24:59] Yeah? And one regulation that is coming<br>[25:02] is the EU digital identity wallet,<br>[25:05] where we have a digital wallet<br>[25:08] containing information about us.<br>[25:10] It could be connected to funds or tokens<br>[25:13] in some way, but it's also about our<br>[25:15] identity and properties about us, like<br>[25:19] where we live, nationality,<br>[25:22] um<br>[25:23] date of birth, and so forth. Things<br>[25:25] information about us that might be uh<br>[25:28] you know, interesting to prove something<br>[25:31] about or to show to get access to<br>[25:33] certain applications.<br>[25:36] So, for example, in this setting, you<br>[25:38] would have some issuer,<br>[25:41] which might be the, you know, a passport<br>[25:43] department, uh which in Norway would be<br>[25:45] the police.<br>[25:47] You have some kind of training program,<br>[25:49] university, other public services, like<br>[25:51] your driving license, and so forth,<br>[25:54] um which can issue some credentials on<br>[25:57] your behalf.<br>[25:59] Yeah? So, they need to know who you are,<br>[26:02] but that doesn't mean that they should<br>[26:03] know<br>[26:04] anything about how you use your<br>[26:06] credential. Yeah? That's your business.<br>[26:08] So, you ask for this, you get the<br>[26:11] credential,<br>[26:12] and you hold it.<br>[26:14] And then you might have a lot of<br>[26:16] services that you want to access,<br>[26:19] uh either related to online shopping,<br>[26:21] some bank services, some login, some<br>[26:24] availability,<br>[26:26] some kind of age verification, you know,<br>[26:28] there's a bunch of things where you<br>[26:29] would<br>[26:30] usually provide a copy of your passport<br>[26:33] or similar to get access to,<br>[26:35] where they don't really need all of this<br>[26:37] information. They just need to know that<br>[26:39] you satisfy certain criteria to get<br>[26:42] access to some given resource.<br>[26:45] And then this credential holder can<br>[26:48] then, instead of providing the passport,<br>[26:51] you can give a zero knowledge proof.<br>[26:54] So, this could be, for example,<br>[26:56] I hold a passport,<br>[26:58] which is signed by the Norwegian police,<br>[27:01] that says my<br>[27:03] date of birth is earlier than one given<br>[27:07] value that says I'm above 18 years old.<br>[27:11] Yeah? So, then the verifier learns that<br>[27:14] you are<br>[27:15] meeting the threshold<br>[27:17] without learning anything else about<br>[27:19] you.<br>[27:20] So, we can control what kind of<br>[27:23] information we release. We don't need to<br>[27:26] give it all.<br>[27:29] Uh this was actually in a simplified<br>[27:32] version implemented in the Norwegian<br>[27:34] contact tracing app during the pandemic,<br>[27:37] where we wanted to have a disconnection<br>[27:40] between um<br>[27:43] uh<br>[27:44] the owner of the app, which then<br>[27:47] collected where they had<br>[27:50] who they had met,<br>[27:52] and when they were uploading data to a<br>[27:55] back-end service for notifying the<br>[27:57] people they have met in case of a<br>[27:59] positive test.<br>[28:01] Yeah? So, we thought this was a<br>[28:02] important privacy uh issue that we need<br>[28:05] to solve. We did not want to tie<br>[28:07] everyone to everyone they had met.<br>[28:11] Uh so, then we had an app, which uh<br>[28:14] logged into some verification service.<br>[28:17] So, in this in Norway, this was a<br>[28:19] service that have on a national level<br>[28:21] overview of all positive corona tests.<br>[28:25] And if you had a positive test, you<br>[28:28] would get some token<br>[28:30] um that is a kind of a certificate on<br>[28:34] that the test is positive. So, this was<br>[28:36] important so that no one could, say,<br>[28:39] spam the system by sending warnings to<br>[28:42] people who had not really been in touch<br>[28:44] with someone who tested positive. Yeah?<br>[28:47] So, we wanted to avoid that, so we<br>[28:48] needed some kind of verification.<br>[28:51] But then you would later upload what we<br>[28:53] call these contact tracing keys, which<br>[28:55] are keys that you um<br>[28:58] you negotiated or exchanged with<br>[29:00] everyone that you you were nearby.<br>[29:03] So, you would have some kind of value<br>[29:05] that you could share to a back-end<br>[29:07] service,<br>[29:08] and this service could<br>[29:10] check the certificate you got from the<br>[29:12] verification service, and then warn all<br>[29:14] of the users.<br>[29:16] And basically, by sharing these keys,<br>[29:19] and then you could check locally, do I<br>[29:21] have a copy of this key?<br>[29:22] If yes, then I have been nearby this<br>[29:25] user. If not, I'm okay.<br>[29:29] But what we did then was to randomize<br>[29:32] this token.<br>[29:33] So, this app, it could receive a valid<br>[29:35] signature or a certificate,<br>[29:38] and it could randomize it, but only<br>[29:40] once.<br>[29:42] Yeah? So, you could create one new valid<br>[29:45] token<br>[29:47] when you received this certificate.<br>[29:50] And this token was unlinkable<br>[29:54] to the signature of the certificate that<br>[29:56] you received.<br>[29:57] So you<br>[29:58] one, you knew that it was valid.<br>[30:01] Second, it could not be tied to you.<br>[30:05] And then we had also to use zero<br>[30:07] knowledge proofs to<br>[30:09] prove that, you know, this was a valid<br>[30:11] token and it was signed properly and so<br>[30:14] forth. And this ensured that we could<br>[30:16] get both privacy and integrity in the<br>[30:18] Norwegian contact tracing system.<br>[30:21] So this was a one-time token, but on the<br>[30:24] previous slide, if you have general<br>[30:26] anonymous credentials,<br>[30:28] you could even<br>[30:30] log in to the same service many times<br>[30:33] and always provide proof saying I'm a<br>[30:36] valid user<br>[30:38] without these proofs being linkable.<br>[30:41] Yeah, so you even if you log in to the<br>[30:43] same service 10 times, for the service<br>[30:45] side, it looks like 10 different people<br>[30:48] that are allowed to use this service are<br>[30:51] logging in.<br>[30:52] They cannot tie it to one user.<br>[30:57] Um another interesting application is<br>[31:00] verifiable machine learning.<br>[31:02] So today we are using, you know, more<br>[31:05] and more services are looking into how<br>[31:07] can we learn something from a lot of<br>[31:09] data by using machine learning.<br>[31:11] And then either you need to train it<br>[31:15] and create your model<br>[31:18] or you have a model and you want to<br>[31:20] evaluate something to get the result.<br>[31:23] Yeah? And often the data being involved<br>[31:26] might or be sensitive. For example, if<br>[31:29] we want to<br>[31:30] either train or evaluate health data.<br>[31:34] Yeah? Then we need to care about the<br>[31:35] privacy of the patients and so forth.<br>[31:39] So what we often do is that we have some<br>[31:42] service and you want to know that the<br>[31:44] input data to this service<br>[31:47] is valid.<br>[31:48] Um but often this input data is private,<br>[31:51] so you don't really want to share it<br>[31:52] with, say, Google or some other service.<br>[31:56] While Google or this other service, they<br>[31:59] own the machine learning model and<br>[32:01] that's their IP and they don't<br>[32:03] necessarily want to share their model<br>[32:05] because that's how they make money.<br>[32:07] So you have kind of still have this<br>[32:09] privacy integrity<br>[32:11] challenge where you want to ensure that<br>[32:13] everything was being it was done<br>[32:15] correctly,<br>[32:16] but you still want to both keep the data<br>[32:18] from the service and the model from the<br>[32:21] client.<br>[32:24] So what you could do, for example, is<br>[32:26] that if you have a machine learning<br>[32:28] model,<br>[32:29] you want to convince the world that this<br>[32:32] is trained on specific data so that you<br>[32:34] know that this model is something you<br>[32:36] can use, that it's trained on, you know,<br>[32:39] relevant data.<br>[32:41] Then you can prove without<br>[32:44] um<br>[32:45] revealing your model, you can prove that<br>[32:47] it was actually trained on this data.<br>[32:50] Or you could prove that this model that<br>[32:53] you have,<br>[32:54] this is<br>[32:56] um<br>[32:56] uh evaluated on a specific set of data.<br>[33:00] So it's not garbage that is coming back.<br>[33:02] You actually used your model and that's<br>[33:05] the service that you get paid for. Yeah?<br>[33:07] And this data that you get in could<br>[33:09] potentially even be encrypted so that<br>[33:12] you never actually see the data you are<br>[33:15] either training on or evaluating,<br>[33:17] but you prove that you did it correctly<br>[33:19] without revealing what you did.<br>[33:24] So this these are quite interesting<br>[33:26] applications nowadays because<br>[33:29] for now you basically need to trust<br>[33:31] the the service that are involved in<br>[33:34] either the training or the evaluation of<br>[33:36] the the data.<br>[33:39] Um furthermore, we have what we call<br>[33:42] succinct arguments. So there's a kind of<br>[33:45] a special class of zero knowledge proofs<br>[33:47] which are designed to be specifically<br>[33:50] efficient.<br>[33:52] So this<br>[33:53] this kind of acronym of CK Snark means<br>[33:57] zero knowledge succinct non-interactive<br>[34:00] argument of knowledge where the zero<br>[34:02] knowledge part is what we have talked<br>[34:03] about so far, that you have some secret<br>[34:06] witness that does not leak when you<br>[34:07] produce the proof.<br>[34:10] Then we have the succinctness part which<br>[34:12] means that the proof is very<br>[34:14] fast to verify and very small to send.<br>[34:18] It's non-interactive so you don't need<br>[34:20] this communication back and forth. You<br>[34:22] could just publish the proof online once<br>[34:24] and for all and everyone can verify it.<br>[34:28] And the last two about argument of<br>[34:30] knowledge just means that you you know<br>[34:32] the witness. So it's more like a fancy<br>[34:33] acronym for that.<br>[34:36] And in this case,<br>[34:38] we would like to produce proofs that are<br>[34:40] much smaller than the secret itself.<br>[34:45] So for example, um if you're outsourcing<br>[34:48] some computation, say a machine learning<br>[34:50] model, this might be very computational<br>[34:54] intensive to evaluate.<br>[34:56] Right? We often need computing clusters<br>[34:58] to do this.<br>[34:59] And if<br>[35:01] checking the proof was as intensive as<br>[35:06] doing the whole training yourself,<br>[35:09] this is not something that people in<br>[35:11] general could verify because they don't<br>[35:13] have the resources.<br>[35:15] Or it could be some large complicated<br>[35:17] statement. It could be a<br>[35:19] transaction. It could be some uh<br>[35:22] relation in a voting system.<br>[35:24] It's a lot of data. It might not be<br>[35:26] possible for everyone to validate it.<br>[35:29] And then you would like the proof that<br>[35:31] you check to be much much smaller than<br>[35:34] if you knew everything about the system.<br>[35:37] So often we talk about these proofs<br>[35:39] being very small either logarithmic so<br>[35:42] that it's very small but it does<br>[35:45] increase a bit if the whole system<br>[35:47] increases<br>[35:48] or even constant. And we do have proof<br>[35:51] systems that are constant size which<br>[35:53] means no matter what you want to prove<br>[35:56] in the world,<br>[35:57] the proof is 1 kilobyte.<br>[35:59] Okay, it could be very simple like I<br>[36:01] know the secret key or it could be, you<br>[36:04] know, a very complicated large statement<br>[36:06] about some machine learning model or<br>[36:08] whatever. So no matter what you want to<br>[36:10] prove,<br>[36:12] the proof size is 1 kilobyte<br>[36:14] always.<br>[36:16] And verification has to be much faster.<br>[36:19] So this could be, you know, milliseconds<br>[36:20] even if the proof took hours to produce.<br>[36:24] Um the downside of it, of course, is<br>[36:27] that we're kind of shifting the effort<br>[36:29] to the prover's side. So those who want<br>[36:31] to prove something complicated also need<br>[36:34] to spend more time and and memory of<br>[36:36] actually producing the proof.<br>[36:39] But this means you could have a powerful<br>[36:40] server<br>[36:41] proving some interesting statement while<br>[36:44] you could have a mobile client verify it<br>[36:47] afterwards and the whole system is<br>[36:49] something that they would never even fit<br>[36:51] on their mobile device.<br>[36:52] But they can still verify that something<br>[36:54] was done correctly.<br>[36:56] So this is a interesting kind of<br>[36:59] special<br>[37:01] kind of proof systems that is also<br>[37:02] possible even though at least my<br>[37:05] intuition says that this should this<br>[37:07] should not be possible.<br>[37:08] But we can actually do this.<br>[37:12] Um so where are we today?<br>[37:15] Well, so this has been kind of an<br>[37:17] ongoing research effort for many many<br>[37:19] years and we do have all kind of systems<br>[37:21] out there and I showed you some<br>[37:22] examples.<br>[37:24] Um there is some standardization effort<br>[37:26] now to kind of make this available for<br>[37:29] others so that you can kind of<br>[37:31] use this throughout systems and you know<br>[37:33] what to use in certain applications and<br>[37:35] so forth.<br>[37:37] And NIST is currently having a a process<br>[37:40] about this to kind of collect um proof<br>[37:44] protocols<br>[37:46] and uh try to generalize them and<br>[37:49] standardize them so that we know exactly<br>[37:51] how to implement it in a secure way for<br>[37:53] certain applications. So this is ongoing<br>[37:55] right now.<br>[37:57] There's also some more like industry<br>[37:59] consortium<br>[38:00] which are looking into it for their own<br>[38:02] applications<br>[38:03] um like the CK proof community. There's<br>[38:06] the Ethereum Foundation for the<br>[38:08] blockchain<br>[38:09] applications and so forth. So these are<br>[38:11] kind of all trying to write up<br>[38:14] standards or standard-like documents so<br>[38:17] that<br>[38:18] things are consistent across systems.<br>[38:22] Um but in general there's there's not,<br>[38:25] you know, something ready yet and it's<br>[38:27] kind of a ad hoc as far as we know.<br>[38:31] So this is I think we'll see a lot of<br>[38:33] progress here in the coming years<br>[38:35] especially when the EU wallet regulation<br>[38:38] is is final, then they also will have to<br>[38:41] somehow standardize<br>[38:43] what kind of proof systems you are<br>[38:46] supposed to use for the anonymous<br>[38:48] credential situation.<br>[38:52] So this is coming and it's kind of an<br>[38:53] opportunity now to to get a bit ahead of<br>[38:55] it and see where this can be useful for<br>[38:57] your your work.<br>[39:00] Uh there is a bunch of open source<br>[39:03] libraries out there.<br>[39:05] You will find a lot of the things that<br>[39:07] are actually in<br>[39:09] uh in deployment today.<br>[39:12] Uh<br>[39:13] but they are quite complicated.<br>[39:15] So I tried to find some<br>[39:18] libraries that are open source and<br>[39:20] designed for education purposes. So not<br>[39:23] really for production systems, but to<br>[39:25] kind of play a bit with to get some<br>[39:28] hands-on experience with what these<br>[39:30] proof systems can do and not and how to<br>[39:32] use them.<br>[39:33] Um<br>[39:34] and then there's, yeah, these ones like<br>[39:37] Baby Snark which is written in Python<br>[39:39] specifically to to learn about these<br>[39:41] systems.<br>[39:42] You have Aurora works for example that<br>[39:44] is also used in Zcash among other<br>[39:47] systems, but it's kind of high level and<br>[39:49] should be possible to do something<br>[39:51] interesting without too much effort.<br>[39:54] But in general here are four projects<br>[39:56] and there are more online if you search<br>[39:58] for it or maybe you have a certain<br>[39:59] application in mind you will you might<br>[40:01] find something that fits you.<br>[40:04] But in general all of these systems that<br>[40:06] we<br>[40:07] developed they usually open source.<br>[40:10] So this [snorts] is something that you<br>[40:12] you can look into if you<br>[40:13] if you're interested.<br>[40:15] Um<br>[40:17] and finally I want to say a few words<br>[40:19] about the larger context.<br>[40:21] So zero knowledge proofs is one out of<br>[40:24] several<br>[40:25] privacy enhancing cryptography<br>[40:27] techniques that we have developed over<br>[40:29] the last say 30 years.<br>[40:31] Um so here you can prove things right<br>[40:34] without revealing the secret itself.<br>[40:37] You have other other techniques that are<br>[40:39] also being developed.<br>[40:41] Uh one is fully homomorphic encryption.<br>[40:44] This means that you can encrypt your<br>[40:46] data<br>[40:48] but you can apply functions to the<br>[40:50] cipher text as you would do with the<br>[40:51] data itself.<br>[40:54] Yeah, in general you cannot do this.<br>[40:56] Yeah, so if you have a yes cipher text<br>[40:59] if you flip one bit<br>[41:01] the cipher text is useless.<br>[41:04] Yeah, but you do have systems<br>[41:06] that are built so that if you want to<br>[41:09] compute additions or multiplications or<br>[41:11] other functionalities<br>[41:13] on the data you can actually do it<br>[41:15] directly on the cipher text and the<br>[41:17] function translates to doing this<br>[41:19] function to do this this operation on<br>[41:22] the underlying message.<br>[41:24] So then you can do outsourcing for<br>[41:26] example if you have health data you<br>[41:29] might encrypt everything you can send it<br>[41:31] encrypted to some service that have a<br>[41:33] machine learning algorithm.<br>[41:35] They can evaluate this algorithm on the<br>[41:37] encrypted data<br>[41:39] and you get the result back you can<br>[41:40] decrypt it with only the result.<br>[41:43] And they didn't learn anything about<br>[41:44] your data.<br>[41:47] Of course then this can be<br>[41:49] um<br>[41:50] can be used in uh<br>[41:53] uh both with zero knowledge proofs and<br>[41:55] fully homomorphic encryption so that you<br>[41:57] keep the privacy of all the data while<br>[41:59] it's being computed and you can prove<br>[42:01] that you evaluated the machine learning<br>[42:03] algorithm on the cipher texts.<br>[42:07] So these are often used in combination<br>[42:08] where the fully homomorphic encryption<br>[42:11] protects the input data<br>[42:13] and the zero knowledge proofs<br>[42:15] uh prove that<br>[42:17] the integrity of the process is uh<br>[42:20] is satisfied and also protect the<br>[42:22] machine learning algorithm.<br>[42:26] Another application is or technique is<br>[42:28] multi-party computation.<br>[42:31] In the previous one with fully<br>[42:32] homomorphic encryption you usually have<br>[42:34] two parties. So it's one is kind of the<br>[42:36] data owner and one is doing the<br>[42:37] computation.<br>[42:39] But often you have multiple parties who<br>[42:41] would like to jointly compute some<br>[42:43] function.<br>[42:45] This could be that you all have say<br>[42:47] salary statistics for your company.<br>[42:50] You don't want to share those with<br>[42:52] others, but you would like to generate<br>[42:55] statistics among all of you.<br>[42:58] And then you can without revealing the<br>[43:00] input data to the other parties you can<br>[43:03] all generate some statistics about the<br>[43:06] joint data.<br>[43:09] Again you are often using zero knowledge<br>[43:11] proofs in these systems to ensure that<br>[43:13] everyone is behaving<br>[43:15] honestly in the process.<br>[43:18] So again these are kind of<br>[43:19] techniques that are also go well<br>[43:21] together.<br>[43:25] And that was what I had for today. So<br>[43:28] thank you and I'm happy to take your<br>[43:30] questions.<br>[43:38] Anyone?<br>[43:45] No?<br>[43:46] That's fine.<br>[43:47] If you have anyone<br>[43:48] or want to talk to me I'm still around<br>[43:50] and otherwise I hope to see some of you<br>[43:52] also tomorrow for the sessions about<br>[43:54] quantum safe cryptography.<br>[43:56] So let's end here. <!-- deep-read:sections end --> ๐Ÿ“„ **Full text:** ![[Full Document Contents/Articles/Zero-Knowledge Proofs Simultaneously Ensuring Integrity and Privacy - Tjerand Silde.md|Zero-Knowledge Proofs: Simultaneously Ensuring Integrity and Privacy - Tjerand Silde by YouTube]] ## Highlights - Um so I'm going to talk about zero knowledge proofs in this session. So this is going to be a talk about cryptography. And kind of new crypto new new cryptography. So today we all use encryptions and signatures and so forth in everyday applications to ensure security and privacy. But sometimes we want to have applications where we care about both ([View Highlight](https://read.readwise.io/read/01krbq04d0b9rb64xhwky43maa)) - Tags: ๐Ÿ‘ป ai highlighted - transaction and so forth. So you might have some sensitive or private data that you want to keep secret from others. But you sometimes still want to maybe apply this kind of data in some machine learning algorithm or to authenticate yourself to some server and you want to then on the server side know that this information is valid, it's correct, it's something you can trust. Okay, so the class gives classical ([View Highlight](https://read.readwise.io/read/01krbq04dg0y6z2fyz46es59rt)) - Tags: ๐Ÿ‘ป ai highlighted - without breaking the privacy for the user side and also still ensure integrity on the server side. Yeah. So the solution to this is zero [clears throat] knowledge proofs. So we're going to talk about what these what these proofs are and what kind of application we can or are already using them. So when we think about proofs, we kind of the first thing that comes to mind usually is some kind of ([View Highlight](https://read.readwise.io/read/01krbq04e1xa48b7n36wc37cxw)) - Tags: ๐Ÿ‘ป ai highlighted - something that you claim and then the witness or the proof of this is by describing, you know, why this is true or giving some information that you can check that the statement holds. But in zero knowledge proofs, um this is also some kind of say interactive protocol between two parties. You have a prover and a verifier and you want to convince the verifier as a prover that some given statement is ([View Highlight](https://read.readwise.io/read/01krbq04exzxdhtnx1epay3dy8)) - Tags: ๐Ÿ‘ป ai highlighted - Okay? So, you're actually saving space by producing this proof, not only giving privacy. Yeah. So, we'll get back to that. Um okay. So, let's talk a bit about potential applications of zero-knowledge proofs. So, this is something that, you know, is already deployed and is out there, and you might have uh other related applications in mind for, you know, your own situation. So, one thing is actually quantum-safe ([View Highlight](https://read.readwise.io/read/01krbq04fxsj2xr2rpcvv0n2xa)) - Tags: ๐Ÿ‘ป ai highlighted - argument of knowledge where the zero knowledge part is what we have talked about so far, that you have some secret witness that does not leak when you produce the proof. Then we have the succinctness part which means that the proof is very fast to verify and very small to send. It's non-interactive so you don't need this communication back and forth. You could just publish the proof online once and for all and everyone can verify it. And the last two about argument of ([View Highlight](https://read.readwise.io/read/01krbq04q1pg8w197chx7x61wk)) - Tags: ๐Ÿ‘ป ai highlighted - find something that fits you. But in general all of these systems that we developed they usually open source. So this [snorts] is something that you you can look into if you if you're interested. Um and finally I want to say a few words about the larger context. So zero knowledge proofs is one out of several privacy enhancing cryptography techniques that we have developed over the last say 30 years. ([View Highlight](https://read.readwise.io/read/01krbq04vwspbrftdhhkcwtvax)) - Tags: ๐Ÿ‘ป ai highlighted - encrypted to some service that have a machine learning algorithm. They can evaluate this algorithm on the encrypted data and you get the result back you can decrypt it with only the result. And they didn't learn anything about your data. Of course then this can be um can be used in uh uh both with zero knowledge proofs and fully homomorphic encryption so that you keep the privacy of all the data while it's being computed and you can prove ([View Highlight](https://read.readwise.io/read/01krbq055wc1z8c8f2ffw5f8nv)) - Tags: ๐Ÿ‘ป ai highlighted