PKI/Crypto support for Messaging and Presence

Thomas Muldowney

The Jabber.org Project

temas@jabber.org

Peter Millard

The Jabber.org Project

pgmillard@jabber.org

Jeremie Miller

The Jabber.org Project

jeremie@jabber.org

01/25/2001


Introduction

These namespaces are used to sign and encrypt messages and presence for end-to-end security. They are most secure when performed at the client level, but could optionally be supported and used by a trusted server. The crypto information is contained in the jabber:x:signed or jabber:x:encrypted namespaces. The contents are the armor'd output from GPG or PGP, and have all of the header and wrapper text removed (it serves no purpose within this context). Any future additional encryption schemes other than PGP/GPG should utilize their own namespace(s) to exchange data.


Signed Presence

The status element of presence is the CDATA that is signed:
<presence from='pgmillard@jabber.org/wj_dev2' to='jer@jabber.org'>
  <show>online</show>
  <status>Online</status>
  <x xmlns='jabber:x:signed'>iQA/AwUBOjU5dnol3d88qZ77EQI2JACfRngLJ045brNnaCX78ykKNUZaTIoAoPHI
2uJxPMGR73EBIvEpcv0LRSy+
=45f8</x>
</presence>

Signed/Encrypted Messages

A signed message would look/work the same as presence above, but the CDATA would be the contents of the body element.

An example encrypted message, containing the word "Hi":
<message to='reatmon@jabber.org/jarl' from='pgmillard@jabber.org/wj_dev2'>
  <body>This message is encrypted.</body>
  <x xmlns='jabber:x:encrypted'>qANQR1DBwU4DX7jmYZnncmUQB/9KuKBddzQH+tZ1ZywKK0yHKnq57kWq+RFtQdCJ
WpdWpR0uQsuJe7+vh3NWn59/gTc5MDlX8dS9p0ovStmNcyLhxVgmqS8ZKhsblVeu
IpQ0JgavABqibJolc3BKrVtVV1igKiX/N7Pi8RtY1K18toaMDhdEfhBRzO/XB0+P
AQhYlRjNacGcslkhXqNjK5Va4tuOAPy2n1Q8UUrHbUd0g+xJ9Bm0G0LZXyvCWyKH
kuNEHFQiLuCY6Iv0myq6iX6tjuHehZlFSh80b5BVV9tNLwNR5Eqz1klxMhoghJOA
w7R61cCPt8KSd8Vcl8K+StqOMZ5wkhosVjUqvEu8uJ9RupdpB/4m9E3gOQZCBsmq
OsX4/jJhn2wIsfYYWdqkbNKnuYoKCnwrlmn6I+wX72p0R8tTv8peNCwK9bEtL/XS
mhn4bCxoUkCITv3k8a+Jdvbov9ucduKSFuCBq4/l0fpHmPhHQjkFofxmaWJveFfF
619NXyYyCfoLTmWk2AaTHVCjtKdf1WmwcTa0vFfk8BuFHkdah6kJJiJ7w/yNwa/E
O6CMymuZTr/LpcKKWrWCt+SErxqmq8ekPI8h7oNwMxZBYAa7OJ1rXWKNgL9pDtNI
824Mf0mXj7q5N1eMHvX1QEoKLAda/Ae3TTEevOyeUK1DEgvxfM2KRZ11RzU+XtIE
My/bJk7EycAw8P/QKyeNlO1fxP58VEd6Gb8NCPqKOYn/LKh1O+c20ZNVEPFM4bNV
XA4hB4UtFF7Ao8kpdlrUqdKyw4lEtnmdemYQ6+iIIVPEarWl9PxOMY90KAnZrSAq
bt9uRY/1rPgelRaWblMKvxgpRO8++Y8VjdEyGgMOXxOiE851Ve72ftGzkSxDH8mW
TgY3pf2aATmBp3lagQ1COkGS/xupovT5AQPA3RzbCxDvc6s6eGYKmVVQVj5vmSj1
WULad5MB9KT1DzCm6FOSy063nWGBYYMWiejRvGLpo1j4eAnj0qOt7rTWmgv3RkYF
Oin0vDOhW7aC
=CvnG</x>
</message>