tor-design.tex 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. \documentclass[times,10pt,twocolumn]{article}
  2. \usepackage{latex8}
  3. \usepackage{times}
  4. \usepackage{url}
  5. \usepackage{graphics}
  6. \usepackage{amsmath}
  7. \pagestyle{empty}
  8. \renewcommand\url{\begingroup \def\UrlLeft{<}\def\UrlRight{>}\urlstyle{tt}\Url}
  9. \newcommand\emailaddr{\begingroup \def\UrlLeft{<}\def\UrlRight{>}\urlstyle{tt}\Url}
  10. % If an URL ends up with '%'s in it, that's because the line *in the .bib/.tex
  11. % file* is too long, so break it there (it doesn't matter if the next line is
  12. % indented with spaces). -DH
  13. %\newif\ifpdf
  14. %\ifx\pdfoutput\undefined
  15. % \pdffalse
  16. %\else
  17. % \pdfoutput=1
  18. % \pdftrue
  19. %\fi
  20. \begin{document}
  21. %% Use dvipdfm instead. --DH
  22. %\ifpdf
  23. % \pdfcompresslevel=9
  24. % \pdfpagewidth=\the\paperwidth
  25. % \pdfpageheight=\the\paperheight
  26. %\fi
  27. \title{Tor: Design of a Next-Generation Onion Router}
  28. \author{Anonymous}
  29. %\author{Roger Dingledine \\ The Free Haven Project \\ arma@freehaven.net \and
  30. %Nick Mathewson \\ The Free Haven Project \\ nickm@freehaven.net \and
  31. %Paul Syverson \\ Naval Research Lab \\ syverson@itd.nrl.navy.mil}
  32. \maketitle
  33. \thispagestyle{empty}
  34. \begin{abstract}
  35. We present Tor, a connection-based low-latency anonymous communication
  36. system which addresses many flaws in the original onion routing design.
  37. Tor works in a real-world Internet environment,
  38. requires little synchronization or coordination between nodes, and
  39. protects against known anonymity-breaking attacks as well
  40. as or better than other systems with similar design parameters.
  41. \end{abstract}
  42. %\begin{center}
  43. %\textbf{Keywords:} anonymity, peer-to-peer, remailer, nymserver, reply block
  44. %\end{center}
  45. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  46. \Section{Overview}
  47. \label{sec:intro}
  48. Onion routing is a distributed overlay network designed to anonymize
  49. low-latency TCP-based applications such as web browsing, secure shell,
  50. and instant messaging. Users choose a path through the network and
  51. build a \emph{virtual circuit}, in which each node in the path knows its
  52. predecessor and successor, but no others. Traffic flowing down the circuit
  53. is sent in fixed-size \emph{cells}, which are unwrapped by a symmetric key
  54. at each node, revealing the downstream node. The original onion routing
  55. project published several design and analysis papers in recent years
  56. \cite{or-journal,or-discex,or-ih,or-pet}, but because the only
  57. implementation was a fragile proof-of-concept that ran on a single
  58. machine, many critical design and deployment issues were not considered
  59. or addressed. Here we describe Tor, a protocol for asynchronous, loosely
  60. federated onion routers that provides the following improvements over
  61. the old onion routing design:
  62. \begin{itemize}
  63. \item \textbf{Perfect forward secrecy:} The original onion routing
  64. design is vulnerable to a single hostile node recording traffic and later
  65. forcing successive nodes in the circuit to decrypt it. Rather than using
  66. onions to lay the circuits, Tor uses an incremental or \emph{telescoping}
  67. path-building design, where the initiator negotiates session keys with
  68. each successive hop in the circuit. Onion replay detection is no longer
  69. necessary, and the network as a whole is more reliable to boot, since
  70. the initiator knows which hop failed and can try extending to a new node.
  71. \item \textbf{Applications talk to the onion proxy via Socks:}
  72. The original onion routing design required a separate proxy for each
  73. supported application protocol, resulting in a lot of extra code (most
  74. of which was never written) and also meaning that a lot of TCP-based
  75. applications were not supported. Tor uses the unified and standard Socks
  76. \cite{socks4,socks5} interface, allowing us to support any TCP-based
  77. program without modification.
  78. \item \textbf{Many applications can share one circuit:} The original
  79. onion routing design built one circuit for each request. Aside from the
  80. performance issues of doing public key operations for every request, it
  81. also turns out that regular communications patterns mean building lots
  82. of circuits can endanger anonymity \cite{wright03}. Tor multiplexes many
  83. connections down each circuit, but still rotates the circuit periodically
  84. to avoid too much linkability.
  85. \item \textbf{No mixing or traffic shaping:} The original onion routing
  86. design called for full link padding both between onion routers and between
  87. onion proxies (that is, users) and onion routers \cite{or-journal}. The
  88. later analysis paper \cite{or-pet} suggested \emph{traffic shaping}
  89. to provide similar protection but use less bandwidth, but did not go
  90. into detail. However, recent research \cite{econymics} and deployment
  91. experience \cite{freedom2-arch} indicate that this level of resource
  92. use is not practical or economical; and even full link padding is still
  93. vulnerable to active attacks \cite{defensive-dropping}.
  94. \item \textbf{Leaky pipes:} Through in-band signalling within the circuit,
  95. Tor initiators can direct traffic to nodes partway down the circuit. This
  96. allows for long-range padding to frustrate timing attacks at the initiator
  97. \cite{defensive-dropping}, but because circuits are used by more than
  98. one application, it also allows traffic to exit the circuit from the
  99. middle -- thus frustrating timing attacks based on observing exit points.
  100. %Or something like that. hm.
  101. \item \textbf{Congestion control:} Earlier anonymity designs do not
  102. address traffic bottlenecks. Unfortunately, typical approaches to load
  103. balancing and flow control in overlay networks involve inter-node control
  104. communication and global views of traffic. Our decentralized ack-based
  105. congestion control maintains reasonable anonymity while allowing nodes
  106. at the edges of the network to detect congestion or flooding attacks
  107. and send less data until the congestion subsides.
  108. \item \textbf{Directory servers:} Rather than attempting to flood
  109. link-state information through the network, which can be unreliable and
  110. open to partitioning attacks or outright deception, Tor takes a simplified
  111. view towards distributing link-state information. Certain more trusted
  112. onion routers also serve as directory servers; they provide signed
  113. \emph{directories} describing all routers they know about, and which
  114. are currently up. Users periodically download these directories via HTTP.
  115. \item \textbf{End-to-end integrity checking:} Without integrity checking
  116. on traffic going through the network, an onion router can change the
  117. contents of cells as they pass by, e.g. by redirecting a connection on
  118. the fly so it connects to a different webserver, or by tagging encrypted
  119. traffic and looking for traffic at the network edges that has been
  120. tagged \cite{minion-design}.
  121. \item \textbf{Robustness to node failure:} router twins
  122. \item \textbf{Exit policies:}
  123. Tor provides a consistent mechanism for each node to specify and
  124. advertise an exit policy.
  125. \item \textbf{Rendezvous points:}
  126. location-protected servers
  127. \end{itemize}
  128. We review previous work in Section \ref{sec:background}, describe
  129. our goals and assumptions in Section \ref{sec:assumptions},
  130. and then address the above list of improvements in Sections
  131. \ref{sec:design}-\ref{sec:maintaining-anonymity}. We then summarize
  132. how our design stands up to known attacks, and conclude with a list of
  133. open problems.
  134. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  135. \Section{Threat model and background}
  136. \label{sec:background}
  137. anonymizer
  138. pipenet
  139. freedom
  140. onion routing
  141. isdn-mixes
  142. crowds
  143. real-time mixes, web mixes
  144. anonnet (marc rennhard's stuff)
  145. morphmix
  146. P5
  147. gnunet
  148. rewebbers
  149. tarzan
  150. herbivore
  151. \SubSection{Known attacks against low-latency anonymity systems}
  152. We discuss each of these attacks in more detail below, along with the
  153. aspects of the Tor design that provide defense. We provide a summary
  154. of the attacks and our defenses against them in Section \ref{sec:attacks}.
  155. \Section{Design goals and assumptions}
  156. \label{sec:assumptions}
  157. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  158. \Section{The Tor Design}
  159. \label{sec:design}
  160. \Section{Other design decisions}
  161. \SubSection{Exit policies and abuse}
  162. \label{subsec:exitpolicies}
  163. \SubSection{Directory Servers}
  164. \label{subsec:dir-servers}
  165. \Section{Rendezvous points: pseudonyms with responder anonymity}
  166. \label{sec:rendezvous}
  167. \Section{Maintaining anonymity sets}
  168. \label{sec:maintaining-anonymity}
  169. \SubSection{Using a circuit many times}
  170. \label{subsec:many-messages}
  171. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  172. \Section{Attacks and Defenses}
  173. \label{sec:attacks}
  174. Below we summarize a variety of attacks and how well our design withstands
  175. them.
  176. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  177. \Section{Future Directions and Open Problems}
  178. \label{sec:conclusion}
  179. Tor brings together many innovations from many different projects into
  180. a unified deployable system. But there are still several attacks that
  181. work quite well, as well as a number of sustainability and run-time
  182. issues remaining to be ironed out. In particular:
  183. \begin{itemize}
  184. \item foo
  185. \end{itemize}
  186. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  187. \Section{Acknowledgments}
  188. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  189. \bibliographystyle{latex8}
  190. \bibliography{minion-design}
  191. \end{document}
  192. % Style guide:
  193. % U.S. spelling
  194. % avoid contractions (it's, can't, etc.)
  195. % 'mix', 'mixes' (as noun)
  196. % 'mix-net'
  197. % 'mix', 'mixing' (as verb)
  198. % 'Mixminion Project'
  199. % 'Mixminion' (meaning the protocol suite or the network)
  200. % 'Mixmaster' (meaning the protocol suite or the network)
  201. % 'middleman' [Not with a hyphen; the hyphen has been optional
  202. % since Middle English.]
  203. % 'nymserver'
  204. % 'Cypherpunk', 'Cypherpunks', 'Cypherpunk remailer'
  205. %
  206. % 'Whenever you are tempted to write 'Very', write 'Damn' instead, so
  207. % your editor will take it out for you.' -- Misquoted from Mark Twain