Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

So in Germany we have an ID card with a PIN, NFC and a government app. Website owners can request to be able to use this feature. They then get a certificate from the government that has the fields they are allowed to request stored within it.

Websites can request data from the user by sending that certificate, it opens the app, it shows you the categories of data to be send, you hold your ID card to the phone, enter the PIN, and the certificate is uploaded to the ID card which verifies it. If its valid, the ID sends back the data that is specified in the certificate.

You then get presented with exactly the data that is going to be sent to the website. You can then agree or disagree. So far that is only used to log in to government websites.

This way the government does not know which sites you visit, and you only send your age to the website.



The problem with schemes like these is that it is reasonably easy to come up with something which is pretty close, yet still missing some crucial details.

- You do not want the government to know which websites you visit. This rules out any kind of redirect / forwarding via a government website or app.

- You do not want websites to correlate their requests, as that would allow for cross-website tracking. Request data from website A should be completely useless to website B. This rules out most regular certificate schemes.

- You do not want a website to correlate multiple data requests, as that would allow websites to create some kind of supercookie. Requests should be completely independent, and two requests from the same user should be indistinguishable from requests from two different users.

- You do not want to lose privacy when the government and the website work together. The request should still be anonymous when the two collaborate, or else there can be no reasonable assumption of privacy. This rules out most clever pass-a-one-time-code schemes.

- You want the request to be unique and time-bound. It should not be possible to replay a response, either to the same website or a different one.

- You do not want to send more data than strictly necessary. If a website needs to know if you are 18 or older, it should only receive a boolean flag.

Getting some of those properties is easy. Getting all of them at the same time? Nearly impossible. And the worst part is that I almost certainly forgot a handful of requirements!


The technical issues are workable, the really difficult issue is none of the big stakeholders really care about the level of privacy you describe. Priorities like audit compatibility, cost of deployment, etc all end up governing what standards get adopted.

Edit: And as Doctorow points out there are a host of other issues that arise from actually deploying a working system.


You're doing the thing where you hold age-verified requests to an unreasonably high standard of privacy, ignoring the status quo.

The absolute majority of porn viewers access a mainstream site like Pornhub through their home or mobile ISP, which is required to verify the owners identity. So in practice, if you're an average user (note: Hacker News users aren't average users) your ISP already knows which porn sites you visit, and your privacy is dependent entirely on your ISP not sharing that information with the government or other organizations.

If you look closely you'll see that none of your concerns are actually valid.

> You do not want the government to know which websites you visit. This rules out any kind of redirect / forwarding via a government website or app.

Technically trivial (e.g. using Referer-Policy: origin).

> You do not want websites to correlate their requests

Impossible to guarantee today.

Yes, this sucks, but this is not a failure of age verification.

> You do not want a website to correlate multiple data requests

This isn't the norm today. For example, Pornhub today already doesn't work without cookies. That doesn't stop users from flocking to it.

Still, it _would_ be technically possible to provide this; see Cloudflare Turnstile for an example. But nobody cares; neither mainstream users nor site owners want stateless websites.

> as that would allow websites to create some kind of supercookie.

No it wouldn't.

> You want the request to be unique and time-bound. It should not be possible to replay a response, either to the same website or a different one.

Technically trivial.

> You do not want to send more data than strictly necessary. If a website needs to know if you are 18 or older, it should only receive a boolean flag.

Technically trivial.

So to summarize: literally all of your concerns are easily dismissed as either easily solvable or already part of how the web works. None of it is pertinent to the topic of age verification.


> You're doing the thing where you hold age-verified requests to an unreasonably high standard of privacy, ignoring the status quo.

There is a lot of this going on in this thread and frankly it is quite frustrating. Texas and France are two jurisdictions I know implemented privacy laws and now porn websites are collecting PII. I know this because when I traveled to Europe, my account on an adult website (gasp, yes I admit to having one) started asking me for ID. When I tried to proceed through verification with their chosen third party *the flow requested a video of my face*. Yuck. When I got back the US, it was still requesting face verification. I talked to support and, basically, once I used a French SIM card it "blew a verification fuse" and the only way to get my account back was to send that video of my face. I found this unacceptable, so I abandoned my account.

If we refuse to find a workable solution that respects privacy and is based in open standards, we are going to cede this space to private third party companies.


> if you're an average user (note: Hacker News users aren't average users) your ISP already knows which porn sites you visit, and your privacy is dependent entirely on your ISP not sharing that information with the government or other organizations.

You're doing this thing where you pretend that public policy is only required to consider the average person's needs on their most average day. The same rhetoric can be used to argue against the vast majority of your personal freedoms.

Imagine for a second that freedom of speech doesn't exist yet. If you're just like the average person who has nothing of value to say on the average day, then you don't need freedom of speech. Utilizing freedom of speech isn't the norm, therefore demanding it as a fundamental right is unreasonable. Nobody cares and why should they, they don't have anything important to say. Case closed.

> If you look closely you'll see that none of your concerns are actually valid.

No, you just severely underestimate the challenges of designing and implementing a system that would likely take many PhD-lifetimes of effort if you wanted to be confident that your implementation doesn't completely destroy whatever is left of our online privacy.

You're potentially creating a digital panopticon, one that doesn't have any escape hatches like the current internet and yet you naively brush every concern away as "trivial" while your "solution" to one of the most pressing concerns depends on good faith collaboration from the website operator and even then incorrectly presumes that the Referer header is the only way that the government could possibly learn that information.


It's even more restrictive than than, for age verification you only get back whether the person is above the age limit or not, it's a boolean response.

So I think from that view the eID works pretty well, it provides the minimal necessary information. The bigger issue with something like this is if you use them to enforce real name policies or stuff like that.


Presumably the request contains some nonce, otherwise this is trivial to replay?

But even then, I can volunteer my ID, keep it permanently attached to a computer running a server that allows certain requests (like the boolean age check), and then provide an API / client that allows anyone anywhere to use it to pass.

No risk to me (none of my data leaks), presumably no rate limits (the card has no way to track time; at best it could store recent request timestamps but I doubt it does).

In fact even better, use stolen or lost cards. Owner will get a new one, but the old one has no way of knowing it's voided. We can build a network that is able to sign whatever info (age, gender, city, name) you want, as long as we have one ID with such info.


>But even then, I can volunteer my ID, keep it permanently attached to a computer running a server that allows certain requests (like the boolean age check), and then provide an API / client that allows anyone anywhere to use it to pass.

That’s not technical problem and it doesn’t have to be a technical solution to it. You will be committing fraud and maybe a few other crimes if underage users are involved. As soon as you will start advertising the service, you will be on law enforcement radar. Or maybe you don’t advertise it, but one of the boys using it will brag at school and get someone’s attention…


Yes and access to porn is not a technical problem. I don't see why my privacy is to be compromised because of incompetent parents.


You are not entitled to unrestricted access to any online services on condition of anonymity neither it is even possible in real world. 1) There’s always someone who knows and whom you implicitly trust. 2) trusting some random ISP or VPN provider but not IdP or specialized verification proxy is rather irrational.


It would probably be enough to stop an unsophisticated eight year old from seeing porn.

If it turns out to be a real issue, we could figure out a way to implement pairwise pseudonyms, so that each ID has a pseudonym with each service that is unlinkable to other services. If you see a million requests from a pseudonym, that pseudonym probably an ID being abused and you can block it.


You need a PIN.


That still results in the government knowing you connected to that website though.

Edit: unless there’s a blind middleman that has tight data policies?


I think it does not know. The app is open source and it just sends the Boolean. The government just gives out the id cards - they are not involved in the verification process


I know the whitelabel EU app is open source but are the derivatives going to be? As far as I understand it, every EU country will release its own version of the app.


And it's actually a good thing and not bad. EU version explicitly requests Google or Apple attestation, which at least on Android is astonishing overreach, since theres Hardware Attestation API that can confirm the platform integrity better (instead of confirming old, unpatched handsets with leaked keys are secure, LOL).

Hopefully some countries will do it the correct way.


I am talking about the German AusweisApp:

https://github.com/Governikus/AusweisApp


Not really (as far as the website and the government doesn't collaborate and share information with each other).

AFAIK the EU age verification app works by requesting bunch of digitally signed "proof of age" tokens (openid verifiable credentials) from a government institution and sends (uses up) one when you want to prove your age to a website. The website can check the validity of these tokens without connecting to the government institution.

They are even trying to do some form of blind signature or zero-knowledge proof to have better protections.

https://ageverification.dev/av-doc-technical-specification/d...

Age verification laws are easy to circumvent and they are bad for many other reason though.


...Unless the government is specifically looking out for this, that's easy to game by just submitting a bunch of requests for age validation with incrementing ages.

Is that worth it? No idea—but I'm willing to bet some surveillance advertisers think it's worth it.


I haven't read the spec so I'm not sure if you can request that or only 18+.

However doing dozens of requests requires the user's approval each time which may raise red flags and I can imagine your certificate revoked.


I completely agree it's technologically feasible in basically every continental European country (as we all have some form of biometric IDs), but do you want to have to do that every time you open a private tab to look at porn? Do you want to not be able to clear your browser cookies without going through that process all over again for basically every website? Do you want to extend 2FA into 3FA with your national ID acting as the third factor so you can view "sensitive" content?


This guy gets it!

Don't get me wrong, I love diving into the technical details just as much as anybody else here. I've learned something new almost every time there's a comment thread on the subject .

But the technical details are a distraction. That this is happening at all is the forest the technical crowd is going to miss for the trees.

Preserving some semblance of privacy on the internet is already hard enough. We do not need systems like this to encroach any farther; risks of personal privacy is so great and could be caused by such a simple innocent and subtle configuration mistake.


> the forest the technical crowd is going to miss for the trees.

If it were intentional, you could call it successful nerd sniping.


The ID card also has this amazing function where you can log in to sites using the card without revealing your identity, and even merging the databases from two sites does not allow two users to be identified as the same natural person: https://www.personalausweisportal.de/Webs/PA/EN/business/tec...

I have never seen a website offering login using this function, though ;-)


I always wanted to play around with this. It's like a FIDO2 Stick everybody has.

But then again, who wants to use their ID card for some trivial non government site just to create an account


> This way the government does not know which sites you visit

Hmm. It's not clear from the description that it is so. The government knows which site sent the request and authenticates your card, which is tied to your identity, right?


There's:

-the ID card which trusts the government PKI and has its own private key and certificate

- the application that does some certificate checks and facilitates communication between the card and an eID server

- an eID server which is connected to the PKI and regularly received short lived certificates to present to the card, does revocation checks, validity checks and a bunch of other stuff. Also provides a list of fingerprints of TLS certificates of eID services allowed for the session

- an eID service which opens a session with the eID server indicating requested data and ultimately receives this data from the eID server. They own the legalese certificate of which data they have access to.

- maybe another provider wrapping all this and the required certifications,. compliance and hardware into an easy to use API. But could also all be the same.

It could be argued that the government has influence on the eID server providers - which do the actual communication with the card and are the first to receive the data before passing it on - via access to the necessary PKI, but they're not directly involved in the communication.


That certificate retrieved from the government has no personal information attached to it. It's essentially empty, only defining what information will be requested from the user.

The certificate is passed to the user's ID card where that information is populated, the document is cryptographically signed, and returned to the requesting party after the user reviews and approves the transaction.


I'm not asking what goes to the site. Does the request to the goverment come from the site you visit? Can the government pair the site with your card? They know who they issued the card to.


If the ID card cryptographically signs it, doesn't that mean that it isn't anonymous?

I assume it's a variant of PKI, with everyone trusting the government's root key, and each ID card storing a unique certificate signed by that root key. But an ID card will only have a single certificate, so it would be trivial to see that multiple data snippets were signed by the same certificate - and therefore the same person. That would allow a website to track users across sessions - or even across websites.


Age and IP address are probably sufficient to uniquely identify most Internet users.


Interesting. How does the revocation of lost/stolen cards interact with the anonymous design of the age attestation?

If an enterprising 19-year-old sold their card and PIN to a 15-year-old and reported it lost to get a replacement, presumably there's some mechanism to stop the 'lost' card being used as proof of age?


There are some steps missing.

The card communicates with an eID server via the app. This server is connected to the PKI and receives a new certificate daily-ish and also has a revocation list of blocked IDs. There's a ridiculous amount of regulation for hosting one yourself, so you get that service from one of the two or three who provide it as a service.

ID data this eID server received from the card is then sent to the eID service that initiated the session, which may either be the entity who needs it, or another service provider who wraps another set of regulation requirements and complex eID server API calls into an easy to use API for their customers.

ID data isn't actually shown to the user in the app unless it's a custom implementation that loops it all the way back from the service provider at the end.


That would be an unlikely scenario. No one would just sell their ID just like that because you have to go to the police to make a report on what happened exactly which then gets distributed in whole Europe and also getting a new ID is quite a procedure and costly unfortunately


You don't sell the id, you login once on their computer.


For the curious, look up BSI TR-03124 eID-Client and BSI TR-03130 eID-Server for technical implementation, available in English.


This might be fine, especially if it was restricted to a specific subset of websites, but I presume that (especially in Germany !) the ID card is not mandatory, and neither are smartphones, and pushing both of them towards being nearly socially mandatory requirements is a very bad idea, especially in a context where iPhones / Androids are somehow still not only effectively legal in the EU, but even dominant.


I agree about smartphones, but ID cards actually are effectively mandatory in Germany (per Wikipedia, you don't need one if your primary address on record is in another country, or if you have a passport). The situation in the neighbouring Czech Republic is the same, and I think many other European countries have similar laws.


That is surprising to me, since the reason why they aren't (legally, effectively would be another discussion) mandatory in France is because it was the Nazis that first introduced them...


I'd refine Doctorow's claims to "Privacy preserving age verification is bullshit in the Common Law Anglo world".

You are completely correct that civil law jurisdictions have already solved this: Germany, Estonia, and many others have the all the requirements: a register of all persons available to the central authority, and crypto infrastructure to make it work.

What's missing from the UK, Canada, USA, etc. is the first part! It is hard to believe if you live in Germany, but there really is no big master list of people in those countries. There are many (many, many) lists, linked badly by many different ids. The tax registry, pension registry, drivers license registry, and visa registry are some of the big ones.

Things could be so much simpler if we had such a thing, but the politics between here and there are basically impossible.


Those big (computerised) master lists were really useful for the Holocaust: I'm not sure it's a bad thing that some countries don't have them.


Unfortunately the countries that don't have them, still have them.

Your birth certificate is still stored somewhere. You're still entered in a bunch of databases from the moment you're given birth to in a hospital. You still get a social security number, which you need to work, which you need to do to afford food.

Sure, all those databases might not have a neat shared primary key, but that's definitely not going to stop future Holocaust 2.0 perpetrators from joining all those tables together.


Slightly different spellings of names (Ant Mars Smith vs Mark Tony Smith-Jones), ways to write addresses (house name vs road name), etc will make automatic joins difficult. Such inconsistencies do not significantly affect the ability for humans to use the records.

Then it's just a matter of making sure that everybody with the skills to do so, either refuses, or does a bad enough job to sabotage other parts of the process. (It is not hard to think of these, so I will not discuss them here.) Making the job legitimately difficult makes it easier for people to refuse to do it, and makes it more likely that the bad guys who try will find that they actually can't.


Slowing them down might be enough.

Didn't we have a recent example with DOGE ?


If you think the NSA didn't build this during Pointdexter's TIA program, I don't know that to tell you.

The USA 100% has this, it's just secret and much less useful for it. The SSA is 95% there.


There's no way this could be implemented globally.


why don't you think this would work? Technically this is basically "the (SP) site trusts another (IDP) site to sign/encrypt a JWT containing some custom assertions". The user would go to the SP, get a signed blob (session nonce / expiry / whatever), take that to the IDP, log in there, IDP creates a JWT with the original blob plus any assertion you allow, you post the JWT back to the SP, SP decrypts the IDP packet, gets its own nonce, ties you to the session, done.

There are also obviously better ways (https://blog.cloudflare.com/privacy-pass-standard/ possibly some variation of zero knowledge proofs) but technically this seems like a solvable problem. Money wise the IDP or in general verifier can charge users for an account and/or generated assertions.


The problem is not technical, it's human :)


that's great, no one should be viewing websites the government doesn't approve of.


I guess I'm such a hard line anarchist that this sounds totally awful to me. Remember East Germany? Nope, none of you do...


> Remember East Germany? Nope, none of you do...

I do. (Just barely.)

I don't have a Personalausweis. (You only need to have either a passport or an ID card, not both.)


Even if you could do this in every single country (it would already be extremely hard to actually do this in the United States reliably, and I can only imagine it is basically a non-starter in a lot of developing countries) it does pose so, so, so many problems.

- How can you ensure the system can't be abused if there's no identifying information passed? Don't get me wrong, this is also a problem with current systems, maybe even worse. But if it's privacy preserving, ... Almost all kids under 18 have parents or guardians. Almost all of those parents or guardians are 18 or older. So literally all you have to do to bypass age verification is steal their ID for a few minutes? There are also a myriad of solvable problems that aren't guaranteed to be solved without care, like ensuring that the same ID is not used 100,000 times.

- This is a job that is best suited for the government to handle. The internet is global though, and there are a lot of governments. In the U.S., there is in fact not one federal ID, but instead we use state IDs. I assume that means you now need to handle around 50 different state IDs to be able to verify someone's identity, but it actually gets even worse than that, because some people will have IDs, and some will have drivers licenses, because oddly enough that's just how we structure IDs here. People without drivers licenses may have state IDs which are often intentionally visibly distinct to make sure they can't be mistaken for the other. In states I'm aware of, you'll never have both, the driver's license acts as a state ID if you have one. Now scale that to every country on Earth.

- As insane as it may sound, there are plenty of people who don't have essentially any form of ID. You might think I'm over-estimating the numbers with "plenty", but even just in the United States, it's literally over 2.5 million, off the top of my head. (No idea what the best source is here.) The closest thing we have that every citizen is supposed to have is Social Security, but that isn't really usable as a form of ID for various reasons. (And frankly it's a pretty terrible means to verify someone's identity at all anymore in the Internet age, but oh well.)

I'm totally sympathetic to the fact that people really don't want their kids browsing porn on the Internet, but children basically can't pay for Internet access or afford iPhones. I think it's insane that people keep suggesting using advanced cryptography, zero-knowledge proofs, privacy pass tokens or whatever else for a problem that so clearly needs to be solved socially and not technically. (And obviously, only the surface-level aspects of this are really about porn. We all know it's deeper than that, and if it wasn't, the UK would readily exempt Wikimedia from these requirements. I hope nobody here is deluding themselves into thinking this is a noble effort.) You are literally giving your children a device that can easily obtain porn and letting them use it unsupervised. It's not like it was a secret: Avenue Q told you everything you needed to know. I get that raising kids is hard and society pressures you to do this, but isn't that the problem you'd rather tackle?

The problem is that we've let this idea that you can solve the problem like this enter the mainstream, and now that we have, even smart and reasonable people may accidentally convince themselves that it is tractable just because it is technically feasible to devise such a system. This is bad because we're going to waste a lot of energy repeating ourselves on thinking about the entirely wrong way to look at things.


> Almost all kids under 18 have parents or guardians. Almost all of those parents or guardians are 18 or older. So literally all you have to do to bypass age verification is steal their ID for a few minutes?

Presumably this is the purpose of the PIN, which I assume is in the owner's head, not on the card (otherwise it would be redundant with the NFC chip).


Look, I'm not trying to paint the picture that the problems aren't technically solvable; the fact that it kind of is is the part that makes this discussion so durable.

I admit that PIN verification would make it harder to bypass the system, though to be honest with you, I think it's also not really hard to realize that some kids will still manage to figure out their parent's PIN numbers, which they will likely re-use for their bank cards and a bunch of other shit, because most people don't really want to have to come up with 10 different PIN numbers, and we all kinda get the idea that PIN numbers aren't really that secure in the first place. Adding a PIN number requirement is probably a wise idea, but it does make the system a bit more of a PITA for everyone as people will inevitably forget their PIN and need to reset it or what have you. And I reckon that's basically how each countermeasure for problems of these systems go, each one just adds a little bit more pain depending on how hell bent you are on making it work. (I think the PIN number is good enough for trying to prevent someone for stealing your identity with your ID card to an extent, but not as good against people you live with misusing your ID card.)

Of course, you could keep going. You could try to come up with counter-measures to discourage someone from re-using their ID card for other people, and probably at least limit the impact of some of these issues to make the system basically work.

Even if you really do concoct the perfect solution for one country, you then have to make sure this problem gets solved correctly in every individual federal government, and then anyone who wants to offer adult content online has to individually handle identity verification across all countries that require it.

Meanwhile, we already have a system where essentially only adults can buy devices to connect to the Internet, and Internet service plans. You can't even get a debit card in the U.S. without being at least 18 years of age.


The 'bank <-> majority' solution was one I was favorable of... until we were recently reminded with Steam / Itch how the payments system does engage in extra-legal censorship.


We can fix the extra-legal censorship problem. Hell, it might've already happened in the U.S. possibly, because of Donald Trump's "Fair Banking" executive order; I know it couldn't have been the intent, but as written it sure sounds like it unambiguously makes it illegal to deny banking access for legal activity, and sounds like it might even apply to payment processing. I guess the plan after that is probably to strongly regulate adult content as part of Project 2025, but still, it does show that we could actually regulate payment processing such that you can't just claim harm to brand image and block of legitimate customers. I especially agree with this if we're going to do nothing about the massive obvious monopolies in the space.


> all you have to do to bypass age verification is steal their ID for a few minutes?

There are numerous interesting and/or problematic aspects of this, but this question is perhaps the least interesting.

If your kid, or anyone else really, steals your ID then age verification is the least of your problems. They could transfer all your money, move house, get married, change your name or a myriad of other much more serious things. Willingly letting your kid use your ID would be borderline illegal and not an insurance in the world would cover it.

> literally over 2.5 million

These people have never borrowed a book, visited a doctor, paid taxes or opened a bank account? There are many things in society that require validating who you are. Surely they have some form of ID. Perhaps just a more insecure one than a cryptographically signed.

I don't think a federal identity is as far fetched as you make it sound, for better and for worse.


> If your kid, or anyone else really, steals your ID then age verification is the least of your problems. They could transfer all your money, move house, get married, change your name or a myriad of other much more serious things. Willingly letting your kid use your ID would be borderline illegal and not an insurance in the world would cover it.

Yes, for most people, your kid absolutely could accomplish all of that. I absolutely could've done that as a kid. This is well-documented, you can find many cases of it actually happening. Kids can also steal your car keys and crash it, they do that. It's just that most kids don't just randomly go and commit crimes like steal all of your money, but they absolutely lie about being 18 and bypass restrictions meant for them. (Like for example, clicking 'I am 18' on websites when they're not. I've never done that, of course.)

> These people have never borrowed a book, visited a doctor, paid taxes or opened a bank account? There are many things in society that require validating who you are. Surely they have some form of ID. Perhaps just a more insecure one than a cryptographically signed.

> I don't think a federal identity is as far fetched as you make it sound, for better and for worse.

There's a lot of Americans who would have some choice words about that, and I suspect that is why we have 2.5 million Americans with no form of photo ID.

Also, I actually agree a federal ID is generally doable. I don't think it's a good solution for this problem, and I think it will be very difficult to enforce this one in the U.S. for cultural reasons.


> In the U.S., there is in fact not one federal ID, but instead we use state IDs.

That's only partially true. We also have federal IDs: passports, passport cards, permanent resident cards, DoD Ids, Transportation Worker IDs. There's also some other federally issued IDs listed as Real ID compliant [1], but I've never seen them so I didn't list them.

[1] https://publicpoint.fnal.gov/get-connected/Shared%20Document...


That's not exactly what I mean though, I really mean to say that there's no federal ID that you can basically rely on people having. I totally get that there are actually federal IDs, and probably could've worded that a bit better.

What I really mean is that among IDs you might expect every citizen to actually have, state IDs are basically the most reliable and even that only gets you around 99% of the way there.


And you think a crafty teenager can't get around that?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: