[tor-commits] [tor-design-2012/master] Quick pass to revise the rest of the tor-design section

nickm at torproject.org nickm at torproject.org
Wed Nov 14 06:14:00 UTC 2012


commit f77b7a6e255319c259daf0d060444d2909fd8d3e
Author: Nick Mathewson <nickm at torproject.org>
Date:   Wed Nov 14 01:13:57 2012 -0500

    Quick pass to revise the rest of the tor-design section
---
 tor-design-2012.tex |   57 +++++++++++++++++++++++++--------------------------
 1 files changed, 28 insertions(+), 29 deletions(-)

diff --git a/tor-design-2012.tex b/tor-design-2012.tex
index 38a6eed..43cf08b 100644
--- a/tor-design-2012.tex
+++ b/tor-design-2012.tex
@@ -1140,8 +1140,11 @@ reply to notify the application of its success. The OP now
 accepts data from the application's TCP stream, packaging it
 into \emph{relay data} cells and sending those cells along the
 circuit to the chosen OR.
-% Mention the optimistic data extension: clients can send data before getting
-% a relay_connected cell. -NM
+
+(As an optimization, to avoid a round-trip while waiting for a
+connected reply, clients may send data immediately after the
+connected cell.  The need to be ready to send the same data to
+another stream, though, if no connected cell arrives.)
 
 There's a catch to using SOCKS, however---some applications pass
 the alphanumeric hostname to the Tor client, while others
@@ -1153,8 +1156,6 @@ resolved at the far end. Common applications like Firefox and
 SSH need to be configured to use SOCKS4A or SOCKS5 (with the
 option to send hostnames rather than IP address) to avoid this
 vulnerability.
-% No longer true wrt mozilla and SSH. -NM
-% Believed done -SJM
 
 With Firefox, the Torbutton add-on ensures that the browser
 sends requests via Tor by configuring Firefox to correctly use a
@@ -1177,12 +1178,10 @@ Other applications, which can be configured to use SOCKS (and
 send the proxy a hostname rather than IP address), may be
 connected directly to Tor. Other options available are to
 intercept calls to the resolver and sockets libraries with
-\emph{torsocks} or to use a firewall (Tor supports BSD and
-Linux's in-built firewall) to intercept outgoing DNS requests
+\emph{torsocks} or to use an operating system firewall's transparent
+port-forwarding mechanism (Tor supports BSD and
+Linux's in-built port-forwarding) to intercept outgoing DNS requests
 and TCP connections, sending them via Tor.
-% We don't recommend privoxy any more.  Proxies are one solution though.  But
-% for web, we think you need a custom browser. -NM
-% Believed done -SJM
 
 Closing a Tor stream is analogous to closing a TCP stream: it
 uses a two-step handshake for normal operation, or a one-step
@@ -1216,8 +1215,8 @@ modify data. Addressing the insider malleability attack,
 however, is more complex.
 
 We could do integrity checking of the relay cells at each hop,
-either by including hashes or by using an authenticating cipher
-mode like EAX~\cite{eax}, but there are some problems. First,
+either by including MACs or by using an authenticating cipher
+mode like GCM~\cite{gcm}, but there are some problems. First,
 these approaches impose a message-expansion overhead at each
 hop, and so we would have to either leak the path length or
 waste bytes by padding to a maximum path length. Second, these
@@ -1228,10 +1227,6 @@ session keys. Third, we have already accepted that our design is
 vulnerable to end-to-end timing attacks; so tagging attacks
 performed within the circuit provide no additional information
 to the attacker.
-% This "no additional information to the attacker" claim is less great than
-% it might have seemed in 2004. We're looking towards wide-block approaches
-% here instead.  Also we should really not cite EAX and hashes but probably
-% GCM and MACs as the likelier alternatives. -NM
 
 Thus, we check integrity only at the edges of each
 stream. (Remember that in our leaky-pipe circuit topology, a
@@ -1244,8 +1239,6 @@ cells they create, and include with each relay cell the first
 four bytes of the current digest.  Each also keeps a SHA-1
 digest of data received, to verify that the received hashes are
 correct.
-% Mention that sha-1 is showing its age, and we're moving away from it in our
-% next relay protocol. -NM
 
 To be sure of removing or modifying a cell, the attacker must be
 able to deduce the current digest state (which depends on all
@@ -1260,6 +1253,17 @@ overhead; the chance that an adversary will correctly guess a
 valid hash is acceptably low, given that the OP or OR tear down
 the circuit if they receive a bad hash.
 
+This approach has, however, appeared less robust than we hoped;
+while tagging attacks don't provide more information than an
+end-to-end attacker could get through passive correlation attacks,
+they succeed more quickly. Even that isn't such a big deal, were
+it not for a class of attacks that become possible if an attacker
+can detect non-corelatable circuits early and kill them (see
+\ref{???XXXsomewhere-in-attacks-and-defenses}).  We are therefore looking
+into improved constructions for integrity, especially ones based
+on wide-block ciphers.  We hope to also take the opportunity to
+move the authentication mechanism away from the moribund SHA-1.
+
 \subsection{Rate limiting and fairness}
 \label{subsec:rate-limit}
 
@@ -1348,9 +1352,10 @@ cell only when the number of bytes pending to be flushed is
 under some threshold (currently 10 cells' worth).
 % I don't believe that the numbers are 1000 and 100 any more. Must check -NM
 
-These arbitrarily chosen parameters seem to give tolerable
-throughput and delay; see Section~\ref{sec:in-the-wild}.
-% The above paragraph has not held up over time -NM
+These arbitrarily chosen parameters give tolerable but not great
+throughput and delay; see Section~\ref{sec:in-the-wild}. See also
+Section~\ref{????:how-to-really-ratelim} for discussion of future
+work directions on the topic.
 
 \section{Rendezvous Points and hidden services}
 \label{sec:rendezvous}
@@ -1405,9 +1410,6 @@ community finds objectionable, or if Bob's service tends to get
 attacked by network vandals).  The extra level of indirection
 also allows Bob to respond to some requests and ignore others.
 
-% Mention that the list of introduction points can now be encrypted. -NM
-% Mention user authentication? -NM
-% Believed done -SJM
 
 \subsection{Rendezvous points in Tor}
 
@@ -1481,7 +1483,7 @@ points available. Bob could also give secret public keys for
 consulting the lookup service. All of these approaches limit
 exposure even when some selected users collude in the DoS\@.
 
-% Thiss whole section is dated in ways I don't know off the top of my head.
+% Thiss whole section may be dated in ways I don't know off the top of my head.
 % Gotta review the protocol revisions over the years. -NM
 
 
@@ -1501,15 +1503,12 @@ remains a SOCKS proxy.  We encode all of the necessary
 information into the fully qualified domain name (FQDN) Alice
 uses when establishing her connection. Location-hidden services
 use a virtual top level domain called {\tt .onion}: thus
-hostnames take the form {\tt x.y.onion} where {\tt x} is the
-authorization cookie and {\tt y} encodes the hash of the public
+hostnames take the form {\tt y.onion} where
+\tt y} encodes the hash of the public
 key. Alice's onion proxy examines addresses; if they're destined
 for a hidden server, it decodes the key and starts the
 rendezvous as described above.
 
-% Authorization cookies never got built, right? it turns out that
-% ``x.y.onion'' as a format for conveying them is a bad idea, due to the
-% referer headers and stuff like that -NM
 
 \subsection{Previous rendezvous work}
 



More information about the tor-commits mailing list