Hacker News new | ask | show | jobs
by hn_throwaway_99 893 days ago
The topic of ID verification for porn sites has gotten a lot of commentary on HN recently, e.g. North Carolina's law requiring ID recently went into effect.

Slightly sidestepping the issue of needing an ID for porn in the first place, though, I wanted to comment on the extreme shortsightedness of any sort of ID verification laws (most specifically, financial KYC laws) that require that each individual company verify and store your identity documents themselves. This is quite simply a data breach hackers dream. For example, when Stripe released their Identity product, which captures ID images and selfies, people were at first surprised that the businesses needing ID verification had full access to the ID images (after all, this is contrary to their credit card processing services where businesses never can get access to full credit card numbers, which is great as it keeps those businesses out of the most arduous requirements of PCI rules). But Stripe explained they had to give every end-business access to all the full image data for regulatory compliance reasons.

It would make much more sense to rewrite the regulations so that 99% of companies would never need to store identity verification info themselves, but could just delegate that to an approved provider who has much more stringent security checks (or better yet, allow people to cryptographically sign info to prove their identity without giving up their whole passport image, but that's a ways off). I'm not saying this would solve all issues (big companies get hacked, after all), but I hope by now we've put to bed the idea that companies, generally, can secure their data against determined hackers.

11 comments

My thoughts exactly. If the state wants to ensure that ID checks are rigorous (or otherwise monopolize them) they can provide an attestation API for that purpose, and legislate that only tokens signed by a cert trusted by the government’s root are valid.

This can be solved in a zero-knowledge way, and the government should commit to open source here. You don’t want the government seeing the sites you visit; the government should just issue a token associating the attestation (age, work status, whatever) with your private key. I think the details end up being non-trivial but it should be doable.

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

How is this supposed to protect against timing correlation attacks? If each time User 1234 signs into a particular site, Bob Smith requests a token, we know with high probability that Bob Smith is User 1234 (or anyway is using his ID to request tokens).

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.

Yes, there's definitely many scenarios to consider that I've been wondering too about now that I've got it built this way. That's why it's in testnet only.

In my zk group scheme, you do get one token for each epoch. (could be 30 days) It's simply suggested that you wait as long as possible between joining the group on your main account before minting your token on the anon account.

Finding applications for ZK tech is complicated because it only works for such narrow circumstances. Although in your case of "give every user the same token" makes the users anonymous to everyone except the issuer. The issuer is still able to know to whom they're giving them. With a ZK proof, the bearer instead mints the token by proving that they are one from the set of people the issuer has verified. The issuer cannot then break the privacy.

As for mitigating people sharing their tokens, of course that's always a fear but I think mitigation strategies would be unique to each application's use case.

> In my zk group scheme, you do get one token for each epoch. (could be 30 days) It's simply suggested that you wait as long as possible between joining the group on your main account before minting your token on the anon account.

I'm not sure this is the same thing. What I was suggesting is that the token you get doesn't depend on the site you're using it on at all. All you do is ask the government for a token and they give you one and you can use it anywhere you want for 30 days and then it expires and you ask for more.

If the tokens are unique to you then you'd have to request a bunch of them because you don't want to use the same one twice on two different sites. If everybody had the same one then that wouldn't matter because the token can't identify any particular user.

> Although in your case of "give every user the same token" makes the users anonymous to everyone except the issuer. The issuer is still able to know to whom they're giving them.

But this is solved by making the token entirely generic.

The problem we have is that Bob wants to visit an adult site without associating that with his social security number. If all Bob does is request the generic token which is the same for everyone and asserts that anybody who has it is an adult, the issuer knows that Bob requested it, but not if Bob has a kink or is buying a beer or is just requesting a token on the off chance he might need one later or is applying for a job at a casino or is hiring for a job at a casino, since this system is so simple the way you verify the token is by requesting it yourself and comparing the one the user submitted to see if it's the same one. It's literally just a single secret password for everyone that the government changes once a month and only gives out to adults.

> As for mitigating people sharing their tokens, of course that's always a fear but I think mitigation strategies would be unique to each application's use case.

It's not clear how you're supposed to mitigate it in this case.

Suppose Bob hates this system and wants to destroy it because it blocks adults without a valid ID from accessing lawful content, e.g. because they're from another country. So Bob hooks up his own valid ID to a server via Tor and configures it to sign any request for age verification from anyone.

Now there two possibilities. One, the system can find out who Bob is and shut him down, which proves that it doesn't protect your anonymity, is a massive invasion of privacy, and must be destroyed. Two, there is actually no way to identify Bob, and then the system has been destroyed by Bob.

I think you end up needing something like trusted compute for biometric verification (eg FaceID) so the authority can delegate real-time validation.

And perhaps you do randomized (risk-based) audits where you actually have to call the government to check in - but in general, physical ID also has the same high-level problem of some baseline of forgeries, and the name of the game is just making it expensive, not making it impossible.

One example of “make it expensive” would be to require unique device IDs to be registered, eg you bring in your iPhone (or Yubikey or whatever) and the DMV verified it’s not actually a non-certified device. This rests on keys being expensive to extract from the Secure Enclave.

Edit to add: lest folks get sidetracked on the requirement for a private company and device, you can also have a baseline in-person flow where you go to the DMV, and they physically verify you, and then hand you a short-lived token that you can then send to whoever wants to verify you. For example, you're signing up with an age-sensitive site, applying for benefits, etc. -- it's non-trivial, but with a bit of infra and UX it could be made usable. The point is that once you have that token, it's pseudonymous, and e.g. PornHub can't figure out your real ID from it, nor can the government tell where the token was submitted.

Yeah the hard case to solve is “prove it’s still <ID principal> that is generating the challenge”.

With GenAI I wonder if images will be considered valid ID for long. “Generate a new video of face with camera pan” is currently hard (not impossible) to forge, but I doubt it will be in a year or two.

You get back to multifactor auth, but then the system is more stateful, and still, what is the incentive not to share your ID & password with underage friends?

(These challenges will also be faced with the OP’s scheme as well.)

> This can be solved in a zero-knowledge way, and the government should commit to open source here.

This is what France's government is working on if i understand correctly what i'm hearing (i'm working for the private sector right now, so i'm not as well informed as i should be on those kind of things). Not really a fan, but i note when they're doing good shit, and on that they're on point.

I don't mind a zero-knowledge age verification, i will strongly oppose anything else (with both money and time).

> This is what France's government is working on if i understand correctly what i'm hearing

Would you have any source discussing this? I don’t doubt you at all, I would like to learn more about where they want to go.

It seems that they are working with a decent team at INRIA. I would like to know better how compatible their developments are with the stance of the government (and other more or less hysterical ones like in the UK).

Sorry, it's mostly rumors and stuff I catch reading the chats I'm still in.

I've found a kind of white paper that link to LINC and Olivier Blazy:

https://www.cnil.fr/fr/verification-de-lage-en-ligne-trouver...

And the LINC repo might have some stuff?

https://github.com/LINCnil

"can be solved in a zero-knowledge way" - absolute zero?

I am curious how this would work - for example I want to check someone's ID, how could I take a pic with a phone and run it to prove it's real - but the gov have no idea that I ran the ID check?

Wouldn't their system know that I, my ip, browser fingerprint, checked ID X at y:yy time and likely the location?

I have a great app idea that would be useful if there really is a way to check these things zero knowledge.

Biometric passport chip.

All data on your passport can be read using NFC and is signed with a government key.

It even has cryptographic functions to test if you are talking to a real passport (to prevent replay attacks)

So it may be possible for two pieces of hardware to talk and prove a thing is signed by a reputable place.. so I could check an ID and be pretty certain the age is correct in the data pulled from it.. I guess..

But if I needed to take that ID and run it to check for a valid license or valid insurance - or if they are on a gov deceased list or other background check or something..

Unless I could have all these DBs on device I can't see a real way to do them zero knowledge checks.. I could imagine a service could promise to not log requests but no way to verify they are not..

I suppose I'd like to see a system where you could batch check 100 or so IDs at once to run checks to see if they have insurance, a valid drivers license, a valid XY or Z license, any warrants, pending litigation and such - able to do so in a way that the check on the person is not logged, prove-ably.

If each ID has its own signature, the signature can be used to uniquely identify the ID.
I'd rather require 'Kid mode' devices _self identify_ as being in _kid mode_ and a two layer approach of websites which are known to be not 'kid friendly' identify as redirect to a kid-friendly resource.

Do not lock up adults on the Internet. Rather, keep the kids in the nanny's care in their own device context rather than on the wider network.

I’m not sure that making kids identifiable as such to any random website is a good idea.
Reminds me of the old joke about an app for finding local playgrounds being misused in that exact same way you are implying.
Sure, but we should still be able to have nice things, even if the one in a million weirdo exists.
Yep, I fully share your sentiment on this.
I agree with the parent here. If the device is designated a kids device by some means, websites can ensure no adult content gets transmitted and their data isn't mined for ads.
Why is anyone's data mined for ads? If you're going to make a kids mode flag that denies data mining effort, then just fucking make the don't mine me switch and open it to everyone.
“But my next Ferrari…”
And malicious sites can decide that the user is a promising target for grooming or scamming, etc.
These could easily be ferreted out by synthetic agents scouring the internet and posing as kids.
Could you give an example of such an attack that is intractable in the status quo?
Well, currently ads can be targeted using user agents. This is analogous to that sort of attack, although less malicious. There are bad people who would target children if they could, so it does seem to fit with what you're asking. We create the means, and they will exploit it.
> I’m not sure that making kids identifiable as such to any random website is a good idea.

This is what any of the age verification proposals do, isn't it? You know who the kids are and who the adults are regardless of whether it's because you have the adults assert they're adults or the kids assert they're kids.

This is spot on. I have had to do KYC for me and my company on a couple of financial sites and I hate to think where that data is saved and what will it actually be used for. And this is mandated by law which is crazy.
Hasn't there been a few countries with some sort of digital ID development already? I get the impression the Anglosphere has an anti-ID card tradition so it seems like it's a bit behind in that.
The anti-ID sentiment comes from looking back on history, and not pretending that the future can only be better.

People who don't know history repeat its mistakes.

Germany is extremely focused on that aspect of history and even used to have laws [1] in the books prohibiting anything SSN-like for many years. Yet German ID cards have a built-in contactless chip that allows using them for online identity verification and e-signing.

This is obviously more secure than taking a photo of an analog ID as an "online identity proof" (a somewhat absurd idea if you think about it, yet it's the state of the art in most countries today). But if done correctly (and I do realize that this is a very big if), it even be more privacy-preserving too:

For example, when trying to prove your age to a website, the only thing that site really should have to learn is the fact whether you were born more or less than a certain number of days ago. Not your date of birth, not your name, and certainly not a picture of your face or any other biometric data.

Digital ID can do that (e.g. by asking the secure chip "Is the accountholder born before $date? If so, please sign this challenge using a key shared among all ID cards" or something equivalent). Analog ID requires you to reveal strictly more information than that to a service provider and hope for the best.

[1] Technically a supreme court opinion

I have used the e-signing function of my German ID card exactly zero times.

Even government websites don't support it for the stuff I would like to use it. So it isn't exactly a success story.

True, it does seem to be suffering from a chicken-and-egg type of problem: Not enough services accept it, so not enough people actually remember the PIN and care to install the app necessary to use it.

But now that both iOS and Android phones can be used as "card readers", I hope we should finally be seeing some more adoption. Before that, almost nobody had a card reader handy when they needed one.

The EU's eIDAS digital ID/signature portability scheme should also help boost it.

I went through four different use cases in the last two months or so, about 1.5 of them not the state. I'd say the chicken/egg phase is over. But it won't be an everyday tool anytime soon, but the same is true for the physical ID, its not like you need to show it around all too often.
I’ve used it for your Rentenübersicht (which is actually amazing) and Elster. But yeah, it’s not really deployed
To add to this, the AusweisApp in Germany shows what information you're sharing to a website and asks you to confirm its ok
Unfortunately the eID system is neither well communicated nor widely used. Which really is a pity. It’s (at least in principle) quite well thought out. You get clearly shown who’s asking for which information. Then you present the ID to the phone, enter your PIN and only that information gets provided. In principle this would allow for a blind “are you old enough?” check without ever touching the actual data.

But of course while this is a relatively simple game of signatures and certificates and (afaik) safe and secure it is basically impossible to communicate what exactly is provided at which point in a manner that is understandable let alone trustable by the general public. And the workflow requires you to provide the PIN twice, which is nice (it’s not cached) but also annoying

This idea ("I'm against IDs because I fear what they'll do with it") is really interesting to me, because in my country (Argentina) a large part of the national pro-ID sentiment comes from looking back on our own history and attempting to prevent some of the human rights abuses that were committed in our country.

The last dictatorship tried to erase dissident's identities, kidnapped their children and erased their links with their previous family. As a consequence, Argentina now has a "Right to Identity" enshrined into our Constitution and deeply ingrained into our society and culture.

How do you imagine registering your identities with the government is going to protect you from the government?
safeguards. how do you imagine anything secure works at all anywhere?
“Safeguards”? What does that even mean in this context?
> This is quite simply a data breach hackers dream

That's... well, not the point of the laws, but inseparable from them; the point is to build a database (distributed, when the information isn't also reported to the government at time of collection) which the government can access at need;

That’s just a bad design though. When I go to a bar they don’t store a record of my ID for future review by the government. They look at my ID, see I am of age, and then our interaction is complete. No further record exists, nor should it.

The government can try accessing porn sites themselves to see if the sites are in compliance. The same way we do, well, everything.

That it isn’t designed this way shows the incompetence of the regulators and their disregard for public safety and free society.

And hopefully it doesn’t need to be pointed out but none of this actually protects children. This is abuse of power for the purpose of puritanical guilt tripping.

> That’s just a bad design though. When I go to a bar they don’t store a record of my ID for future review by the government.

Banking KYC isn't about making sure people are authorized to bank, its about making sure the government is able to track them down if they are (determined by the government to be) associated with bad things.

The purpose is not the same as checking ID at a bar.

(Now, there's an argument that, for porn consumption, the purpose of any ID requirements should be like a bar and not like banking KYC, even if for porn production or distribution, there is more of an argument for a banking KYC-like regime.)

> Banking KYC isn't about making sure people are authorized to bank, its about making sure the government is able to track them down if they are (determined by the government to be) associated with bad things.

That's simply not true. E.g a huge part of KYC is ensuring people aren't sanctioned for banking purposes (i.e. OFAC checks are mandatory).

Yes, a record of a user's identity is important, but it's still bad design that every little company, many of which have dubious security practices where they squeaked through figuring out all the right boxes to check to "pass" a SOC 2 audit, have to store this information indefinitely. Some sort of federated system where a business could delegate KYC responsibilities to a respected provider (which is exactly analogous to how Stripe-like credit card processing works) would make a lot more sense.

For porn production you need KYC. For porn consumption you need a bouncer. That the regulators miss this is either incompetence or malice and maybe both but that doesn’t make this a good idea. Real harms will come from this when the databases are breached. The kids will still be able to find porn and alcohol. To make matters worse when they grow up they will live in a surveillance state.
> Banking KYC isn't about making sure people are authorized to bank, its about making sure the government is able to track them down if they are (determined by the government to be) associated with bad things.

The problem with this is that it doesn't really work. Serious criminals use shell corporations, fake or stolen identities, hire patsies, use precious metals or physical cash, foreign banking systems, cryptocurrencies, Hawala, etc. The effectiveness of KYC rules is abysmal, to the point that we could abolish them and hardly notice any effect on crime. And yet we continue to pay all of the costs, which fall on innocent people.

Given the fundamental truth that "everything is tax fraud" would it actually make it easier to identify crime by making it easier for criminals to open bank accounts?
This is a great point. A numbered account at a US financial institution would presumably be much easier for the US government to execute a warrant against and get the transactions than some adversarial international Hawala network or privacy coin which would be equally in the dark about the target's social security number (if any).
> Banking KYC isn't about making sure people are authorized to bank, its about making sure the government is able to track them down if they are (determined by the government to be) associated with bad things.

Have you implemented an AML compliance program? That’s not really how it works…

> When I go to a bar they don’t store a record of my ID

Many bars are storing a record of ID. e.g. PatronScan (https://web.archive.org/web/20190604193217/https://onezero.m...)

https://www.patronscan.com

That’s also a bad design. I still normally get my ID checked by a bartender or bouncer’s eyes.
In my neighborhood, there is a new law requiring use of such scanners.
Are they required to store the scans for some period of time?
The places that scan your ID often do save your info. Not supposed to, but it’s common.
If they use a scanner absolutely. That’s the only safe assumption. But at least that’s engineering incompetence instead of government overreach. Most of the times my ID gets checked the only tool used is the human eyeball.
> But at least that’s engineering incompetence instead of government overreach.

This is incorrect. Many states have laws specifically encouraging ID scanning: https://idscan.net/us-id-scanning-laws/

Is there a requirement to make this scan history available to the government?
BTW I don't exactly follow. If it's a database of people showing their government-issued IDs, it's then just a copy of the government database of these IDs. I can't believe that a government issues a photo ID number so-and-so to some Joe Random, and forgets about it. I bet it keeps a record.

The interesting part might be tracking the real people across websites, at least such websites that require this level of identification.

It’s a database of government issued IDs with all the associated details and where they showed those IDs. So it’s a security nightmare and a privacy nightmare.
I think this is what Apple introduced in iOS16: https://www.apple.com/newsroom/2022/06/apple-unveils-new-way...

Keys and IDs in Wallet get expanded support. Users can use their ID in Wallet for apps requiring identity and age verification. To ensure a private and secure experience, only the necessary information required for the transaction will be provided to the app, and the user can review and consent to share it using Face ID or Touch ID.

While acknowledging identity verification is problematic and bordering an unsolved problem, that really is a horrible precedent for someone to be required to own an electronic device that rapidly falls in to obsolescence to perform basic activities.

In the more extreme sense, the complexity and security hurdles really make this something only the largest multi-billion dollar corporations could do. European countries really seem to do a good job of re-enforcing existing American monopolies while hamstringing their own economy and the freedom of the internet as a whole. I don't know if this is intentional (regulatory capture) or just based on a very superstitious understanding of computer science and mathematics (see the recent encryption debacles.)

Apple has gotten a free pass for security & privacy, so far, by mostly producing secure(ish) devices, at least relative to the competition and give the never solved problem of keeping an always-on always-connected device that can receive messages from anyone in the world secure. However, as Apple's only remaining growth area is advertising their privacy reputation is going to diminish. Apple's leadership over the next decade or two will determine just how quickly that erodes. Definitely not a company I would want to be reliant on ID verification.

> to be required to own an electronic device that rapidly falls in to obsolescence to perform basic activities.

I bought an iPhone 11 Pro in 2019. I paid Apple $40 for a battery replacement last year. My phone continues to work well, and I'm going to keep it until it breaks.

Apple still pushes updates for the iPhone 8 which was released in 2017, so I expected to get at least two or three more years of life out my iPhone.

I believe this is just based on: https://www.iso.org/standard/69084.html

Some information: https://www.ul.com/sites/g/files/qbfpbp251/files/2021-08/mDL...

I've never tried it, but there's an implementation here: https://github.com/walt-id/waltid-identity/tree/main/waltid-...

From: https://walt.id

I don't think Apple did anything magical here, and from what I can tell there's no lock in. You could load your ID to any number of places for this verification, it's not just locked to Apple.

The key part is that it's a private company offering something that is opt-in. If the federal government mandated it, it's almost certainly a 10th Amendment violation (via commandeering). It would also effectively make the currently de facto second class citizenship of those who entered without inspection including DACA recipients into de jure second class citizens and under current law, for life. It would fall squarely into the small part of the opinion landscape in the US where both the right and the left would have reasons to hate it.
I'm not sure there's any reason to mandate that exact solution.

It seems more likely that they would mandate age verification. This would be one way the government could support to do that. There's no reason PornHub couldn't support this, or other methods (or just one or the other). I think the law would say "a site has to verify the age of the user", not "everyone who wants to look at porn has to have age verification via a smart phone".

I don't know the details, but I think what you're describing is what the Dutch DigID ( https://www.digid.nl/ ) system provides. It is used on local and national government data portals as well as for legal document signing, etc. It works very well in my experience, and in fact I don't even have to have a username/password on the websites.
There's a similar system in Denmark called MitID (my ID), it can even be used by businesses. I can pop into my local REMA 1000, scan my groceries —including alcohol—on my phone, and pay for them all in-app without any interaction with another human being. Because I'm logged in with MitID, there's no need for the additional age verification that more traditional self-scan checkouts require for purchasing alcohol.
>This is quite simply a data breach hackers dream.

The problem here is you're missing the point of the people making these laws. This is a feature, not a bug to these people. They want to punish you for stepping outside of your cis normative + 2.5 kids relationship that good 'religion of their choice' people do.

Gave you an upvote because you're calling out that this is a feature, not a bug.

But I don't think you needed to go down the religious-norms path to get there. It's not really fair. I think you could easily substitute items from the other side and end up in the same place.

The point is that the government wants all this information for the same reason they want to spy on our chat communications and all the rest - they want to control us with it.

Eh, I'm not really much of a 'both sides' type of person when one particular group (in the US in this case) is increasing pushing rules that border fascism while the other side may have bad ideas, but are far more moderate. To do so hands power directly to the fascists and makes them an acceptable choice.
You're bundling a lot of large groups into one group that is not particularly representative.
I hear you, but I think you're slightly missing my point. Even if I grant that the current regime is focused on religious/conservative issues, that can easily change over time. The problem is allowing our governments to use spying and surveillance to control us. That's something that gets worse over time and doesn't get rolled back with changes in elected or unelected officials.

In 100 years, will progressives or conservatives be in charge? I don't know, but I'm pretty sure that whatever spying apparatus we put in place now will still exist (or be enhanced) by then.

I'm with pixl97 on this one, but I think you are both in agreement, just focused on different parts. They are focused on the cause, you are focused on the effect. The two are causally linked.

I cannot for the life of me think of a way this policy would be enacted without a strong religious based push. I understand you think that it is unfair to claim that this is caused by religious based policy-making, but how can you claim that "you could easily substitute items from the other side and end up in the same place". What other side? Atheism? Can't see an atheist caring about this subject enough to create privacy invading laws. Religion always seems to be focused on what people do in the bedroom more than any other subject. Absolutely sex-obsessed.

And to add to your statement, in western culture religion is going to be the policy element used to favor power when using these moral arguments.

China with there developing demographic issues will use a less religion based policy and more of the social shaming policy, and already are an authoritarian government.

We don’t have to imagine. We saw it in action in the Soviet Union with Stalin.
Interesting to know that's the reason. I make a website called Coinpassport.net that uses Stripe Identity to do just like you describe: verify once and reuse it on other sites.

I would have loved if Stripe signed the results so that it could be more decentralized and anybody could verify with their own stripe account and have it be comparable to others.

These laws are (almost always) written by smart and competent industry lobbiests. The lack of privacy security is likely the point. I doubt very much that this was merely an oversight or they that they just hadn't thought it through. They got what they wanted.
At least in the US this is already how it works. There are existing KYC vendors where you can basically pass along info to them and they will give you a KYC score for a customer.