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

On days like this I dream of a world in which every citizen has a key pair assigned by the government for the purpose of interacting with the government.

It could work like this: you get the private/public key pair provided in your passport, or on a special social-security-type card. The public key is also on a website registered to your name, so anyone can look up your public key. However, in order to be allowed to sign anything, you have to be in the presence of a government agent who can verify your identity via a second means (e.g., at the DMV, your driver's license + social), and then the government agent signs it as well. So there's no _less_ verification of your identity in the system as before, but anyone can quickly verify the authenticity of your documents.



> On days like this I dream of a world in which every citizen has a key pair assigned by the government

I understand and fully sympathize with the spirit of this idea, but it is very important to understand that it cannot be the government who assigns a key pair. It has to be you who generates the key pair, and registers the public key -- and only the public key -- with the government. And the registration process has to be such that no one can register a key that they have generated on your behalf. Getting such a process to really work can be quite tricky, even trickier than conducting an election the old fashioned way.


For such a system to work, you would need people to be able to understand the system and check it so that it's not hijacked locally.

Since it's a system of great complexity (anything involving programming, crypto, networking and any electronic is, really), you can't guaranty that.


Difficult != impossible. It can be done. Here is one possible design:

The government would publish an auditable non-repudiatable key registry, i.e. a public ledger similar to a blockchain (except you wouldn't need miners because the government would serve as a trusted third party) which maps keys onto their owners and vice versa. Anyone can then at any time look up their key in the registry to make sure that it really is their key. The initial registration process would involve some sort of identity confirmation similar to what you have to go through to get an official government ID issued nowadays. To register a key you would go to a notary who would take a photo of you and attest to the fact that the key being registered is the person in the photo. The photos would not need to be published (though they could be). They would be used mainly when someone alleges identity theft. That would make it highly likely that anyone attempting to falsely register a key would be caught. That would remove a lot of the incentive to attempt it.


There are so many point of failures in your descriptions I don't know where to begin.

- The network can be hacked;

- the client can be hacked;

- the server can be hacked;

- people managing the server can be corrupted or forced to do things;

- the system could have a subtile bug in either the client, server or network;

- the system could have a failure in either the client, server or network.

- how are persons suppose to be able to audit them ? Go to the server ? The network node ?

- how much time a citizen must spend studying the system before he or she can start to even begin to assess the sanity of it.

- how much time and persons to assess the entire system ?

There is NO WAY an average citizen can even start to comprehend the full extend of all that, if you couldn't even see all those problems.

Paper is simple. It sill can have it's problems, it's not perfect, but people can understand it and audit it quickly, easily, without being trained. It has less single point of failure, less complexity, more accessibility.

Technology is NOT the answer here.


It's easy to make a list of general weakness that apply to any system, but you haven't actually described any specific attack. Yes, of course all of these things can happen, but all of these risks exist today in voter registries and passport registries. There's nothing really new in a key registry except that it's registering keys. There would still be humans -- notaries -- in the loop, and that would prevent most attacks.


> i.e. a public ledger similar to a blockchain (except you wouldn't need miners because the government would serve as a trusted third party)

So, like, just a ledger?


No, not just a ledger, an audtiable public non-repudiatable ledger, i.e. one where every entry is the result of some commitment protocol. For example, every entry could include a signature that covered the contents of the new entry plus the hash of the previous entry. If ever there were two entries with the same ancestor hash that would be evidence of tampering.


Is this just because you don't trust the government not to use your secret key for nefarious purposes? Because if that's the case I feel like you wouldn't participate in the civic system at all... Like forget signing your vote you just wouldn't vote.


> Is this just because you don't trust the government not to use your secret key for nefarious purposes?

That too. But mainly it's because I don't trust the government (or anyone else for that matter) to keep my secret key secret.


But you trust them to keep your vote secret, you trust them to keep national secrets secret, etc. I get that this is a big single point of failure that would be really difficult to fix if it was leaked. But the general default trust in the government to not, e.g, leak your SSN or vote... if you don't have that then the whole conversation is a nonstarter.


Actually, no, I generally do not trust the government to keep secrets. That is why I would be very upset if my ballot had my name on it. As for SSN's, they were never intended to be secret, and using them as an authenticator is a Really Bad Idea (not that that stops anyone). But anyone who wanted to know my SSN could find it easily.

Defense secrets are a little different. It's not so much that I trust the government to keep them as that I believe that the government is incentivized to keep them because that advances the government's interests. But even then there are exceptions when the stakes are high, c.f. Ed Snowden.


I think OP is just saying that non-repudiation is a really important component for using key pairs, and so key pairs should be generated by the owner.


This should be one of the few things governments _should_ be in charge of.

But wouldn't using a blockchain be a better idea for something like this?


No. Blockchains are horribly inefficient. The only reason to use a blockchain is if you don't have a trusted third party. If you have a trusted third party you get the same functionality for a lot less cost. Because the government is already the final arbiter of who is a citizen we may as well just let them publish the ledger.

Blockchains are useful in financial systems because there are strong incentives to cheat, and hence it is much more difficult to find a trusted third party to keep the ledger.

It should also be noted that blockchains only protect their direct participants. Secondary actors can still be cheated every bit as easily as they can in traditional financial systems. And even the direct participants are not fully protected. Bitcoin is by far the biggest blockchain in terms of mining capacity, and well over 50% of that capacity is in China. If the Chinese government wanted to attack the Bitcoin network it very likely would succeed.


Estonia has tried to do that with varying levels of success

http://www.id.ee/public/The_Estonian_ID_Card_and_Digital_Sig...


I would flip it and say that the Government only maintains the public key registry, and you alone keep your private key. You can extend that kind of scheme by signing "birth certificates" of your children using your private key to prove familial relationships. The hard part is dealing with key revocation in the event someone steals your private key. And of course overcoming the ambient distrust of government some people have.


Or losing the private key or forgetting the password. I have public keys that are older than a lot of HN commenters that I have not been able to use for almost two decades, I can't imagine how fun it would be do design a system where your private key is integral to your civic rights.

Build a system that can handle public keys for 100K people for more than ten years and then I might think about letting you start working on a pilot system to work out the additional failure scenarios, but absolutely nothing that the tech industry has produced in the past thirty years provides me with any sense of confidence that they would not screw this up horribly (and then those same people would complain bitterly on some future HN equivalent about what a waste of money this effort was.)


Oh for sure. Thought experiments like this are often far cries from workable solutions that are robust in the real world. That's basically a summary of why viable crypto for the masses in other domains remains such an albatross.


ID cards in Estonia pretty much work the way you are describing. https://en.wikipedia.org/wiki/Estonian_ID_card


My (citizen) id card has digital certificates https://en.m.wikipedia.org/wiki/Citizen_Card_(Portugal)


The ballot has to be anonymous. And you need to find a way to make the technology available to all.


The anonymity requirement is relatively easy to solve for with either blind signatures or a homomorphic voting scheme. The general availability part is trickier since solving for it is akin to solving for the current issues with voter registration and disenfranchisement. India is having decent success rolling out their UIDAI program, so there's hope on that front, but distribution is the part of the stack that math and technology can't solve for directly.


I upvoted you for imagining a better voting system. Even though I disagree.

Voting in the USA must be preserve the secret ballot and be publicly verifiable.

I've studied a few crypto voting systems. None so far satisfy these requirements.

Further, any future perfect voting tech will only be provided by vendors, vs done in house, and I oppose the outsourcing of our election administration.


Do you have a link to a paper about either of those? Last I read they didn't scale well.


I feel like this would defy the point of the anonymous vote, unless I'm missing some key point of your description (no pun intended!)


Zero Knowledge proofs offer properties of anonymous, cryptographically verifiable votes

https://security.stackexchange.com/questions/46709/can-a-zer...

http://www0.cs.ucl.ac.uk/staff/J.Groth/ACNS05VoteProofFull.p...


In Spain (and most of Europe, I assume, but can't really tell since I only vote here) you have an ID card (with a picture, among other things), and you are assigned a voting location according to your latest census data. In that location, there is a list of the people with a right to vote there. When you vote, your name is marked on the list. No-one gets to see your vote (well, until counting, but there is nothing identifiable along your ballot), the only thing that is not anonymous is the fact of whether you voted or not.

Oh, and the people assigned to do the task (checking the ID, marking the stuff, later on counting the ballots) are randomly chosen from the local census. Accredited people from the political parties can be part of the counting (but not touch anything until the first count is done).


Or you could avoid all of the technical mumbo jumbo and friction for voters... and use a convenient and easy to audit medium (paper) whose process can be understood by anyone.




Consider applying for YC's Fall 2026 batch! Applications are open till July 27.

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

Search: