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

Properties

Name Value
svn:keywords Id

  ViewVC Help
Powered by ViewVC 1.1.5