/[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 748 - (hide annotations) (download) (as text)
Wed Apr 7 20:22:35 2004 UTC (9 years, 1 month ago) by weasel
File MIME type: text/xml
File size: 40819 byte(s)
We do not use MUST/SHOULD/MAY
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     <t>The sender next chooses a sequence of up to 20 remailers
147     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     are in <xref target="packet-header"/>). For a sequence
155     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     the public key of the "n"'th remailer in the sequence.</t>
161    
162     <t>The process is repeated, working backward through the sequence
163     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     sequence.</t>
167    
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     <xref target="packet-header"/> can be used to detect
175     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     indication that the sequence ends at that remailer, and whether the
199     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 748 selected remailers as the sequence. The sequences 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     "##[RETURN]" (35, 35, 13). It contains an e-mail message or a
329     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     3DES with cipher block chaining (24-byte key, eight-byte initialization
352     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     <xref target="packet-header"/>) of 512 bytes each, resulting in a
365     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     <section anchor="packet-header" title="Packet Header Format">
388    
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     </t>
397    
398     <t>To generate the RSA-encrypted session key, a 24-byte
399     Triple-DES key is encrypted with RSAES-PKCS1-v1_5, resulting in
400     128 bytes (1024 bits) of encrypted data. This Triple-DES key and
401     the initialization vector provided in clear are used to decrypt
402     the encrypted header part. They are not used at other stages of
403     message processing.</t>
404    
405     <t>The 328 bytes of data encrypted to form the encrypted header
406     part are as follows:<figure><artwork>
407     [ Packet ID 16 bytes ]
408     [ Triple-DES key 24 bytes ]
409     [ Packet type identifier 1 byte ]
410     [ Packet information depends on packet type ]
411     [ Timestamp 7 bytes ]
412     [ Message digest 16 bytes ]
413     [ padding as needed ]</artwork></figure>
414     </t>
415    
416     <t>The fields are defined as follows:
417     <list style="hanging">
418     <t hangText="Packet ID">randomly generated packet identifier.</t>
419     <t hangText="Triple-DES key">used to encrypt the following
420     header sections and the packet body.</t>
421     <t hangText="Packet type identifier">The type identifiers
422     are:
423     <texttable>
424     <ttcol align='left' width='20%'>Value</ttcol>
425     <ttcol align='left'>Type</ttcol>
426     <c>0</c><c>Intermediate hop</c>
427     <c>1</c><c>Final hop, complete message</c>
428     <c>2</c><c>Final hop, partial message</c>
429     </texttable>
430     </t>
431     <t hangText="Timestamp">A timestamp is introduced with the byte
432     sequence (48, 48, 48, 48, 0). The following two bytes specify
433     the number of days since January 1, 1970, in little-endian
434     byte order. A random number between one and three, inclusive,
435     may be subtracted from the number of days in order to obscure
436     the origin of the message.</t>
437     <t hangText="Message digest">MD5 digest computed over the
438     preceding elements of the encrypted header part.</t>
439     </list>
440     </t>
441    
442     <t>The packet information depends on the packet type identifier,
443     as follows:<figure><artwork>
444     Packet type 0 (intermediate hop):
445     [ 19 Initialization vectors 152 bytes ]
446     [ Remailer address 80 bytes ]
447    
448     Packet type 1 (final hop):
449     [ Message ID 16 bytes ]
450     [ Initialization vector 8 bytes ]
451    
452     Packet type 2 (final hop, partial message):
453     [ Chunk number 1 byte ]
454     [ Number of chunks 1 byte ]
455     [ Message ID 16 bytes ]
456     [ Initialization vector 8 bytes ]</artwork></figure>
457    
458     <list style="hanging">
459     <t hangText="Initialization vectors"> For packet type one and two,
460     the IV is used to symmetrically encrypt the packet body. For
461     packet type 0, there is one IV for each of the 19 following
462     header sections. The IV for the last header section is also
463     used for the packet body.</t>
464     <t hangText="Remailer address">E-mail address of next hop.</t>
465     <t hangText="Message ID">Identifier unique to
466     (all chunks of) this message.</t>
467     <t hangText="Chunk number">Sequence number used in multi-part
468     messages, starting with one.</t>
469     <t hangText="Number of chunks">Total number of chunks.</t>
470     </list>
471     </t>
472    
473     <t>In the case of packet type zero, header sections two through
474     twenty, and the packet body, each are decrypted
475     separately using the respective initialization
476     vectors. In the case of packet types one and two, header
477     sections two through 20 are ignored, and the packet body
478     is decrypted using the given initialization vector.</t>
479    
480     </section>
481    
482     <section anchor="body-format" title="Body Format">
483    
484     <t>The message payload <xref target="payload-format"/> is split
485     into chunks of 10236 bytes. Random padding is added to the last
486     chunk if necessary. The length of each chunk (not counting the
487     padding), is prepended to the chunk as a four-byte little-endian
488     number. This forms the body of a Mixmaster packet.</t>
489    
490     <t>A message may consist of up to 255 packets.</t>
491    
492     </section>
493    
494     </section>
495    
496     <section anchor="transport-encoding" title="Mail Transport Encoding">
497    
498     <t>Mixmaster packets are sent as standard email messages <xref
499     target="RFC2822"/>. The message body has the following format:
500     <figure><artwork>
501     ##
502     Remailer-Type: Mixmaster [version number]
503    
504     -----BEGIN REMAILER MESSAGE-----
505     [packet length ]
506     [message digest]
507     [encoded packet]
508     -----END REMAILER MESSAGE-----
509     </artwork></figure></t>
510    
511     <t>The length field always contains the decimal number "20480", since
512     the size of Mixmaster packets is constant. An MD5 message digest
513     <xref target="RFC1321"/> of the (un-encoded) packet is encoded in
514     base64.</t>
515    
516     <t>The packet itself is encoded in Base-64 encoding <xref
517     target="RFC1421"/>, with linebreaks every 40 characters.</t>
518    
519     </section>
520    
521     </section>
522    
523     <section anchor="key-format" title="Key Format">
524    
525     <t>Remailer public key files consist of a list of attributes and a public
526     RSA key:<figure><artwork>
527     [attributes list]
528    
529     -----Begin Mix Key-----
530     [key ID]
531     [length]
532     [encoded key]
533     -----End Mix Key-----</artwork></figure>
534     </t>
535    
536     <t>The attributes are listed in one line separated by spaces. Individual
537     attributes must not contain whitespace, and are defined as follows:
538     <list style="hanging">
539     <t hangText="identifier">A human readable string identifying the
540     remailer</t>
541     <t hangText="address">The remailer's Internet mail address</t>
542     <t hangText="key ID">Public key ID</t>
543     <t hangText="version">Software version number</t>
544     <t hangText="capabilities">Flags indicating additional remailer
545     capabilities</t>
546     <t hangText="validity date">Date from which the key is valid</t>
547     <t hangText="expiration date">Date of the key's expiration</t>
548     </list>
549     </t>
550    
551     <t>The identifier consists of lowercase alphanumeric characters,
552     beginning with an alphabetic character. The identifier should consist
553     of no more than eight characters in length.</t>
554    
555     <t>The key ID is the MD5 message digest of the representation of the RSA
556     public key (not including the length bytes). It is encoded as a
557     hexadecimal string.</t>
558    
559     <t>The version field consists of the protocol version number followed by
560     a colon and the software version information, limited to the ASCII
561     alphanumeric characters, plus dot (.) and dash (-). All implementations
562     of the protocol specified here should prepend the software
563     version with "2:". Existing implementations lacking
564     a protocol version number imply protocol version 2.</t>
565    
566     <t>The capabilities field is optional. It is a list of flags represented
567     by a string of ASCII characters. Clients should ignore unknown flags.
568     The following flags are defined:
569     <texttable>
570     <ttcol align='left' width='20%'>Flag</ttcol>
571     <ttcol align='left'>Meaning</ttcol>
572     <c>C</c><c>Accepts compressed messages</c>
573     <c>M</c><c>Will forward messages to another mix when used as final hop</c>
574     <c>Nm</c><c>Supports posting to Usenet through a mail-to-news gateway</c>
575     <c>Np</c><c>Supports direct posting to Usenet</c>
576     </texttable>
577     </t>
578    
579     <t>The date fields are optional. They are ASCII date stamps in the format
580     YYYY-MM-DD. The first date indicates the date from which the key is
581     first valid; the second date indicates its expiration. If only one date
582     is present, it is treated as the key creation date. (The date stamp
583     implies 00:00 UTC).</t>
584    
585     <t>The version, capabilities, and date fields must each be no longer than
586     125 characters.</t>
587    
588     <t>The encoded key part consists of two bytes specifying the key length
589     (1024 bits) in little-endian byte order, and of the RSA modulus and the
590     public exponent in big-endian form using 128 bytes each, with preceding
591     null bytes for the exponent if necessary. The packet is encoded in
592     Base-64 <xref target="RFC1421"/>, with linebreaks every 40 characters.
593     Its length (258 bytes) is given as a decimal number.</t>
594    
595     <t>Digital signatures <xref target="RFC2440"/> should be used to ensure
596     the authenticity of the key files.</t>
597    
598     </section>
599    
600    
601     <section anchor="implementation" title="Implementation Nodes">
602    
603     <t>This section discusses various implementation issues.</t>
604    
605     <section anchor="remixing" title="Remixing">
606    
607     <t>Some remailers may understand multiple remailer protocols. In the
608     interest of creating a unified anonymity set, remailers which speak
609     multiple remailer protocols should attempt to remix messages that use
610     the older protocols whenever possible.</t>
611    
612     <t>When a remailer receives a message in the older protocol format, it
613     should determine if the message destination is another remailer which
614     also speaks the Mixmaster protocol. If the remailer knows the
615     Mixmaster public key for the next hop, it should process the message
616     normally, but instead of sending the message to its next hop, treat
617     the processed message as opaque data which will comprise the body of
618     a Mixmaster message. The remailer should then create a Mixmaster
619     message with this body to be delivered to the next hop remailer.</t>
620    
621     <t>Ensuring that a remailer's keyring containing the public keys for
622     other remailers in the network remains up-to-date is the
623     responsibility of the given remailer's operator.</t>
624    
625     <t>If the remailer receives a Mixmaster message that, when decrypted,
626     reveals a message of another protocol which the remailer speaks, it
627     should process the message as though it had been delivered in the
628     other protocol format initially.</t>
629    
630     </section>
631    
632     <section anchor="admin-commands" title="Administrative Commands">
633    
634 weasel 741 <t>The remailer software understands a number of specific administrative
635     commands. These commands are sent via the Subject: line of an e-mail to
636     the email address of the remailer:
637 weasel 734 <list style="hanging">
638     <t hangText="remailer-help">Returns information about using the
639 weasel 748 remailer. The remailer may support a suffix consisting of a
640 weasel 734 dash and a two-leter ISO 639 country code. For example,
641     remailer-help-ar will return a help file in Arabic, if
642 weasel 748 available. Supported languages should be listed at the
643 weasel 734 beginning of the "remailer-help" response.</t>
644     <t hangText="remailer-key">Returns the remailer's public key as
645 weasel 742 described in <xref target="key-format"/>. It may also return the keys and attributes
646 weasel 734 of other remailers it knows about.</t>
647     <t hangText="remailer-stats">Returns information about the number
648     of messages the remailer has processed per day.</t>
649     <t hangText="remailer-conf">Returns local configuration
650     information such as software version, supported protocols,
651     filtered headers, blocked newsgroups and domains, and the
652     attribute strings for other remailers the remailer knows
653     about.</t>
654 weasel 742 <t hangText="remailer-adminkey">Returns the OpenPGP <xref target="RFC2440"/>
655 weasel 741 key of the remailer's operator.</t>
656 weasel 734 </list>
657     </t>
658    
659     </section>
660    
661     <section anchor='impl-dummy-traffic' title="Dummy Traffic">
662    
663     <t>Older versions of Mixmaster (2.0.4 through 2.9.0) allowed for the
664     creation of dummy message cover traffic, but provided no automated
665     means for introducing this dummy traffic into the system. Beginning
666     in version 3.0, Mixmaster employs an internal dummy policy.</t>
667    
668     </section>
669    
670     <section anchor="key-rotation" title="Key Rotation">
671    
672     <t>Beginning with version 3.0, Mixmaster offers automatic key rotation.
673     Care must be taken to minimize the possibility for partitioning
674     attacks during the key rotation window.</t>
675    
676     <t>Keys are generated with a validity date and an expiration date.
677 weasel 748 User agents should only display valid keys which have not
678 weasel 734 expired.</t>
679    
680 weasel 748 <t>Keys are valid for a 13 month period. A remailer must generate
681 weasel 734 a new key when the existing key's expiration date is one month or
682 weasel 748 less in the future. When queried, a remailer must report the most
683 weasel 734 recently generated key as its key, effectively giving each key a 12
684     month service period.</t>
685    
686 weasel 748 <t>Remailers must continue to decrypt and process mail encrypted to
687 weasel 734 expired keys for one week past the expiration date on the key.
688     One week after expiration, an expired remailer key should be
689     securely destroyed.</t>
690    
691     </section>
692    
693     <section anchor="anon-delivery" title="Delivery of Anonymous Messages">
694    
695     <t>When anonymous messages are forwarded to third parties, remailer
696     operators should be aware that senders might try to supply header
697     fields that indicate a false identity or to send Usenet control
698     messages unauthorized. This is a problem because many news servers
699     accept control messages automatically without any authentication.</t>
700    
701     <t>For these reasons, remailer software should allow the operator to
702     disable certain types of message headers, and to insert headers
703     automatically.</t>
704    
705     <t>Remailers usually add a "From:" field containing an address controlled
706     by the remailer operator to anonymous messages. Using the word
707     "Anonymous" in the name field allows recipients to apply scoring
708     mechanisms and filters to anonymous messages. Appropriate additional
709     information about the origin of the message can be inserted in the
710     "Comments:" header field of the anonymous messages.</t>
711    
712     <t>If the recipient does not wish to receive anonymous messages,
713     unobservability of communications and authenticity can be achieved at
714     the same time by the remailer verifying that the message is
715     cryptographically signed <xref target="RFC2440"/> by a known
716     sender.</t>
717    
718     <t>Anonymous remailers are sometimes used to send harassing e-mail. To
719     prevent this abuse, remailer software should allow operators to block
720     destination addresses on request. Real-life abuse and attacks on
721     anonymous remailers are discussed in <xref target="Mazieres98"/>.</t>
722    
723     </section>
724    
725     </section>
726    
727     <section anchor="security-consideration" title="Security Considerations">
728    
729     <t>The security of the mix-net relies on the assumption that the
730     underlying cryptographic primitives are secure. In addition, specific
731     attacks on the mix-net need to be considered; <xref
732     target="Moeller98"/> contains a more detailed analysis of these
733     attacks.</t>
734    
735     <t>Passive adversaries can observe some or all of the messages sent to
736     mixes. The users' anonymity comes from the fact that a large number of
737     messages are collected and sent in random order. For that reason
738     remailers should collect as many messages as possible while keeping the
739     delay acceptable.</t>
740    
741     <t>Statistical traffic analysis is possible even if single messages are
742     anonymized in a perfectly secure way: an eavesdropper may correlate the
743     times of Mixmaster packets being sent and anonymized messages being
744     received. This is a powerful attack if several anonymous messages can
745     be linked together (by their contents or because they are sent under a
746     pseudonym). To protect themselves, senders must mail Mixmaster packets
747     stochastically independent of the actual messages they want to send.
748     This can be done by sending packets in regular intervals, using a dummy
749     message whenever appropriate. To avoid leaking information, the
750     intervals should not be smaller than the randomness in the delay caused
751     by trusted remailers.</t>
752    
753     <t>There is no anonymity if all remailers in a given sequence collude with
754     the adversary, or if they are compromised during the lifetime of their
755     keys. Using a longer sequence increases the assurance that the user's
756     privacy will be preserved, but at the same time causes lower
757     reliability and higher latency. Sending redundant copies of a message
758     increases reliability but may also facilitate attacks. An optimum must
759     be found according to the individual security needs and trust in the
760     remailers.</t>
761    
762     <t>Active adversaries can also create, suppress or modify messages.
763     Remailers must check the packet IDs to prevent replay attacks. To
764     minimize the number of packet IDs that the remailer must retain,
765     packets which bear a timestamp more than a reasonable number of days in
766     the past may be discarded. Implementors should consider that packets
767     maybe up to three days younger than indicated by the timestamp, and
768     select an expiration value which allows sufficient time for legitimate
769     messages to pass through the network. The number of packet IDs that the
770     remailer must retain can be further minimized by discarding packet IDs
771     for packets encrypted to a key which has expired more than a week in
772     the past.</t>
773    
774     <t>Early implementations of Mixmaster did not generate a timestamp
775     packet. Implementors should be aware of the partitioning attack
776     implications if they chose to permit processing of packets without
777     timestamps.</t>
778    
779     <t>Message integrity must be verified to prevent the adversary from
780     performing chosen ciphertext attacks or replay attacks with modified
781     packet IDs, and from encoding information in an intercepted message in
782     a way not affected by decryption (e.g. by modifying the message length
783     or inducing errors). This version of the protocol does not provide
784     integrity for the packet body. Because the padding for header section
785     is random, in this version of the protocol it is impossible for a
786     remailer to check the integrity of the encrypted header sections that
787     will be decrypted by the following remailers. Chosen ciphertext attacks
788     and replay attacks are detected by verifying the message digest
789     included in the header section.</t>
790    
791     <t>The adversary can trace a message if he knows the decryption of all
792     other messages that pass through the remailer at the same time. To make
793     it less practical for an attacker to flood a mix with known messages,
794     remailers can store received messages in a reordering pool that grows
795     in size while more than average messages are received, and periodically
796     choose at random a fixed fraction of the messages in the pool for
797     processing. There is no complete protection against flooding attacks in
798     an open system, but if the number of messages required is high, an
799     attack is less likely to go unnoticed.</t>
800    
801     <t>If the adversary suppresses all Mixmaster messages from one particular
802     sender and observes that anonymous messages of a certain kind are
803     discontinued at the same time, that sender's anonymity is compromised
804     with high probability. There is no practical cryptographic protection
805     against this attack in large-scale networks. The effect of a more
806     powerful attack that combines suppressing messages and re-injecting
807     them at a later time is reduced by using timestamps.</t>
808    
809     <t>Manipulation of the distribution of remailer keys, capabilities, and
810     statistics can lead to powerful attacks against a remailer network.
811     Sensitive information such as this should be distributed in a secure
812     manner.</t>
813    
814     <t>The lack of accountability that comes with anonymity may have
815     implications for the security of a network. For example, many news
816     servers accept control messages automatically without any cryptographic
817     authentication. Possible countermeasures are discussed in <xref
818     target="anon-delivery"/>.</t>
819    
820     </section>
821    
822     <section anchor="acknowledgements" title="Acknowledgements">
823    
824     <t>Several people contributed ideas and source code to the Mixmaster v2
825 weasel 740 software.</t>
826 weasel 734
827 weasel 736 <t>"Antonomasia" &lt;ant@notatla.org.uk&gt;,
828     Adam Back &lt;adam@cypherspace.org&gt;,
829     Marco A. Calamari &lt;marcoc@dada.it&gt;,
830     Bodo Moeller &lt;bmoeller@acm.org&gt;,
831     Jon Orbeton &lt;jono@networkcommand.com&gt;, and
832     Myles &lt;myles@tenhand.com&gt; suggested improvements to this
833     document. Rich Salz &lt;rsalz@datapower.com&gt; contributed
834     significantly to this document by XMLifying it and rewording
835     many ambiguous sections.</t>
836 weasel 734
837     </section>
838    
839     <section anchor="examples" title="Examples">
840    
841     <t>This section contains a sample message and a sample key file</t>
842    
843     <section anchor="example-message" title="Sample Message">
844     <t>To be provided.</t>
845     </section>
846    
847     <section anchor="example-keyfile" title="Sample Key File">
848     <t>To be provided.</t>
849     </section>
850    
851     </section>
852    
853     </middle>
854    
855     <back>
856    
857     <references title="References">
858    
859     <reference anchor="Chaum81">
860     <front>
861     <title>Untraceable Electronic Mail, Return Addresses, and Digital
862     Pseudonyms</title>
863     <author initials="D." surname="Chaum" fullname="David Chaum">
864     <organization/><address/>
865     </author>
866     <date year="1981"/>
867     </front>
868     <seriesInfo name="Communications of the ACM" value="24:2"/>
869     </reference>
870    
871     <reference anchor="Mazieres98"
872     target="ftp://cag.lcs.mit.edu/pub/dm/papers/mazieres:pnym.ps.gz">
873     <front>
874     <title>The Design, Implementation and Operation of an Email Pseudonym
875     Server</title>
876     <author initials="D." surname="Mazieres" fullname="D. Mazieres">
877     <organization/><address/>
878     </author>
879     <author initials="F." surname="Kaashoek" fullname="F. Kaashoek">
880     <organization>5th ACM Conference on Computer and Communications
881     Security</organization>
882     <address/>
883     </author>
884     <date year="1998"/>
885     </front>
886     </reference>
887    
888     <reference anchor="Moeller98"
889     target="http://agn-www.informatik.uni-hamburg.de/people/3umoelle/st.ps">
890     <front>
891     <title>Anonymisierung von Internet-Diensten</title>
892     <author initials="U." surname="Moeller" fullname="Ulf Moeller">
893     <organization>Studienarbeit, University of Hamburg</organization>
894     <address/>
895     </author>
896     <date month="January" year="1998"/>
897     </front>
898     </reference>
899    
900     <reference anchor="Schneier96">
901     <front>
902     <title>Applied Cryptography (second edition)</title>
903     <author initials="B." surname="Schneier" fullname="Bruce Schneier">
904     <organization>Wiley</organization>
905     <address/>
906     </author>
907     <date year="1996"/>
908     </front>
909     </reference>
910    
911     <?rfc include="reference.RFC.1036.xml" ?>
912     <?rfc include="reference.RFC.1321.xml" ?>
913     <?rfc include="reference.RFC.1421.xml" ?>
914     <?rfc include="reference.RFC.1952.xml" ?>
915     <?rfc include="reference.RFC.2311.xml" ?>
916     <?rfc include="reference.RFC.2437.xml" ?>
917     <?rfc include="reference.RFC.2440.xml" ?>
918     <?rfc include="reference.RFC.2822.xml" ?>
919    
920     </references>
921    
922     </back>
923    
924     </rfc>
925    

Properties

Name Value
svn:keywords Id

  ViewVC Help
Powered by ViewVC 1.1.5