[tor-commits] [obfsproxy/master] Improve obfs2 doc/protocol-spec.txt.

nickm at torproject.org nickm at torproject.org
Mon Dec 19 17:18:36 UTC 2011


commit f439d980caef07a834771fde90a726dcf156e31d
Author: George Kadianakis <desnacked at gmail.com>
Date:   Mon Dec 19 13:42:03 2011 +0100

    Improve obfs2 doc/protocol-spec.txt.
    
    * Change E_K(s) notation to E(K,s) to improve readability.
    * Mention that the connection should be closed immediately in the case
      of wrong plength/magic (#3291).
    * Mention that the shared secret is hashed before using it in MAC().
---
 doc/protocol-spec.txt |   19 +++++++++----------
 1 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/doc/protocol-spec.txt b/doc/protocol-spec.txt
index c11f653..4035b23 100644
--- a/doc/protocol-spec.txt
+++ b/doc/protocol-spec.txt
@@ -1,4 +1,4 @@
-The Twobfuscator
+        obfs2 (The Twobfuscator)
 
 0. Protocol overview
 
@@ -17,9 +17,9 @@ The Twobfuscator
 1. Primitives, notation, and constants.
 
     H(x) is SHA256 of x.
-    H^n(x) is H(x) called iteratively n times. 
+    H^n(x) is H(x) called iteratively n times.
 
-    E_K(s) is the AES-CTR-128 encryption of s using K as key.
+    E(K,s) is the AES-CTR-128 encryption of s using K as key.
 
     x | y is the concatenation of x and y.
     UINT32(n) is the 4 byte value of n in big-endian (network) order.
@@ -34,8 +34,8 @@ The Twobfuscator
     MAX_PADDING      is  8192
     HASH_ITERATIONS  is  100000
 
-    KEYLEN is the length of the key used by E_K(s) -- that is, 16.
-    IVLEN is the length of the IV used by E_K(s) -- that is, 16
+    KEYLEN is the length of the key used by E(K,s) -- that is, 16.
+    IVLEN is the length of the IV used by E(K,s) -- that is, 16.
 
     HASHLEN is the length of the output of H() -- that is, 32.
 
@@ -64,18 +64,17 @@ The Twobfuscator
 
    The initiator then sends:
 
-    SEED | INIT_PAD_KEY( UINT32(MAGIC_VALUE) | UINT32(PADLEN) | WR(PADLEN) )
+    INIT_SEED | E(INIT_PAD_KEY, UINT32(MAGIC_VALUE) | UINT32(PADLEN) | WR(PADLEN))
 
    and the responder replies with:
 
-    SEED | RESP_PAD_KEY( UINT32(MAGIC_VALUE) | UINT32(PADLEN) | WR(PADLEN) )
+    RESP_SEED | E(RESP_PAD_KEY, UINT32(MAGIC_VALUE) | UINT32(PADLEN) | WR(PADLEN))
 
    Upon receiving the SEED from the other party, each party derives
    the other party's padding key value as above, and decrypts the next
    8 bytes of the key establishment message.  If the MAGIC_VALUE does
    not match, or the PADLEN value is greater than MAX_PADDING, the
-   party receiving it should wait for a random amount of time (with
-   maximum wait time being 4 seconds) then close the connection.
+   party receiving it should close the connection immediately.
    Otherwise, it should read the remaining PADLEN bytes of padding data
    and discard them.
 
@@ -99,6 +98,6 @@ The Twobfuscator
    Optionally, if the client and server share a secret value SECRET,
    they can replace the MAC function with:
 
-      MAC(s,x) = H^n(s | x | SECRET | s)
+      MAC(s,x) = H^n(s | x | H(SECRET) | s)
 
    where n = HASH_ITERATIONS.





More information about the tor-commits mailing list