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.