PKI Security - Solving Problems in PKI
Conventional PKI requires the user to have the public privacy key of a recipient. This is not helpful when trying to communicate with a function rather than an individual. An alternative scheme for privacy could be adopted that solves this problem.
Most people developing PKI systems use algorithms such as RSA or DSA to provide the digital signature by which the sender is authenticated. I say authenticated rather than identified, because if they have not been identified by a Certification Authority (CA) somewhere then you have to check their identity for yourself. Someone has to make the connection between a cryptographic key and the individual using it.
This works fine where you believe that the CA has checked on who the person actually is. Maybe the CA is also their employer, or a bank, or the government or some similar body that you think is likely to get it right.
However, the signature system works because the sender usually provides their 'digital certificate' along with the signed information so that it's easier to check it out. If they don't, then you have a problem figuring out who they might be because you have to know who to ask in advance.
The first problem
As you can now guess, digital signatures don't tell you about the unknown, only the known. Now if that is true for the digital signature, then what about privacy?
Well, privacy uses the same method as the digital signature, but working the other way round. You can't send a certificate along with the encrypted message because then anyone could read the message! So you have a problem. You need to have the recipients privacy certificate (it may be the same as their signing certificate, it depends on the scheme they're running, but that's getting even more complicated so we'll ignore it).
Now that's fine if you have already had something from them, but what about if you haven't? Now we're walking on thin ice. Somehow or other you need to be able to get hold of that certificate. That's because the way that RSA and DSA work you can't guess a value, you generate both keys at the same time and destroy the value that links them together.
So your first problem is that you need to be able to figure out who you are going to send something to in advance and make sure you have their key.
The second problem
This is a bit of a twist on the first problem. Very often you don't actually know who you are sending information to. What you do know is their functional responsibility. You don't know the individual in the tax office who is going to deal with your affairs, but you certainly don't want to share them with the whole Internet while you're doing it.
This is a sort of 'group' concept. You want to communicate with someone with the right functional responsibility inside a destination organization. Now when you get a reply from that functional responsibility you want to know who, as an individual, it is you are dealing with. You don't want some nameless function. But when you reply, you may need to deal with the individual, the function, or both.
Now this starts to get a bit confusing because you suddenly have an increasing number of people (and functions) that you are having to encrypt things for, and you have to keep track of it all, because you, as the sender, get to fix in stone who can read you information.
Solutions - good, bad and ugly
The ugly solution is classical PKI. You keep track of all the individuals. Hopefully there is a Directory that you can get hold of where you can pull down all the information you need on whoever you want to send things to. There is a downside to this approach. Whoever is running the Directory needs to be up to date and has to be very careful that what they publish is absolutely right, but at the same time does not publish to the outside world more than they want to declare about the organization.
A bad solution would be for the organization to publish a Directory with keys of functions for people outside to communicate with. This gets around a few problems in the ugly solution, like reducing the amount of information that gets published and reducing the amount that has to be protected since people change a lot faster than job functions. But it now means that lots of people inside the organization have to have the keys to be able to read information sent to that function or there has to be some kind of administration system that converts from one privacy key to another. That has to be heavily protected because it will store lots of keys that have to be kept out of the hands of hackers and internal staff.
A good solution could be developed based upon some published work by Clifford Cocks, about schemes for predicting public privacy keys.
An overview of the Clifford Cocks scheme
The name Clifford Cocks may not be immediately familiar to people outside the rather close community of cryptographers, but he is now credited as being the original inventor of asymmetric cryptography (schemes using two different keys), but since he was then (and still is) employed by the British national security agency GCHQ, his original work was not published because it was considered a national secret.
In the last couple of years he published a paper on a method for being able to predict the public privacy key of a recipient from published information referred to as ID-PKC. The mathematically inclined may like to look at the technical aspects of the scheme, which were published on the CESG web site www.cesg.gov.uk. (CESG or Communications- Electronic Security Group is the public facing arm of the British national security agency.)
The attractions of the scheme are considerable. It is possible to have a scheme which incorporates the date as one of its fields, as well as a function and the formal name of the organization being addressed. It is also possible to only issue the matching private key when it is required.
This is a stunning combination of capabilities for PKI. It gets around several problems that are otherwise quite difficult to solve.
If you incorporate the date then corporate privacy keys can be made self-updating without having any of the complications created by using Directory for rapidly changing keys. The scheme also means that a private privacy key only needs to be generated when it is required, it does not actually have to be stored all the time.
The public details of the scheme the corporate is using may be digitally signed so that external users can be certain the information they are using to generate the public privacy key is right.
It can also be made available to anyone inside the corporation who needs it rather than being personal to an individual. And since the value changes by the day no-one inside the corporation can compromise a significant amount of information if they do get access to a key when they should not. Even more importantly you can always get a copy of the key at a later date if it becomes necessary, so keys cannot be 'lost' if an individual leaves.
From the outsider's point of view there are many good features for such an approach also. There is no need to find the name of an individual in the organization before you can send something in confidence. There is no concern about the 'wrong'people being able to read the information, or of having to maintain a catalogue of keys of all the people who might need to be able to read what is being sent. The sender can also send the information they used when generating the privacy public key because the scheme is not compromised by doing that. This helps if for any reason the data they used for predicting the privacy key was incorrect (perhaps they chose the wrong organizational function).
Public key cryptography is not restricted to a single approach of having to generate a pair of related keys simultaneously. Other schemes are mathematically possible, and such schemes offer important facilities that may be used to simplify some practical difficulties encountered when trying to implement schemes based solely on the RSA/DSA approach. There are no technical reasons why such schemes should not co-exist, and they may in fact be required when dealing with governmental bodies and others that have a need to work through functional titles rather than personal identities.