Skip to content
Snippets Groups Projects
Commit ee0440f9 authored by Nick Mathewson's avatar Nick Mathewson :game_die:
Browse files

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

svn:r414
parent 0878ceb7
No related branches found
No related tags found
No related merge requests found
......@@ -278,11 +278,18 @@ which reveals the downstream node.
4.2. Setting circuit keys
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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment