1 SILC - Secure Internet Live Conferencing
2 ========================================
4 [NOTE: SILC is still in middle of development and this package is known
5 as Developer's Version which means that the package is in no means stable
6 or ready to be in production use. This package is for those who wants
7 to test SILC, find bugs and maybe contribute some time and code for the
8 SILC project. There is no guarantees that this package even compiles and
9 even if it compiles there is no guarantees that it would work, and even
10 if it works there is no guarantees that it would work correctly, and even
11 if it seems to work correctly it may be just plain luck.]
17 SILC (Secure Internet Live Conferencing) is a protocol which provides
18 secure conferencing services in the Internet over insecure channel.
19 SILC is IRC like softwarre although internally they are very different.
20 Biggest similarity between SILC and IRC is that they both provide
21 conferencing services and that SILC has almost same commands as IRC. Other
22 than that they are nothing alike. Biggest differences are that SILC is
23 secure what IRC is not in any way. The network model is also entirely
24 different compared to IRC.
30 The development version is still preliminary version and requires some
31 work to get it working. You should, first of all, check the example
32 configuration files in ./doc/ directory. Change them according to your
38 ./silc -f <config file>
43 ./silcd -f <config file>
50 /SERVER [<server>[:<port>]]
52 Connects to remote SILC server.
56 Changes/sets nickname. Note that in SILC there can be
57 multiple same nicknames. However, the logic on working
58 with multiple nicknames on user interface is pretty much
59 still missing. Also note that nicknames in SILC are
64 Joins to a channel. Channel names start with `#'
69 Leaves the channel. If /leave * is given the client
70 leaves the current channel.
72 /CMODE <channel> +|-<modes> [{ <arguments>}]
74 Changes/sets channel mode. Most of the modes require
75 special privileges, such as channel operator or channel
76 founder privileges to work. The mode is added by adding
77 + before the option(s) and removed by adding - before
78 the option(s). Following modes are available:
80 p Set/unset channel as private channel
81 s Set/unset channel as secret channel
82 k Set/unset that channel uses private channel key
83 i Set/unset channel as invite only channel
84 t Set/unset that only channel operator or
85 founder may set channel topic
86 l <limit> Set/unset channel's user limit
87 a <passphrase> Set/unset passphrase for channel that must
88 be provided when joining to the channel.
89 b <username!nickname@server>
90 Add client to/remove client from ban list
91 I <username!nickname@server>
92 Add client to/remove client from invite list
94 Set/unset channel's cipher
96 Multiple modes can be set/unset at once if the modes does not
97 require any arguments. If mode requires an argument then only
98 one mode can be set at once.
100 /CUMODE <channel> +|-<modes> <nickname>[@<server>]
102 Changes/set user's mode on a channel. Most of the modes
103 require that the client who changes some client's mode must
104 be channel founder or channel operator. Following channel
105 user modes are available:
107 a <nickname>[@<server>]
108 Set/unset all modes (cannot be used to set
109 both founder and operator rights, can be used
110 only to remove both modes at once).
111 f <nickname>[@<server>]
112 Unset channel founder. Channel founder rights
113 cannot be set by user (only by server) so this
114 can be used only to unset the mode.
115 o <nickname>[@<server>]
116 Set/unset channel operator. Requires that
117 you are channel operator or channel founder.
121 Sets/unsets user mode. Currently none of the modes can
122 be set by the user so this command can be merely used to
123 unset some mode. Following user modes are available:
126 s Unset server operator privileges
127 r Unset router operator privileges
129 /MSG <nickname> <message>
131 Sends private message to remote client. Support for
132 handling multiple same nicknames with /MSG command is
135 /WHOIS <nickname>[@<server>] [<count>]
137 Gives a little information about a client. Support for
138 handling multiple same nicknames with this command is
141 /WHOWAS <nickname>[@<server>] [<count>]
143 Gives a little history information about a client.
145 /KICK <channel> <nickname>[@<server>] [<comment>]
147 Kicks client from channel. You have to be at least channel
148 operator to be able to kick client from channel. Note:
149 you cannot kick channel founder even if you are channel
154 Pings server. Only locally connected server may be
159 Requests information about a server. If argument is
160 not specified current server is used.
164 Sets away message. When private message is received and
165 away message is set the client automatically replies to
166 the sender with the away message. To remove away message
167 give the command without arguments.
171 Quits session. Connection to remote server is closed.
175 Clears current screen.
179 Shows client version.
181 /OPER <username> [<public key>]
183 Obtains server operator privileges.
185 /SILCOPER <username> [<public key>]
187 Obtains router operator privileges.
189 /KILL <nickname> [<comment>]
191 Router operator can use this command to remove an client
192 from the SILC Network temporarily.
194 /CONNECT <server> [<port>]
196 Connects to server the remote <server>. You must be
197 server operator to be able to do this.
200 /CLOSE <server> [<port>]
202 Closes connection to the <server>. You must be server
203 operator to be able to do this.
207 Shutdowns the server. You must be server operator to be
212 Display the MOTD of the server. If server is not specified
213 the current server is used.
217 Lists all channels in the current server, or the channel
218 specified. If the channel cannot be found then all
225 Features to be included into the final release of SILC. [Note that the
226 current Developer's Version does not include all of these features, read
227 TODO file for more information.]
229 o Normal conferencing services such as private messages, channels,
230 channel messages, etc. All traffic is secured and authenticated.
232 o No unique nicknames. There can same nicknames in SILC without
233 collisions. SILC has unique Client ID's, Server ID's and Channel ID's
234 to assure that there are no collisions.
236 o Secure key exchange and authentication protocol. SILC Key Exchange
237 protocol provides key material used in the SILC sessions in secure
238 manner. The protocol is immune for example to man-in-the-middle
239 attacks. The SILC Authentication protocol provides strong
240 authentication. Authentication may be based on passphrase or public
241 key (RSA) authentication. For clients there is an option not to
242 use authentication when connecting to servers.
244 o All traffic is encrypted and authenticated using the best cryptographic
245 algorithms out there. Command messages, private messages and channel
246 messages are all protected by encryption. User can set private keys
247 for both private message and for channels so that even SILC servers do
248 not know the keys. Cipher keys are, by default, 128 bits in length and
249 public keys, by default, 1024 bits in length.
251 o Supports data compression with GZIP to improve performance.
253 o Supports SOCKS4 and SOCKS5 firewall traversal protocols.
255 o SIM (SILC Module) support. Support for loading of shared objects at
256 run-time that provides new and extended features to both SILC client
257 and server. These can provide extra ciphers and extra features to
260 o SILC client can be installed and used without root privileges.
262 o SILC client can be configured by system wide configuration files but
263 with user specific configuration files as well.
269 Even though SILC were just released to the public the idea and the protocol
270 itself is quite old. I got the idea about SILC in its current form in
271 the year 1996 and first lines of codes were written in early 1997. This
272 release is now third rewrite of the SILC. The very first version were
273 written in 1997 and it included SILC client and very very preliminary
274 SILC server. The server actually weren't usable but the client looked
275 pretty much the same as it does now. At that time the SILC also included
276 RSA implementation and 3DES implementation. The random number generator
277 that exists in this current release is actually based on the RNG written
278 in 1997. The RNG written in 1997, on the other hand, were based on
279 the SSH's random number generator. The RNG has been rewritten twice
280 since the first version.
282 I stopped writing the SILC later in 1997 when I got busy at school and
283 in work. The pause lasted several months. The development resumed in
284 1998 when my friend (Juha Räsänen) and I implemented ElGamal algorithm.
285 I rewrote some other parts as well. However, for the same reasons as
286 previously the development stopped again. I resumed the development
287 later in 1998 by doing rewrite of the SILC in C++. This was obviously
288 a mistake but at that time it seemed like a good idea. Again, in the
289 winter 1999 I got very busy writing my thesis and was forced to stop the
290 development again. I also, started a new job in the spring.
292 Later, in 1999, I decided that this time I'm going to make it the right
293 way. C++ was obviously a bad choice so I decided to fall back to plain
294 C language. I also decided to do complete rewrite and started doing
295 more thorough planning of what the SILC actually should include. I also
296 decided that this time it is going to kill me before I stop the
297 development. I started writing SILC in the weekends and actually
298 everytime I had some spare time. I also started a new job but I didn't
299 let that get to my way. The result of this development effort is the
300 release now in public.
302 I've learned a lot by doing the SILC. I guess, when I started it I wasn't
303 that good of a C programmer. That alone was a reason why SILC hasn't
304 seen the day of light before now. My programming style has also changed
305 dramatically during these years. Actually, it has changed couple times
306 since this last rewrite as well. However, the code style of current SILC
307 release is quite consistent (actually the coding style SILC has been
308 written now I've learned in my current job).
310 There is probably over 85% of new code in this third rewrite. Rest has
311 just been copied from the old versions and only minor changes has been
312 made (like changed function names and overall coding style). I've
313 preserved the dates of the old files (dating back to 1997) that has
314 existed in some forms in the old versions. There is a lot of new code but
315 already I see a lot that needs rewriting. The development continues.
321 Feedback and comments are welcome. You can reach me in the following
324 Official SILC project web site is : http://silc.pspt.fi
325 FTP archive for SILC project is : ftp://silc.pspt.fi/pub/silc/
326 Development mailing list address is : silc-devel@lists.sourceforge.net
328 Pekka Riikonen <priikone@poseidon.pspt.fi>