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

Reply via email to