Private Keys for Everybody!
There's a certain pleasure in amassing large piles of objects. Usually it's gold, sometimes jewels, other times it's a pirate stash. Few would stockpile passwords until its height surpasses that of the tallest skyscrapers. Instead, people use one perhaps two passwords and maybe a select few use upwards to half a dozen different passwords. In the online world, most accounts handled by a person are almost invariably protected by the same password or many different easy passwords. For a person attempting to break into another's account this is the perfect environment to thrive and fraud has been damaging the global economy for years. Many have offered solutions but it is not the technical issues that create the greatest barricade but political will and planning.
Here is a simple idea, and please comment on any flaws inherent to the scheme. First, the government gives everyone a private key, and we'll arbitrarily state that it will be a 512-bit key. The Canadian government would produce fifty million private keys and individuals will pick it up at a government office. We will pretend this government office is the "Ministry of Private Keys". The government retains the public-key portion of the private-public key and thus only the citizen knows the private key.
This key would be stored on a ROM USB stick, or whatever happens to be the easiest external storage device, and act as a black box with the private key never being accessed directly. This will prevent anyone, short of physically breaking open and manually inspecting each bit on the memory stick, from obtaining the private key. The only other method is through cryptoanalysis, but given a sufficiently strong encryption scheme this should be a futile effort.
When an user logs onto a website, for instance, TD Canadatrust's EasyWeb and accesses online banking, they encounter the typical username and password login screen. The website sends a plaintext challenge to the user, plus whatever is necessary to prevent man in the middle attacks, and the user sends back the encrypted form of the plaintext using his/her private key. The banking website then uses the citizen's public key to decrypt to obtain the original plaintext challenge. As a side note, challenges cannot be repeated in use, in order to prevent dictionary attacks. This adds a layer of authentication to the process.
In addition, challenges will likely have to be blocked from all except "trusted" sources. These would likely be websites certified by the "Ministry of Public Keys" to be using the government provided authentication service. In this way, an attacker cannot easily obtain a large number of plaintext-ciphertext pairs. As well, the physical device used to store the private key will not be wireless, as this would add a mountain of security issues.
If a user loses his username/password due to, for instance, phishing email, the attacker still cannot authenticate him/herself as the citizen because they lack the private key. If a private key is lost, then much like a credit card, it can be reported lost or stolen to the government, and it can be backdated to the date it was lost. The public key attached to that citizen would then be banned from use and all authentication would fail.
The public keys are stored on a "Ministry of Private Keys" server, with its security certificate embedded into Internet browsers. Due to privacy concerns, a bank cannot directly ask for a single public key. Instead, to obfuscate the request, a bank asks for a sufficiently large subset of public keys in order to hide the identity of the individual accessing the bank's website. In addition, the public key server retains no log of public key requests but because this is a weak link in the trust, the aggregated public key retrievals builds more trust. This portion of the scheme could use some more development to guarantee better security without trust.
One of the hardest components is creating a secure factory to build the USB keys with the private keys installed on it. Every single private key must be a potential private key to have been used and there should be no way to know which private keys were used. The bit length of the private key should be sufficiently large that it is statistically impossible to have a collision of two keys. Keys should be sealed until picked up by a citizen at a "Ministry of Private Keys" office. These keys must be placed into a guarded vault, perhaps by mounties, until they are used. In short, there should be sufficient confidence that the keys are never tampered with until they reach the hands of the intended citizen.
The scheme is intended to provide people with better online security with the services they use the most, such as banking, shopping, and other popular activities in an effort to reduce fraud. The two primary aspects intended to be achieved is security without loss of privacy. Only the holder of the private key can know the key, the government has no access. There are far too many ideas and schemes forwarded by political factions attempting to convince their constituents that all privacy must be destroyed in order to obtain a safer society. This is simply not true and an affront to democracy.
This scheme may not be a unique idea, but unless this is backed by a sufficiently empowered entity, such as the state, sporadic use of private key encryption schemes, like PGP, will only be for the technical elite. The common man will simply be left poor in the digital world.
Added Dec 17, 2008
As a change to the system, rather than using Public Key servers, the government would act as a security certificate authority. The certificates, containing a citizen's public key, would be sent to a bank and the bank would then check the certificate's authenticity in order to obtain someone's public key. This way, the only way the government can invade privacy is by monitoring all Internet traffic, a much more gargantuan task.
I also received another suggestion that citizens should be able to create a private key themselves. However, I'd need details on how the common person can be expected to understand the creation of private keys in an easy manner, as well as do it in a clean environment. Clean environment means that the computer system used to generate a private key is free of viruses or trojans capable of compromising a private key from the very beginning. While it is entirely valid and logical to have a citizen create his own private key, I find it somewhat dangerous to leave that task to anyone not well versed in mathematics and cryptology. It is not a very large stretch of the imagination to see social engineering seriously eroding the value of a private key in that manner. The method should be simple but also completely safe (so that no one would easily gain knowledge of the private key in use).
-Ultrapunk
Here is a simple idea, and please comment on any flaws inherent to the scheme. First, the government gives everyone a private key, and we'll arbitrarily state that it will be a 512-bit key. The Canadian government would produce fifty million private keys and individuals will pick it up at a government office. We will pretend this government office is the "Ministry of Private Keys". The government retains the public-key portion of the private-public key and thus only the citizen knows the private key.
This key would be stored on a ROM USB stick, or whatever happens to be the easiest external storage device, and act as a black box with the private key never being accessed directly. This will prevent anyone, short of physically breaking open and manually inspecting each bit on the memory stick, from obtaining the private key. The only other method is through cryptoanalysis, but given a sufficiently strong encryption scheme this should be a futile effort.
When an user logs onto a website, for instance, TD Canadatrust's EasyWeb and accesses online banking, they encounter the typical username and password login screen. The website sends a plaintext challenge to the user, plus whatever is necessary to prevent man in the middle attacks, and the user sends back the encrypted form of the plaintext using his/her private key. The banking website then uses the citizen's public key to decrypt to obtain the original plaintext challenge. As a side note, challenges cannot be repeated in use, in order to prevent dictionary attacks. This adds a layer of authentication to the process.
In addition, challenges will likely have to be blocked from all except "trusted" sources. These would likely be websites certified by the "Ministry of Public Keys" to be using the government provided authentication service. In this way, an attacker cannot easily obtain a large number of plaintext-ciphertext pairs. As well, the physical device used to store the private key will not be wireless, as this would add a mountain of security issues.
If a user loses his username/password due to, for instance, phishing email, the attacker still cannot authenticate him/herself as the citizen because they lack the private key. If a private key is lost, then much like a credit card, it can be reported lost or stolen to the government, and it can be backdated to the date it was lost. The public key attached to that citizen would then be banned from use and all authentication would fail.
The public keys are stored on a "Ministry of Private Keys" server, with its security certificate embedded into Internet browsers. Due to privacy concerns, a bank cannot directly ask for a single public key. Instead, to obfuscate the request, a bank asks for a sufficiently large subset of public keys in order to hide the identity of the individual accessing the bank's website. In addition, the public key server retains no log of public key requests but because this is a weak link in the trust, the aggregated public key retrievals builds more trust. This portion of the scheme could use some more development to guarantee better security without trust.
One of the hardest components is creating a secure factory to build the USB keys with the private keys installed on it. Every single private key must be a potential private key to have been used and there should be no way to know which private keys were used. The bit length of the private key should be sufficiently large that it is statistically impossible to have a collision of two keys. Keys should be sealed until picked up by a citizen at a "Ministry of Private Keys" office. These keys must be placed into a guarded vault, perhaps by mounties, until they are used. In short, there should be sufficient confidence that the keys are never tampered with until they reach the hands of the intended citizen.
The scheme is intended to provide people with better online security with the services they use the most, such as banking, shopping, and other popular activities in an effort to reduce fraud. The two primary aspects intended to be achieved is security without loss of privacy. Only the holder of the private key can know the key, the government has no access. There are far too many ideas and schemes forwarded by political factions attempting to convince their constituents that all privacy must be destroyed in order to obtain a safer society. This is simply not true and an affront to democracy.
This scheme may not be a unique idea, but unless this is backed by a sufficiently empowered entity, such as the state, sporadic use of private key encryption schemes, like PGP, will only be for the technical elite. The common man will simply be left poor in the digital world.
Added Dec 17, 2008
As a change to the system, rather than using Public Key servers, the government would act as a security certificate authority. The certificates, containing a citizen's public key, would be sent to a bank and the bank would then check the certificate's authenticity in order to obtain someone's public key. This way, the only way the government can invade privacy is by monitoring all Internet traffic, a much more gargantuan task.
I also received another suggestion that citizens should be able to create a private key themselves. However, I'd need details on how the common person can be expected to understand the creation of private keys in an easy manner, as well as do it in a clean environment. Clean environment means that the computer system used to generate a private key is free of viruses or trojans capable of compromising a private key from the very beginning. While it is entirely valid and logical to have a citizen create his own private key, I find it somewhat dangerous to leave that task to anyone not well versed in mathematics and cryptology. It is not a very large stretch of the imagination to see social engineering seriously eroding the value of a private key in that manner. The method should be simple but also completely safe (so that no one would easily gain knowledge of the private key in use).
-Ultrapunk