aboutsummaryrefslogtreecommitdiff
path: root/doc/tor-spec.txt
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2004-07-01 01:34:02 +0000
committerNick Mathewson <nickm@torproject.org>2004-07-01 01:34:02 +0000
commit53b21c65f7f8c5cb4a4a84b16c6d5011063a7280 (patch)
tree7b8bef063a62dd31d20036fb21f07ab23679bd82 /doc/tor-spec.txt
parent541add90a16a2b7b75e5aa3a54071f3a5db00502 (diff)
downloadtor-53b21c65f7f8c5cb4a4a84b16c6d5011063a7280.tar
tor-53b21c65f7f8c5cb4a4a84b16c6d5011063a7280.tar.gz
Update tor-spec with new EXTEND format and info about certificate chains
svn:r1995
Diffstat (limited to 'doc/tor-spec.txt')
-rw-r--r--doc/tor-spec.txt30
1 files changed, 22 insertions, 8 deletions
diff --git a/doc/tor-spec.txt b/doc/tor-spec.txt
index d9940bc9c..ec543cc72 100644
--- a/doc/tor-spec.txt
+++ b/doc/tor-spec.txt
@@ -11,7 +11,7 @@ This is not a design document; most design criteria are not examined. For
more information on why Tor acts as it does, see tor-design.pdf.
TODO: (very soon)
- - EXTEND cells should have hostnames or nicknames, so that OPs never
+ X EXTEND cells should have hostnames or nicknames, so that OPs never
resolve OR hostnames. Else DNS servers can give different answers to
different OPs, and compromise their anonymity.
- Alternatively, directories should include IPs.
@@ -68,13 +68,19 @@ TODO: (very soon)
support any suite without ephemeral keys, symmetric keys of at
least 128 bits, and digests of at least 160 bits.
- An OR always sends a self-signed X.509 certificate whose commonName
- is the server's nickname, and whose public key is in the server
- directory.
+ An OR always sends two-certificate chain, consisting of a self-signed
+ certificate containing the OR's identity key, and of a second certificate
+ using a short-term connection key. The commonName of the second
+ certificate is the OR's nickname, and the commonName of the first
+ certificate is the OR's nickname, followed by a space and the string
+ "<identity>".
- All parties receiving certificates must confirm that the public
- key is as it appears in the server directory, and close the
- connection if it is not.
+ All parties receiving certificates must confirm that the identity key is
+ as expected. (When initiating a connection, the expected identity key is
+ the one given in the directory; when creating a connection because of an
+ EXTEND cell, the expected identity key is the one given in the cell.) If
+ the key is not as expected, the party must close the connection if it is
+ not.
Once a TLS connection is established, the two sides send cells
(specified below) to one another. Cells are sent serially. All
@@ -169,10 +175,18 @@ TODO: (very soon)
The relay payload for an EXTEND relay cell consists of:
Address [4 bytes]
Port [2 bytes]
+ Public key hash [20 bytes]
Onion skin [186 bytes]
The port and address field denote the IPV4 address and port of the
- next onion router in the circuit.
+ next onion router in the circuit; the public key hash is the SHA1 hash of
+ the ASN1 encoding of the next onion router's identity key.
+
+ [XXXX Before 0.0.8, EXTEND cells did not include the public key hash.
+ Servers running 0.0.8 distinguish the old-style cells based on the length
+ of payloads. Clients running 0.0.8 check for servers version 0.0.7 or
+ later, and send them the old-style EXTEND cells. In a future release,
+ old-style EXTEND cells will not be supported.]
The payload for a CREATED cell, or the relay payload for an
EXTENDED cell, contains: