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

Properties

Name Value
svn:keywords Id

  ViewVC Help
Powered by ViewVC 1.1.5