SILC - Secure Internet Live Conferencing
========================================

SILC (Secure Internet Live Conferencing) is a protocol which provides
secure conferencing services on the Internet over insecure channel.
SILC is IRC-like software although internally they are very different.
The biggest similarity between SILC and IRC is that they both provide
conferencing services and that SILC has almost the same commands as IRC.  
Other than that they are nothing alike.  Major differences are that SILC 
is secure what IRC is not in any way.  The network model is also entirely
different compared to IRC.


Running SILC
============

After installing the SILC to the system the SILC client is started by
giving command:

	silc

If you want to run with specific configuration file give -f option.

To run the server you should configure the server first.  To run the
server give the command:

	silcd

This will launch the server on to the background.


Features
========

Features to be included into the final release of SILC.  [Note that the
current Developer's Version does not include all of these features, read
TODO file for more information.]

 o Normal conferencing services such as private messages, channels,
   channel messages, etc.  All traffic is secured and authenticated.

 o No unique nicknames.  There can same nicknames in SILC without
   collisions.  SILC has unique Client ID's, Server ID's and Channel ID's
   to assure that there are no collisions.

 o Secure key exchange and authentication protocol.  SILC Key Exchange
   protocol provides key material used in the SILC sessions in secure
   manner.  The protocol is immune for example to man-in-the-middle 
   attacks.  The SILC Authentication protocol provides strong 
   authentication.  Authentication may be based on passphrase or public
   key (RSA) authentication.  For clients there is an option not to
   use authentication when connecting to servers.

 o All traffic is encrypted and authenticated using the best cryptographic
   algorithms out there.  Command messages, private messages and channel
   messages are all protected by encryption.  User can set private keys
   for both private message and for channels so that even SILC servers do
   not know the keys.  Cipher keys are, by default, 128 bits in length and
   public keys, by default, 1024 bits in length.

 o Supports data compression with GZIP to improve performance.

 o Supports SOCKS4 and SOCKS5 firewall traversal protocols.

 o SIM (SILC Module) support.  Support for loading of shared objects at 
   run-time that provides new and extended features to both SILC client
   and server.  These can provide extra ciphers and extra features to
   the software.

 o SILC client can be installed and used without root privileges.

 o SILC client can be configured by system wide configuration files but
   with user specific configuration files as well.


History
=======

SILC was released in the summer 2000 to the public, but the idea and the
protocol itself is quite old. The SILC was designed by Pekka Riikonen in
the year 1996 and first lines of codes were written in the early 1997. The
SILC has been rewritten three times since its very first version in 1997.
The first version included SILC client, very preliminary SILC server, RSA
implementation and 3DES implementation. The server actually was not usable
but the client looked pretty much the same as the first client released in
the summer 2000. The first version had also random number generator which
were based on the SSH's random number generator. The current RNG is based
on the first RNG but has been rewritten twice since the first version. 

The development of SILC was suspended in 1997 when Pekka got busy at
school and in work. The pause laster several months. The development
resumed in 1998 when Juha Räsänen and Pekka implemented the ElGamal
algorithm. However, for the same reasons as previously the development
stopped again, and was resumed again later in 1998 by doing rewrite of
ther SILC in C++. This was obviously a mistake but at that time it seemed
like a good idea. Again, in the winter 1999 the development suspended when
Pekka got busy writing his thesis and was forced to stop the development. 

Later, in 1999, it was decided that this time SILC will be rewritten from
scratch in the right way. C++ was obviously a bad choice so plain C 
language was selected again. The protocol itself faced some rework by
redesigning some core parts of the protocol. The protocol was also fully
documented and the protocol specifications were submitted to the IETF. The
result of this development effort is the release now in public. Since the
release in the summer 2000 several other people have contributed to the
project as well. And, the development continues. 


Contact
=======

Feedback and comments are welcome.  Bug reports should be sent to the
development mailing list.

Official SILC project web site      : http://silcnet.org/
FTP archive for SILC project        : ftp://ftp.silcnet.org/
Development mailing list address    : silc-devel@lists.silcnet.org
SILC Server                         : /server silc.silcnet.org

