Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

Digital Identity to ZKP

Avatar for denkeni denkeni
November 20, 2025

Digital Identity to ZKP

https://docs.google.com/presentation/d/11sRPwqbAU3-2CUGWWunBPsRfI10wq7U-VRoljKd0yg4/edit?usp=drivesdk

DevFest Kaohsiung 2025
https://gdgkh.cc/2025/
https://gdg.community.dev/events/details/google-gdg-kaohsiung-presents-devfest-kaohsiung-x-s-tw-communities-gathering-2025/
Last year: Who controls your digital identity?

Google 零知識證明:隱私向善之路 - Denken Chen
「中文議程」:Google 推出零知識證明技術 Longfellow,在數位身分領域引發關注,並計畫透過 Google Wallet 於歐盟展開試點。這項可用於出示官方證件、但僅揭露「是否成年」的密碼學隱私技術,背後有哪些關鍵設計與挑戰?

Avatar for denkeni

denkeni

November 20, 2025
Tweet

More Decks by denkeni

Other Decks in Technology

Transcript

  1. Kaohsiung Denken Chen Last year: Who controls your digital identity?

    Google 零知識證明: 隱私向善之路 Zero-Knowledge Proof
  2. Digital Identity Wallet in Taiwan (數位憑證皮夾) • Public demo: https://demo.wallet.gov.tw/

    • Sandbox/testing environment https://wallet.gov.tw/apply/applyAccount.html
  3. Example: W3C VCDM { "@context": [ "https://www.w3.org/ns/credentials/v2", "https://www.w3.org/ns/credentials/examples/v2" ], "id":

    "http://university.example/credentials/3732", "type": ["VerifiableCredential", "ExampleDegreeCredential"], "issuer": "https://university.example/issuers/14", "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21", "degree": { "type": "ExampleBachelorDegree", "name": "Bachelor of Science and Arts" } } }
  4. Verifiable Credentials Data Model v2.0 (W3C Recommendation) https://www.w3.org/TR/vc-data-model-2.0/#roles Copyright ©

    2025 World Wide Web Consortium. https://www.w3.org/copyright/software-license-2023/
  5. Example (truncated): W3C VCDM { ... "credentialSubject": { "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",

    "name": "Nobody", "roc_birthday": "0570605", "birthDate": "1968-06-05", "is_over_18": true } }
  6. Example (full): IETF SD-JWT + W3C VCDM eyJqa3UiOiJodHRwczovL2lzc3Vlci12Yy53YWxsZXQuZ292LnR 3L2FwaS9rZXlzIiwia2lkIjoia2V5LTEiLCJ0eXAiOiJ2YytzZC 1qd3QiLCJhbGciOiJFUzI1NiJ9.eyJzdWIiOiJkaWQ6a2V5Onoy

    ZG16RDgxY2dQeDhWa2k3SmJ1dU1tRllyV1BvZHJaU3FNYkN5OU5 kdTRVZ1VHeTNSTmtoSDQ3OWVMUHBiZkFoVlNOdTdCNG9KdlV3TH p5eGlQNEp0NWs5Y3FxbUNoYW54QWF6VEd4Sk12R3hZREFwTmtYZ URXNU1QWmdaUmtqUmdEMXlhaWc1S0NFZ0FhVmJnOHpydllqTVRp MUJ6cWREcFBwa2VTRm1Kd2llajlZTlkiLCJuYmYiOjE3NTk4MjM 3NjEsImlzcyI6ImRpZDprZXk6ejJkbXpEODFjZ1B4OFZraTdKYn V1TW1GWXJXUGdZb3l0eWtVWjNleXFodDFqOUticlRRV1BUSk10M kZ1MTZIODR5bXdiYkc5TEdOaW5XN1luajUzWkNBVzE2Z3JBaEJp d3Y1M0FuYnY3ODdodDZueGFLTUdHQWdZOVdqdEZ4WVozaGpHZE1 kMVNodVFvU3ZOZVh4Y2o1SmNiazJ1WXRmR2J3aW9GU2laUVhmek g3Y3RoaSIsImNuZiI6eyJqd2siOnsiY3J2IjoiUC0yNTYiLCJ4I joiNDlya3FMUG9iUkVnY3A2Ukh6SjUybDVnY0F6ZkhvcmVlV21r
  7. Example (truncated): disclosure eyJqa3UiOiJodHRwczovL2lzc3Vlci12Yy53...EwMDg5YWMifQ .h7mHK4kdcGjLtFVYqraBASlmtHmwT4TG3Pu7qSXp7ruH4LDhUl v-nRZEqiaTtHtsoZnvRk_F-7nIENnMWRCp0w~WyJhOFNHY1VKY2 RYTW1aM2VTVVM2eERRIiwibmFtZSIsIumZs-etseeOsiJd~WyJw bHowWFN6LW9CSEUwZTUzTFVBeWNBIiwiaWRfbnVtYmVyIiwiQTI zNDU2Nzg5MCJd~WyJOdGVYcHFIQWNWZ2p2dXpKQUxJQVpBIiwic m9jX2JpcnRoZGF5IiwiMDU3MDYwNSJd~WyI3RUFnQWFGamVSUlB

    ZVF9kSURwZUhBIiwidHlwZSIsIuaZrumAmuWwj-Wei-i7iiJd~W yJ1NzNEMGs1N252ZUFncUlzMmVQTFJnIiwiY29udHJvbG51bWJl ciIsIjQwMTA0MDIwOTE0NDUiXQ~WyJwdENBU0Fvc25BX0RuN2Jz RGlGektBIiwiZ0RhdGUiLCIxMDIwNzAxIl0~ ["NteXpqHAcVg jvuzJALIAZA", "roc_birthday ","0570605"] Base64 Decode
  8. Example (full): decoded payload { "sub": "did:key:z2dmzD81cgPx8Vki7JbuuMmFYrWPodrZSqMbCy9Ndu4UgUGy3RNkhH479eLPp bfAhVSNu7B4oJvUwLzyxiP4Jt5k9cqqmChanxAazTGxJMvGxYDApNkXeDW5MPZgZRkjRgD 1yaig5KCEgAaVbg8zrvYjMTi1BzqdDpPpkeSFmJwiej9YNY", "nbf":

    1759823761, "iss": "did:key:z2dmzD81cgPx8Vki7JbuuMmFYrWPgYoytykUZ3eyqht1j9KbrTQWPTJMt2Fu1 6H84ymwbbG9LGNinW7Ynj53ZCAW16grAhBiwv53Anbv787ht6nxaKMGGAgY9WjtFxYZ3hj GdMd1ShuQoSvNeXxcj5Jcbk2uYtfGbwioFSiZQXfzH7cthi", "cnf": { "jwk": { "crv": "P-256",
  9. Example (truncated): disclosure "credentialSubject": { "_sd": [ "ApkeYAR85EzxAHS1ojnNHhG7wnCDyTt4_iCIX2VKxaw", "PDVMnTCDSl0gJrzo9xUwoAhI8YkTZP1BfPiPrCO8tho", "RIxXysPR8bW-weKZseVE3_scr-8BO9iByY-UBUXwGlM",

    "Z9OqC2RhvZOrLKQPUaA92QvBC2ULfslY5zToCdWVks0", "gRmJTG6GYoH5wOqKZFZXgLxUWDuwbWnDkwLauMJ37tc", "q2MZBsETDkPIZEKfSCXOUvw-mskwgl565efOi5D6XT8" ],"_sd_alg": "sha-256"} ["NteXpqHAcVg jvuzJALIAZA", "roc_birthday ","0570605"] Sha256+ base64urlencode
  10. 16. The technical framework of the European Digital Identity Wallet

    shall: (a) not allow providers of electronic attestations of attributes or any other party, after the issuance of the attestation of attributes, to obtain data that allows transactions or user behaviour to be tracked, linked or correlated, or knowledge of transactions or user behaviour to be otherwise obtained, unless explicitly authorised by the user; (b) enable privacy preserving techniques which ensure unlikeability, where the attestation of attributes does not require the identification of the user. https://eur-lex.europa.eu/eli/reg/2024/1183/oj
  11. Kaohsiung Cryptographers' Feedback on the EU Digital Identity’s ARF (Architecture

    and Reference Framework) https://github.com/eu-digital-identity-wallet/eudi-doc- architecture-and-reference-framework/issues/200
  12. EU Age Verification based on Unlinkability To help online platforms

    implement a user-friendly and privacy-preserving age verification method. Four high-level requirements: (source: ageverification.dev) 1. Proof of possession of a Proof of Age attestation by proving knowledge of a private key that corresponds to an ECDSA signature (i.e. device binding) 2. Standardisation 3. Minimum disruptions to existing infrastructure (ex. holder generates ZKP) 4. MAY support the ability to prove that a Proof of Age attestation remains within its designated validity period (ex. credential revocation)
  13. Google Longfellow • Paper: Anonymous credentials from ECDSA (2024-12) •

    IETF: The Longfellow Zero-knowledge Scheme (2025-03) • Source code (C++): github.com/google/longfellow-zk (2025-07) ◦ Opening up ‘Zero-Knowledge Proof’ technology to promote privacy in age assurance (link) ◦ We are announcing Sparkasse as our first national credential partner for EU age assurance. (link) https://docs.denkeni.org/awesome-zkp
  14. Google Longfellow 1. Verify signature by the issuer 2. Parse

    the credential to find Device Public Key (DPK) 3. Verify signature by the holder (device binding) 4. Verify the disclosed “age_over_18” attribute 5. Verify credential expiry condition https://youtu.be/nPPAG_0D-JE?t=21m25s
  15. IAB/W3C Workshop on Age-Based Restrictions on Content Access Available Techniques

    • Age verification: server-side solutions (e.g., government identity systems, zero-knowledge proofs) • Age estimation, inference (e.g., biometrics) • In-network • On-device https://www.w3.org/news/2025/upcoming-iab-w3c-workshop-on-age-based-restrictions-o n-content-access/ https://www.w3.org/2025/Talks/TPAC/tw-age-workshop/
  16. Play Age Signals API • A few U.S. states, currently

    Texas, Utah and Louisiana, have recently passed verification laws requiring app stores to verify users’ ages, obtain parental approval, and provide users' age information to developers. • The first app store bill will take into effect in Texas on Jan 1, 2026, followed by Utah (Effective date: May 7, 2026) and Louisiana (Effective date: July 1, 2026), pending any other developments. https://developer.android.com/google/play/age-signals/overview Also in Apple’s Declared Age Range API. userStatus VERIFIED: The user is over 18. Google verified the user's age using a commercially reasonable method such as a government-issued ID, credit card, or facial age estimation. SUPERVISED: The user has a supervised Google Account managed by a parent who sets their age.