4 ms·
Note that this is an implementation of eIDAS: https://www.eudi-wallet.eu/ https://www.eudi-wallet.eu/ The point of this is that you can use the credentials on
by JimDabell 6mo ago
Note that this is an implementation of eIDAS:
https://www.eudi-wallet.eu/ https://www.eudi-wallet.eu/
The point of this is that you can use the credentials on your phone to prove that you are an adult to a website using zero-knowledge proofs to avoid disclosing your identity to anybody.
If somebody who has access to your unlocked phone can access the data in the app, then this is something that should be tightened up but it’s a substantial privacy improvement over the far more commonplace option of uploading your ID to every website that wants to know if you are an adult.
It’s an attempt to avoid things like this:
> Discord says 70k users may have had their government IDs leaked in breach (Oct 2025, 435 comments) - https://news.ycombinator.com/item?id=45521738 https://news.ycombinator.com/item?id=45521738
- sam_lowry_ 6mo agoYou are mixing things up, and EU abbreviations do not help. Many countries in EU already have electronic identity documents and delegate authentication to mobile apps one way or another. eID or mobile identity application operating over QR codes and used to log into websites and apps is a commodity here. This has nothing to do with age verification.
- JimDabell 6mo agoI’m not sure what you are saying I am mixing up. The article links to the source code repository here: https://github.com/eu-digital-identity-wallet/av-app-android-wallet-ui https://github.com/eu-digital-identity-wallet/av-app-android... That links to the tech spec: > The solution leverages the existing eIDAS infrastructure, including eIDAS nodes and the trust framework for trusted services, to ensure a high level of security and reliability. By aligning with the technical architecture of the EU Digital Identity Wallet ARF, the solution delivers secure, reusable, and interoperable proofs of age. > The solution enables users to present their Proof of Age attestation to Relying Parties, primarily for online use cases. The system is optimised for secure and privacy-preserving online presentation, allowing users to prove their eligibility without disclosing unnecessary personal information. — https://github.com/eu-digital-identity-wallet/av-doc-technical-specification/blob/main/docs/architecture-and-technical-specifications.md#21-perspective-of-the-age-verification-solution https://github.com/eu-digital-identity-wallet/av-doc-technic... Annex A includes details on the ZKP: > AVI SHOULD support the generation of Zero-Knowledge Proofs using the solution detailed in: "Matteo Frigo and abhi shelat, Anonymous credentials from ECDSA, Cryptology ePrint Archive, Paper 2024/2010, 2024, available at https://eprint.iacr.org/2024/2010 https://eprint.iacr.org/2024/2010". — https://github.com/eu-digital-identity-wallet/av-doc-technical-specification/blob/main/docs/annexes/annex-A/annex-A-av-profile.md#a8-zero-knowledge-proofs https://github.com/eu-digital-identity-wallet/av-doc-technic... And the linked paper: > Anonymous digital credentials allow a user to prove possession of an attribute that has been asserted by an identity issuer without revealing any extra information about themselves. For example, a user who has received a digital passport credential can prove their “age is ” without revealing any other attributes such as their name or date of birth. — https://eprint.iacr.org/2024/2010 https://eprint.iacr.org/2024/2010
- subscribed 6mo agoYou're both right. Without exposing my citizenship, I was able to use by EU-nation issued ID to confirm only my year of birth. The website supported this country's national ID login method, in the login challenge asked the server to provide my age, before I signed in to confirm (scanning qr code with my mobile app) I was informed what data was requested, then I consented to them confirming my data. Not very sensitive things work without my physical ID present, sensitive have additional step with me providing my physical ID (to the NFC reader) and unlocking my key (stored on the ID) with a pin. All in all it's really very sensible and fast. Not necessarily the EU ID apps we're talking about but some of the existing implementations.
- snackbroken 6mo ago> The point of this is that you can use the credentials on your phone to prove that you are an adult to a website using zero-knowledge proofs to avoid disclosing your identity to anybody. It is my understanding that this is not possible. I would be happy to be shown to be wrong, but to me it seems like you can either prevent people from lending out their credentials, or you can preserve the anonymity of the user, but not both. You can use 0KP to prove you have a signed certificate issued by your government that says you are an adult, but then anyone with such a certificate can use it to masquerade as however many sock puppets they like and act as a proxy for people who aren't adults. You can have the issuing government in the loop signing one-time tokens to stop Adults-Georg from creating 10k 18+ attestations per day, but then the issuing government and the service providers have a timing side-channel they can use to correlate identities to service users. Is there some other scheme I'm missing that solves this dilemma?
- actionfromafar 6mo agoCan attestations be rate-limited or is that the timing side-channel you are talking about?
- snackbroken 6mo agoPrecisely. To rate-limit attestations you either need government somewhere in the loop so that they get notified and can revoke certificates when they detect abuse (but then they can correlate requests to prove adulthood with the service provider), or you need the proof of adulthood to be tied to the certificate in some way that the service provider can tell if a certificate is being re-used. But then anyone with a copy of all the certificates (read: the government) can re-run the proof on their end and figure out who is who.
- atanasi 6mo agoThe app would be restricted to environments certified by Apple or Google. Then the app can apply features like trusted time to implement client-side rate limiting.
- 6mo ago
- nottorp 6mo ago> The point of this is that you can use the credentials on your phone to prove that you are an adult to a website using zero-knowledge proofs to avoid disclosing your identity to anybody. That's the theory. How is it in practice? In my opinion, it just means there is a single government database to hack to get copies of all IDs... By the way have the "security experts" checking this app evaluated that part? Or they're just worried about the app users cheating?
- sofixa 6mo ago> In my opinion, it just means there is a single government database to hack to get copies of all IDs... That doesn't make sense, all IDs are already in a single government database. Kind of by definition in fact, for IDs to be useful they need to be emitted by a central authority with associated security and revokability guarantees. The implementations I've seen rely on an app reading your physical ID and its NFC chip, comparing that with a selfie to ensure it's the same person, and being able to provide anonymous proof you are of age based on that, or proof that you are indeed who you say you are.
- nottorp 6mo ago> That doesn't make sense, all IDs are already in a single government database. Kind of by definition in fact, for IDs to be useful they need to be emitted by a central authority with associated security and revokability guarantees. Yes and those databases are decently protected. However for an "app" someone will do a web 4.0 or 6.0 bridge to access these databases. Maybe even vibe code it. That's what I'm worried about.
- sofixa 6mo agoHence the second paragraph in my comment. The app is client side and reads the physical ID.
- nottorp 6mo agoHmm how is it zero knowledge when you can be tracked to a single installation of an app? I thought zero knowledge means they ask a "trusted" 3rd party, i.e. the government. And that says yes/no, without passing any ID details on.
- Mindwipe 6mo ago> The point of this is that you can use the credentials on your phone to prove that you are an adult to a website using zero-knowledge proofs to avoid disclosing your identity to anybody. No it isn't. Literally that is not the scope document, and such a solution would not be permitted by the EU as compliant with the legislation. The app isn't zero knowledge. A prototype workflow has been designed for a one way transfer to sites that is zero knowledge, but it doesn't actually deliver zero knowledge because it you have to verify your age with an external provider to get the credential (which is not zero knowledge), the app has to be secured with either Apple or Google's attestation services (which are not zero knowledge), and the site has to be able to check with the original external provider that the credential hasn't been revoked (which is in no way zero knowledge).
- JimDabell 6mo agoZero knowledge proofs are when the prover can prove the statement is true to the verifier without disclosing more information beyond the statement. It doesn’t mean the prover cannot talk to other systems to produce the statement.
- Mindwipe 6mo agoThat only works in the context of when the sender isn't the adversary, which isn't the case in an age verification system - it very much does treat the sender as the enemy and untrusted. And again, the revocation chain on the backend is not zero proof.
- rcxdude 6mo agoThat's only an issue if getting the proof involves somehow identifying the service you are sending it to. If it's a generic 'send me a proof' it's not necessarily a problem, though of course it would be better if you could just generate your own proof.
- rcxdude 6mo agoThe goal would be that neither the verification service nor the service you are verifying with can link the connection: the verification service can't tell which service you are connecting to, and the service you are verifying your age to can't determine your ID. The first two issues you mention don't necessarily seem to kill that (though I agree they are both suboptimal: once you are verified you should be able to generate your own verification keys without connecting to the verification service, and any requirement for attestation is just an unncessary restriction), though the revocation check does seem like it might be a problem. The issue is that a lot of these services wave around a lot of words that _might_ mean that they are reasonably private, but it's damn hard to actually detemine if it is actually working like that in practice (the eIDAS standard seems to suggest the ZKP stuff is entirely optional, for example).
- lyu07282 6mo agoThe alternative would be to just not do anything and to remove liability from Meta et al. In the world we live in, where competing interests already spent tens of billions to bribe/lobby the EU, we have to be realistic about it. This open source and transparent ZKP-based approach is extremely surprising to see, publishing a draft in advance and inviting the public to break it so it can be improved? Are you kidding me? What about the billions of private investment in all the companies that offer centralized ID checks like Persona, Socure, ID.me and more? Thats a growing billion dollar industry. They all counted on this as a future market opportunity that the EU just seem to have destroyed at least in the EU? People fighting against this age id app might be paradoxically useful idiots for billion dollar investments and lobbying efforts. The demos is once again dragged into the trenches to fight a war they don't understand.
- subscribed 6mo agoThe main issue appears to be that as per the blueprint user MUST use one of the mandated handsets (iPhone or Android with pre-installed and privileged Google Services) and: - MUST use either Google or Apple account - must not be banned by the provider or sanctioned in the USA These issues have been flagged to the devs working on the blueprint since the inception, only to be handwaved away. Getting banned can happen randomly even if you're not doing anything illegal or wrong (it's enough for a robot to decide you're within the blast radius), getting sanctioned can happen if you're an UN lawyer investigating human rights abuses USA actually likes. So I do see a problem here.
- goobatrooba 6mo agoThe technical specifications published online foresee publication of the app also on alternative android stores, but Linux phone users are missing out. Though I guess things could always be extended...
- summm 6mo agoTheir security model requires remote attestation. So, open, user-controlled platforms cannot be used. Of course some other future locked-down linux-based OS might be usable.
- Neikius 6mo agoOr just let us set our age in the OS profile? Works for adults and kids.
- VorpalWay 6mo agoEven better would be if the website provided the age rating in a HTTP header, and the browser could locally check if the account is allowed to see it. That way you avoid exposing the age of the user. And yes, even sending an age bracket exposes the age over time as you can observe a repeat visitor changing brackets and compute the actual age from that. With the server sending the info instead you can't really tell if the browser blocked it, or if the user just didn't navigate further on the page. (The browser still need to fetch all the CSS and other resources though, otherwise that would be possible to tell apart.)
- somenameforme 6mo agoCan you give a brief explanation of how this is done with a zero-knowledge proof? That site is low information and painful to navigate, and it seems quite surprising to me that this is possible. ID verification, in the government sense, is ostensibly going to require matching an ID against a some other resource. If done locally then you can trivially spoof the result, akin to hacking a game, but if done remotely then it's not zero-knowledge. I think a zero-knowledge system here would be quite desirable. But a centralized repository that is e.g. maintaining tabs on every single adult-authorization for every single person with verifiable details of them is, by contrast, a dystopic disaster waiting to happen because it will be hacked, leaked, and abused, sooner or later.
- notTooFarGone 6mo agohttps://blog.google/innovation-and-ai/technology/safety-security/opening-up-zero-knowledge-proof-technology-to-promote-privacy-in-age-assurance/ https://blog.google/innovation-and-ai/technology/safety-secu... Basically you can prove that you have an identification document and that a certain property is true without revealing anything else.
- somenameforme 6mo agoA nitpick I have about contemporary descriptions of tech is that it tends to be heavily polarized. It's either 'here is how it works' in a way that is dumbed down to the point of meaningless, or 'here is the source code and white paper' in a way that is so esoteric that it again is largely meaningless if you don't intend on spending an afternoon deep diving the topic. For some contrast this [1] is an infographic from NASA about the Apollo program in the 60s. Enough details to inform one from a technical perspective, but also organized well enough that even if you know nothing about space or space flights, you could walk away with a pretty good idea of what's going on, and it might even spark your interest enough to research some things you didn't follow. [1] - https://assets.science.nasa.gov/content/dam/science/psd/lunar-science/2023/09/apollo_flightdiagram.jpg https://assets.science.nasa.gov/content/dam/science/psd/luna...
- brabel 6mo ago
- uyzstvqs 6mo agoThen why does the linked GitHub explicitly state it uses OpenID4VP?