Merged silc_1_0_branch to trunk.
[silc.git] / doc / draft-riikonen-silc-flags-payloads-04.nroff
1 .pl 10.0i
2 .po 0
3 .ll 7.2i
4 .lt 7.2i
5 .nr LL 7.2i
6 .nr LT 7.2i
7 .ds LF Riikonen
8 .ds RF FORMFEED[Page %]
9 .ds CF
10 .ds LH Internet Draft
11 .ds RH 2 December 2003
12 .ds CH
13 .na
14 .hy 0
15 .in 0
16 .nf
17 Network Working Group                                        P. Riikonen
18 Internet-Draft
19 draft-riikonen-flags-payloads-04.txt                     2 December 2003
20 Expires: 2 June 2004
21
22 .in 3
23
24 .ce 2
25 SILC Message Flag Payloads
26 <draft-riikonen-flags-payloads-04.txt>
27
28 .ti 0
29 Status of this Memo
30
31 This document is an Internet-Draft and is in full conformance with
32 all provisions of Section 10 of RFC 2026.  Internet-Drafts are
33 working documents of the Internet Engineering Task Force (IETF), its
34 areas, and its working groups.  Note that other groups may also
35 distribute working documents as Internet-Drafts.
36
37 Internet-Drafts are draft documents valid for a maximum of six months
38 and may be updated, replaced, or obsoleted by other documents at any
39 time.  It is inappropriate to use Internet-Drafts as reference
40 material or to cite them other than as "work in progress."
41
42 The list of current Internet-Drafts can be accessed at
43 http://www.ietf.org/ietf/1id-abstracts.txt
44
45 The list of Internet-Draft Shadow Directories can be accessed at
46 http://www.ietf.org/shadow.html
47
48 The distribution of this memo is unlimited.
49
50
51 .ti 0
52 Abstract
53
54 This memo describes the data payloads associated with the SILC Message
55 Flags, as defined in the SILC Packet Protocol specification [SILC2].  The
56 purpose of the Message Flags is to augment the function of the Message
57 Payload used to send both private and channel messages, by allowing the
58 sender to tell the receiver what type of data the payload includes, and
59 how the data should be processed.  Some of the Message Flags may define
60 additional payloads to be associated with the flag, and this memo
61 describes these payloads.
62
63
64
65
66
67
68
69
70 .ti 0
71 Table of Contents
72
73 .nf
74 1 Introduction ..................................................  2
75   1.1 Requirements Terminology ..................................  2
76 2 SILC Message Flags ............................................  3
77 3 SILC Message Flag Payloads ....................................  3
78   3.1 SILC_MESSAGE_FLAG_REQUEST .................................  3
79   3.2 SILC_MESSAGE_FLAG_REPLY ...................................  4
80   3.3 SILC_MESSAGE_FLAG_SIGNED ..................................  4
81   3.4 SILC_MESSAGE_FLAG_DATA ....................................  7
82   3.5 SILC_MESSAGE_FLAG_ACK .....................................  8
83 4 Security Considerations .......................................  9
84 5 References ....................................................  9
85 6 Author's Address .............................................. 10
86 7 Full Copyright Statement ...................................... 10
87
88
89 .ti 0
90 1. Introduction
91
92 The Secure Internet Live Conferencing [SILC1] supports sending binary
93 messages between users in the network.  To make the data sending, and
94 processing at the receiver's end as simple as possible the SILC defines
95 Message Flags to the Message Payload [SILC2] that is used to send private
96 and channel messages, which can help the receiver to decide how the data
97 is encoded, and how it should be interpreted.  Some of the Message Flags
98 may define additional payloads to be associated with the flag, but the
99 [SILC2] does not define them.  This memo defines the payloads for those
100 Message Flags that was marked to include additional payloads in [SILC2].
101
102 By defining the payloads for the Message Flags the Message Payload
103 can be augmented to support any kind of data, which can be easily
104 interpreted at the receiver end.  For example, it would be possible to
105 send audio stream, video stream, image files and HTML pages as messages,
106 and the receiver can either choose to ignore the message or to process
107 it, or to perhaps pass the message to some application for processing.
108 Without specific payloads for Message Flags it is almost impossible for
109 the receiver to interpret binary data from the payload.
110
111
112 .ti 0
113 1.1 Requirements Terminology
114
115 The keywords MUST, MUST NOT, REQUIRED, SHOULD, SHOULD NOT, RECOMMENDED,
116 MAY, and OPTIONAL, when they appear in this document, are to be
117 interpreted as described in [RFC2119].
118
119
120
121
122 .ti 0
123 2 SILC Message Flags
124
125 The Message Flags was added to the SILC protocol for the reason that SILC
126 provides sending binary data as messages between users, and entities in
127 the network, and interpreting pure binary data is almost impossible.
128 With the Message Flags the purpose, the reason, and the method for how
129 the message must be interpreted can be told to the recipient.  Other
130 conferencing protocols which are usually ASCII based protocols do not have
131 such problems since they do not generally support sending of binary data
132 at all, or require specific encoding of the data before it can be sent
133 over the network.
134
135 The Message Payload in SILC can have flags that can augment the function
136 of the payload.  The flags can tell for example that the message is a
137 request, or a reply to an earlier received request.  They can tell that
138 the message is some action that the sender is performing, or they can tell
139 that the message is an auto reply, or that it is explicitly digitally
140 signed by the sender.
141
142 The problem of Message Flags is that the space for flags mask is only 16
143 bits, so there is a limited number of flags available.  For this reason
144 having a flag that defines a generic way of sending any kind of data as
145 a message, and can be easily interpreted at the receiver's end is important.
146 For this reason the flag SILC_MESSAGE_FLAG_DATA was added to the protocol
147 which can represent any data.  This memo describe how this flag is used
148 and how the associated payload is constructed and processed.  This memo
149 also describes payloads for all the other flags that can have associated
150 payloads.
151
152
153 .ti 0
154 3 SILC Message Flag Payloads
155
156 The [SILC2] defines the flags which may have associated payloads.  This
157 section will list these flags and define the payloads.
158
159
160 .ti 0
161 3.1 SILC_MESSAGE_FLAG_REQUEST
162
163 Currently this flag can be used in the context of application specific,
164 service specific or vendor specific requests, and the data payload type is
165 dependent of this context.  Therefore, payload is not defined for this
166 flag in this memo.  This flag may also be masked with some other flag in
167 the message payload, including with some other flag that defines
168 additional payload.
169
170
171
172
173 .ti 0
174 3.2 SILC_MESSAGE_FLAG_REPLY
175
176 Currently this flag can be used in the context of application specific,
177 service specific or vendor specific replies, and the data payload type is
178 dependent of this context.  Therefore, payload is not defined for this
179 flag in this memo.  This flag may also be masked with some other flag in
180 the message payload, including with some other flag that defines
181 additional payload.
182
183
184 .ti 0
185 3.3 SILC_MESSAGE_FLAG_SIGNED
186
187 This flag is used to tell the recipient that the sent message is
188 digitally signed by the sender, and that the recipient should verify
189 the signature to verify the true authenticity of the received message.
190 All message payloads in SILC provides message authentication code (MAC)
191 which can be used to verify that the sender produced and sent the message.
192 Even so, signing messages digitally can be used to verify the authenticity
193 of the message when recipient trusts the sender and to provide
194 non-repudiation.
195
196 This flag defines a payload which is used to deliver the actual message,
197 sender's public key and the digital signature.  The payload for
198 SILC_MESSAGE_FLAG_SIGNED is as follows:
199
200 (*) indicates that the field is not encrypted.
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223 .in 5
224 .nf
225                      1                   2                   3
226  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
227 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
228 |                                                               |
229 ~                   Start of Message Payload                    ~
230 |                                                               |
231 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
232 |                                                               |
233 ~                      Public Key Payload *                     ~
234 |                                                               |
235 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
236 |     Signature Data Length *   |                               |
237 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
238 |                                                               |
239 ~                        Signature Data *                       ~
240 |                                                               |
241 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
242 |                                                               |
243 ~                       Initial Vector *                        ~
244 |                                                               |
245 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
246 |                                                               |
247 ~                              MAC *                            ~
248 |                                                               |
249 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
250 .in 3
251
252 .ce
253 Figure 1:  SILC_MESSAGE_FLAG_SIGNED Payload
254
255
256 .in 6
257 o Start of Message Payload (variable length) - This is the
258   start of the Message Payload without the IV and MAC fields,
259   since those fields are appended at the end of this payload.
260
261 o Public Key Payload (variable length) - This includes the
262   Public Key Payload [SILC2] which can be used to deliver the
263   sender's public key (or certificate).  It also indicates the
264   type of the public key (or certificate) which the recipient
265   use to identify how the signature must be verified.  This
266   payload must always be present but it is not required to
267   include the public key data.  The Public Key Type field in
268   the Public Key Payload MUST be set to the correct type of
269   the key, even if the actual public key data is not included.
270   This field is not encrypted but is authenticated.
271
272 o Signature Data Length (2 bytes) - Indicates the length of
273   the Signature Data field not including any other field.
274   This field is not encrypted but is authenticated.
275
276 o Signature Data (variable length) - Includes the actual
277   signature data.  The signature computation and encoding
278   is key type specific.  See [SILC3] for all key types, and
279   their respective references for how to compute and encode
280   the signature.  This field is not encrypted but is
281   authenticated.
282
283 o Initial Vector (variable length) - the IV of the Message
284   Payload as defined in [SILC2].  This field is not encrypted
285   but is authenticated.
286
287 o MAC (variable length) - the MAC of the Message Payload as
288   defined in [SILC2].  The MAC is computed after encryption
289   and after signature computation.  All data in the Message
290   Payload and this payload, including the IV field are
291   included in the MAC computation.  This field is not
292   encrypted.
293 .in 3
294
295 How the data is processed before it is signed is key type specific.
296 The actual data that to be signed MUST be the plaintext message
297 payload before encryption.  The data to be signed is concatenation
298 of the Start of Message Payload field and the Public Key Payload,
299 in that order.  Any other fields are not included for signature data.
300 Before signing, the data is always processed, usually hashed.  The
301 hash function to be used is defined in the key type specific
302 definitions.  See the key type specific references in [SILC3].
303
304 If the public key of the sender is included in the payload the
305 recipient SHOULD verify it before accepting the public key.  Recipient
306 SHOULD verify the signature before accepting and caching the public key.
307 With certificates the certificate verification may be done before
308 verifying the signature.  If the signature verification fails the
309 message should still be displayed.  The end user should also be
310 notified about the result of the signature verification.
311
312 To make the packet size smaller implementations may not want to
313 include the actual public key in all signed messages.  Sending the
314 public key in the first message is usually sufficient.  Subsequent
315 messages may include empty Public Key Payload with an indication of
316 the public key type.
317
318 Implementations that do not support this flag can still process the
319 message payload in normal manner.  These implementations merely parse
320 the decrypted payload in normal manner and ignore the extra data in
321 the payload.  They can do this by extracting the MAC and the IV from
322 the end of the data buffer and thus ignoring the data between start of
323 the Message Payload and the Initial Vector field.
324
325 This flag MAY be masked with any other Message Flag including those that
326 define additional payloads.  As long as the defined payload resides in
327 the data area of the message payload this flag may be masked with the
328 other flags.
329
330
331 .ti 0
332 3.4 SILC_MESSAGE_FLAG_DATA
333
334 This flag is used to represent any data as a message in the way that it
335 can be easily interpreted by the recipient.  This flag is used to send
336 MIME objects as messages from the sender to the receiver.  The MIME as
337 defined in [RFC2045], [RFC2046], [RFC2047], [RFC2048] and [RFC2049] is
338 well established protocol for sending different kind of data with many
339 applications and protocols.  It support dozens of different media types
340 and encodings, and for this reason is ideal for sending data in SILC
341 message payloads as well.
342
343 When the receiver has checked that the message payload includes the
344 SILC_MESSAGE_FLAG_DATA flag, it may then start parsing the MIME header.
345 It would also be possible to pass the message to some application which
346 can already interpret MIME objects.  If the receiver does not support the
347 media type received in the MIME header, it SHOULD be treated as
348 "application/octet-stream".  The receiver MAY also ignore and discard
349 messages that it does not support.
350
351 The MIME header MUST be at the start of the data area of the Message
352 Payload.  The MIME header received in the data area of the payload SHOULD
353 have the MIME-Version field at first and then Content-Type field.  The
354 MIME-Version field is not required to be present in each body part of
355 multipart entity.  Additionally the header MAY also include any other
356 MIME compliant headers.  The character encoding for the MIME Header
357 strings inside the message payload is US-ASCII, as defined in [RFC2045].
358 The actual MIME object may define additional character sets or encodings
359 for the data it delivers.
360
361 Hence, the MIME Header in the message payload may be as follows:
362
363 .in 8
364 .nf
365 MIME-Version: 1.0\\r\\n
366 Content-Type: discrete/composite\\r\\n
367 Content-Transfer-Encoding: binary\\r\\n
368 \\r\\n
369 .in 3
370
371 The Content-Transfer-Encoding field behaves as defined in [RFC2045] and
372 defines the encoding of the data in the MIME object.  The preferred data
373 encoding with SILC is "binary".  However, many MIME media types defines
374 their preferred encoding and they may be used if binary encoding is not
375 suitable.
376
377 When sending large amounts of traffic or large files as MIME objects the
378 limits of the SILC Packet needs to be taken into consideration.  The
379 maximum length of SILC Packet is 2^16 bytes, and larger messages would
380 need to be fragmented.  MIME provides way of fragmenting and reassembling
381 messages, and it is to be done with SILC as defined in [RFC2046].  The
382 MIME fragmentation is defined for gateway usage, but in case of SILC the
383 sender (for example, a client) may also start sending fragmented MIME
384 objects.
385
386 This flag SHOULD NOT be masked with some other Message Flag that defines
387 payloads for message data.  Generally this sort of setting would be
388 impossible for the receiver to interpret.  However, flags that does not
389 define any specific payloads MAY be masked with this flag as well.  For
390 example, this flag could be masked also with SILC_MESSAGE_FLAG_REQUEST flag.
391 It also can be masked with SILC_MESSAGE_FLAG_SIGNED flag since it does not
392 define data specific payload.
393
394
395 .ti 0
396 3.5 SILC_MESSAGE_FLAG_ACK
397
398 This flag is used to send acknowledgement messages.  When sender of a
399 message requires the recipient to acknowledge the received message, the
400 sender MUST set the SILC_MESSAGE_FLAG_ACK and MUST NOT set the
401 SILC_MESSAGE_FLAG_NOREPLY.  When a message with this flag set is received
402 an acknowledgement message MUST be sent back.  In the acknowledgement
403 message the sender MUST set the SILC_MESSAGE_FLAG_ACK,
404 SILC_MESSAGE_FLAG_AUTOREPLY and SILC_MESSAGE_FLAG_NOREPLY flags.  The
405 receiver MUST NOT acknowledge the acknowledgement message.  This flag
406 MUST NOT be used with channel messages, and MUST be ignored if received
407 in a channel message.
408
409 The construction of the acknowledgement reply message is normal Message
410 Payload where the Message Data field includes a computed MAC of the
411 original received Message Payload MAC.  Hence, the MAC is computed as
412 follows:
413
414 .in 8
415 ack_mac = mac(key, MAC);
416 .in 3
417
418 Where the 'key' is the MAC key used to compute MACs for the Message
419 Payload, and the 'MAC' is the MAC taken from the received Message Payload.
420 The 'ack_mac' is placed in the Message Data field in a new Message
421 Payload, and the payload is encrypted in normal manner.  After this the
422 message is sent back to the original sender of the message.
423
424 The receiver of the acknowledgement reply message SHOULD verify the MAC
425 from the Message Data field to assure that acknowledgement was received to
426 an earlier sent message.  Implementation needs to keep the old message
427 MACs stored until acknowledgement is received.  It is left for
428 implementation to decide any possible retransmission strategy if
429 acknowledgement messages are not received.
430
431
432 .ti 0
433 4 Security Considerations
434
435 In case of SILC_MESSAGE_FLAG_DATA the implementors should pay special
436 attention to the security implications of any media type that can cause
437 the remote execution of any actions in the receiver's environment.  The
438 [RFC2046] and [RFC2048] discusses more MIME specific security
439 considerations.  Even though SILC provides secured messages, in case of
440 MIME which can be used to transfer files and documents which are stored in
441 the receiver's local environment, securing separately the MIME object may
442 be desired.  For example, augmenting the MIME support in SILC messages to
443 support S/MIME may be desired in some implementations.
444
445
446 .ti 0
447 5 References
448
449 [SILC1]      Riikonen, P., "Secure Internet Live Conferencing (SILC),
450              Protocol Specification", Internet Draft, June 2003.
451
452 [SILC2]      Riikonen, P., "SILC Packet Protocol", Internet Draft,
453              June 2003.
454
455 [SILC3]      Riikonen, P., "SILC Key Exchange and Authentication
456              Protocols", Internet Draft, June 2003.
457
458 [RFC2045]    Freed, N., et al., "Multipurpose Internet Mail Extensions
459              (MIME) Part One: Format of Internet Message Bodies",
460              Standards Track, RFC 2045, November 1996.
461
462 [RFC2046]    Freed, N., et al., "Multipurpose Internet Mail Extensions
463              (MIME) Part Two: Media Types", Standards Track, RFC 2045,
464              November 1996.
465
466 [RFC2047]    Moore K., "MIME (Multipurpose Internet Mail Extensions)
467              Part Three: Message Header Extensions for Non-ASCII Text"
468              Standards Track, RFC 2047, November 1996.
469
470 [RFC2048]    Freed, N., et al., "Multipurpose Internet Mail Extensions
471              (MIME) Part Four: Registration Procedures", Standards
472              Track, RFC 2048, November 1996.
473
474 [RFC2049]    Freed, N., et al., "Multipurpose Internet Mail Extensions
475              (MIME) Part Five: Conformance Criteria and Examples",
476              Standards Track, RFC 2049, November 1996.
477
478 [RFC2119]    Bradner, S., "Key Words for use in RFCs to Indicate
479              Requirement Levels", BCP 14, RFC 2119, March 1997.
480
481
482
483 .ti 0
484 6 Author's Address
485
486 Pekka Riikonen
487 Snellmaninkatu 34 A 15
488 70100 Kuopio
489 Finland
490
491 EMail: priikone@iki.fi
492
493
494
495 .ti 0
496 7 Full Copyright Statement
497
498 Copyright (C) The Internet Society (2003). All Rights Reserved.
499
500 This document and translations of it may be copied and furnished to
501 others, and derivative works that comment on or otherwise explain it
502 or assist in its implementation may be prepared, copied, published
503 and distributed, in whole or in part, without restriction of any
504 kind, provided that the above copyright notice and this paragraph are
505 included on all such copies and derivative works. However, this
506 document itself may not be modified in any way, such as by removing
507 the copyright notice or references to the Internet Society or other
508 Internet organizations, except as needed for the purpose of
509 developing Internet standards in which case the procedures for
510 copyrights defined in the Internet Standards process must be
511 followed, or as required to translate it into languages other than
512 English.
513
514 The limited permissions granted above are perpetual and will not be
515 revoked by the Internet Society or its successors or assigns.
516
517 This document and the information contained herein is provided on an
518 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
519 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
520 BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
521 HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
522 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.