Procházet zdrojové kódy

Correct description of extracting Kf and Kb from g^xy.

svn:r414
Nick Mathewson před 22 roky
rodič
revize
ee0440f908
1 změnil soubory, kde provedl 12 přidání a 5 odebrání
  1. 12 5
      doc/tor-spec.txt

+ 12 - 5
doc/tor-spec.txt

@@ -278,11 +278,18 @@ which reveals the downstream node.
 4.2. Setting circuit keys
 4.2. Setting circuit keys
 
 
    Once the handshake between the OP and an OR is completed, both
    Once the handshake between the OP and an OR is completed, both
-   servers can now calculate g^xy with ordinary DH.  They divide the
-   last 32 bytes of this shared secret into two 16-byte keys, the
-   first of which (called Kf) is used to encrypt the stream of data
-   going from the OP to the OR, and second of which (called Kb) is
-   used to encrypt the stream of data going from the OR to the OP.
+   servers can now calculate g^xy with ordinary DH.  From the base key
+   material g^xy, they compute two 16 byte keys, called Kf and Kb as
+   follows.  First, the server represents g^xy as a big-endian
+   unsigned integer.  Next, the server computes 40 bytes of key data
+   as K = SHA1(g^xy | [00]) | SHA1(g^xy | [01]) where "00" is a single
+   octet whose value is zero, and "01" is a single octet whose value
+   is one.  The first 16 bytes of K form Kf, and the next 16 bytes of
+   K form Kb.  
+
+   Kf is used to encrypt the stream of data going from the OP to the
+   OR, whereas Kb is used to encrypt the stream of data going from the
+   OR to the OP.
 
 
 4.3. Creating circuits
 4.3. Creating circuits