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

Properties

Name Value
svn:keywords Id

  ViewVC Help
Powered by ViewVC 1.1.5