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