| 
					
				 | 
			
			
				@@ -0,0 +1,40 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  o Major features: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    - Tor now supports a new circuit extension handshake designed by Ian 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      Goldberg, Douglas Stebila, and Berkant Ustaoglu. Our original 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      circuit extension handshake, later called "TAP", was a bit slow 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (especially on the server side), had a fragile security proof, and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      used weaker keys than we'd now prefer. The new circuit handshake 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      uses Dan Bernstein's "curve25519" elliptic-curve Diffie-Hellman 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      function, making it significantly more secure than the older 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      handshake, and significantly faster. Tor can either use one of two 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      built-in pure-C curve25519-donna implementations by Adam Langley, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      or link against the "nacl" library for a tuned version if present. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      The built-in version is very fast for 64-bit systems building with 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      GCC. (About 10-14x faster on the server side, and about 7x faster 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      on the client side.) The built-in 32-bit version is still faster 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      than the old TAP protocol (about 3x), but using libnacl would be 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      better on most 32-bit x86 hosts. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      Clients don't currently use this protocol by default, since 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      comparatively few clients support it so far. To try it, set 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      UseNTorHandshake to 1. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      Implements proposal 216; closes ticket #7202. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    - Tor servers and clients now support a better CREATE/EXTEND cell 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      format, allowing the sender to specify multiple address, identity, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      and handshake types.  Implements Robert Ransom's proposal 200; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      closes ticket #7199. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  o Code simplification and refactoring: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    - Split the onion.c file into separate modules for the onion queue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      and the different handshakes it supports. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    - Remove the marshalling/unmarshalling code for sending requests to 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      cpuworkers over a socket, and instead just send structs.  The 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      recipient will always be the same Tor binary as the sender, so 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      any encoding is overkill. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  o Testing: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    - Add benchmark functions to test onion handshake performance. 
			 |