udpates.
[runtime.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 in the Internet over insecure channel.
6 SILC is IRC like softwarre although internally they are very different.
7 Biggest similarity between SILC and IRC is that they both provide
8 conferencing services and that SILC has almost same commands as IRC.  Other
9 than that they are nothing alike.  Biggest differences are that SILC is 
10 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 Even though SILC were released in summer 2000 to the public the idea and 
80 the protocol itself is quite old. I got the idea about SILC in its 
81 current form in the year 1996 and first lines of codes were written in 
82 early 1997. This release is now third rewrite of the SILC. The very first 
83 version were written in 1997 and it included SILC client and very very 
84 preliminary SILC server. The server actually weren't usable but the 
85 client looked pretty much the same as it does now. At that time the SILC 
86 also included RSA implementation and 3DES implementation. The random 
87 number generator that exists in this current release is actually based on 
88 the RNG written in 1997. The RNG written in 1997, on the other hand, were 
89 based on the SSH's random number generator. The RNG has been rewritten 
90 twice since the first version.
91
92 I stopped writing the SILC later in 1997 when I got busy at school and in 
93 work. The pause lasted several months. The development resumed in 1998 
94 when my friend (Juha Räsänen) and I implemented ElGamal algorithm. I 
95 rewrote some other parts as well. However, for the same reasons as 
96 previously the development stopped again. I resumed the development later 
97 in 1998 by doing rewrite of the SILC in C++. This was obviously a mistake 
98 but at that time it seemed like a good idea. Again, in the winter 1999 I 
99 got very busy writing my thesis and was forced to stop the development 
100 again. I also, started a new job in the spring.
101
102 Later, in 1999, I decided that this time I'm going to make it the right 
103 way. C++ was obviously a bad choice so I decided to fall back to plain C 
104 language. I also decided to do complete rewrite and started doing more
105 thorough planning of what the SILC actually should include. I also 
106 decided that this time it is going to kill me before I stop the 
107 development. I started writing SILC in the weekends and actually 
108 everytime I had some spare time. I also started a new job but I didn't 
109 let that get to my way. The result of this development effort is the 
110 release now in public. 
111
112 I've learned a lot by doing the SILC. I guess, when I started it I wasn't 
113 that good of a C programmer. That alone was a reason why SILC hasn't seen 
114 the day of light before now. My programming style has also changed 
115 dramatically during these years. Actually, it has changed couple times 
116 since this last rewrite as well. However, the code style of current SILC 
117 release is quite consistent (actually the coding style SILC has been 
118 written now I've learned in my current job).
119
120 There is probably over 85% of new code in this third rewrite. Rest has 
121 just been copied from the old versions and only minor changes has been 
122 made (like changed function names and overall coding style). I've 
123 preserved the dates of the old files (dating back to 1997) that has 
124 existed in some forms in the old versions. There is a lot of new code but 
125 already I see a lot that needs rewriting. The development continues.
126
127
128 Contact
129 =======
130
131 Feedback and comments are welcome.  Bug reports should be sent to the
132 development mailing list.
133
134 Official SILC project web site      : http://silcnet.org/
135 FTP archive for SILC project        : ftp://ftp.silcnet.org/
136 Development mailing list address    : silc-devel@lists.sourceforge.net
137 SILC Server                         : /server silc.silcnet.org
138
139                                 Pekka Riikonen <priikone@silcnet.org>