[JDEV] Signed & encrypted messages
Max Horn
max at quendi.de
Mon May 28 08:47:34 CDT 2001
At 17:49 Uhr -0400 27.05.2001, Mathew Johnston wrote:
>I see what you mean now. I am not entirely convinced, however,
>that this is necessary when using X509 certificates since
>you are concerned with the integrety of the certificate, and the
>trustworthyness of the certificate authority, not where the particular
>copy of the certificate came from.
Exactly. Knowing where the key was stored is not at all helping to
discover how "trustworthy" that key is. If I'd made a key/certificate
for myself and labeled it "Bill Clinton", then put it to some key
server, then the key/cert is still fraud, regerdless of how much you
trust the key server.
The only way to be able to trust/cert if is it is signed/certified.
In PGP, you use the web of trust or CAs for this; and with X509, you
usually only use CAs (although there are attempts to do something
like the Web of Trust with X509, too; IIRC Thawte is/was working on
this).
Anyway, this also means it is not really a problem to request keys
directly from other clients. Or to store them on the jabber server.
Or to get them from any location. The security is for all the same.
That's not the problem; the security is achieved by checking for the
signers of the key, and if we know one or more of them to be valid &
trustworthy, we can decide to trust the validity of the key; if we
don't know any of the signers (or the signer is not trustworthy),
then we simply can't trust the remote key. Point!
(For PGP keys, there is also the possibilty to use keyprints and
transfer those over phone or via snail mail, this can be used as a
different way to verify a PGP key - and to mark a key as "trusted"
with PGP, you have to sign it manually anyway).
>Personally, I think x509 certificates
>are a good choice since there is already a lot of x509 infrastructure out
>there, and x509 provides us with specification of encryption algorithms,
>third party signing, key management, etc. I'd like to hear arguements for
>or against different key exchange schemes. I think we need the following
>key exchange properties:
>
>- ability to access users public key when user is not online
Both X509 and PGP offer this.
>- ability to verify authenticity of the key
Both X509 and PGP offer this.
>- ability to request key for use with particular algorithms
I don't see what this is good for. If I use OpenSSL to validate X509
certs, I would support most algorithms anyway, and it will pick a
supported one. If you use PGP, well, that supports all its
algorithms, too, and gpg should support most, too.
Different algorithms also mean different keys... basically, what you
mean is that a user should have multiple keys using different
algorithms, but "tarned" as a single key. But the encrypted data I
get is signed with exactly one of those keys; unless you want to send
the encrypted data several time, for each key seperatedly... or maybe
i misundertand you here?
>- ability to manually exchange keys (write down on paper and type
> them back in, etc)
I am not sure this is very practical; PGP at least offers
Fingerprints, which (as mentioned above) can be transported on a
piece of paper or via voice. I don't know about X509; but I think
this feature is not that critical (I might be wrong of course).
>
>I think x509 can fulfil the first three properties.
Same for PGP. The current clients all use gpg/PGP AFAIK (I might be
wrong, never used any of the ones that support it, and mine all don't
support encryption yet :( )
Anyway, there have been arguments about this before, and I must admit
I am less sure than ever which one should be prefered. I don't see
anything that would really make one more fit than the other; but OTOH
keeping both at parallel seems like a possible future problem; i.e.
if I use PGP keys, and you use X509, can we communicate? Of course,
if all clients can at least decode/verify both, this would be no
problem...
Hm, I want to use OpenSSL anyway for SSL support... and gpg is
available for MacOS X, too, so i propably could stea... err, borrow
from Gabber and Jarl ;)
>The fourth
>property would be up to clients. Since there may be more than
>one certificate (for each different algorithm) we can't really
>put them all into a user's vcard, since that would be too big.
I agree. I'd prefer if vCards would stay small. But maybe vCards
should be signable? So we can verify they are real ;)
>However, someone mentioned that there is a way for clients to
>store data on a jabber server, to be querried for by other clients;
>this could be used to store the certificates. (can anyone comment
>on this further?)
You are talking about iq:private. Yes, this could be used, we could
agree on one or two namespaces to store PGP keys and/or X509 certs.
>I'm not sure if this method allows for the naming
>of chunks of data, but if it does we can allow querrying for
>particular algorithms by using naming rules for each 509 certificate
>resource. When the querry is returned, a name should be given to the
>certificate so that it can be referenced when using it (so that
>the recipient knows which certificate is being used)
>
>In the end, this is all up to the Jabber Foundation to decide upon,
>of course.
Yup, but we can already collect data ;)
Max
--
-----------------------------------------------
Max Horn
C++/ObjC/Java Developer
email: <mailto:max at quendi.de>
phone: (+49) 6151-494890
More information about the JDev
mailing list