updates.
[silc.git] / doc / whitepaper / silc_protocol.html
1 <!-- This file is processed with html2ps to generate PostiScript. 
2      Do not edit the HTML syntax unless you know what you are doing. -->
3 <html>
4 <head>
5 <title>SILC Protocol White Paper</title>
6 <link rev=made href="mailto:priikone@silcnet.org">
7 <meta name="Author" content="Pekka Riikonen - SILC Project">
8 <meta name="Description"
9  content="SILC - Secure Internet Live Conferencing Protocol">
10 <meta name="Created" content="Version 1.0 / 04 Aug 2001">
11 </head>
12 <body bgcolor="#ffffff">
13
14 <font face="Helvetica">
15
16 <font size="6"><b>SILC Protocol White Paper</b></font><br>
17 <font size="2">Version 1.0 / 04 Aug 2001</font>
18
19 <p>
20 <h1>Introduction</h1>
21
22 Chat protocols are very popular on the Internet.  They have actually
23 been very popular since the very first chat protocols appeared on the net.
24 The Internet Relay Chat (IRC) was one of the first chat protocols, and quickly
25 gained the status of being the most popular chat on the net.  Today, IRC
26 has several competitors from various other so called Instant Messaging (IM)
27 protocols, such as ICQ.  However, all of these different chat protocols
28 have something in common; they are all insecure.
29 <p>
30
31 The security is important feature in applications and protocols in 
32 contemporary network environment.  The older chat protocols, however have
33 failed to meet the growing security requirements on the Internet.
34 It is not anymore enough to just provide services, like for example
35 chat services. Now, they need to be secure services.
36 <p>
37
38 The Secure Internet Live Conferencing (SILC) protocol is a new generation
39 chat protocol which provides full featured conferencing services, just
40 like any other contemporary chat protocol provides.  In addition, it
41 provides security by encrypting and authenticating the messages in
42 the network.  The security has been the primary goal of the SILC protocol
43 and the protocol has been designed from the day one security in mind.
44 All packets and messages travelling in the SILC Network are always
45 encrypted and authenticated.  The network topology is also different
46 from for example IRC network.  The SILC network topology attempts to be
47 more powerful and scalable than the IRC network.  The basic purpose
48 of the SILC protocol is to provide secure conferencing services.
49 <p>
50
51 The SILC Protocol have been developed as Open Source project.  The
52 protocol specifications are freely available and they have been submitted to
53 the IETF.  The very first implementations of the protocol are also already
54 available.
55
56 <p><br>
57 <h1>About This White Paper</h1>
58 <p>
59 The purpose of this white paper is to give short but deep enough introduction
60 to the SILC Protocol.  The document describes the purpose of the protocol
61 and how the protocol works in practice.  This document is intended for all
62 audience.  This document should be easy to understand for non-technical
63 person and still be detailed enough for technically oriented person.  See
64 the section <a href="#terms">Terms and Abbreviations</a> for terms used
65 in this documents.
66 <p>
67
68 <p>
69 (c) Copyright 2001 Pekka Riikonen 
70 (<a href="mailto:priikone at silcnet.org">priikone at silcnet.org</a>)
71 <p>
72 This document is free document; you can redistribute it and/or modify
73 it under the terms of the GNU General Public License as published by
74 the Free Software Foundation; either version 2 of the License, or
75 (at your option) any later version.  This document is distributed in
76 the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
77 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
78 See the GNU General Public License for more details.
79
80
81 <p><br>
82 <h1>SILC Protocol</h1>
83 <p>
84
85 The Secure Internet Live Conferencing (SILC) protocol provides secure
86 conferencing services over insecure network channel.  The SILC is IRC
87 like protocol, however it does not support IRC.  Strong cryptographic
88 methods are used to protect SILC packets inside the SILC network.  SILC
89 provides all the common conferencing services like channels, channel
90 messages, private messages, nicknames and various commands.  Difference
91 to other chat protocol is in the design of the protocol.  The SILC 
92 protocol has been designed from the day one security in mind and it
93 shows in the protocol design.
94 <p>
95
96 The network topology is also different to various other chat protocol,
97 like for example IRC.  IRC has tree style network where SILC has so
98 called cellular network.  A cell consists of a router, servers and clients.
99 The cell can also have backup routers in case the private router becomes
100 unresponsive.
101
102 <p><br>
103 <object data="silc_network.jpg" type="application/postscript">
104 <img src="silc_network.png" alt="SILC Network" align="center" border"0">
105 </object>
106 <p><br>
107
108 The diagram above illustrates a portion of the SILC network.  It shows
109 two cells that both has several servers, and backup routers and several
110 clients.  Clients can connect to server and routers if they want to.
111 The following sections will describe the entities of the SILC Network
112 in greater detail.
113
114
115 <p><br>
116 <h2>Clients</h2>
117 <p>
118
119 A client is a piece of software connecting to SILC server.  The software
120 is usually run by the end user, a real person that is.  The purpose of the
121 clients is to provide the end user an interface to the SILC services.
122 They are used to actually engage the conversations on the SILC Network,
123 and they can be used to execute various SILC commands.
124 <p>
125
126 The clients are distinquished from other clients by unique Client ID.
127 There cannot be multiple same Client IDs in the SILC Network at the same time.
128 The end user, however does not use Client IDs.  The end users usually selects
129 a perferred nickname they want to use, and identifies themself with that
130 nickname to other users on the network.  The nicknames are not unique in
131 the SILC Network.  There can be multiple same nicknames at the same time
132 on the network.  The maximum length for the nickname is 128 characters.
133 <p>
134
135 Most of the other chat protocols have unique nicknames.  This is where SILC
136 differs from most of the other chat protocols.  The purpose of this
137 feature is to make IRC style nickname wars obsolete, as no one owns their
138 nickname; there can always be somene else with the same nickname.
139 <p>
140
141 When client connects to the server the SILC Key Exchange (SKE) protocol and
142 SILC Connection Authentication protocol are executed.  The result of the
143 SKE protocol is the session key that the client and server use to secure
144 their communication.  All commands, for example, that the client sends
145 to the server are secured with the session key.  The session key expires
146 periodically and the rekey process can be executed with or without the
147 Perfect Forward Secrecy (PFS).  The connection authentication protocol is
148 used to authenticate the client to the server.  The server may allow the
149 client to connect without authentication, or it may require a passphrase or
150 public key based authentication.
151
152
153 <p><br>
154 <h2>Servers</h2>
155 <p>
156
157 Servers forms the basis for the SILC Network, by providing a point to which
158 clients may connect.  There are two kinds of servers in SILC; normal servers
159 and router servers.  The next section describes the function of router
160 server.
161 <p>
162
163 Normal servers connect to router server.  Normal servers cannot directly
164 connect to other normal servers.  Messages that are destined outside the
165 local server are always sent to the router for further routing.
166 The clients usually connect to the normal server, however, clients may
167 connect to router servers as well.  The SILC Network diagram above
168 illustrates how normal servers connects to the router server.
169 <p>
170
171 The servers are distinquished by other servers in the network by unique
172 Server ID.  There cannot be multiple same Server IDs in the SILC Network
173 at the same time.  The servers keep track of local information.  It knows
174 all locally connected clients and it knows all channels that its clients
175 have joined.  However, it does not know any global information.  It
176 usually does not keep track of global clients, however, it may cache
177 that information if it was queried.  The reason for this is that the
178 server does not need to keep global information up to date and thus
179 makes the server faster (and in the end the entire network faster).
180 They can always query the information from the router.
181 <p>
182
183 When server connects to its router the SILC Key Exchange (SKE) protocol
184 and the SILC Connection Authentication protocol are executed, just like
185 when client connects to server.  The SKE results in to the session key
186 that is used to secure the communication between the server and the
187 router.  The connection authentication protocol is used to authenticate
188 the server to the router.  The authentication is always based in either 
189 passphrase or public key.
190
191
192 <p><br>
193 <h2>Routers</h2>
194 <p>
195
196 The router servers are servers that actually handles the message routing
197 in the network.  They are, however also normal servers and they do accept
198 client connections.  Each of the router in the network is called a cell.
199 A cell can have only one active router and it may have several servers
200 and several clients.  The cell, however may have backup routers that can
201 take over the tasks of the primary router if it becomes unresponsive.
202 The switch to the backup router should be transparent and only local
203 connections to the primary router are lost.  Other connections in the
204 cell are intact, and clients and servers merely experience some lag in
205 the network connection during the switch to the backup router.
206 <p>
207
208 The normal server knows only local information.  Router server on the
209 other hand knows local information and global information.  It considers
210 the cell as local and outside cells as global.  It knows all the clients
211 connected to the network, all created channels, and all routers and servers
212 in the network.  The server may query the global information if it is needed.
213 For example, when client sends WHOIS command, the server may query the
214 information from the router.  If the router does not know all the details
215 that the WHOIS command requires it can query the information from a router
216 or a server which knows all the details.  It may then cache that information.
217 <p>
218
219 The primary purpose of the router server is to route the messages to
220 local servers and local clients, and messages that are destined to outside
221 the cell are routed to the primary route or some other secondary
222 route if it is a faster route.  The routers in the network forms a ring.
223 Each router has a primary route to other router in the network.  Finally
224 the ring is closed by the last router using the first router in the
225 network as its primary route.
226
227 <p><br>
228 <object data="silc_routers.jpg" type="application/postscript">
229 <img src="silc_routers.png" alt="SILC Routers" align="center" border"0">
230 </object>
231 <p><br>
232
233 The diagram above illustrates how the routers forms a ring in the network.
234 A router may have several secondary routes which it may use when it
235 routes the packets.
236 <p>
237
238 When routers connect to its primary router the SKE and the SILC Connection
239 Authentication protocols are executed just like when normal server connects
240 to its router.  The session key is used to secure the communication between
241 the routers.  All the secondary routes also have their own session keys.
242
243
244 <p><br>
245 <h1>SILC Packet Protocol</h1>
246 <p>
247
248 The basis of SILC protocol relies in the SILC packets and they are with
249 out a doubt the most important part of the protocol.  The SILC Packet 
250 protocol is a binary packet protocol.  The protocol provides secure
251 binary packets and assures that the contents of the packets are secured
252 and authenticated.
253 <p>
254
255 Packets are used in the SILC protocol all the time to send for example
256 channel messages, private messages, commands and other information.  All
257 packets in SILC network are always encrypted and their integrity is
258 assured by computed Message Authentication Codes (MAC).  The protocol
259 defines several packet types and packet payloads.  Each packet type
260 usually has a specific packet payload that actually defines the contents
261 of the packet.  Hence, the actual data in the packet is the packet payload 
262 defined in the protocol.
263
264 <p><br>
265 <object data="silc_packet.jpg" type="application/postscript">
266 <img src="silc_packet.png" alt="Typical SILC Packet" align="center" border"0">
267 </object>
268 <p><br>
269
270 As the diagram above illustrates the SILC packet is constructed from the
271 SILC Packet Header that is included in all SILC packets, data area that
272 includes the packet payloads, and MAC area which assures the integrity of the
273 packet.  Entire SILC packet is always encrypted, except for the MAC area
274 which is never encrypted.  The encryption process and the key used,
275 however depends on the packet payload.  Some of the payloads are encrypted
276 with the session key and some are encrypted with other keys, for example
277 with channel message keys.  The SILC Packet Header is always encrypted with
278 the session key.  The MAC is computed from the SILC Packet Header and the
279 data area before encrypting the packet.
280
281
282 <p><br>
283 <h1>SILC Key Exchange Protocol</h1>
284 <p>
285
286 SILC Key Exchange Protocol (SKE) is used to exchange shared secret
287 between connecting entities.  The result of this protocol is a key material
288 used to secure the communication channel.  This protocol is executed when,
289 for example client connects to server.  It is also executed when server
290 connects to router.  And, there is no reason why it could not be executed
291 between two clients too, if two clients would need to create secret key.
292 The purpose of the SKE protocol is to create session keys to be used
293 in current SILC session.  The SKE is based on the Diffie-Hellman key
294 exchange algorithm, and is immune to man-in-the-middle attack.
295 <p>
296
297 This is the first protocol that is executed when creating connection to,
298 for example SILC server.  All the other protocols are always executed
299 after this protocol.  This way all the other protocols are secured since
300 the SKE creates the session key that is used to secure all subsequent
301 packets.  The session keys created in the SKE are valid only for some
302 period of time (usually an hour) or at most until the session ends.
303 The rekey process can be executed with or without the Perfect Forward
304 Secrecy (PFS).
305 <p>
306
307 The security properties that are used in the SILC session are also
308 negotiated during the SKE.  The protocol has initiator and responder.
309 The initator is the one who starts the SKE negotiation and responder is
310 the one who receives the SKE negotiation.  When the protocol is started
311 initiator sends a list of security properties that it supports.  The
312 responder then selects the security properties it supports and sends
313 its reply to the initiator.  The security properties includes ciphers,
314 hash functions, public key algorithms, HMAC functions and other
315 security properties.  The responder can always choose the properties
316 it supports.
317 <p>
318
319 After the security properties are selected the protocol continues
320 by performing the Diffie-Hellman key exchange algorithm.  At the same
321 time the intiator and responder also sends their public keys or
322 certificates to each other.  The responder also computes a signature
323 that the initiator will verify.  It is also possible to perform a
324 mutual authentication when both of the parties computes a signature
325 which are verified by each other independently.  If any of the phases
326 of the protocol are to fail the connection is closed immeadiately.
327 <p>
328
329 The public key or certificate that is received during the SKE protocol
330 must be verified.  If it is not verified it would be possible to 
331 execute a man-in-the-middle attack against the SKE protocol.  If
332 certificates are used they can be verified by a third party Certification
333 Authority (CA).  Verifying a public key requires either confirming
334 a fingerprint of the public key over phone or email, or the server
335 can for example publish the fingerprint (and the public key) on some 
336 website.  In real life systems accepting the public key without
337 verification, however is often desired.  In many security protocols,
338 such as in SSH2, the public key is accepted without verification
339 in the first time when the connection is created.  The public key is
340 then cached on local hard disk.  When connecting next time to the
341 server the public key on local cache is verified against the public
342 key server sent.  In real life this works most of the time.  However,
343 if client (or server) cannot trust this, it must find some other way
344 to verify the received public key or certificate.
345
346
347 <p><br>
348 <h1>SILC Connection Authentication Protocol</h1>
349 <p>
350
351 Purpose of SILC Connection Authentication protocol is to authenticate the
352 connecting party with server or router.  This protocol is executed when
353 for example client connects to server.  It is also executed when server
354 connects to router.  Its other purpose is to provide information for the
355 server about which type of connection it is.  The type of the connection
356 defines whether it is client, server or router.  If it is client then
357 the server will create a new Client ID for the client.  If it is server
358 then it will except the server to send its Server ID.  Server IDs are
359 created by the servers and routers itself.
360 <p>
361
362 Since the SILC Connection Authentication protocol is always executed after
363 the SKE protocol, session keys has been established already.  This means
364 that all packets sent in the connection authentication protocol are encrypted 
365 and authenticated.
366 <p>
367
368 The authentication may be based either in passphrase or public key
369 encryption.  It is also possible to not require authentication at all.
370 If the authentication is based to passphrase the passphrase is sent
371 to the server.  As the packet sent by, for example client, is entirely
372 encrypted it is safe to send the passphrase inside the packet.
373 <p>
374
375 If the authentication is based to public key then, for example the client, 
376 signs data with its private key and sends it to the server.  The server
377 then verifies this signature by using the client's public key.  The
378 packet is also encrypted in the case of public key authentication.
379 <p>
380
381 If the authentication is to fail the connection to the server or router
382 will be refused.  If it is succesful the connection is granted.  After
383 this the client is ready to communicate in the SILC Network.
384
385
386 <p><br>
387 <h1>Channels</h1>
388 <p>
389
390 A channel is a named group of one or more clients which will all receive
391 messages addressed to that channel.  The channel is created when first
392 client joins to it, and the channel ceases to exist when the last client
393 leaves it.  When channel exists, any client can reference it using the 
394 name of the channel.  Channel is a place where group of people can engage
395 conversation.
396 <p>
397
398 Channel names are unique in the SILC Network.  There cannot be multiple
399 same channels in the network at the same time.  However, channel has also
400 a Channel ID which is actually used to reference the channel in the
401 SILC Network.  The maximum length for the channel name is 256 characters.
402 <p>
403
404 Channels can have operators that can administrate the channel and operate
405 all of its modes.  There are two types of operators on the channel:
406 channel founder and channel operator.
407 <p>
408
409 The channel founder is the client which created the channel.  Channel
410 founder is channel operator with some more privileges.  Channel founder
411 can operate all of the channel's modes.  Furthermore, channel founder
412 privileges cannot be removed by any other operator on channel and channel
413 founder cannot be removed from the channel by force.  It is also possible
414 for the channel founder to regain its privileges at later time, even if
415 they have left the channel.
416 <p>
417
418 Channel operator is operator that can operate most of the channel's
419 modes and administrate the channel.  However, it cannot operate all
420 modes which are strictly reserved for channel founder.  Channel operator
421 is, however able to adminstrate the channel, set some modes on the
422 channel, remove a badly behaving client from the channel, and promote
423 other clients to become channel operator.
424
425
426 <p><br>
427 <h2>Channel Message Delivery</h2>
428 <p>
429
430 All clients that have joined the channel can send messages to the channel.
431 All channel messages are secured and authenticated by channel key.  The
432 channel key is generated by the server when the channel is created,
433 a client joins the channel, or a client leaves the channel.  The channel
434 key is also regenerated periodically.  The reason for the regeneration
435 of channel key everytime someone joins or leaves the channel is that
436 it prevents new clients joining the channel, and old clients leaving the
437 channel, to encrypt or decrypt old or new messages.  They can encrypt
438 and decrypt channel messages only when they have joined on the channel.
439 <p>
440
441 Channel keys are cell specific in the SILC Network.  Each cell that
442 have clients joined on a particular channel have also own key for the
443 channel.  That key is not shared by other cells in the network.  Inside
444 the cell the channel key is known by the router and all servers that
445 have clients on the channel and all clients that have joined the channel.
446
447 <p><br>
448 <object data="silc_channel.jpg" type="application/postscript">
449 <img src="silc_channel.png" alt="Channel Message Delivery" align="center" border"0">
450 </object>
451 <p><br>
452
453 The diagram above illustrates typical delivery of channel messages inside
454 a cell and between two cells.  Both of the cells have their own channel
455 key.  Both cells knows all clients joined on the channel.  When message
456 is sent to the channel by an client, it is encrypted with the current
457 channel key in that cell.  The servers and the router in the local cell
458 then routes the message to all local clients who have joined the channel.
459 If the channel has clients that belong to other cell in the network the
460 router will route the channel message to that cell.  When channel
461 messages are sent between routers they are first decrypted with the
462 current channel key, and then re-encrypted with the session key shared
463 between the two routers.  The router who receives the channel message
464 then decrypts it with the session and re-encrypts it with the
465 current channel key in that cell.  It then distributes the channel message
466 to all clients on the channel.  The clients who have joined the channel
467 always knows the current channel key and can decrypt all channel messages
468 they receive.  Note that normal servers in the SILC network never decrypt
469 the channel messages even though the have the key.  There is no reason
470 for servers to decrypt the message.  The router decrypts the message
471 only when sending it between two routers.
472 <p>
473
474 This method of channel message delivery is the the default way to send
475 channel messages in the SILC Network.  However, this is not perfect
476 solution on all circumstances.  If the clients joined on a particular
477 channel cannot trust, or do not want to trust the servers and routers
478 in the SILC Network they can consider the fact, that servers and routers
479 knows the channel key is actually a breach of security.
480 <p>
481
482 If the clients on the other hand can trust their servers and routers
483 in the SILC Network this is the recommended way of sending channel
484 messages.  This method is the simplest method for end user since it
485 does not require any special settings before engaging the conversation
486 on the channel.  The client merely joins the channel, receives the
487 channel key from the server and can start the conversation on the
488 channel.
489 <p>
490
491 In addition of encrypting channel messages it also possible to digitally
492 sign all sent channel messages.  The receiver could the verify the
493 signature of each of the message using the sender's public key.
494
495
496 <p><br>
497 <h2>Channel Message Delivery With Channel Private Key</h2>
498 <p>
499
500 If the clients cannot trust the servers and routers in the SILC Network
501 they should not use the default way of sending the channel messages.
502 Instead, they should use channel private keys to encrypt and decrypt
503 the channel messages.  Channel private keys are keys that are known
504 only by the clients who have joined the channel.  All servers and
505 routers do not know the key and cannot decrypt the messages.  When
506 message is sent between two routers they are merely re-encrypted with
507 the session key but not decrypted since the router do not have the
508 key to do that.
509 <p>
510
511 The clients who have joined the channel must first agree on the channel
512 private key they are going to use.  The key may generally be anything.
513 It may be a passphrase or a random string, or the key may negotiated
514 using some key exchange protocol which provides negotiating the
515 key for multiple clients at the same time.
516 <p>
517
518 As the channel private key is actually entirely local setting in the
519 client, it is possible to set several channel private keys for one
520 channel.  It is possible to have multiple channel private keys that
521 are not known by all channel members.  When encrypting messages with
522 one channel private key only the clients who have that key can decrypt
523 the message.  The other key could be shared for example by all clients
524 on the channel and thus all clients can decrypt messages encrypted with
525 that key.  In this way it is actually possible to have a private group
526 conversation inside the channel while having global conversation at the
527 same time.
528
529
530 <p><br>
531 <h1>Private Messages</h1>
532 <p>
533 Private messages are messages that are sent from one client to another 
534 through the SILC Network.  They are private because they are not sent to
535 anyone else except to the true receiver of the message.  Private messages
536 can be used to engage private conversation with another client if channels
537 are not desired.
538 <p>
539
540 As all messages in SILC the private message are also encrypted and
541 authenticated.  There are several ways to secure private messages.  By
542 default private messages are encrypted using the session keys established
543 in the SKE protocol.  It is also possible to negotiate a private message
544 key between the two clients and encrypt the messages with that key.  It
545 is even possible to encrypt the messages with public key cryptosystem,
546 if desired.  The next sections will describe all these private message
547 delivery methods.
548
549 <p>
550 The SILC protocol provides these three methods of delivering private messages
551 because none of the methods alone can satisfy the security requirements
552 of all people.  The end user should decide the acceptable level of risk,
553 the required level of security and other security and usability aspects when
554 deciding what way of sending private message suites for them.
555 <p>
556
557 In addition of encrypting private messages it also possible to digitally
558 sign all sent private messages.  The receiver could the verify the
559 signature of each of the message using the sender's public key.
560
561
562 <p><br>
563 <h2>Private Message Delivery With Session Keys</h2>
564 <p>
565 Sending private messages are by default secured with session keys established
566 in the SKE protocol.  This means that the private message is always encrypted
567 with the session key of the next receiver of the message enroute to the 
568 receiving client.  This also means that the message is decrypted and
569 re-encrypted everytime it is sent further to the receiving client.
570
571 <p><br>
572 <object data="silc_priv1.jpg" type="application/postscript">
573 <img src="silc_priv1.png" alt="Basic Private Message Delivery" align="center" border"0">
574 </object>
575 <p><br>
576
577 As the above diagram shows the private messages sent by Client A to the
578 Client B travels through the SILC Network and is always decrypted and
579 re-encrypted with the session key of the next receiver.  The Client B then
580 finally decrypts the private messages that is encrypted with the session
581 key shared between the Client B and the Server Y.
582 <p>
583
584 This way of securing private messages is not perfect and cannot be used
585 in all circumstances.  If the clients having the conversation cannot trust
586 the servers and routers in the SILC Network they should not send private
587 messages that are secured in this manner.  Messages secured in this manner
588 can be decrypted by the servers and routers that the clients may consider
589 to be untrusted.
590 <p>
591
592 If the clients on the other hand trust the servers and routers in their 
593 SILC Network, or they do not care that servers can decrypt their messages,
594 sending private messages in this way is very simple from client's point
595 of view.  For servers and routers this of course means that they need
596 to decrypt and re-encrypt each private message.  Since this way of securing
597 private message cannot be used at all times the SILC protocol provides
598 other ways of securing private messages.
599
600
601 <p><br>
602 <h2>Private Message Delivery With Private Message Key</h2>
603 <p>
604 Private messages can be secured with private message key as well.  This
605 key is known only by the sender of the message and the receiver of the
606 message.  This way no one else except the sender and the receiver can encrypt
607 and decrypt the private messages.  The message is encrypted by the sender
608 with the private message key and all the servers and routers pass the message
609 through enroute to the receiver.  They cannot decrypt the message since
610 they do not have the key.  When sending private messages in this way it
611 does not matter whether the clients trust or do not trust the servers and
612 routers in the SILC network.
613
614 <p><br>
615 <object data="silc_priv2.jpg" type="application/postscript">
616 <img src="silc_priv2.png" alt="Private Messages with Private Message Key" align="center" border"0">
617 </object>
618 <p><br>
619
620 As the above diagram shows the Client A encrypts the message with private
621 message key and sends the message to the SILC Network.  All servers and
622 routers merely pass the message through since they cannot decrypt it.
623 The Client B then receives the message and decrypts it with the private
624 message key.
625 <p>
626
627 Sending private messages in this manner is always secure since the key is
628 shared only by the sender and the receiver.  The problem of this method
629 is that the sender and the receiver must somehow agree about the key
630 they are going to use.  The private message key can generally be anything.
631 It can be a passphrase that only the sender and the receiver knows.  They
632 could have been agreed to use some word or phrase as the key sometime
633 earlier before they started the conversation.  Or the key maybe from some
634 random string from a code book that only the sender and the receiver poses.
635 Or it can be a key that is negotiated using some key exchange protocol.
636 <p>
637
638 The problem however is fundamental.  How to agree to use some key when
639 you cannot reach the other person over secure channel?  The SILC protocol
640 solves this problem by providing a possiblity to negotiate the key
641 between two clients using the SKE protocol.  One or both of the clients
642 can set up the SKE server running in their host and ask the other client
643 to connect to it.  As a result of the SKE protocol the clients have
644 now shared secret that they can use as private message key.  The key
645 is known only by the two clients that exexcuted the SKE protocol.  They
646 can then use that key to secure all subsequent private messages.
647 <p>
648
649 Using this method of private messages delivery is recommended if the
650 clients cannot trust the servers and routers in the SILC Network.  The 
651 drawback is the extra phase of setting the private message key before
652 starting the conversation.  However, using the SKE protocol is the
653 recommended way to negotiate the private message key since it can be
654 automatized and does not cause any extra tasks for end user.
655
656
657 <p><br>
658 <h2>Private Message Delivery With Public Key Encryption</h2>
659 <p>
660 If the clients cannot trust the servers and routers in the SILC Network
661 they can use the private message key.  As described in the previous section
662 it is easy to set up with the SKE protocol.  However, sometimes the two
663 clients do not want to use any passphrases as private message key or
664 negotiate the key with SKE, or perhaps they are unable to negotiate the
665 key because of some other external problem.  The SILC protocol provides
666 yet another way of securing the private messages.  This way does not
667 require setting or negotiating private message key.  And, in this method
668 also it does not matter whether the clients trust or do not trust the
669 servers and routers in the SILC Network.  The method is public key
670 encryption.  The clients can encrypt the private messages with the
671 receiver's public key and send the message to the network.  The servers
672 and routers cannot decrypt the messages since they do not have the
673 receiver's private key.  The receiver on the other hand has the private
674 key which it uses to decrypt the message.
675
676 <p><br>
677 <object data="silc_priv3.jpg" type="application/postscript">
678 <img src="silc_priv3.png" alt="Private Messges with Public Key Cryptosystem" align="center" border"0">
679 </object>
680 <p><br>
681
682 As the above diagram shows the Client A has the Client B's public key.
683 It will encrypt the message with that key and sends the message to the
684 SILC Network.  All servers and routers pass the message through since
685 they cannot decrypt it.  The Client B then uses its private key to
686 decrypt the message.  The Client B has also the Client A's public key 
687 that it can use to encrypt messages that it will send to Client A.
688 <p>
689
690 Even this method of private message delivery is not perfect.  The drawbacks
691 of this method is that the public key encryption process, as being
692 asymmetric cryptosystem, is much slower than encryption process with
693 symmetric cryptosystems.  This is not probably problem with short messages
694 but may be inconvenient with long messages.  The other drawback is that the
695 sender must first assure that the public key it is using in the encryption
696 is actually the receiver's public key.  This is a absolute requirement
697 in this method.  If the sender cannot authenticate the receiver's public
698 key this method of private message delivery should not be used.  In SILC
699 protocol clients can fetch other clients public keys from servers. 
700 However, the servers may not have authenticated the fetched public key so
701 that should not be fully trusted.  Use of certificates can solve the
702 problem.  The receiver's certificate could be authenticated by a third
703 party Certification Authority (CA).
704
705 <p>
706 Usually verifying the public key is not a problem since the receiver
707 can provide the public key on some website, or verify the fingerprint of
708 the key over email, or phone call.  The clients can also fetch the
709 public keys from SILC servers if they trust that the keys are authentic.
710 If both of the clients trust that the public keys are authentic using this
711 method of private message delivery is very simple and recommended.
712
713
714 <p><br>
715 <h1>Conclusions</h1>
716
717 The Secure Internet Live Conferencing (SILC) protocol is a new generation
718 chat protocol that provides all the common conferencing services with
719 strong support for security.  It has wide range of security properties
720 that should meet the highest levels of security requirements, while not
721 forgetting easy of use.  The network topology offers new architectural
722 solution with better scalability over traditional chat protocols.
723
724
725 <p><br>
726 <h1>Further Information</h1>
727 <p>
728 More detailed information about the SILC protocol is available in the
729 SILC protocol specification documents.  There exists currently four
730 Internet Drafts that defines the protocol in great detail.  The Internet
731 Drafts are available from the following sources but also from the
732 <a href="http://www.ietf.org">IETF website</a>.
733 <p>
734
735 - <a href="http://silcnet.org/docs/draft-riikonen-silc-spec-03.txt">
736 Secure Internet Live Conferencing (SILC), Protocol Specification</a>
737 <br>
738
739 - <a href="http://silcnet.org/docs/draft-riikonen-silc-pp-03.txt">
740 SILC Packet Protocol</a>
741 <br>
742
743 - <a href="http://silcnet.org/docs/draft-riikonen-silc-ke-auth-03.txt">
744 SILC Key Exchange and Authentication Protocols</a>
745 <br>
746
747 - <a href="http://silcnet.org/docs/draft-riikonen-silc-commands-01.txt">
748 SILC Commands</a>
749 <p>
750
751 For comprehensive introduction to cryptography refer to the
752 <a href="http://www.ssh.com/tech/crypto/">Cryptography A-2-Z document</a>.
753
754 <p><br>
755 <a name="terms"></a>
756 <h1>Terms and Abbreviations</h1>
757 <p>
758
759 - Asymmetric cryptosystem
760 <p>
761 Asymmetric cryptosystem provides public encryption.  It has two keys,
762 one public key and one private key (also called as secret key).  The public
763 key is publicly available allowing anyone to encrypt messages with the
764 public key.  Only the posessor of the private key can decrypt those messages.
765 Difference to symmetric cryptosystem is that symmetric cryptosystem use only
766 one key, and the key is usually used to both encryption and decryption.  The
767 asymmetric cryptosystem is also called as public key encryption, public key
768 cryptosystem or public key algorithm.  SILC supports RSA and DSS asymmetric
769 cryptosystems.
770 <p>
771
772 - Authentication
773 <p>
774 The verification of the identity of a person, host or process in order
775 to gain access to a service or prove identity.  In data communications
776 it also means verifying the origin of a message.
777 <p>
778
779 - Certificate
780 <p>
781 Certificate is a digital document which can be used to verify the 
782 identity of a person or host.  In SILC certificates can be used to prove
783 identity of clients, servers and routers.  Basically certificate is a public
784 key with subject name.  SILC supports X.509, OpenPGP and SPKI certificates.
785 Supported public keys are SILC style public key and SSH2 style public
786 key.
787 <p>
788
789 - Certification Authority (CA)
790 <p>
791 A third party entity that can verify identity of a person or host.  CA
792 is usually external company that provides certificates and their
793 verification services.
794 <p>
795
796 - Diffie-Hellman key exchange
797 <p>
798 First public key algorithm ever invented.  It is used to generate a secret
799 key between two or more parties.  It gets its security from the difficulty
800 of calculating discrete lograrithms.
801 <p>
802
803 - Encryption
804 <p>
805 A mechanism (usually mathematical) to transfer plaintext (or cleartext)
806 to ciphertext to provide confidentiality.  A process to transfer
807 the ciphertext back to plaintext is called decryption.
808 <p>
809
810 - Integrity
811 <p>
812 The verification of data to detect any modifications.  If data is
813 modified enroute from the sender to the receiver, the modification will
814 be detected.
815 <p>
816
817 - HMAC
818 <p>
819 Hash Message Authentication Code.  Also called as keyed hash function.
820 It is a secret key authentication algorithm which proves that the message
821 is not modified and that the HMAC was computed by the sender of the
822 message.
823 <p>
824
825 - Man-in-the-middle attack
826 <p>
827 An attack against two connecting entities where the attacker executes
828 key exchange protocol with both of the parties indepently without
829 their knowledge.  Both of the connecting entities will end up having secret
830 key with the attacker, and the attacker can encrypt and decrypt all the
831 messages that goes between the two entities.
832 <p>
833
834 - Message Authentication Code (MAC)
835 <p>
836 MAC provides message integrity by computing the MAC using a secret
837 key authentication algorithm (HMAC).
838 <p>
839
840 - Perfect Forward Secrecy (PFS)
841 <p>
842 A property of rekey (or key re-generation) which defines whether the
843 new key is derived from the old key.  If Perfect Forward Secrecy is
844 selected the new key is never dependent of the old key which means
845 that if the old key would get compromised at later time it will not
846 compromise the new key.  In SILC setting PFS in the SKE protocol means
847 executing the SKE protocol again.  If PFS is not selected the new key
848 is always derived from the old key.
849 <p>
850
851 - Rekey
852 <p>
853 A key re-generation process where the old key has expired or is not
854 secure anymore to use.  In this case rekey is performed and new key
855 is generated.
856 <p>
857
858 - Symmetric cryptosystem
859 <p>
860 Symmetric cryptosystem is one key cryptosystem where one key is used
861 usually to both encryption and decryption process.  The symmetric
862 cryptosystems are usually significantly faster than asymmetric cryptosystems.
863 DES, AES, Twofish and Blowfish are examples of symmetric cryptosystems.
864 SILC supports all the common symmetric cryptosystems including AES.
865 SILC does not support DES as it is insecure and 3DES as it is too slow.
866
867
868 </font>
869
870 </body>
871 </html>