The full technical specification
The Project SCIM software is written in 100% pure Java using the open source
encryption software as produced by Cryptix.
How secure do you need your communications to be? Well, that depends on the lifetime of the data
you are transmitting. If it is only useful for the next 5 minutes, then it doesn't
need to be too secure. On the other hand, if you are transmitting national secrets
- you would want to use the maximum encryption available. Most of us should
be perfectly happy with somewhere in-between.
We are using symmetric key encryption in this software - because it is very
fast. Unfortunately, symmetric key means the same key is used for encryption
and decryption. This presents us with a problem - if I want to communicate with
you, then we both need to know the key which is being used - and the only way
to agree on a key to use without anyone else knowing it is to send it already
encrypted. Catch 22!!!
Luckily, there is another form of encryption called asymmetric (or public key)
which was invented by Rivest, Shamir, and Adelman who went on to form the company RSA Security. It is called asymmetric because
one key (the public key) is used to encrypt the message, but the only way to
read the message is by using the private key (which is kept secret for obvious
reasons). It does not matter who we give the public key to - in fact we want
everybody to know it so they can send us messages. We use this to transmit our symmetric keys to each other.
Your privacy thus depends on the integrity of the RSA system, and of the symmetric
algorithm you choose for your actual communications. This is why we are only
using well-known encryption algorithms. They have been around for some time,
and are considered to be uncrackable.
For up-to-date information on how secure the RSA system is, check out the official
website www.rsasecurity.com - note
that we are currently using 2048-bit keys, but this will be changed in the near
future to allow you to select exactly how tight you want your security.
At the time of writing, 512-bit keys have been broken (as of August 1999) and
576-bit keys are expected to be broken relatively soon. This is a bit irrelevant,
given the computing power required to decrypt a single message even with 1024-bit
keys (approximately 25 million years on a single machine with a 1Gig processor, or 1 year if you have 25 million computers), but it gives some indication of how secure this is.
1024-bit keys should be unbreakable for quite some time. RSA consider that a
2048-bit key should be secure for decades (barring a complete paradigm
shift in computing hardware) and Project SCIM has faith in RSA and therefore uses 2048 bit keys.
It is also worth noting that in general it is necessary to validate the public
keys used to avoid the possibility of "man-in-middle" attack, but
its not necessary for us. Man-in-the-middle attacks have someone intercepting
messages, possibly changing them and then forwarding them on. The attacker must
know the private keys so the messages can be decrypted. With the Project SCIM
software, the public/private key pairs are generated when the program starts and are
unguessable so the Man-in-the-middle has no access to them.
How about the keys themselves? How good are they? Well, the Project SCIM
creates the keys when the software starts (as detailed above),
using the best techniques at our disposal. However, we will be offering the
chance in the future to supply your own keys (beware the UK RIPA laws if you
want to do this). We do think you should be allowed to supply your own keys
if you wish, but its up to you to ensure they are good keys - in particular
RSA relies on the infeasibilty of factoring a very large number which has only
2 very large prime factors. If you supply a key which has small factors then
it will be very easy to crack. Bear that in mind...
Note that since the key use is purely transient (i.e. the keys only exist for
as long as you are using the application), there is no record of the
private key stored on your computer, which means it is impossible to access
it.
The real sticking point in any encryption product is the question of whether
the algorithms are written correctly. Badly written algorithms could be easily
crackable. We use open-source libraries for our encryption which means they have
been heavily tested and are highly trusted. Check them out at
cryptix.org.
If you are a qualified crypto-analyst, then feel free to examine the data which
is transmitted to convince yourself it is strongly encrypted. There are many
products available which can enable you to see this data such as network
monitors.
How does the software work?
First of all your client generates an RSA key-pair. These are currently 2048-bit
keys, but this will be changed in the near future to allow you to select exactly
how tight you want your security.
Then it generates a symmetric key which is transmitted to the server using the
servers public key. This symmetric key is then used for all subsequent communications.
At the time of writing the symmetric algorithm being used is 256-bit AES which
is likely to be uncrackable as a symmetric key until way beyond the year 2040.
Then you login to the server, your username and password and all other communications are encrypted and sent
to the server, and your presence is indicated to any other users
who you have granted permission to see your online status.
If you choose to chat privately to another user, a direct
connection (Peer to Peer) will be negotiated between yourself and them, using yet another symmetric
key. This means that your communications will not even be passing through the
server, which will give you even greater protection and privacy.
In particular,
the symmetric key you use to communicate directly with other people is not known
to the server. Communicating Peer to Peer (bypassing the server) also allows your messages to travel faster.
Unfortunately, due to the proliferation of paranoid corporate firewalls, this
direct connection may not always be available from corporate networks - in which
case, your communication will have to be routed through the server. A warning
is issued to you whenever the connection switches in this way.
That, in essence, is it!
What information could be known about people using this service?
The only things we know about any of our users is the
nickname you use. You choose your nickname, and we don't ask for any other
information about you, because we don't want to know who you are or what you
are communicating - your privacy is paramount. Your network IP address
is never stored with your username so we have no idea where you are connecting from. We don't want to know!
Since the login process is encrypted, the most an outside observer could possibly
do would be to tell you are using the service, and possibly the IP addresses
of those you communicate with. They would not know your nicknames or anything
else about your communications. It is impossible for any outside observer to
intercept any part of your message.
Also, since all the keys used are generated on the fly and discarded after
use - it is not possible to decrypt any messages which have been intercepted.
You are also safe from legislation such as RIPA in the UK, which require you
to hand over the keys to encrypted files on demand - you can't, because you
don't know the keys, and you never did know them.
Okay, I'm convinced...let me download it.