[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[minion-cvs] Use correct description of cottrell mixing again -- I t...
Update of /home/minion/cvsroot/doc
In directory moria.seul.org:/tmp/cvs-serv12121
Modified Files:
minion-spec.tex
Log Message:
Use correct description of cottrell mixing again -- I think.
More detail about type-II bridging.
(Thanks to Peter Palfrader.)
Index: minion-spec.tex
===================================================================
RCS file: /home/minion/cvsroot/doc/minion-spec.tex,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -d -r1.58 -r1.59
--- minion-spec.tex 29 Aug 2002 05:03:17 -0000 1.58
+++ minion-spec.tex 8 Sep 2002 03:24:23 -0000 1.59
@@ -102,6 +102,9 @@
as described in XXXXCITE, with PRNG(K,n) as our stream generator,
and the keyed-SHA1 construction specified in the LIONESS paper.
+ [XXXX I think we can get away with BEAR instead. See my email of
+ September 6. -NM]
+
K1 through K4 are 160 bits long.
Thus, SPRP_ENCRYPT(K1,K2,K3,K4,M) is computed as follows:
@@ -848,20 +851,37 @@
N (the number of messages in the queue).
MIX_INTERVAL (algorithm parameter; time to wait between
batches of messages. Should be around XXXXX.)
- THRESHOLD (algorithm parameter; minimum size of pool to send.
- Same as Cottrell's ``min''. Must be at least XXXXXXXX)
- RETAIN_RATE (algorithm parameter; fraction of messages to be
- kept in pool. Same as Cottrell's ``frac''.
- Should be between XXXX and XXXX.)
+ POOL_SIZE (algorithm parameter; minimum size of pool. Should
+ be at least XXXXXXXX)
+ MAX_REPLACEMENT_RATE (algorithm parameter; largest allowable
+ rate for messages to be removed from the
+ pool. Should be between XXXX and XXXX.)
+
Outputs: (A set of messages sent to the network).
1. Wait for MIX_INTERVAL seconds.
-2. If N > THRESHOLD, then choose N * (1 - RETAIN_RATE) messages from
- Q. Transmit the selected messages.
+2. If N > POOL_SIZE, then choose Min(N-POOL_SIZE, N*MAX_REPLACEMENT_RATE)
+ messages from Q. Transmit the selected messages.
3. Repeat indefinitely.
+[XXXX Erg. I'm changing this back again. If I understand correctly,
+ there's a paper that describes another batching algorithm and calls
+ it "mixmaster". Andrei, Paul, and Roger copied this description, and
+ I copied them.
+
+ Paul and/or Andrei describe a variant that checks N>=POOL_SIZE+THRESHOLD,
+ with THRESHOLD>= 1. Roger claims (verbally) that he isn't sure whether
+ this would buy us anything, since (he says) adding 1 to POOL_SIZE would
+ always increase anonymity more than adding 1 to THRESHOLD. Once they've
+ come to some agreement, maybe we should do that instead.
+
+ Then there are binomial mixes, where instead of sending b messages,
+ you send each message with probability=b/POOLSIZE. Roger/Paul/Andrei
+ seem to like those, but I don't have a clear sense of how sure they are,
+ and how much everyone agrees with them. -NM]
+
\section{Appendix: MBOX delivery}
Servers that want to support MBOX delivery have an internal list of
@@ -946,9 +966,40 @@
Upon receiving a type-II message via SMTP, a bridging node checks
whether the destination node is also a type-III node, by looking for a
-type-III node whose KeyID matches the KeyID for the packet (the first
-16 bytes). If it finds one, the bridging node unbase64's the type-II
-message's contents, and uses them (plus random padding) as the payload
+type-III node whose KeyID matches the KeyID for the packet. [See below]
+If it finds one, the bridging node unbase64's the type-II message's
+contents, and uses them (plus random padding) as the payload
of a type-III message for that node. The routing type must be 'MIX2'
(0x0102); the routing info must be equal to the destination mix's
type-II address.
+
+\subsection{Non-normative note: extracting KeyID and message contents}
+
+(This information is included in the Type-II remailer spec; it is included
+here only for reference.)
+
+A type-II message follows the format:
+
+"-----BEGIN REMAILER MESSAGE-----" NL
+PacketLength NL
+Checksum NL
+Packet NL
+"-----END REMAILER MESSAGE-----" NL
+
+PacketLength is the length of the packet in bytes, encoded as a
+decimal integer."Checksum" is equal to the MD5 hash of the packet,
+encoded in Base 64. The packet is also encoded in base 64; The first
+16 bytes of the packet are the KeyID of the recipient.
+
+The KeyID of a type-II node is calculated by taking the public key
+<n,e>, expressing n and e as zero-padded, big-endian integers,
+concatenating them, and taking the MD5 hash of the result.
+
+When encoding a type-II message for transmission in a type-III payload,
+a type-III node should include:
+
+S [2 bytes] (Size, big-endian)
+CHK [16 bytes] (MD5 checksum as given in type-II packet, base-64 decoded)
+PKT [S bytes] (Packet as given in in type-II packet, base-64 decoded)
+PAD [28KB-16-2-S bytes] (Random padding)
+