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