mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 20:33:31 +01:00
41 lines
1.9 KiB
Plaintext
41 lines
1.9 KiB
Plaintext
|
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.
|