/[pkg-mixmaster]/trunk/Docs/draft-sassaman-mixmaster-XX.xml
ViewVC logotype

Diff of /trunk/Docs/draft-sassaman-mixmaster-XX.xml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 748 by weasel, Wed Apr 7 20:22:35 2004 UTC revision 749 by weasel, Wed Apr 7 21:01:03 2004 UTC
# Line 143  Line 143 
143          content) in the packets. The content may be compressed          content) in the packets. The content may be compressed
144          before splitting.</t>          before splitting.</t>
145    
146        <t>The sender next chooses a sequence of up to 20 remailers        <t>The sender next chooses a chain of up to 20 remailers
147          for each packet. Each path is independant, and can be of          for each packet. Each path is independant, and can be of
148          a different length, but all paths must end at the same          a different length, but all paths must end at the same
149          remailer.  This final remailer is responsible detecting and          remailer.  This final remailer is responsible detecting and
# Line 151  Line 151 
151          and doing the final delivery.</t>          and doing the final delivery.</t>
152    
153        <t>Each packet is next prepared as follows (the full details        <t>Each packet is next prepared as follows (the full details
154          are in <xref target="packet-header"/>).  For a sequence          are in <xref target="header-section"/>).  For a chain
155          of "n" remailers, headers "n + 1" through 20 are filled          of "n" remailers, headers "n + 1" through 20 are filled
156          with random data.  For headers "n" down to one, the sender          with random data.  For headers "n" down to one, the sender
157          generates a symmetric encryption key. This key is used to          generates a symmetric encryption key. This key is used to
158          encrypt the packet body and all the following headers. The          encrypt the packet body and all the following headers. The
159          key, and other control information, is then encrypted with          key, and other control information, is then encrypted with
160          the public key of the "n"'th remailer in the sequence.</t>          the public key of the "n"'th remailer in the chain.</t>
161    
162        <t>The process is repeated, working backward through the sequence        <t>The process is repeated, working backward through the chain
163          until the first packet has header information encrypted for the          until the first packet has header information encrypted for the
164          first remailer, and the packet body has been encrypted "n" times.          first remailer, and the packet body has been encrypted "n" times.
165          The packet is then sent to the first remailer on its          The packet is then sent to the first remailer on its
166          sequence.</t>          chain.</t>
167    
168      </section>      </section>
169    
# Line 171  Line 171 
171    
172        <t>When a remailer receives a message, it uses its private key to        <t>When a remailer receives a message, it uses its private key to
173          decrypt the first header section. The Packet ID (see          decrypt the first header section. The Packet ID (see
174          <xref target="packet-header"/> can be used to detect          <xref target="header-section"/> can be used to detect
175          duplicates. The integrity of the message is verified by          duplicates. The integrity of the message is verified by
176          checking the packet length and verifying the message digest          checking the packet length and verifying the message digest
177          in the packet header.</t>          in the packet header.</t>
# Line 195  Line 195 
195      <section anchor="message-reassembly" title="Message Reassembly">      <section anchor="message-reassembly" title="Message Reassembly">
196    
197        <t>When a packet is sent to the final remailer, it contains an        <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          indication that the chain ends at that remailer, and whether the
199          packet contains the complete message or if it is part of a multi-part          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          message. If the packet contains the entire message, the packet body
201          is decrypted and after reordering messages, the plain text is          is decrypted and after reordering messages, the plain text is
# Line 250  Line 250 
250      <section anchor="dummy-traffic" title="Dummy Traffic">      <section anchor="dummy-traffic" title="Dummy Traffic">
251    
252        <t>Dummy messages are multi-hop messages with four randomly        <t>Dummy messages are multi-hop messages with four randomly
253          selected remailers as the sequence. The sequences must selected          selected remailers as the chain. The chain must selected
254          such that no remailer will appear twice unless two other remailers          such that no remailer will appear twice unless two other remailers
255          separate them.</t>          separate them.</t>
256    
# Line 325  User data section              [ up to ~ Line 325  User data section              [ up to ~
325              be given. Compression may be used if the capabilities attribute of              be given. Compression may be used if the capabilities attribute of
326              the final remailer contains the flag "C".</t>              the final remailer contains the flag "C".</t>
327            <t>An RFC 2822 user data section begins with the three bytes            <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              "##[CR]" (35, 35, 13). It contains an e-mail message or a
329              Usenet message.</t>              Usenet message.</t>
330            <t>A user data section not beginning with one of the above            <t>A user data section not beginning with one of the above
331              identification strings contains only the body of the message. When              identification strings contains only the body of the message. When
# Line 348  User data section              [ up to ~ Line 348  User data section              [ up to ~
348        <t>The asymmetric encryption mechanism is RSA with 1024 bit RSA keys        <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          and the PKCS #1 v1.5 (RSAES-PKCS1-v1_5) padding format <xref
350            target="RFC2437"/>. The symmetric encryption mechanism is EDE            target="RFC2437"/>. The symmetric encryption mechanism is EDE
351          3DES with cipher block chaining (24-byte key, eight-byte initialization          3DES with cipher block chaining (24-byte key, 8-byte initialization
352          vector) <xref target="Schneier96"/>. MD5 <xref target="RFC1321"/>          vector) <xref target="Schneier96"/>. MD5 <xref target="RFC1321"/>
353          is used as the message digest algorithm.</t>          is used as the message digest algorithm.</t>
354      </section>      </section>
# Line 361  User data section              [ up to ~ Line 361  User data section              [ up to ~
361          size.</t>          size.</t>
362    
363        <t>The packet header consists of 20 header sections (specified in        <t>The packet header consists of 20 header sections (specified in
364          <xref target="packet-header"/>) of 512 bytes each, resulting in a          <xref target="header-section"/>) of 512 bytes each, resulting in a
365          total header size of 10240 bytes. The header sections (except for          total header size of 10240 bytes. The header sections (except for
366          the first one) and the packet body are encrypted with symmetric          the first one) and the packet body are encrypted with symmetric
367          session keys specified in the first header section.<figure><artwork>          session keys specified in the first header section.<figure><artwork>
# Line 384  User data section              [ up to ~ Line 384  User data section              [ up to ~
384  +-------------------+</artwork></figure>  +-------------------+</artwork></figure>
385        </t>        </t>
386    
387        <section anchor="packet-header" title="Packet Header Format">        <section anchor="header-section" title="Header Section Format">
388    
389          <t>Packet layout<figure><artwork>          <t>Packet layout<figure><artwork>
390  [ Public key ID                 16 bytes ]  [ Public key ID                 16 bytes ]
# Line 393  User data section              [ up to ~ Line 393  User data section              [ up to ~
393  [ Initialization vector          8 bytes ]  [ Initialization vector          8 bytes ]
394  [ Encrypted header part        328 bytes ]  [ Encrypted header part        328 bytes ]
395  [ Random padding                31 bytes ]</artwork></figure>  [ Random padding                31 bytes ]</artwork></figure>
396             Total size: 512 bytes
397          </t>          </t>
398    
399          <t>To generate the RSA-encrypted session key, a 24-byte          <t>To generate the RSA-encrypted session key, a 24-byte
# Line 410  User data section              [ up to ~ Line 411  User data section              [ up to ~
411  [ Packet information     depends on packet type ]  [ Packet information     depends on packet type ]
412  [ Timestamp                             7 bytes ]  [ Timestamp                             7 bytes ]
413  [ Message digest                       16 bytes ]  [ Message digest                       16 bytes ]
414  [ padding                             as needed ]</artwork></figure>  [ Random padding                      as needed ]</artwork></figure>
415             Total size: 328 bytes
416          </t>          </t>
417    
418          <t>The fields are defined as follows:          <t>The fields are defined as follows:
419            <list style="hanging">            <list style="hanging">
420              <t hangText="Packet ID">randomly generated packet identifier.</t>              <t hangText="Packet ID:">randomly generated packet identifier.</t>
421              <t hangText="Triple-DES key">used to encrypt the following              <t hangText="Triple-DES key:">used to encrypt the following
422                header sections and the packet body.</t>                header sections and the packet body.</t>
423              <t hangText="Packet type identifier">The type identifiers              <t hangText="Packet type identifier:">The type identifiers
424                are:                are:
425                <texttable>                <texttable>
426                  <ttcol align='left' width='20%'>Value</ttcol>                  <ttcol align='left' width='20%'>Value</ttcol>
# Line 428  User data section              [ up to ~ Line 430  User data section              [ up to ~
430                  <c>2</c><c>Final hop, partial message</c>                  <c>2</c><c>Final hop, partial message</c>
431                </texttable>                </texttable>
432              </t>              </t>
433              <t hangText="Timestamp">A timestamp is introduced with the byte              <t hangText="Timestamp:">A timestamp is introduced with the byte
434                sequence (48, 48, 48, 48, 0). The following two bytes specify                sequence (48, 48, 48, 48, 0). The following two bytes specify
435                the number of days since January 1, 1970, in little-endian                the number of days since January 1, 1970, in little-endian
436                byte order. A random number between one and three, inclusive,                byte order. A random number between one and three, inclusive,
437                may be subtracted from the number of days in order to obscure                may be subtracted from the number of days in order to obscure
438                the origin of the message.</t>                the origin of the message.</t>
439              <t hangText="Message digest">MD5 digest computed over the              <t hangText="Message digest:">MD5 digest computed over the
440                preceding elements of the encrypted header part.</t>                preceding elements of the encrypted header part.</t>
441            </list>            </list>
442          </t>          </t>
# Line 456  Packet type 2 (final hop, partial messag Line 458  Packet type 2 (final hop, partial messag
458    [ Initialization vector        8 bytes ]</artwork></figure>    [ Initialization vector        8 bytes ]</artwork></figure>
459    
460            <list style="hanging">            <list style="hanging">
461              <t hangText="Initialization vectors"> For packet type one and two,              <t hangText="Initialization vectors:"> For packet type one and two
               the IV is used to symmetrically encrypt the packet body. For  
462                packet type 0, there is one IV for each of the 19 following                packet type 0, there is one IV for each of the 19 following
463                header sections. The IV for the last header section is also                header sections. The IV for the last header section is also
464                used for the packet body.</t>                used for the packet body.</t>
465              <t hangText="Remailer address">E-mail address of next hop.</t>              <t hangText="Remailer address:">E-mail address of next hop.</t>
466              <t hangText="Message ID">Identifier unique to              <t hangText="Message ID:">Identifier unique to
467                (all chunks of) this message.</t>                (all chunks of) this message.</t>
468              <t hangText="Chunk number">Sequence number used in multi-part              <t hangText="Chunk number:">Sequence number used in multi-part
469                messages, starting with one.</t>                messages, starting with one.</t>
470              <t hangText="Number of chunks">Total number of chunks.</t>              <t hangText="Number of chunks:">Total number of chunks.</t>
471            </list>            </list>
472          </t>          </t>
473    
# Line 534  Remailer-Type: Mixmaster [version number Line 535  Remailer-Type: Mixmaster [version number
535      </t>      </t>
536    
537      <t>The attributes are listed in one line separated by spaces. Individual      <t>The attributes are listed in one line separated by spaces. Individual
538        attributes must not contain whitespace, and are defined as follows:        attributes must not contain whitespace, and are defined as follows:</t>
539        <t>
540        <list style="hanging">        <list style="hanging">
541          <t hangText="identifier">A human readable string identifying the          <t hangText="identifier:">A human readable string identifying the
542            remailer</t>            remailer</t>
543          <t hangText="address">The remailer's Internet mail address</t>          <t hangText="address:">The remailer's Internet mail address</t>
544          <t hangText="key ID">Public key ID</t>          <t hangText="key ID:">Public key ID</t>
545          <t hangText="version">Software version number</t>          <t hangText="version:">Software version number</t>
546          <t hangText="capabilities">Flags indicating additional remailer          <t hangText="capabilities:">Flags indicating additional remailer
547            capabilities</t>            capabilities</t>
548          <t hangText="validity date">Date from which the key is valid</t>          <t hangText="validity date:">Date from which the key is valid</t>
549          <t hangText="expiration date">Date of the key's expiration</t>          <t hangText="expiration date:">Date of the key's expiration</t>
550        </list>        </list>
551      </t>      </t>
552    
# Line 635  Remailer-Type: Mixmaster [version number Line 637  Remailer-Type: Mixmaster [version number
637          commands. These commands are sent via the Subject: line of an e-mail to          commands. These commands are sent via the Subject: line of an e-mail to
638          the email address of the remailer:          the email address of the remailer:
639          <list style="hanging">          <list style="hanging">
640            <t hangText="remailer-help">Returns information about using the            <t hangText="remailer-help:">Returns information about using the
641              remailer. The remailer may support a suffix consisting of a              remailer. The remailer may support a suffix consisting of a
642              dash and a two-leter ISO 639 country code. For example,              dash and a two-leter ISO 639 country code. For example,
643              remailer-help-ar will return a help file in Arabic, if              remailer-help-ar will return a help file in Arabic, if
644              available.  Supported languages should be listed at the              available.  Supported languages should be listed at the
645              beginning of the "remailer-help" response.</t>              beginning of the "remailer-help" response.</t>
646            <t hangText="remailer-key">Returns the remailer's public key as            <t hangText="remailer-key:">Returns the remailer's public key as
647              described in <xref target="key-format"/>. It may also return the keys and attributes              described in <xref target="key-format"/>. It may also return the keys and attributes
648              of other remailers it knows about.</t>              of other remailers it knows about.</t>
649            <t hangText="remailer-stats">Returns information about the number            <t hangText="remailer-stats:">Returns information about the number
650              of messages the remailer has processed per day.</t>              of messages the remailer has processed per day.</t>
651            <t hangText="remailer-conf">Returns local configuration            <t hangText="remailer-conf:">Returns local configuration
652              information such as software version, supported protocols,              information such as software version, supported protocols,
653              filtered headers, blocked newsgroups and domains, and the              filtered headers, blocked newsgroups and domains, and the
654              attribute strings for other remailers the remailer knows              attribute strings for other remailers the remailer knows
655              about.</t>              about.</t>
656            <t hangText="remailer-adminkey">Returns the OpenPGP <xref target="RFC2440"/>            <t hangText="remailer-adminkey:">Returns the OpenPGP <xref target="RFC2440"/>
657              key of the remailer's operator.</t>              key of the remailer's operator.</t>
658          </list>          </list>
659        </t>        </t>
# Line 750  Remailer-Type: Mixmaster [version number Line 752  Remailer-Type: Mixmaster [version number
752        intervals should not be smaller than the randomness in the delay caused        intervals should not be smaller than the randomness in the delay caused
753        by trusted remailers.</t>        by trusted remailers.</t>
754    
755      <t>There is no anonymity if all remailers in a given sequence collude with      <t>There is no anonymity if all remailers in a given chain collude with
756        the adversary, or if they are compromised during the lifetime of their        the adversary, or if they are compromised during the lifetime of their
757        keys. Using a longer sequence increases the assurance that the user's        keys. Using a longer chain increases the assurance that the user's
758        privacy will be preserved, but at the same time causes lower        privacy will be preserved, but at the same time causes lower
759        reliability and higher latency. Sending redundant copies of a message        reliability and higher latency. Sending redundant copies of a message
760        increases reliability but may also facilitate attacks. An optimum must        increases reliability but may also facilitate attacks. An optimum must
# Line 836  Remailer-Type: Mixmaster [version number Line 838  Remailer-Type: Mixmaster [version number
838    
839    </section>    </section>
840    
841    <section anchor="examples" title="Examples">    <section anchor="examples" title="Examples">      <!-- XXX -->
842    
843      <t>This section contains a sample message and a sample key file</t>      <t>This section contains a sample message and a sample key file</t>
844    

Legend:
Removed from v.748  
changed lines
  Added in v.749

  ViewVC Help
Powered by ViewVC 1.1.5