[Security] SImple CA - client/user delegation (new topic)

Johansson Olle E oej at edvina.net
Sat Aug 23 09:21:34 CDT 2008


Well, the basic technology with a CA is not that hard. The legal part  
and the trust part in upper layers are the tough issues to handle.
Let's just assume that the goal here is to build a small CA or web of  
trust with a "user" identity in the top.
That identity and the binding to a JID is already created, either  
controlled by the client or by the XMPP
domain admistrator.

-----------
To go back a few steps and try to explain a bit:

Everything starts with assymetric keys - one called private and one  
called public. In PKI/CA systems, the public key and some
administrative data is encapsulated in a document called a  
Certificate, that is inself signed by another entity like
any other document or software signed with a digital signature. They  
create a hash of the document, encrypt that
with their private key and since we have their public key in our CA  
certificate store, we approve of the digital
signature and thus approve of the public key.

After that, there is a challenge where we ask the other side to  
encrypt a token with their private key, so that we
are assured that they have access to the private key. If we accept the  
CA's digital signature of the X.509
signature, we accept the binding between the administrative data (user  
name, server name,  JID, e-mail address)
and the entity on the other end of the communications channel.

To summarize, you have
  * the private key
  * the public key
  * A certificate, that binds an identity to the key pair

-----------

Now, in the case of client/user delegation, we could in theory

  * create a new key pair for the client - the device

  * sign the public key with the "user account"'s private key

  * in this signed document - regardless of format  include a full jid  
- basic jid and resource - of the client
  * send the signed document to the server

  * Assuming that the server already has accepted the user's binding  
between a JID and the key-pair,
    the server now accepts the delegation from the user key pair to  
the "client" key pair and adds the
    fingerprint or the public key or the full document to a identity  
store

  * Now, the client connects using the client "cert" and is identified  
as a client authorized for the
    user's account with a fixed full jid

I am not aware how this fits into a traditional X.509/PKI structure,  
but am sure that Simon can help
me there. This is definitely doable with PGP, it's just a small user- 
based "web of trust".

With a solution along this lines, I could accept using those hosted  
jabber solutions for iPhone
and not be afraid of losing my phone. And Dirk could delegate to a set- 
top-box or something
else.

And yes, there was a lot of mushroom in the forest :-). Back to the  
kitchen...

Cheers,
/O


More information about the Security mailing list