/[pkg-mixmaster]/trunk/Docs/draft-sassaman-mixmaster-XX.xml
ViewVC logotype

Contents of /trunk/Docs/draft-sassaman-mixmaster-XX.xml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 885 - (show annotations) (download) (as text)
Thu May 20 05:20:52 2004 UTC (9 years, 1 month ago) by rabbi
File MIME type: text/xml
File size: 42054 byte(s)
Fixed a ton of spelling errors, and made numerous corrections based on suggestions from Myles. 
1 <?xml version="1.0"?>
2 <!-- vim: set et sw=2 wm=5 fdm=syntax nofen: -->
3 <!-- $Id$ -->
4 <!DOCTYPE rfc SYSTEM "rfc2629.dtd">
5 <?rfc toc="yes"?>
6 <!-- change this to no to create a document with lots of whitespace -->
7 <?rfc compact="yes"?>
8
9 <rfc ipr="full2026" docName="draft-sassaman-mixmaster-01.txt">
10
11 <front>
12
13 <title abbrev="Mixmaster">Mixmaster Protocol Version 2</title>
14
15 <author initials="U." surname="Moeller" fullname="Ulf Moeller">
16 <organization>Secardeo GmbH</organization>
17 <address>
18 <postal>
19 <street>Betastr. 9a</street>
20 <city>85774 Unterfoehring</city>
21 <country>Germany</country>
22 </postal>
23 <email>ulf.moeller@secardeo.com</email>
24 </address>
25 </author>
26
27 <author initials="L." surname="Cottrell" fullname="Lance Cottrell">
28 <organization>Anonymizer, Inc.</organization>
29 <address>
30 <postal>
31 <street>5694 Mission Center Road #426</street>
32 <city>San Diego</city> <region>CA</region> <code>92108-4380</code>
33 <country>USA</country>
34 </postal>
35 <email>loki@infonex.com</email>
36 </address>
37 </author>
38
39 <author initials="P." surname="Palfrader" fullname="Peter Palfrader">
40 <organization>The Mixmaster Project</organization>
41 <address>
42 <postal>
43 <street>Hoettinger Auffahrt 1</street>
44 <city>6020 Innsbruck</city>
45 <country>Austria</country>
46 </postal>
47 <email>peter@palfrader.org</email>
48 <uri>http://www.palfrader.org/</uri>
49 </address>
50 </author>
51
52 <author initials="L." surname="Sassaman" fullname="Len Sassaman">
53 <organization>Nomen Abditum Services</organization>
54 <address>
55 <postal>
56 <street>P.O. Box 900481</street>
57 <city>San Diego</city> <region>CA</region> <code>92190-0481</code>
58 <country>USA</country>
59 </postal>
60 <email>rabbi@abditum.com</email>
61 </address>
62 </author>
63
64 <date month="May" year="2004"/>
65
66 <abstract>
67 <t>Most e-mail security protocols only protect the message body, leaving
68 useful information such as the identities of the conversing parties,
69 sizes of messages and frequency of message exchange open to
70 adversaries. This document describes Mixmaster version 2, a mail
71 transfer protocol designed to protect electronic mail against traffic
72 analysis.</t>
73
74 <t>Mixmaster is based on Dr. David Chaum's mix-net concept. A mix
75 (remailer) is a service that forwards messages, using public key
76 cryptography to hide
77 the correlation between its inputs and outputs. Sending messages
78 through sequences of remailers achieves anonymity and unobservability
79 of communications against a powerful adversary.</t>
80 </abstract>
81
82 </front>
83
84 <middle>
85
86 <section anchor="introduction" title="Introduction">
87
88 <t>This document describes a mail transfer protocol designed to protect
89 electronic mail against traffic analysis. Most e-mail security
90 protocols only protect the message body, leaving useful information
91 such as the identities of the conversing parties, sizes of messages and
92 frequency of message exchange open to adversaries.</t>
93
94 <t>Message transmission can be protected against traffic analysis by the
95 mix-net protocol. A mix (remailer) is a service that forwards messages,
96 using public key cryptography to hide the correlation between its
97 inputs and outputs. If a message is sent through a sequence of mixes,
98 one trusted mix is sufficient to provide anonymity and unobservability
99 of communications against a powerful adversary. Mixmaster is a mix-net
100 implementation for electronic mail.</t>
101
102 <t>This memo describes version 2 of the Mixmaster message format, as used
103 on the Internet since 1995.</t>
104
105 </section>
106
107 <section anchor="protocol" title="The Mix-Net Protocol">
108
109 <t>The mix-net protocol <xref target="Chaum81"/> allows one to send
110 messages while hiding the relation of sender and recipient from
111 observers (unobservability). It also allows the sender of a message to
112 remain anonymous to the recipient (sender anonymity). If anonymity is
113 not desired, authenticity and unobservability can be achieved at the
114 same time by transmitting digitally signed messages.</t>
115
116 <t>This section gives an overview of the protocol and messaging
117 pattern.
118 The mixing algorithm is specified in <xref target="pool-behavior"/>,
119 and the message format is specified in
120 <xref target="message-format"/>.</t>
121
122 <t>Viewed from a high level, Mixmaster is like a packet network,
123 where each node in the network is known as a "remailer."
124 The original content is split into pieces, and an independent
125 path is determined for each piece, with the only requirement
126 that all paths must end at the same remailer. Each piece
127 is multiply encrypted so that any intermediate remailer can
128 only decrypt enough information to determine the next hop
129 in the path. When all pieces have arrived at the final
130 remailer, the original content is re-created and sent to its
131 final destination.</t>
132
133 <section anchor="message-creation" title="Message Creation">
134
135 <t>In this section the terms "sender" and "user agent" are
136 used informally.</t>
137
138 <t>The user agent splits the original content into chunks
139 of 10236 bytes; if the last chunk is shorter, random padding
140 is added. Each chunk has a four-byte length prepended,
141 and the result is called the packet body.
142 If sender anonymity is desired, care should be taken to not
143 include any identifying information (such as headers or unique
144 content from the original plaintext message) in the packets.
145 The content may be compressed before splitting.</t>
146
147 <t>The sender next chooses a chain of up to 20 remailers
148 for each packet. Each path is independent, and can be of
149 a different length, but all paths must end at the same
150 remailer. This final remailer is responsible detecting and
151 discarding duplicate packets, reconstructing the message,
152 and doing the final delivery.</t>
153
154 <t>Each packet is next prepared as follows (the full details
155 are in <xref target="header-section"/>). For a chain
156 of "n" remailers, headers "n + 1" through 20 are filled
157 with random data. For headers "n" down to one, the sender
158 generates a symmetric encryption key. This key is used to
159 encrypt the packet body and all the following headers. The
160 key, and other control information, is then encrypted with
161 the public key of the "n"'th remailer in the chain.</t>
162
163 <t>The process is repeated, working backward through the chain
164 until the first packet has header information encrypted for the
165 first remailer, and the packet body has been encrypted "n" times.
166 The packet is then sent to the first remailer on its
167 chain.</t>
168
169 </section>
170
171 <section anchor="remailing" title="Remailing">
172
173 <t>When a remailer receives a message, it uses its private key to
174 decrypt the first header section. The Packet ID (see
175 <xref target="header-section"/> can be used to detect
176 duplicates. The integrity of the message is verified by
177 checking the packet length and verifying the message digest
178 in the packet header.</t>
179
180 <t>All header sections, as well as the packet body, are decrypted with
181 the symmetric key found in the header. This reveals a public
182 key-encrypted header section for the next remailer.</t>
183
184 <t>The first header section is now removed, the others are shifted
185 up, and the last section is replaced with random bytes. Transport
186 encoding is applied to the new message as described in <xref
187 target="transport-encoding"/>.</t>
188
189 <t>In order to prevent an adversary from determining the relationship
190 between incoming and outgoing messages (i.e., traffic analysis), the
191 remailer must collect several encrypted messages before sending the
192 message it has just created; see <xref target="timed-pool"/>.</t>
193
194 </section>
195
196 <section anchor="message-reassembly" title="Message Reassembly">
197
198 <t>When a packet is sent to the final remailer, it contains an
199 indication that the chain ends at that remailer, and whether the
200 packet contains the complete message or if it is part of a multi-part
201 message. If the packet contains the entire message, the packet body
202 is decrypted and after reordering messages, the plain text is
203 delivered to the recipient. For partial messages, a message ID is
204 used to identify the other parts as they arrive. When all parts have
205 arrived, the message is reassembled, decompressed if necessary, and
206 delivered. A final remailer may discard partial messages if all
207 packets have not been received within a local time limit.</t>
208
209 <t>Note that only the final remailer can determine whether packets
210 are part of a specific message. To all of other remailers, the
211 packets appear to be completely independent.</t>
212
213 </section>
214
215 </section>
216
217 <section anchor="pool-behavior" title="Pool Behavior">
218
219 <section anchor="timed-pool" title="Timed Dynamic Pool Mix Algorithm">
220
221 <t>To obfuscate the link between incoming and outgoing messages,
222 Mixmaster uses a pooling scheme. Messages to be forwarded are
223 stored in a pool. In regular intervals the remailer
224 sends some random messages from the pool to either the next hop or
225 their final recipients.</t>
226
227 <t>The pooling scheme is a "Timed Dynamic Pool
228 Mix" <xref target="trickle02"/>, which has the following three parameters:
229 <texttable>
230 <ttcol align='left' width='20%'>Name</ttcol>
231 <ttcol align='left'>Description</ttcol>
232 <c>t</c><c>Mixing interval</c>
233 <c>min</c><c>Minimum number of messages in the pool</c>
234 <c>rate</c><c>Percentage of messages to be send in one round</c>
235 </texttable>
236 The following steps are implemented every "t" seconds:
237 <list style="numbers">
238 <t>Let "n" by the number of messages currently in the pool.</t>
239 <t>Let "count" is the smaller of "n - min" and "n * rate", or
240 zero if "n - min" is negative.</t>
241 <t>Select "count" messages from the pool at random and send
242 them.</t>
243 </list>
244 </t>
245 <t>
246 In its default configuration, Mixmaster has a mixing interval of
247 15 minutes, a minimum pool size of 45 messages, and permits a
248 maximum of 65% of the pool to be sent in one round.
249 </t>
250
251 <!-- XXX: give the default Mix 3.0 parameters here for reference?
252 - weasel -->
253
254 </section>
255
256 <section anchor="dummy-traffic" title="Dummy Traffic">
257
258 <t>Dummy messages (see <xref target="payload-format"/>) are multi-hop
259 messages with four randomly selected remailers as the chain. The
260 chain must selected such that no remailer will appear twice unless
261 two other remailers separate them.</t>
262
263 <t>Every time a message is placed in the pool, the remailer chooses
264 a random number from a geometric distribution and creates that
265 many dummy messages which are also placed in the pool.</t>
266
267 <t>Similarly, prior to each execution of the mixing algorithm
268 described in <xref target="timed-pool"/>, the remailer selects a
269 random number from a different geometric distribution and adds
270 that many dummy messages to the pool as well.</t>
271
272 <t>The parameters should be chosen so that on average the remailer
273 creates one dummy for every 32 inbound messages and one every
274 nine mixing rounds.</t>
275
276 </section>
277
278 </section>
279
280 <section anchor="message-format" title="Message Format">
281
282 <section anchor="payload-format" title="Payload Format">
283
284 <t>The message payload can be an e-mail message <xref
285 target="RFC2822"/>, a Usenet message <xref target="RFC1036"/>, or a
286 dummy message.</t>
287
288 <t>Mail and Usenet messages are prefixed with data specifying the
289 payload type. An additional, more restricted method of specifying
290 message header lines is defined for reasons of backward
291 compatibility.</t>
292
293 <t>The payload format is as follows:<figure><artwork>
294 Number of destination fields [ 1 byte]
295 Destination fields [ 80 bytes each]
296 Number of header line fields [ 1 byte]
297 Header lines fields [ 80 bytes each]
298 User data section [ up to ~2.5 MB]</artwork></figure>
299 </t>
300
301 <t>Each destination field consists of a string of up to 80 ASCII
302 characters, padded with null-bytes to a total size of 80 bytes. The
303 following strings are defined:
304 <list style="hanging">
305 <t hangText="null:">Dummy message. The remailer will discard the
306 message.</t>
307 <t hangText="post:">Usenet message. The remailer will post the
308 message to Usenet.</t>
309 <t hangText="post: [newsgroup]">Usenet message. The remailer will
310 add a "Newsgroups" header with the specified content, and post
311 the message to Usenet.</t>
312 <t hangText="[address]">E-mail message. The remailer will add a
313 "To" header with the specified content, and send the message as
314 e-mail.</t>
315 </list>
316 </t>
317
318 <t>If no destination field is given, the payload is an e-mail
319 message.</t>
320
321 <t>Message headers can be specified in header line fields. Each header
322 line field consists of a string of up to 80 ASCII characters, padded
323 with null-bytes to a total size of 80 bytes.</t>
324
325 <t>There are three types of user data sections:
326 <list style="symbols">
327 <t>A compressed user data section begins with the GZIP identification
328 header (31, 139). This header contains an additional user data
329 section. The data are compressed using GZIP [RFC 1952]. The GZIP
330 operating system field must be set to Unix, and file names must not
331 be given. Compression may be used if the capabilities attribute of
332 the final remailer contains the flag "C".</t>
333 <t>An RFC 2822 user data section begins with the three bytes
334 "##[CR]" (35, 35, 13). It contains an e-mail message or a
335 Usenet message.</t>
336 <t>A user data section not beginning with one of the above
337 identification strings contains only the body of the message. When
338 this type of user data section is used, the message header fields
339 must be included in destination and header line fields.</t>
340 </list>
341 </t>
342
343 <t>The payload is limited to a maximum size of 2610180 bytes.
344 Individual remailers may use a smaller limit.</t>
345
346 <t>Remailer operators can choose to remove header fields supplied by
347 the sender and insert additional header fields, according to local
348 policy; see <xref target="key-format"/>.</t>
349
350 </section>
351
352 <section anchor="crypto-algorithms" title="Cryptographic Algorithms">
353
354 <t>The asymmetric encryption mechanism is RSA with 1024 bit RSA keys
355 and the PKCS #1 v1.5 (RSAES-PKCS1-v1_5) padding format <xref
356 target="RFC2437"/>. The symmetric encryption mechanism is EDE
357 3DES with cipher block chaining (24-byte key, 8-byte initialization
358 vector) <xref target="MENEZES"/>. MD5 <xref target="RFC1321"/>
359 is used as the message digest algorithm.</t>
360 </section>
361
362 <section anchor="packet-format" title="Packet Format">
363
364 <t>A Mixmaster packet consists of a header containing information for
365 the remailers, and a body containing payload data. To ensure that
366 packets are indistinguishable, the fields are all of fixed
367 size.</t>
368
369 <t>The packet header consists of 20 header sections (specified in
370 <xref target="header-section"/>) of 512 bytes each, resulting in a
371 total header size of 10240 bytes. The header sections (except for
372 the first one) and the packet body are encrypted with symmetric
373 session keys specified in the first header section.<figure><artwork>
374 +-------------------+
375 | Header section 1 |
376 +- - - - - - - - - -+
377 | Header section 2 |
378 +- - - - - - - - - -+
379 + ... +
380 +- - - - - - - - - -+
381 | Header section 20 |
382 +-------------------+
383 | |
384 | Payload |
385 | |
386 | |
387 | |
388 | |
389 | |
390 +-------------------+</artwork></figure>
391 </t>
392
393 <section anchor="header-section" title="Header Section Format">
394
395 <t>Packet layout<figure><artwork>
396 [ Public key ID 16 bytes ]
397 [ Length of RSA-encrypted data 1 byte ]
398 [ RSA-encrypted session key 128 bytes ]
399 [ Initialization vector 8 bytes ]
400 [ Encrypted header part 328 bytes ]
401 [ Random padding 31 bytes ]</artwork></figure>
402 Total size: 512 bytes
403 </t>
404
405 <t>To generate the RSA-encrypted session key, a 24-byte
406 Triple-DES key is encrypted with RSAES-PKCS1-v1_5, resulting in
407 128 bytes (1024 bits) of encrypted data. This Triple-DES key and
408 the initialization vector provided in clear are used to decrypt
409 the encrypted header part. They are not used at other stages of
410 message processing.</t>
411
412 <t>The 328 bytes of data encrypted to form the encrypted header
413 part are as follows:<figure><artwork>
414 [ Packet ID 16 bytes ]
415 [ Triple-DES key 24 bytes ]
416 [ Packet type identifier 1 byte ]
417 [ Packet information depends on packet type ]
418 [ Timestamp 7 bytes ]
419 [ Message digest 16 bytes ]
420 [ Random padding as needed ]</artwork></figure>
421 Total size: 328 bytes
422 </t>
423
424 <t>The fields are defined as follows:
425 <list style="hanging">
426 <t hangText="Packet ID:">randomly generated packet identifier.</t>
427 <t hangText="Triple-DES key:">used to encrypt the following
428 header sections and the packet body.</t>
429 <t hangText="Packet type identifier:">The type identifiers
430 are:
431 <texttable>
432 <ttcol align='left' width='20%'>Value</ttcol>
433 <ttcol align='left'>Type</ttcol>
434 <c>0</c><c>Intermediate hop</c>
435 <c>1</c><c>Final hop, complete message</c>
436 <c>2</c><c>Final hop, partial message</c>
437 </texttable>
438 </t>
439 <t hangText="Timestamp:">A timestamp is introduced with the byte
440 sequence (48, 48, 48, 48, 0). The following two bytes specify
441 the number of days since January 1, 1970 (00:00 UTC), in
442 little-endian byte order. A random number between one and
443 three, inclusive, may be subtracted from the number of days
444 in order to obscure the origin of the message.</t>
445 <t hangText="Message digest:">MD5 digest computed over the
446 preceding elements of the encrypted header part.</t>
447 </list>
448 </t>
449
450 <t>The packet information depends on the packet type identifier,
451 as follows:<figure><artwork>
452 Packet type 0 (intermediate hop):
453 [ 19 Initialization vectors 152 bytes ]
454 [ Remailer address 80 bytes ]
455
456 Packet type 1 (final hop):
457 [ Message ID 16 bytes ]
458 [ Initialization vector 8 bytes ]
459
460 Packet type 2 (final hop, partial message):
461 [ Chunk number 1 byte ]
462 [ Number of chunks 1 byte ]
463 [ Message ID 16 bytes ]
464 [ Initialization vector 8 bytes ]</artwork></figure>
465
466 <list style="hanging">
467 <t hangText="Initialization vectors:"> For packet type 1 and 2,
468 the IV is used to symmetrically encrypt the packet body. For
469 packet type 0, there is one IV for each of the 19 following
470 header sections. The IV for the last header section is also
471 used for the packet body.</t>
472 <t hangText="Remailer address:">E-mail address of next hop.</t>
473 <t hangText="Message ID:">Identifier unique to
474 (all chunks of) this message.</t>
475 <t hangText="Chunk number:">Sequence number used in multi-part
476 messages, starting with one.</t>
477 <t hangText="Number of chunks:">Total number of chunks.</t>
478 </list>
479 </t>
480
481 <t>In the case of packet type zero, header sections two through
482 twenty, and the packet body, each are decrypted
483 separately using the respective initialization
484 vectors. In the case of packet types one and two, header
485 sections two through 20 are ignored, and the packet body
486 is decrypted using the given initialization vector.</t>
487
488 </section>
489
490 <section anchor="body-format" title="Body Format">
491
492 <t>The message payload <xref target="payload-format"/> is split
493 into chunks of 10236 bytes. Random padding is added to the last
494 chunk if necessary. The length of each chunk (not counting the
495 padding), is prepended to the chunk as a four-byte little-endian
496 number. This forms the body of a Mixmaster packet.</t>
497
498 <t>A message may consist of up to 255 packets.</t>
499
500 </section>
501
502 </section>
503
504 <section anchor="transport-encoding" title="Mail Transport Encoding">
505
506 <t>Mixmaster packets are sent as standard email messages <xref
507 target="RFC2822"/>. The message body has the following format:
508 <figure><artwork>
509 ##
510 Remailer-Type: Mixmaster [version number]
511
512 -----BEGIN REMAILER MESSAGE-----
513 [packet length ]
514 [message digest]
515 [encoded packet]
516 -----END REMAILER MESSAGE-----
517 </artwork></figure></t>
518
519 <t>The length field always contains the decimal number "20480", since
520 the size of Mixmaster packets is constant. An MD5 message digest
521 <xref target="RFC1321"/> of the (un-encoded) packet is encoded in
522 base64.</t>
523
524 <t>The packet itself is encoded in Base-64 encoding <xref
525 target="RFC1421"/>, with line-breaks every 40 characters.</t>
526
527 </section>
528
529 </section>
530
531 <section anchor="key-format" title="Key Format">
532
533 <t>Remailer public key files consist of a list of attributes and a public
534 RSA key:<figure><artwork>
535 [attributes list]
536
537 -----Begin Mix Key-----
538 [key ID]
539 [length]
540 [encoded key]
541 -----End Mix Key-----</artwork></figure>
542 </t>
543
544 <t>The attributes are listed in one line separated by spaces. Individual
545 attributes must not contain whitespace, and are defined as follows:</t>
546 <t>
547 <list style="hanging">
548 <t hangText="identifier:">A human readable string identifying the
549 remailer</t>
550 <t hangText="address:">The remailer's Internet mail address</t>
551 <t hangText="key ID:">Public key ID</t>
552 <t hangText="version:">Software version number</t>
553 <t hangText="capabilities:">Flags indicating additional remailer
554 capabilities</t>
555 <t hangText="validity date:">Date from which the key is valid</t>
556 <t hangText="expiration date:">Date of the key's expiration</t>
557 </list>
558 </t>
559
560 <t>The identifier consists of lowercase alphanumeric characters,
561 beginning with an alphabetic character. The identifier should consist
562 of no more than eight characters in length.</t>
563
564 <t>The key ID is the MD5 message digest of the representation of the RSA
565 public key (not including the length bytes). It is encoded as a
566 hexadecimal string.</t>
567
568 <t>The version field consists of the protocol version number followed by
569 a colon and the software version information, limited to the ASCII
570 alphanumeric characters, plus dot (.) and dash (-). All implementations
571 of the protocol specified here should prepend the software
572 version with "2:". Existing implementations lacking
573 a protocol version number imply protocol version 2.</t>
574
575 <t>The capabilities field is optional. It is a list of flags represented
576 by a string of ASCII characters. Clients should ignore unknown flags.
577 The following flags are defined:
578 <texttable>
579 <ttcol align='left' width='20%'>Flag</ttcol>
580 <ttcol align='left'>Meaning</ttcol>
581 <c>C</c><c>Accepts compressed messages</c>
582 <c>M</c><c>Will forward messages to another mix when used as final hop</c>
583 <c>Nm</c><c>Supports posting to Usenet through a mail-to-news gateway</c>
584 <c>Np</c><c>Supports direct posting to Usenet</c>
585 </texttable>
586 </t>
587
588 <t>The date fields are optional. They are ASCII date stamps in the format
589 YYYY-MM-DD. The first date indicates the date from which the key is
590 first valid; the second date indicates its expiration. If only one date
591 is present, it is treated as the key creation date. (The date stamp
592 implies 00:00 UTC).</t>
593
594 <t>The version, capabilities, and date fields must each be no longer than
595 125 characters.</t>
596
597 <t>The encoded key part consists of two bytes specifying the key length
598 (1024 bits) in little-endian byte order, and of the RSA modulus and the
599 public exponent in big-endian form using 128 bytes each, with preceding
600 null bytes for the exponent if necessary. The packet is encoded in
601 Base-64 <xref target="RFC1421"/>, with line-breaks every 40 characters.
602 Its length (258 bytes) is given as a decimal number.</t>
603
604 <t>Digital signatures <xref target="RFC2440"/> should be used to ensure
605 the authenticity of the key files.</t>
606
607 </section>
608
609
610 <section anchor="implementation" title="Implementation Notes">
611
612 <t>This section discusses various implementation issues.</t>
613
614 <section anchor="remixing" title="Remixing">
615
616 <t>Some remailers may understand multiple remailer protocols. In the
617 interest of creating a unified anonymity set, remailers which speak
618 multiple remailer protocols should attempt to remix messages that use
619 the older protocols whenever possible.</t>
620
621 <t>When a remailer receives a message in the older protocol format, it
622 should determine if the message destination is another remailer which
623 also speaks the Mixmaster protocol. If the remailer knows the
624 Mixmaster public key for the next hop, it should process the message
625 normally, but instead of sending the message to its next hop, treat
626 the processed message as opaque data which will comprise the body of
627 a Mixmaster message. The remailer should then create a Mixmaster
628 message with this body to be delivered to the next hop remailer.</t>
629
630 <t>Ensuring that a remailer's keyring contains up to date copies of
631 the public keys for other remailers is the responsibility of the
632 given remailer's operator. Utilities such as Echolot can be used
633 to assist in automating this task.</t>
634
635
636 <t>If the remailer receives a Mixmaster message that, when decrypted,
637 contains a message in an alternate protocol supported by the
638 remailer, it should process the message as though it had initially
639 been delivered in the alternate protocol format.</t>
640
641 </section>
642
643 <section anchor="admin-commands" title="Administrative Commands">
644
645 <t>The existing remailer software understands a number of specific
646 administrative commands. These commands are sent via the Subject:
647 line of an e-mail to the email address of the remailer:
648 <list style="hanging">
649 <t hangText="remailer-help:">Returns information about using the
650 remailer. The remailer may support a suffix consisting of a
651 dash and a two-letter ISO 639 country code. For example,
652 remailer-help-ar will return a help file in Arabic, if
653 available. Supported languages should be listed at the
654 beginning of the "remailer-help" response.</t>
655 <t hangText="remailer-key:">Returns the remailer's public key as
656 described in <xref target="key-format"/>. It may also return the keys and attributes
657 of other remailers it knows about.</t>
658 <t hangText="remailer-stats:">Returns information about the number
659 of messages the remailer has processed per day (again, a day
660 starts at 00:00 UTC).</t>
661 <t hangText="remailer-conf:">Returns local configuration
662 information such as software version, supported protocols,
663 filtered headers, blocked newsgroups and domains, and the
664 attribute strings for other remailers the remailer knows
665 about.</t>
666 <t hangText="remailer-adminkey:">Returns the OpenPGP <xref target="RFC2440"/>
667 key of the remailer's operator.</t>
668 </list>
669 </t>
670
671 </section>
672
673 <section anchor='impl-dummy-traffic' title="Dummy Traffic">
674
675 <t>Older versions of Mixmaster (2.0.4 through 2.9.0) allowed for the
676 creation of dummy message cover traffic, but provided no automated
677 means for introducing this dummy traffic into the system. Beginning
678 in version 3.0, Mixmaster employs an internal dummy policy.</t>
679
680 </section>
681
682 <section anchor="key-rotation" title="Key Rotation">
683
684 <t>Beginning with version 3.0, Mixmaster offers automatic key rotation.
685 Care must be taken to minimize the possibility for partitioning
686 attacks during the key rotation window.</t>
687
688 <t>Keys are generated with a validity date and an expiration date.
689 User agents should only display valid keys which have not
690 expired.</t>
691
692 <t>Keys are valid for a 13 month period. A remailer must generate
693 a new key when the existing key's expiration date is one month or
694 less in the future. When queried, a remailer must report the most
695 recently generated key as its key, effectively giving each key a 12
696 month service period.</t>
697
698 <t>Remailers must continue to decrypt and process mail encrypted to
699 expired keys for one week past the expiration date on the key.
700 One week after expiration, an expired remailer key should be
701 securely destroyed.</t>
702
703 </section>
704
705 <section anchor="anon-delivery" title="Delivery of Anonymous Messages">
706
707 <t>When anonymous messages are forwarded to third parties, remailer
708 operators should be aware that senders might try to supply header
709 fields that indicate a false identity or to send unauthorized Usenet
710 control messages. This is a problem because many news servers
711 accept control messages automatically without any authentication.</t>
712
713 <t>For these reasons, remailer software should allow the operator to
714 disable certain types of message headers, and to insert headers
715 automatically.</t>
716
717 <t>Remailers usually add a "From:" field containing an address controlled
718 by the remailer operator to anonymous messages. Using the word
719 "Anonymous" in the name field allows recipients to apply scoring
720 mechanisms and filters to anonymous messages. Appropriate additional
721 information about the origin of the message can be inserted in the
722 "Comments:" header field of the anonymous messages.</t>
723
724 <t>If the recipient does not wish to receive anonymous messages,
725 unobservability of communications and authenticity can be achieved at
726 the same time by the remailer verifying that the message is
727 cryptographically signed <xref target="RFC2440"/> by a known
728 sender.</t>
729
730 <t>Anonymous remailers are sometimes used to send harassing e-mail. To
731 prevent this abuse, remailer software should allow operators to block
732 destination addresses on request. Real-life abuse and attacks on
733 anonymous remailers are discussed in <xref target="Mazieres98"/>.</t>
734
735 </section>
736
737 </section>
738
739 <section anchor="security-consideration" title="Security Considerations">
740
741 <t>The security of the mix-net relies on the assumption that the
742 underlying cryptographic primitives are secure. In addition, specific
743 attacks on the mix-net need to be considered; <xref
744 target="Moeller98"/> contains a more detailed analysis of these
745 attacks.</t>
746
747 <t>Passive adversaries can observe some or all of the messages sent to
748 mixes. The users' anonymity comes from the fact that a large number of
749 messages are collected and sent in random order. For that reason
750 remailers should collect as many messages as possible while keeping the
751 delay acceptable.</t>
752
753 <t>Statistical traffic analysis is possible even if single messages are
754 anonymized in a perfectly secure way: an eavesdropper may correlate the
755 times of Mixmaster packets being sent and anonymized messages being
756 received. This is a powerful attack if several anonymous messages can
757 be linked together (by their contents or because they are sent under a
758 pseudonym). To protect themselves, senders must mail Mixmaster packets
759 stochastically independent of the actual messages they want to send.
760 This can be done by sending packets in regular intervals, using a dummy
761 message whenever appropriate. To avoid leaking information, the
762 intervals should not be smaller than the randomness in the delay caused
763 by trusted remailers.</t>
764
765 <t>There is no anonymity if all remailers in a given chain collude with
766 the adversary, or if they are compromised during the lifetime of their
767 keys. Using a longer chain increases the assurance that the user's
768 privacy will be preserved, but at the same time causes lower
769 reliability and higher latency. Sending redundant copies of a message
770 increases reliability but may also facilitate attacks. An optimum must
771 be found according to the individual security needs and trust in the
772 remailers.</t>
773
774 <t>Active adversaries can also create, suppress or modify messages.
775 Remailers must check the packet IDs to prevent replay attacks. To
776 minimize the number of packet IDs that the remailer must retain,
777 packets which bear a timestamp more than a reasonable number of days in
778 the past may be discarded. Implementors should consider that packets
779 maybe up to three days younger than indicated by the timestamp, and
780 select an expiration value which allows sufficient time for legitimate
781 messages to pass through the network. The number of packet IDs that the
782 remailer must retain can be further minimized by discarding packet IDs
783 for packets encrypted to a key which has expired more than a week in
784 the past.</t>
785
786 <t>Early implementations of Mixmaster did not generate a timestamp
787 packet. Implementors should be aware of the partitioning attack
788 implications if they chose to permit processing of packets without
789 timestamps.</t>
790
791 <t>Message integrity must be verified to prevent the adversary from
792 performing chosen ciphertext attacks or replay attacks with modified
793 packet IDs, and from encoding information in an intercepted message in
794 a way not affected by decryption (e.g. by modifying the message length
795 or inducing errors). This version of the protocol does not provide
796 integrity for the packet body. Because the padding for header section
797 is random, in this version of the protocol it is impossible for a
798 remailer to check the integrity of the encrypted header sections that
799 will be decrypted by the following remailers. Chosen ciphertext attacks
800 and replay attacks are detected by verifying the message digest
801 included in the header section.</t>
802
803 <t>The adversary can trace a message if he knows the decryption of all
804 other messages that pass through the remailer at the same time. To make
805 it less practical for an attacker to flood a mix with known messages,
806 remailers can store received messages in a reordering pool that grows
807 in size while more than average messages are received, and periodically
808 choose at random a fixed fraction of the messages in the pool for
809 processing. There is no complete protection against flooding attacks in
810 an open system, but if the number of messages required is high, an
811 attack is less likely to go unnoticed.</t>
812
813 <t>If the adversary suppresses all Mixmaster messages from one particular
814 sender and observes that anonymous messages of a certain kind are
815 discontinued at the same time, that sender's anonymity is compromised
816 with high probability. There is no practical cryptographic protection
817 against this attack in large-scale networks. The effect of a more
818 powerful attack that combines suppressing messages and re-injecting
819 them at a later time is reduced by using timestamps.</t>
820
821 <t>Manipulation of the distribution of remailer keys, capabilities, and
822 statistics can lead to powerful attacks against a remailer network.
823 Sensitive information such as this should be distributed in a secure
824 manner.</t>
825
826 <t>The lack of accountability that comes with anonymity may have
827 implications for the security of a network. For example, many news
828 servers accept control messages automatically without any cryptographic
829 authentication. Possible countermeasures are discussed in <xref
830 target="anon-delivery"/>.</t>
831
832 </section>
833
834 <section anchor="acknowledgments" title="Acknowledgments">
835
836 <t>Several people contributed ideas and source code to the Mixmaster v2
837 software.</t>
838
839 <t>"Antonomasia" &lt;ant@notatla.org.uk&gt;,
840 Adam Back &lt;adam@cypherspace.org&gt;,
841 Marco A. Calamari &lt;marcoc@dada.it&gt;,
842 Bodo Moeller &lt;bmoeller@acm.org&gt;,
843 Jon Orbeton &lt;jono@networkcommand.com&gt;, and
844 Myles Conley &lt;miles@tenhand.com&gt; suggested improvements to this
845 document. Rich Salz &lt;rsalz@datapower.com&gt; contributed
846 significantly to this document by XMLifying it and rewording
847 many ambiguous sections.</t>
848
849 </section>
850
851 </middle>
852
853 <back>
854
855 <references title="References">
856
857 <reference anchor="Chaum81">
858 <front>
859 <title>Untraceable Electronic Mail, Return Addresses, and Digital
860 Pseudonyms</title>
861 <author initials="D." surname="Chaum" fullname="David Chaum">
862 <organization/><address/>
863 </author>
864 <date year="1981"/>
865 </front>
866 <seriesInfo name="Communications of the ACM" value="24:2"/>
867 </reference>
868
869 <reference anchor="Mazieres98"
870 target="ftp://cag.lcs.mit.edu/pub/dm/papers/mazieres:pnym.ps.gz">
871 <front>
872 <title>The Design, Implementation and Operation of an Email Pseudonym
873 Server</title>
874 <author initials="D." surname="Mazieres" fullname="D. Mazieres">
875 <organization/><address/>
876 </author>
877 <author initials="F." surname="Kaashoek" fullname="F. Kaashoek">
878 <organization>5th ACM Conference on Computer and Communications
879 Security</organization>
880 <address/>
881 </author>
882 <date year="1998"/>
883 </front>
884 </reference>
885
886 <reference anchor="Moeller98"
887 target="http://agn-www.informatik.uni-hamburg.de/people/3umoelle/st.ps">
888 <front>
889 <title>Anonymisierung von Internet-Diensten</title>
890 <author initials="U." surname="Moeller" fullname="Ulf Moeller">
891 <organization>Studienarbeit, University of Hamburg</organization>
892 <address/>
893 </author>
894 <date month="January" year="1998"/>
895 </front>
896 </reference>
897
898 <reference anchor="trickle02"
899 target="http://freehaven.net/doc/batching-taxonomy/taxonomy.pdf">
900 <front>
901 <title>From a Trickle to a Flood: Active Attacks on Several Mix Types</title>
902 <author initials="A." surname="Serjantov" fullname="Andrei Serjantov">
903 <organization/><address/>
904 </author>
905 <author initials="R." surname="Dingledine" fullname="Roger Dingledine">
906 <organization/><address/>
907 </author>
908 <author initials="P." surname="Syverson" fullname="Paul Syverson">
909 <organization>Proceedings of Information Hiding Workshop (IH 2002)</organization>
910 <address/>
911 </author>
912 <date month="October" year="2002"/>
913 </front>
914 </reference>
915
916
917 <reference anchor="MENEZES">
918 <front>
919 <title>"Handbook of Applied Cryptography", CRC Press</title>
920 <author initials="A." surname="Menezes" fullname="Alfred Menezes">
921 <organization/><address/>
922 </author>
923 <author initials="P." surname="van Oorschot" fullname="Paul van Oorschot">
924 <organization/><address/>
925 </author>
926 <author initials="S." surname="Vanstone" fullname="Scott Vanstone">
927 <organization/><address/>
928 </author>
929 <date year="1996"/>
930 </front>
931 </reference>
932
933 <?rfc include="reference.RFC.1036.xml" ?>
934 <?rfc include="reference.RFC.1321.xml" ?>
935 <?rfc include="reference.RFC.1421.xml" ?>
936 <?rfc include="reference.RFC.1952.xml" ?>
937 <?rfc include="reference.RFC.2311.xml" ?>
938 <?rfc include="reference.RFC.2437.xml" ?>
939 <?rfc include="reference.RFC.2440.xml" ?>
940 <?rfc include="reference.RFC.2822.xml" ?>
941
942 </references>
943
944 </back>
945
946 </rfc>
947

Properties

Name Value
svn:keywords Id

  ViewVC Help
Powered by ViewVC 1.1.5