| 1 |
Internet-Draft Ulf Moeller
|
| 2 |
Expires: December 31, 2003
|
| 3 |
Lance Cottrell
|
| 4 |
Anonymizer Inc.
|
| 5 |
Peter Palfrader
|
| 6 |
The Mixmaster Project
|
| 7 |
Len Sassaman
|
| 8 |
Nomen Abditum Services
|
| 9 |
July 2003
|
| 10 |
|
| 11 |
|
| 12 |
|
| 13 |
Mixmaster Protocol Version 2
|
| 14 |
<draft-moeller-v2-01.txt>
|
| 15 |
|
| 16 |
Status of This Memo
|
| 17 |
|
| 18 |
This document is an Internet-Draft and is subject to all provisions
|
| 19 |
of Section 10 of RFC2026.
|
| 20 |
|
| 21 |
Internet-Drafts are working documents of the Internet Engineering
|
| 22 |
Task Force (IETF), its areas, and its working groups. Note that
|
| 23 |
other groups may also distribute working documents as
|
| 24 |
Internet-Drafts.
|
| 25 |
|
| 26 |
Internet-Drafts are draft documents valid for a maximum of six
|
| 27 |
months and may be updated, replaced, or obsoleted by other
|
| 28 |
documents at any time. It is inappropriate to use Internet-
|
| 29 |
Drafts as reference material or to cite them other than as
|
| 30 |
"work in progress."
|
| 31 |
|
| 32 |
The list of current Internet-Drafts can be accessed at
|
| 33 |
http://www.ietf.org/1id-abstracts.html
|
| 34 |
|
| 35 |
The list of Internet-Draft Shadow Directories can be accessed at
|
| 36 |
http://www.ietf.org/shadow.html
|
| 37 |
|
| 38 |
This Internet-Draft will expire on December 31, 2003.
|
| 39 |
|
| 40 |
Copyright Notice
|
| 41 |
|
| 42 |
Copyright (C) The Internet Society (2003). All Rights Reserved.
|
| 43 |
|
| 44 |
|
| 45 |
|
| 46 |
Abstract
|
| 47 |
|
| 48 |
Most e-mail security protocols only protect the message body, leaving
|
| 49 |
useful information such as the the identities of the conversing
|
| 50 |
parties, sizes of messages and frequency of message exchange open to
|
| 51 |
adversaries. This document describes Mixmaster (version 2), a mail
|
| 52 |
transfer protocol designed to protect electronic mail against traffic
|
| 53 |
analysis.
|
| 54 |
|
| 55 |
Mixmaster is based on D. Chaum's mix-net protocol.
|
| 56 |
A mix (remailer) is a service that forwards messages, using public key
|
| 57 |
cryptography to hide the correlation between its inputs and outputs.
|
| 58 |
Sending messages through sequences of remailers achieves anonymity and
|
| 59 |
unobservability of communications against a powerful adversary.
|
| 60 |
|
| 61 |
|
| 62 |
|
| 63 |
Table of Contents
|
| 64 |
|
| 65 |
1. Introduction
|
| 66 |
2. The Mix-Net Protocol
|
| 67 |
2.1 Message Creation
|
| 68 |
2.2 Remailing
|
| 69 |
2.3 Message Reassembly
|
| 70 |
2.4 Remixing
|
| 71 |
3. Pool Behavior
|
| 72 |
3.1 Timed Dynamic Pool Mix Algorithm
|
| 73 |
3.2 Dummy Traffic
|
| 74 |
4. Message Format
|
| 75 |
4.1 Payload Format
|
| 76 |
4.2 Cryptographic Algorithms
|
| 77 |
4.3 Packet Format
|
| 78 |
4.3.1 Header Section Format
|
| 79 |
4.3.2 Body Format
|
| 80 |
4.4 Mail Transport Encoding
|
| 81 |
5. Key Format
|
| 82 |
5.1 Key Rotation
|
| 83 |
6. Administrative Commands
|
| 84 |
7. Delivery of Anonymous Messages
|
| 85 |
8. Security Considerations
|
| 86 |
9. Acknowledgments
|
| 87 |
10. References
|
| 88 |
11. Authors' Addresses
|
| 89 |
|
| 90 |
|
| 91 |
1. Introduction
|
| 92 |
|
| 93 |
This document describes a mail transfer protocol designed to protect
|
| 94 |
electronic mail against traffic analysis. Most e-mail security
|
| 95 |
protocols only protect the message body, leaving useful information
|
| 96 |
such as the the identities of the conversing parties, sizes of
|
| 97 |
messages and frequency of message exchange open to adversaries.
|
| 98 |
|
| 99 |
Message transmission can be protected against traffic analysis by the
|
| 100 |
mix-net protocol. A mix (remailer) is a service that forwards
|
| 101 |
messages, using public key cryptography to hide the correlation
|
| 102 |
between its inputs and outputs. If a message is sent through a
|
| 103 |
sequence of mixes, one trusted mix is sufficient to provide anonymity
|
| 104 |
and unobservability of communications against a powerful
|
| 105 |
adversary. Mixmaster is a mix-net implementation for electronic mail.
|
| 106 |
|
| 107 |
This memo describes version 2 of the Mixmaster message format, as used on
|
| 108 |
the Internet since 1995.
|
| 109 |
|
| 110 |
|
| 111 |
2. The Mix-Net Protocol
|
| 112 |
|
| 113 |
The mix-net protocol [Chaum 1981] allows one to send messages while hiding
|
| 114 |
the relation of sender and recipient from observers
|
| 115 |
(unobservability). It also provides the sender of a message with the
|
| 116 |
ability to remain anonymous to the recipient (sender anonymity). If
|
| 117 |
anonymity is not desired, authenticity and unobservability can be
|
| 118 |
achieved at the same time by transmitting digitally signed messages.
|
| 119 |
|
| 120 |
This section gives an overview over the protocol used in Mixmaster. The
|
| 121 |
mixing algorithm is specified in section 3, and the message format is
|
| 122 |
specified in section 4.
|
| 123 |
|
| 124 |
|
| 125 |
2.1 Message Creation
|
| 126 |
|
| 127 |
To send a message, the user agent splits it into parts of fixed size,
|
| 128 |
which form the bodies of Mixmaster packets. If sender anonymity is
|
| 129 |
desired, care should be taken not to include identifying information
|
| 130 |
in the message. The message may be compressed.
|
| 131 |
|
| 132 |
The sender chooses a sequence of up to 20 remailers for each
|
| 133 |
packet. The final remailer must be identical for all packets.
|
| 134 |
|
| 135 |
The packet header consists of 20 sections. For a sequence of n
|
| 136 |
remailers, header sections n+1, ... , 20 are filled with random
|
| 137 |
data. For each section i := n down to 1, the sender generates a
|
| 138 |
symmetric encryption key, which is used to encrypt the body and
|
| 139 |
all following header sections. This key, together with other control
|
| 140 |
information for the remailer, is included in the i-th header section,
|
| 141 |
which is then encrypted with the remailer's public key. The resulting
|
| 142 |
message is sent to the first remailer in an appropriate transport
|
| 143 |
encoding.
|
| 144 |
|
| 145 |
To increase reliability, redundant copies of the message may be sent
|
| 146 |
through different paths. The final remailer must be identical for all
|
| 147 |
paths, so that duplicates can be detected and the message is delivered
|
| 148 |
only once.
|
| 149 |
|
| 150 |
|
| 151 |
2.2 Remailing
|
| 152 |
|
| 153 |
When a remailer receives a message, it decrypts the first header
|
| 154 |
section with its private key. By keeping track of a packet ID, the
|
| 155 |
remailer verifies that the packet has not been processed before. The
|
| 156 |
integrity of the message is verified by checking the packet length and
|
| 157 |
verifying message digests included in the packet. Then the first
|
| 158 |
header section is removed, the others are shifted up by one, and the
|
| 159 |
last section is filled with random padding. All header sections and
|
| 160 |
the packet body are decrypted with the symmetric key found in the
|
| 161 |
header. This reveals a public key-encrypted header section for the
|
| 162 |
next remailer at the top, and removes the old top header
|
| 163 |
section. Transport encoding is applied to the resulting message.
|
| 164 |
|
| 165 |
The remailer collects several encrypted messages before sending the
|
| 166 |
resulting messages in random order. Thus the relation between the
|
| 167 |
incoming and outgoing messages is obscured to outside adversaries even
|
| 168 |
if the adversary can observe all messages sent. The message is
|
| 169 |
effectively anonymized by sending it through a chain of independently
|
| 170 |
operated remailers.
|
| 171 |
|
| 172 |
|
| 173 |
2.3 Message Reassembly
|
| 174 |
|
| 175 |
When a packet is sent to the final remailer, it contains an indication
|
| 176 |
that the chain ends at that remailer, and whether the packet contains
|
| 177 |
a complete message or part of a multi-part message. If the packet
|
| 178 |
contains the entire message, the packet body is decrypted and after
|
| 179 |
reordering messages the plain text is delivered to the recipient. For
|
| 180 |
partial messages, a message ID is used to identify the other parts as
|
| 181 |
they arrive. When all parts have arrived, the message is reassembled,
|
| 182 |
decompressed if necessary, and delivered. If the parts do not arrive
|
| 183 |
within a time limit, the message is discarded.
|
| 184 |
|
| 185 |
Only the last remailer in the chain can determine whether packets are
|
| 186 |
part of a certain message. To all the others, they are completely
|
| 187 |
independent.
|
| 188 |
|
| 189 |
2.4 Remixing
|
| 190 |
|
| 191 |
Some remailers may understand multiple remailer protocols. In the interest of
|
| 192 |
creating a unified anonymity set, remailers which speak multiple remailer
|
| 193 |
protocols should attempt to remix messages that use the older protocols whenever
|
| 194 |
possible.
|
| 195 |
|
| 196 |
When a remailer receives a message in the older protocol format, it should
|
| 197 |
determine if the message destination is another remailer which also speaks the
|
| 198 |
Mixmaster protocol. If the remailer knows the Mixmaster public key for the next
|
| 199 |
hop, it should process the message normally, but instead of sending the message
|
| 200 |
to its next hop, treat the processed message as opaque data which will comprise
|
| 201 |
the body of a Mixmaster message. The remailer should then create a Mixmaster
|
| 202 |
message with this body to be delivered to the next hop remailer.
|
| 203 |
|
| 204 |
If the remailer receives a Mixmaster message that, when decrypted, reveals a
|
| 205 |
message of another protocol which the remailer speaks, it should process the
|
| 206 |
message as though it had been delivered in the other protocol format initially.
|
| 207 |
|
| 208 |
|
| 209 |
3. Pool Behavior
|
| 210 |
|
| 211 |
3.1 Timed Dynamic Pool Mix Algorithm
|
| 212 |
|
| 213 |
In order to obfuscate the link between incoming and outgoing messages,
|
| 214 |
Mixmaster uses a pooling scheme. Messages that are to be forwarded
|
| 215 |
anonymously are stored in a pool. In regular intervals the remailer fires
|
| 216 |
and sends some random messages from the pool to either the next hop or
|
| 217 |
their final recipients.
|
| 218 |
|
| 219 |
The pooling scheme used in Mixmaster is a "Timed Dynamic Pool Mix", which has
|
| 220 |
the following three parameters:
|
| 221 |
t mixing interval
|
| 222 |
min minimum number of messages in the pool
|
| 223 |
rate percentage of messages to be send in one round
|
| 224 |
|
| 225 |
Every t seconds:
|
| 226 |
- Let n be the number of messages currently in the pool
|
| 227 |
- count is the smaller of (n - min) and (n * rate), or 0 if
|
| 228 |
(n - min) is negative.
|
| 229 |
- Select count random messages from the pool and send them.
|
| 230 |
|
| 231 |
3.2. Dummy Traffic
|
| 232 |
|
| 233 |
"Dummy messages" are multi-hop messages of type NULL with four randomly
|
| 234 |
selected nodes as their chain.
|
| 235 |
|
| 236 |
Older versions of Mixmaster (2.0.4 - 2.9.0) allowed for the creation of
|
| 237 |
dummy message cover traffic, but provided no automated means for introducing
|
| 238 |
this dummy traffic into the system. Beginning in version 3.0, Mixmaster employs
|
| 239 |
an internal dummy policy.
|
| 240 |
|
| 241 |
Every time a message is placed in the pool, the remailer chooses a random
|
| 242 |
number from a geometric distribution and creates that many dummy messages
|
| 243 |
which are also placed in the pool.
|
| 244 |
|
| 245 |
Similarly, prior to each execution of the mixing algorithm described in
|
| 246 |
section 3.1, the remailer selects a random number from a different geometric
|
| 247 |
distribution and adds that many dummy messages to the pool as well.
|
| 248 |
|
| 249 |
The distributions' parameters are chosen so that on average the remailer
|
| 250 |
creates one dummy for every 32 messages coming in and one every 9 mixing
|
| 251 |
rounds.
|
| 252 |
|
| 253 |
|
| 254 |
4. Message Format
|
| 255 |
|
| 256 |
4.1 Payload Format
|
| 257 |
|
| 258 |
The Mixmaster message payload can be an e-mail message, a Usenet
|
| 259 |
message or a dummy message.
|
| 260 |
|
| 261 |
The messages use the formats specified in [RFC 822] and [RFC 1036]
|
| 262 |
respectively, prepended with data specifying the payload type. An
|
| 263 |
additional, more restricted method of specifying message header lines
|
| 264 |
is defined for reasons of backward compatibility.
|
| 265 |
|
| 266 |
The payload format is as follows:
|
| 267 |
|
| 268 |
Number of destination fields [ 1 byte]
|
| 269 |
Destination fields [ 80 bytes each]
|
| 270 |
Number of header line fields [ 1 byte]
|
| 271 |
Header lines fields [ 80 bytes each]
|
| 272 |
User data section [ up to ~2.5 MB]
|
| 273 |
|
| 274 |
Each destination field consist of a string of up to 80 ASCII characters,
|
| 275 |
padded with null-bytes to a total size of 80 bytes. The following
|
| 276 |
strings are defined:
|
| 277 |
|
| 278 |
null: dummy message
|
| 279 |
post: Usenet message
|
| 280 |
post: [newsgroup] Usenet message
|
| 281 |
[address] e-mail message
|
| 282 |
|
| 283 |
If no destination field is given, the payload is an e-mail message.
|
| 284 |
|
| 285 |
If the destination field is "post: [newsgroup]", a "Newsgroups:
|
| 286 |
[newsgroup]" field is added to the header of the resulting message. If
|
| 287 |
the destination field is of the fourth type, a "To: [address]" field
|
| 288 |
is added to the header of the resulting message. [address] and
|
| 289 |
[newsgroup] are strings of ASCII characters. If the message
|
| 290 |
is a dummy message the node should discard it.
|
| 291 |
|
| 292 |
Message headers can be specified in header line fields. Each header
|
| 293 |
line field consists of a string of up to 80 ASCII characters, padded
|
| 294 |
with null-bytes to a total size of 80 bytes.
|
| 295 |
|
| 296 |
There are three types of user data sections:
|
| 297 |
|
| 298 |
A compressed user data section begins with the GZIP identification
|
| 299 |
header (31, 139). It contains another user data section. The data are
|
| 300 |
compressed using GZIP [RFC 1952]. The GZIP operating system field must
|
| 301 |
be set to Unix, and file names must not be given. Compression may be
|
| 302 |
used if the capabilities attribute of the final remailer contains the
|
| 303 |
flag "C".
|
| 304 |
|
| 305 |
An RFC 822 user data section begins with the identification "##<CR>"
|
| 306 |
(35, 35, 13). It contains an e-mail message or a Usenet message as
|
| 307 |
specified in [RFC 822] and [RFC 1036]. This type cannot be used if
|
| 308 |
the final remailer uses a Mixmaster software version prior to 2.0.4.
|
| 309 |
|
| 310 |
A user data section not beginning with one of the above identification
|
| 311 |
strings contains only the body of the message. When this type of user
|
| 312 |
data section is used, the message header fields must be included in
|
| 313 |
destination and header line fields.
|
| 314 |
|
| 315 |
The payload is limited to a maximal size of 2610180 bytes. Individual
|
| 316 |
remailers may use a smaller limit.
|
| 317 |
|
| 318 |
Remailer operators can choose to remove header fields supplied by the
|
| 319 |
sender and insert additional header fields, according to local policy
|
| 320 |
(see section 5).
|
| 321 |
|
| 322 |
|
| 323 |
4.2 Cryptographic Algorithms
|
| 324 |
|
| 325 |
The asymmetric encryption operation in Mixmaster version 2 uses RSA
|
| 326 |
with 1024 bit RSA keys and the PKCS #1 v1.5 (RSAES-PKCS1-v1_5) padding
|
| 327 |
format [RFC 2437]. The symmetric encryption uses EDE 3DES with cipher
|
| 328 |
block chaining (24 byte key, 8 byte initialization vector) [Schneier
|
| 329 |
1996]. MD5 [RFC 1321] is used as the message digest algorithm.
|
| 330 |
|
| 331 |
|
| 332 |
4.3 Packet Format
|
| 333 |
|
| 334 |
A Mixmaster packet consists of a header containing information for the
|
| 335 |
remailers, and a body containing payload data. To ensure that
|
| 336 |
packets are indistinguishable, the size of these encrypted data fields
|
| 337 |
is fixed.
|
| 338 |
|
| 339 |
The packet header consists of 20 header sections (specified in
|
| 340 |
section 3.3.1) of 512 bytes each, resulting in a total header size
|
| 341 |
of 10240 bytes. The header sections -- except for the first one -- and
|
| 342 |
the packet body are encrypted with symmetric session keys specified in
|
| 343 |
the first header section.
|
| 344 |
|
| 345 |
|
| 346 |
4.3.1 Header Section Format
|
| 347 |
|
| 348 |
Public key ID [ 16 bytes]
|
| 349 |
Length of RSA-encrypted data [ 1 byte ]
|
| 350 |
RSA-encrypted session key [ 128 bytes]
|
| 351 |
Initialization vector [ 8 bytes]
|
| 352 |
Encrypted header part [ 328 bytes]
|
| 353 |
Padding [ 31 bytes]
|
| 354 |
|
| 355 |
Total size: 512 bytes
|
| 356 |
|
| 357 |
To generate the RSA-encrypted session key, a random 24 byte Triple-DES
|
| 358 |
key is encrypted with RSAES-PKCS1-v1_5, resulting in 128 bytes (1024
|
| 359 |
bits) of encrypted data. This Triple-DES key and the initialization
|
| 360 |
vector provided in clear are used to decrypt the encrypted header part.
|
| 361 |
They are not used at other stages of message processing.
|
| 362 |
|
| 363 |
The 328 bytes of data encrypted to form the encrypted header part are
|
| 364 |
as follows:
|
| 365 |
|
| 366 |
Packet ID [ 16 bytes]
|
| 367 |
Triple-DES key [ 24 bytes]
|
| 368 |
Packet type identifier [ 1 byte ]
|
| 369 |
Packet information [depends on packet type]
|
| 370 |
Timestamp [ 7 bytes]
|
| 371 |
Message digest [ 16 bytes]
|
| 372 |
Random padding [fill to 328 bytes]
|
| 373 |
|
| 374 |
The possible packet type identifiers are:
|
| 375 |
|
| 376 |
Intermediate hop 0
|
| 377 |
Final hop 1
|
| 378 |
Final hop, partial message 2
|
| 379 |
|
| 380 |
The packet information depends on the packet type identifier, as follows:
|
| 381 |
|
| 382 |
Packet type 0 (intermediate hop):
|
| 383 |
19 Initialization vectors [152 bytes]
|
| 384 |
Remailer address [ 80 bytes]
|
| 385 |
|
| 386 |
Packet type 1 (final hop):
|
| 387 |
Message ID [ 16 bytes]
|
| 388 |
Initialization vector [ 8 bytes]
|
| 389 |
|
| 390 |
Packet type 2 (final hop, partial message):
|
| 391 |
Chunk number [ 1 byte ]
|
| 392 |
Number of chunks [ 1 byte ]
|
| 393 |
Message ID [ 16 bytes]
|
| 394 |
Initialization vector [ 8 bytes]
|
| 395 |
|
| 396 |
Packet ID: randomly generated packet identifier.
|
| 397 |
|
| 398 |
Triple-DES key: used to encrypt the following header sections and the
|
| 399 |
packet body.
|
| 400 |
|
| 401 |
Initialization vectors: For packet type 1 and 2, the IV is used to
|
| 402 |
symmetrically encrypt the packet body. For packet type 0, there is one IV
|
| 403 |
for each of the 19 following header sections. The IV for the last header
|
| 404 |
section is also used for the packet body.
|
| 405 |
|
| 406 |
Remailer address: e-mail address of next hop.
|
| 407 |
|
| 408 |
Message ID: randomly generated identifier unique to (all chunks of)
|
| 409 |
this message.
|
| 410 |
|
| 411 |
Chunk number: Sequence number used in multi-part messages, starting
|
| 412 |
with 1.
|
| 413 |
|
| 414 |
Number of chunks: Total number of chunks.
|
| 415 |
|
| 416 |
Timestamp: A timestamp is introduced with the byte sequence (48, 48, 48,
|
| 417 |
48, 0). The following two bytes specify the number of days since Jan 1,
|
| 418 |
1970, given in little-endian byte order. A random number of up to 3 may be
|
| 419 |
subtracted from the number of days in order to obscure the origin of the
|
| 420 |
message.
|
| 421 |
|
| 422 |
Message digest: MD5 digest computed over the preceding elements of the
|
| 423 |
encrypted header part.
|
| 424 |
|
| 425 |
In the case of packet type 0, header sections 2 .. 20 and the packet body
|
| 426 |
each are decrypted separately using the respective initialization vectors.
|
| 427 |
In the case of packet types 1 and 2, header sections 2 .. 20 are ignored,
|
| 428 |
and the packet body is decrypted using the given initialization vector.
|
| 429 |
|
| 430 |
|
| 431 |
4.3.2 Body Format
|
| 432 |
|
| 433 |
The message payload (section 3.1) is split into chunks of 10236
|
| 434 |
bytes. To each chunk, its length is prepended as a 4 byte
|
| 435 |
little-endian number to form the body of a Mixmaster packet.
|
| 436 |
|
| 437 |
A message may consist of up to 255 packets.
|
| 438 |
|
| 439 |
|
| 440 |
4.4 Mail Transport Encoding
|
| 441 |
|
| 442 |
Mixmaster packets are sent as text messages [RFC 822]. The RFC 822
|
| 443 |
message body has the following format:
|
| 444 |
|
| 445 |
::
|
| 446 |
Remailer-Type: Mixmaster [version number]
|
| 447 |
|
| 448 |
-----BEGIN REMAILER MESSAGE-----
|
| 449 |
[packet length ]
|
| 450 |
[message digest]
|
| 451 |
[encoded packet]
|
| 452 |
-----END REMAILER MESSAGE-----
|
| 453 |
|
| 454 |
The length field always contains the decimal number "20480", since the
|
| 455 |
size of Mixmaster packets is constant. An MD5 message digest [RFC
|
| 456 |
1321] of the (un-encoded) packet is encoded in base64.
|
| 457 |
|
| 458 |
The packet itself is encoded in base 64 encoding [RFC 1421], broken
|
| 459 |
into lines of 40 characters (except that the last line is shorter).
|
| 460 |
|
| 461 |
|
| 462 |
5. Key Format
|
| 463 |
|
| 464 |
Remailer public key files consist of a list of attributes and a
|
| 465 |
public RSA key:
|
| 466 |
|
| 467 |
[attributes list]
|
| 468 |
|
| 469 |
-----Begin Mix Key-----
|
| 470 |
[key ID]
|
| 471 |
[length]
|
| 472 |
[encoded key]
|
| 473 |
-----End Mix Key-----
|
| 474 |
|
| 475 |
The attributes are listed in one line separated by spaces. Individual
|
| 476 |
attributes must not contain whitespace:
|
| 477 |
|
| 478 |
identifier: a human readable string identifying the remailer
|
| 479 |
address: the remailer's Internet mail address
|
| 480 |
key ID: public key ID
|
| 481 |
version: the Mixmaster software version number
|
| 482 |
capabilities: flags indicating additional remailer capabilities
|
| 483 |
validity date: date from which the key is valid
|
| 484 |
expiration date: date of the key's expiration
|
| 485 |
|
| 486 |
The identifier consists of lowercase alphanumeric characters, beginning
|
| 487 |
with an alphabetic character. The identifier should consist of no more
|
| 488 |
than eight characters in length.
|
| 489 |
|
| 490 |
The encoded key packet consists of two bytes specifying the key length
|
| 491 |
(1024 bits) in little-endian byte order, and of the RSA modulus and the
|
| 492 |
public exponent in big-endian form using 128 bytes each, with preceding
|
| 493 |
null bytes for the exponent if necessary. The packet is encoded in base 64
|
| 494 |
[RFC 1421], and broken into lines of 40 characters each (except that the
|
| 495 |
last line is shorter). Its length (258 bytes) is given as a decimal
|
| 496 |
number.
|
| 497 |
|
| 498 |
The key ID is the MD5 message digest of the representation of the RSA
|
| 499 |
public key (not including the length bytes). It is encoded as a
|
| 500 |
hexadecimal string.
|
| 501 |
|
| 502 |
The version field consists of the protocol version number followed by a
|
| 503 |
colon and the software version information, limited to the ASCII
|
| 504 |
alphanumeric characters, plus dot (.) and dash (-). All implementations of
|
| 505 |
this protocol should prepend the software version with "2:" to indicate
|
| 506 |
Mixmaster protocol version 2. Existing implementations lacking a protocol
|
| 507 |
version number imply protocol version 2.
|
| 508 |
|
| 509 |
The capabilities field is optional. It is a list of flags represented
|
| 510 |
by a string of ASCII characters. Clients should ignore unknown
|
| 511 |
flags. The following flags are used in version 2.0.4 through 3.0:
|
| 512 |
|
| 513 |
C accepts compressed messages.
|
| 514 |
M will forward messages to another mix when used as final hop.
|
| 515 |
Nm supports posting to Usenet through a mail-to-news gateway.
|
| 516 |
Np supports direct posting to Usenet.
|
| 517 |
|
| 518 |
The date fields introduced in version 3.0 are optional. They are ASCII
|
| 519 |
date stamps in the format YYYY-MM-DD. The first date indicates the date
|
| 520 |
from which the key is first valid; the second date indicates its
|
| 521 |
expiration. If only one date is present, it is treated as the key creation
|
| 522 |
date. (The date stamp implies 00:00 UTC).
|
| 523 |
|
| 524 |
Digital signatures [RFC 2440] should be used to ensure the
|
| 525 |
authenticity of the key files.
|
| 526 |
|
| 527 |
|
| 528 |
5.1 Key Rotation
|
| 529 |
|
| 530 |
Beginning with version 3.0, Mixmaster offers automatic key rotation. Care
|
| 531 |
must be taken to minimize the possibility for partitioning attacks during
|
| 532 |
the key rotation window.
|
| 533 |
|
| 534 |
Keys are generated with a validity date and an expiration date. Mixmaster
|
| 535 |
clients only display keys which are currently valid and not expired.
|
| 536 |
|
| 537 |
Keys are valid for a 13 month period. Mixmaster remailers generate new
|
| 538 |
keys when the existing key's expiration date is one month or less in the
|
| 539 |
future. Remailers report the most recently generated key as the remailer
|
| 540 |
key when queried, effectively giving each key a 12 month service period.
|
| 541 |
|
| 542 |
Remailers continue to decrypt and process mail encrypted to expired keys
|
| 543 |
for one week past the expiration date on the key. One week after
|
| 544 |
expiration, an expired remailer key should be securely destroyed.
|
| 545 |
|
| 546 |
|
| 547 |
6. Administrative Commands
|
| 548 |
|
| 549 |
The remailer software understands a number of specific administrative
|
| 550 |
commands. These commands are sent via the Subject: line of an email to the
|
| 551 |
email address of the remailer:
|
| 552 |
|
| 553 |
remailer-help: returns information on using the remailer
|
| 554 |
remailer-key: returns the remailer's public key
|
| 555 |
remailer-stats: returns information on the number of messages processed
|
| 556 |
remailer-conf: returns local configuration information
|
| 557 |
remailer-adminkey: returns the public key of the remailer operator
|
| 558 |
|
| 559 |
Upon receiving an administrative request, the remailer returns its reply
|
| 560 |
to the email address specified in the Reply-To: or From: header of the
|
| 561 |
request.
|
| 562 |
|
| 563 |
The remailer-help request should return basic information on using the
|
| 564 |
remailer. Remailers may also accept remailer-help requests with an ISO 639
|
| 565 |
two-letter language code appended following a hyphen. For example,
|
| 566 |
remailer-help-ar will return a help file in Arabic, if available.
|
| 567 |
Supported languages should be listed at the beginning of the remailer-help
|
| 568 |
response.
|
| 569 |
|
| 570 |
The remailer-key request returns the remailer key as described above. It
|
| 571 |
may also return keys and capability information for other remailer
|
| 572 |
protocols supported by the remailer.
|
| 573 |
|
| 574 |
The remailer-stats request returns statistics on the number of messages
|
| 575 |
processed per day by the remailer.
|
| 576 |
|
| 577 |
The remailer-conf request returns local configuration information, such as
|
| 578 |
the version of the remailer software, the supported remailer protocols,
|
| 579 |
filtered headers, blocked newsgroups and domains, and the attribute
|
| 580 |
strings for other remailers the remailer knows about.
|
| 581 |
|
| 582 |
The remailer-adminkey request returns a public OpenPGP key for use in
|
| 583 |
communication with the remailer operator.
|
| 584 |
|
| 585 |
|
| 586 |
7. Delivery of Anonymous Messages
|
| 587 |
|
| 588 |
When anonymous messages are forwarded to third parties, remailer
|
| 589 |
operators should be aware that senders might try to supply header
|
| 590 |
fields that indicate a false identity or to send Usenet control
|
| 591 |
messages [RFC 1036] unauthorized, which is a problem because many news
|
| 592 |
servers accept control messages automatically without any
|
| 593 |
authentication.
|
| 594 |
|
| 595 |
For these reasons, remailer software should allow the operator
|
| 596 |
to disable certain types of message headers, and to insert headers
|
| 597 |
automatically.
|
| 598 |
|
| 599 |
Remailers usually add a "From:" field containing an address controlled
|
| 600 |
by the remailer operator to anonymous messages. Using the word
|
| 601 |
"Anonymous" in the name field allows recipients to apply scoring
|
| 602 |
mechanisms and filters to anonymous messages. Appropriate additional
|
| 603 |
information about the origin of the message can be inserted in the
|
| 604 |
"Comments:" header field of the anonymous messages.
|
| 605 |
|
| 606 |
If the recipient does not wish to receive anonymous messages,
|
| 607 |
unobservability of communications and authenticity can be achieved at
|
| 608 |
the same time by the remailer verifying that the message is
|
| 609 |
cryptographically signed [RFC 2440] by a known sender.
|
| 610 |
|
| 611 |
Anonymous remailers are sometimes used to send harassing e-mail. To
|
| 612 |
prevent this abuse, remailer software should allow operators to block
|
| 613 |
destination addresses on request. Real-life abuse and attacks on
|
| 614 |
anonymous remailers are discussed in [Mazieres 1998].
|
| 615 |
|
| 616 |
|
| 617 |
8. Security Considerations
|
| 618 |
|
| 619 |
The security of the mix-net relies on the assumption that the
|
| 620 |
underlying cryptographic primitives are secure. In addition, specific
|
| 621 |
attacks on the mix-net need to be considered ([Moeller 1998] contains a
|
| 622 |
more detailed analysis of these attacks).
|
| 623 |
|
| 624 |
Passive adversaries can observe some or all of the messages sent to
|
| 625 |
mixes. The users' anonymity comes from the fact that a large number
|
| 626 |
of messages are collected and sent in random order. For that reason
|
| 627 |
remailers should collect as many messages as possible while keeping
|
| 628 |
the delay acceptable.
|
| 629 |
|
| 630 |
Statistical traffic analysis is possible even if single messages are
|
| 631 |
anonymized in a perfectly secure way: An eavesdropper may correlate
|
| 632 |
the times of Mixmaster packets being sent and anonymized messages
|
| 633 |
being received. This is a powerful attack if several anonymous
|
| 634 |
messages can be linked together (by their contents or because they are
|
| 635 |
sent under a pseudonym). To protect themselves, senders must mail
|
| 636 |
Mixmaster packets stochastically independent of the actual messages
|
| 637 |
they want to send. This can be done by sending packets in regular
|
| 638 |
intervals, using a dummy message whenever appropriate. To avoid
|
| 639 |
leaking information, the intervals should not be smaller than the
|
| 640 |
randomness in the delay caused by trusted remailers.
|
| 641 |
|
| 642 |
There is no anonymity if all remailers in a given chain collude with
|
| 643 |
the adversary, or if they are compromised during the lifetime of their
|
| 644 |
keys. Using a longer chain increases the assurance that the user's
|
| 645 |
privacy will be preserved, but in the same time causes lower
|
| 646 |
reliability and higher latency. Sending redundant copies of a message
|
| 647 |
increases reliability but may also facilitate attacks. An optimum must
|
| 648 |
be found according to the individual security needs and trust in the
|
| 649 |
remailers.
|
| 650 |
|
| 651 |
Active adversaries can also create, suppress or modify messages. Remailers
|
| 652 |
must check the packet IDs to prevent replay attacks. To minimize the
|
| 653 |
number of packet IDs that the remailer must retain, packets which bear a
|
| 654 |
timestamp more than a reasonable number of days in the past may be
|
| 655 |
discarded. Implementors should consider that packets maybe up to three
|
| 656 |
days younger than indicated by the timestamp, and select an expiration
|
| 657 |
value which allowsd sufficient time for legitimate messages to pass
|
| 658 |
through the network. The number of packet IDs that the remailer must
|
| 659 |
retain can be further minimized by discarding packet IDs for packets
|
| 660 |
encrypted to a key which has expired more than a week in the past.
|
| 661 |
|
| 662 |
Early implementations of Mixmaster did not generate a timestamp packet.
|
| 663 |
Implementors should be aware of the partitioning attack implications if
|
| 664 |
they chose to permit processing of packets without timestamps.
|
| 665 |
|
| 666 |
Message integrity must be verified to prevent the adversary
|
| 667 |
from performing chosen ciphertext attacks or replay attacks with
|
| 668 |
modified packet IDs, and from encoding information in an intercepted
|
| 669 |
message in a way not affected by decryption (e.g. by modifying the
|
| 670 |
message length or inducing errors). This version of the protocol does
|
| 671 |
not provide integrity for the packet body. Because the padding for
|
| 672 |
header section is random, in this version of the protocol it is
|
| 673 |
impossible for a remailer to check the integrity of the encrypted
|
| 674 |
header sections that will be decrypted by the following remailers.
|
| 675 |
Chosen ciphertext attacks and replay attacks are detected by verifying
|
| 676 |
the message digest included in the header section.
|
| 677 |
|
| 678 |
The adversary can trace a message if he knows the decryption of all
|
| 679 |
other messages that pass through the remailer at the same time. To
|
| 680 |
make it less practical for an attacker to flood a mix with known
|
| 681 |
messages, remailers can store received messages in a reordering pool
|
| 682 |
that grows in size while more than average messages are received, and
|
| 683 |
periodically choose at random a fixed fraction of the messages in the
|
| 684 |
pool for processing. There is no complete protection against flooding
|
| 685 |
attacks in an open system, but if the number of messages required is
|
| 686 |
high, an attack is less likely to go unnoticed.
|
| 687 |
|
| 688 |
If the adversary suppresses all Mixmaster messages from one particular
|
| 689 |
sender and observes that anonymous messages of a certain kind are
|
| 690 |
discontinued at the same time, that sender's anonymity is compromised
|
| 691 |
with high probability. There is no practical cryptographic protection
|
| 692 |
against this attack in large-scale networks. The effect of a more
|
| 693 |
powerful attack that combines suppressing messages and re-injecting
|
| 694 |
them at a later time is reduced by using timestamps.
|
| 695 |
|
| 696 |
The lack of accountability that comes with anonymity may have
|
| 697 |
implications for the security of a network. For example, many news
|
| 698 |
servers accept control messages automatically without any
|
| 699 |
cryptographic authentication. Possible countermeasures are discussed
|
| 700 |
in section 7.
|
| 701 |
|
| 702 |
|
| 703 |
9. Acknowledgments
|
| 704 |
|
| 705 |
Several people contributed ideas and source code to the Mixmaster v2
|
| 706 |
software. "Antonomasia" <ant@notatla.demon.co.uk>, Adam Back
|
| 707 |
<adam@cypherspace.org> and Bodo Moeller <bmoeller@acm.org> suggested
|
| 708 |
improvements to this document.
|
| 709 |
|
| 710 |
|
| 711 |
10. References
|
| 712 |
|
| 713 |
[Chaum 1981] Chaum, D., "Untraceable Electronic Mail, Return Addresses, and
|
| 714 |
Digital Pseudonyms", Communications of the ACM 24 (1981) 2.
|
| 715 |
|
| 716 |
[Mazieres 1998] Mazieres, D., and Kaashoek, F., "The Design, Implementation and
|
| 717 |
Operation of an Email Pseudonym Server",
|
| 718 |
5th ACM Conference on Computer and Communications Security, 1998.
|
| 719 |
<URL: ftp://cag.lcs.mit.edu/pub/dm/papers/mazieres:pnym.ps.gz>.
|
| 720 |
|
| 721 |
[Moeller 1998] Moeller, U., "Anonymisierung von Internet-Diensten",
|
| 722 |
Studienarbeit, University of Hamburg, January 1998.
|
| 723 |
<URL: http://agn-www.informatik.uni-hamburg.de/people/3umoelle/st.ps>.
|
| 724 |
|
| 725 |
[RFC 822] Crocker, D., "Standard for the Format of ARPA Internet Text
|
| 726 |
Messages", STD 11, RFC 822, August 1982.
|
| 727 |
|
| 728 |
[RFC 1036] Horton, M., and Adams, R., "Standard for Interchange of
|
| 729 |
USENET Messages", RFC 1036, December 1987.
|
| 730 |
|
| 731 |
[RFC 1321] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321,
|
| 732 |
April 1992.
|
| 733 |
|
| 734 |
[RFC 1421] Linn, J., "Privacy Enhancement for Internet Electronic
|
| 735 |
Mail: Part I -- Message Encryption and Authentication Procedures", RFC
|
| 736 |
1421, February 1993.
|
| 737 |
|
| 738 |
[RFC 1952] Deutsch, P., "GZIP file format specification version 4.3",
|
| 739 |
RFC 1952, May 1996.
|
| 740 |
|
| 741 |
[RFC 2311] Dusse, S., Hoffman, P, Ramsdell, B, Lundblade, L., and
|
| 742 |
Repka, L., "S/MIME Version 2 Message Specification", RFC 2311, March
|
| 743 |
1998.
|
| 744 |
|
| 745 |
[RFC 2437] Kaliski, B., and Staddon, J., "PKCS #1: RSA Cryptography
|
| 746 |
Specifications, Version 2.0", RFC 2437, October 1998.
|
| 747 |
|
| 748 |
[RFC 2440] Callas, J., Donnerhacke, L., Finney, H., and Thayer, R.:
|
| 749 |
"OpenPGP Message Format", RFC 2440, November 1998.
|
| 750 |
|
| 751 |
[Schneier 1996] Schneier, B., "Applied Cryptography", 2nd Edition, Wiley,
|
| 752 |
1996.
|
| 753 |
|
| 754 |
|
| 755 |
11. Authors' Addresses
|
| 756 |
|
| 757 |
|
| 758 |
Ulf Moeller
|
| 759 |
|
| 760 |
EMail: mail@ulfm.de
|
| 761 |
|
| 762 |
|
| 763 |
Lance Cottrell
|
| 764 |
Anonymizer, Inc.
|
| 765 |
5694 Mission Center Road #426
|
| 766 |
San Diego, CA 92108-4380
|
| 767 |
|
| 768 |
EMail: loki@infonex.com
|
| 769 |
|
| 770 |
|
| 771 |
Peter Palfrader
|
| 772 |
|
| 773 |
EMail: peter@palfrader.org
|
| 774 |
|
| 775 |
|
| 776 |
Len Sassaman
|
| 777 |
Nomen Abditum Services
|
| 778 |
P.O. Box 99282
|
| 779 |
Emeryville, CA 94662-9282
|
| 780 |
|
| 781 |
EMail: rabbi@abditum.com
|