| Yes, the government should provide digital ID services. On my Coinpassport site in the documentation, [0] I make this plea to governments. I've made a testnet version that uses a basic ZK circuit to provide anonymity. [1] There's so many holes to my approach though with overlapping renewals, dual citizenship, etc. If governments simply provided this service it would be great. Passport NFC chips get close. [2] They contain the passport data signed and there's a project to extract those details into a ZKSNARK proof which is awesome but this doesn't prove that the person holding the passport is the person verifying like Stripe Identity does with the photo check. And it requires the nfc reader hardware, but that's not too bad for a requirement. Maybe something like risczero could prove that a phone photo matches the passport photo using ZK but it seems like a big project. [0] https://coinpassport.net/docs.html [1] https://test.coinpassport.net [2] https://eprint.iacr.org/2022/878.pdf |
You can solve this by giving the user a generic token that asserts that the bearer is e.g. over 18 and is valid on any site for e.g. 30 days, and then Bob can request arbitrarily many tokens on the first of the month and use them as needed. But now all of this ZK proof stuff is making things unnecessarily complicated, because you could then give every user the same token that expires at the end of 30 days. They're fungible and anonymous. Anonymous means you can't distinguish one from the other means you don't need different users to be different, and then you don't have to worry about vulnerabilities in your ZK system.
Which leads back to the main problem with this whole mess: All it takes is for one person with an adult ID to share the token. Which is the problem with all of these systems -- most of the population has an ID and they can share access to it. There is no way to catch them or stop them if they're actually anonymous. If you could, they wouldn't be, and then the system fails as an invasion of privacy.