tor-design.tex 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  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{Roger Dingledine \\ The Free Haven Project \\ arma@freehaven.net \and
  29. Nick Mathewson \\ The Free Haven Project \\ nickm@freehaven.net \and
  30. Paul Syverson \\ Naval Research Lab \\ syverson@itd.nrl.navy.mil}
  31. \maketitle
  32. \thispagestyle{empty}
  33. \begin{abstract}
  34. We present Tor, a connection-based low-latency anonymous communication
  35. system which addresses many flaws in the original onion routing design.
  36. Tor works in a real-world Internet environment,
  37. requires little synchronization or coordination between nodes, and
  38. protects against known anonymity-breaking attacks as well
  39. as or better than other systems with similar design parameters.
  40. \end{abstract}
  41. %\begin{center}
  42. %\textbf{Keywords:} anonymity, peer-to-peer, remailer, nymserver, reply block
  43. %\end{center}
  44. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  45. \Section{Overview}
  46. \label{sec:intro}
  47. Onion routing is a distributed overlay network designed to anonymize
  48. low-latency TCP-based applications such as web browsing, secure
  49. shell, and instant messaging. Users choose a path through the
  50. network and build a \emph{virtual circuit}, in which each node in
  51. the path knows its predecessor and successor, but no others. Traffic
  52. flowing down the circuit is unwrapped by a symmetric key at each
  53. node which reveals the downstream node. The original onion routing
  54. project published several design and analysis papers several years
  55. ago \cite{or-journal,or-discex,or-ih,or-pet}, but because the only
  56. implementation was a fragile proof-of-concept that ran on a single
  57. machine, many critical design and deployment issues were not considered
  58. or addressed. Here we describe Tor, a protocol for asynchronous, loosely
  59. federated onion routers that provides the following improvements over
  60. the old onion routing design:
  61. \begin{itemize}
  62. \item \textbf{Applications talk to the onion proxy via Socks:}
  63. The original onion routing design required a separate proxy for each
  64. supported application protocol, resulting in a lot of extra code (most
  65. of which was never written) and also meaning that a lot of TCP-based
  66. applications were not supported. Tor uses the unified and standard Socks
  67. \cite{socks4,socks5} interface, allowing us to support any TCP-based
  68. program without modification.
  69. \item \textbf{No mixing or traffic shaping:} The original onion routing
  70. design called for full link padding both between onion routers and between
  71. onion proxies (that is, users) and onion routers \cite{or-journal}. The
  72. later analysis paper \cite{or-pet} suggested \emph{traffic shaping}
  73. schemes that would provide similar protection but use less bandwidth,
  74. but did not go into detail. However, recent research \cite{econymics}
  75. and deployment experience \cite{freedom2-arch} indicate that this level
  76. of resource use is not practical or economical, especially if.
  77. \item \textbf{Directory servers:} Traditional link state
  78. \item \textbf{Congestion control:} Traditional flow control solutions
  79. Our decentralized ack-based congestion control
  80. allows nodes at the edges of the network to detect incidental congestion
  81. or flooding attacks and send less data until the congestion subsides.
  82. \item \textbf{Forward security:}
  83. \item \textbf{Many applications can share one circuit:}
  84. leaky pipes
  85. \item \textbf{End-to-end integrity checking:}
  86. \item \textbf{Robustness to node failure:} router twins
  87. \item \textbf{Exit policies:}
  88. Tor provides a consistent mechanism for each node to specify and
  89. advertise an exit policy.
  90. \item \textbf{Rendezvous points:}
  91. location-protected servers
  92. \end{itemize}
  93. We review mixes and mix-nets in Section \ref{sec:background},
  94. describe our goals and assumptions in Section \ref{sec:assumptions},
  95. and then address the above list of improvements in Sections
  96. \ref{sec:design}-\ref{sec:nymservers}. We then summarize how our design
  97. stands up to known attacks, and conclude with a list of open problems.
  98. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  99. \Section{Threat model and background}
  100. \label{sec:background}
  101. anonymizer
  102. pipenet
  103. freedom
  104. onion routing
  105. isdn-mixes
  106. crowds
  107. real-time mixes, web mixes
  108. anonnet (marc rennhard's stuff)
  109. morphmix
  110. P5
  111. gnunet
  112. rewebbers
  113. tarzan
  114. herbivore
  115. \SubSection{Known attacks against low-latency anonymity systems}
  116. We discuss each of these attacks in more detail below, along with the
  117. aspects of the Tor design that provide defense. We provide a summary
  118. of the attacks and our defenses against them in Section \ref{sec:attacks}.
  119. \Section{Design goals and assumptions}
  120. \label{sec:assumptions}
  121. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  122. \Section{The Tor Design}
  123. \label{sec:design}
  124. \Section{Other design decisions}
  125. \SubSection{Exit policies and abuse}
  126. \label{subsec:exitpolicies}
  127. \SubSection{Directory Servers}
  128. \label{subsec:dir-servers}
  129. \Section{Rendezvous points: pseudonyms with responder anonymity}
  130. \label{sec:rendezvous}
  131. \Section{Maintaining anonymity sets}
  132. \label{sec:maintaining-anonymity}
  133. \SubSection{Using a circuit many times}
  134. \label{subsec:many-messages}
  135. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  136. \Section{Attacks and Defenses}
  137. \label{sec:attacks}
  138. Below we summarize a variety of attacks and how well our design withstands
  139. them.
  140. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  141. \Section{Future Directions and Open Problems}
  142. \label{sec:conclusion}
  143. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  144. \Section{Acknowledgments}
  145. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  146. \bibliographystyle{latex8}
  147. \bibliography{minion-design}
  148. \end{document}
  149. % Style guide:
  150. % U.S. spelling
  151. % avoid contractions (it's, can't, etc.)
  152. % 'mix', 'mixes' (as noun)
  153. % 'mix-net'
  154. % 'mix', 'mixing' (as verb)
  155. % 'Mixminion Project'
  156. % 'Mixminion' (meaning the protocol suite or the network)
  157. % 'Mixmaster' (meaning the protocol suite or the network)
  158. % 'middleman' [Not with a hyphen; the hyphen has been optional
  159. % since Middle English.]
  160. % 'nymserver'
  161. % 'Cypherpunk', 'Cypherpunks', 'Cypherpunk remailer'
  162. %
  163. % 'Whenever you are tempted to write 'Very', write 'Damn' instead, so
  164. % your editor will take it out for you.' -- Misquoted from Mark Twain