| 
					
				 | 
			
			
				@@ -11,10 +11,6 @@ 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) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      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. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       - REASON_CONNECTFAILED should include an IP. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       - Copy prose from tor-design to make everything more readable. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -68,8 +64,8 @@ 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 two-certificate chain, consisting of a self-signed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   certificate containing the OR's identity key, and of a second certificate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   An OR always sends a two-certificate chain, consisting of a self-signed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   certificate containing the OR's identity key, and 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 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -79,8 +75,7 @@ TODO: (very soon) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    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. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   the key is not as expected, the party must close the connection. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    Once a TLS connection is established, the two sides send cells 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    (specified below) to one another.  Cells are sent serially.  All 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -175,18 +170,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] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         Public key hash               [20 bytes] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    The port and address field denote the IPV4 address and port of the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    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.] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   Servers running 0.0.8 distinguish the old-style cells based on the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   length of payloads. (Servers running 0.0.7 blindly pass on the extend 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   cell regardless of length.) 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: 
			 |