Provides a default implementation of the RV commands used in initializing and
communicating over an encrypted IM session via the SecureIM protocol created by
the developers of Trillian, an IM client for Windows.
Trillian SecureIM consists of Blowfish encryption with a symmetric 128-bit key
negotiated using a Diffie-Hellman key exchange protocol.
About the protocol
Not enough arguments are passed between two clients to satisfy a true
Diffie-Hellman key exchange. In Diffie-Hellman, there are three variables
normally transmitted by one client, and one sent back by the other. The Trillian
Encryption protocol only transmits two from the client and one from the other.
It appears that the missing variable is g
, the "generator" or
"exponent base," as it is called. This value appears to always be
5
.
Normally, a Diffie-Hellman key exchange is 512
or
1024
bits. Trillian SecureIM keys contain only 128 bits.
The normal sequence of commands in a Trillian Secure IM connection is as
follows:
- A: {@link net.kano.joscar.rvcmd.trillcrypt.TrillianCryptReqRvCmd} to
request a session
- B: {@link net.kano.joscar.rvcmd.trillcrypt.TrillianCryptAcceptRvCmd} to
accept a session
- A: {@link net.kano.joscar.rvcmd.trillcrypt.TrillianCryptBeginRvCmd} to
begin the session
- A and B: {@link net.kano.joscar.rvcmd.trillcrypt.TrillianCryptMsgRvCmd}s
containing message text
- A or B: {@link net.kano.joscar.rvcmd.trillcrypt.TrillianCryptCloseRvCmd}
to close the connection
For a working sample implementation of Trillian SecureIM using joscar, see the
TrillianEncSession
class in the joscar demo source distribution. As
of this writing, this file is located in
demo/src/net/kano/joscardemo/rv/TrillianEncSession.java
in the
joscar source distribution.
For more details on the protocol, see
@see net.kano.joscar.snaccmd.CapabilityBlock#BLOCK_TRILLIANCRYPT