Merge commit 'origin/silc.1.1.branch'
[silc.git] / README
1 SILC - Secure Internet Live Conferencing
2 ========================================
3
4 SILC (Secure Internet Live Conferencing) is a protocol which provides
5 secure conferencing services on the Internet over insecure channel.
6 SILC is IRC-like software although internally they are very different.
7 The biggest similarity between SILC and IRC is that they both provide
8 conferencing services and that SILC has almost the same commands as IRC.  
9 Other than that they are nothing alike.  Major differences are that SILC 
10 is secure what IRC is not in any way.  The network model is also entirely
11 different compared to IRC.
12
13
14 Running SILC
15 ============
16
17 After installing the SILC to the system the SILC client is started by
18 giving command:
19
20         silc
21
22 If you want to run with specific configuration file give -f option.
23
24 To run the server you should configure the server first.  To run the
25 server give the command:
26
27         silcd
28
29 This will launch the server on to the background.
30
31
32 Features
33 ========
34
35 Features to be included into the final release of SILC.  [Note that the
36 current Developer's Version does not include all of these features, read
37 TODO file for more information.]
38
39  o Normal conferencing services such as private messages, channels,
40    channel messages, etc.  All traffic is secured and authenticated.
41
42  o No unique nicknames.  There can same nicknames in SILC without
43    collisions.  SILC has unique Client ID's, Server ID's and Channel ID's
44    to assure that there are no collisions.
45
46  o Secure key exchange and authentication protocol.  SILC Key Exchange
47    protocol provides key material used in the SILC sessions in secure
48    manner.  The protocol is immune for example to man-in-the-middle 
49    attacks.  The SILC Authentication protocol provides strong 
50    authentication.  Authentication may be based on passphrase or public
51    key (RSA) authentication.  For clients there is an option not to
52    use authentication when connecting to servers.
53
54  o All traffic is encrypted and authenticated using the best cryptographic
55    algorithms out there.  Command messages, private messages and channel
56    messages are all protected by encryption.  User can set private keys
57    for both private message and for channels so that even SILC servers do
58    not know the keys.  Cipher keys are, by default, 128 bits in length and
59    public keys, by default, 1024 bits in length.
60
61  o Supports data compression with GZIP to improve performance.
62
63  o Supports SOCKS4 and SOCKS5 firewall traversal protocols.
64
65  o SIM (SILC Module) support.  Support for loading of shared objects at 
66    run-time that provides new and extended features to both SILC client
67    and server.  These can provide extra ciphers and extra features to
68    the software.
69
70  o SILC client can be installed and used without root privileges.
71
72  o SILC client can be configured by system wide configuration files but
73    with user specific configuration files as well.
74
75
76 History
77 =======
78
79 SILC was released in the summer 2000 to the public, but the idea and the
80 protocol itself is quite old. The SILC was designed by Pekka Riikonen in
81 the year 1996 and first lines of codes were written in the early 1997. The
82 SILC has been rewritten three times since its very first version in 1997.
83 The first version included SILC client, very preliminary SILC server, RSA
84 implementation and 3DES implementation. The server actually was not usable
85 but the client looked pretty much the same as the first client released in
86 the summer 2000. The first version had also random number generator which
87 were based on the SSH's random number generator. The current RNG is based
88 on the first RNG but has been rewritten twice since the first version. 
89
90 The development of SILC was suspended in 1997 when Pekka got busy at
91 school and in work. The pause laster several months. The development
92 resumed in 1998 when Juha Räsänen and Pekka implemented the ElGamal
93 algorithm. However, for the same reasons as previously the development
94 stopped again, and was resumed again later in 1998 by doing rewrite of
95 ther SILC in C++. This was obviously a mistake but at that time it seemed
96 like a good idea. Again, in the winter 1999 the development suspended when
97 Pekka got busy writing his thesis and was forced to stop the development. 
98
99 Later, in 1999, it was decided that this time SILC will be rewritten from
100 scratch in the right way. C++ was obviously a bad choice so plain C 
101 language was selected again. The protocol itself faced some rework by
102 redesigning some core parts of the protocol. The protocol was also fully
103 documented and the protocol specifications were submitted to the IETF. The
104 result of this development effort is the release now in public. Since the
105 release in the summer 2000 several other people have contributed to the
106 project as well. And, the development continues. 
107
108
109 Contact
110 =======
111
112 Feedback and comments are welcome.  Bug reports should be sent to the
113 development mailing list.
114
115 Official SILC project web site      : http://silcnet.org/
116 FTP archive for SILC project        : ftp://ftp.silcnet.org/
117 Development mailing list address    : silc-devel@lists.silcnet.org
118 SILC Server                         : /server silc.silcnet.org
119