←back to thread

70 points jwally | 1 comments | | HN request time: 0.309s | source

So I'm not an expert in this area, but here's an attempt at cost effective, anonymous, age verification flow that probably covers ~70% of use cases in the United States.

The basic premise is to leverage your bank (who already has had to perform KYC on you to open an account) to attest to your age for age-restricted merchant sites (pornhub, gambling, etc) without sharing any more information than necessary.

Flow works like this:

1) You go to gambling.com

2) They request you to verify your age

3) You choose "Bank Verification"

4) You trigger a WebAuthn Credential Creation flow

5) gambling.com gives you a string to copy

-------------

6) You log into your bank

7) You go to bank.com/age-verify

8) You paste in the string you were given

9) The bank verifies it/you and creates a signed payload with your age-claims (over_18: true, over_21: false)

10) You copy this and go back to gambling.com

---------------

11) You paste the string back into gambling.com

12) You perform WebAuthn Auth flow

13) gambling.com verifies everything (signatures, webauthn, etc)

14) gambling.com sets a session-cookie and _STRONGLY_ encourages you to create an account (with a pass key). This will prevent you from having to verify your age every time you visit gambling.com

The mechanics might feel off, but it feels like this in the neighborhood of a way to perform anonymous age verification.

This is virtually free, and requires extremely light infra. Banks can be incentivized with small payments, or offer it because everyone else does and don't want to get left behind.

Show context
sxp ◴[] No.45086809[source]
The problem with this is that the verifier (Bank, DMV, Government, etc) can track that you went to gambling.com. E.g, maybe the gambling.com string is "gambling.com-123". Or if it's a random number, maybe gambling.com is storing it somewhere and the bank/government files a legal request to get a copy. You have to trust the government in this case which isn't ideal.

A better one is Chaum's Ecash protocol: https://en.wikipedia.org/wiki/Ecash

To use a metaphor for that protocol:

  1) The gambling site gives you a piece of with a UID on it.
  2) You put the paper in a opaque envelope. (This is a cryptographic way of hiding the contents)
  3) You take the envelope to the bank (or DMV, police station, etc) along with a copy of your birth certificate/RealID and they emboss it with their stamp saying you are over 18. The embossing is transferred through the envelop to the paper, but the bank hasn't seen the contents of that paper. (This is a cryptographic signing method which can affect the UID in step 2 without the bank needing to see the UID: https://en.wikipedia.org/wiki/Blind_signature)
  4) You take the paper out of the envelope and destroy the envelope. The paper with the UID has the stamp but doesn't have any tracking information that the bank might have put on it.
  5) You give the UID to the gambling site. They see that you got it stamped by the bank so they know you have an account with the bank and are over 18, but they don't know the RealID that the bank saw when the bank stamped the envelope.
This is secure because the bank never saw the UID so they don't know if it was gambling-123 or disney-123. The gambling site can save that stamped UID and give it to the bank (or government) if required, but bank can't figure who came in to get that UID embossed. The only person who knows all the tracking information is the user. And as long as they burn the envelope (which is cryptographically secure), there is no usable tracking information.

As long as the bank is Good and uses the same stamp for all users (i.e, they don't use alice-stamp, and bob-stamp, etc for different users), there is no way for anyone to connect that Alice got her gambling-123 UID stamped. But this stamp is normally using PKI so anyone can check the public key of the stamp.

This algorithm was originally conceived to create anonymous "cash" since the bank would charge $1 to stamp your envelope and the gambling site could sell their UID paper to the bank to get that $1 from the bank.

replies(2): >>45087635 #>>45093210 #
1. cxgze ◴[] No.45093210[source]
Privacy Pass [0] is a proposed IETF standard for this. It is an e-cash scheme based on blind signatures or oblivious pseudorandom functions and provides unlinkability. In my opinion, it is a relatively simple protocol, at least when compared to full-blown anonymous credential schemes, which could also be used for anonymous age verification.

[0] https://www.rfc-editor.org/rfc/rfc9578