<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto">Hi,<div><br></div><div>Thanks for your interest in Tor's path selection algorithm.</div><div><br></div><div>Some of my colleagues are working on "vanguards", which</div><div>significantly changes path selection. I think this is their</div><div>latest proposal:</div><div><a href="https://gitweb.torproject.org/torspec.git/tree/proposals/292-mesh-vanguards.txt">https://gitweb.torproject.org/torspec.git/tree/proposals/292-mesh-vanguards.txt</a></div><div><br></div><div>I'll let them share any details they feel are helpful.</div><div><br></div><div>See also my specific answers inline below:</div><div><div dir="ltr"><div><br></div></div><div dir="ltr"><blockquote type="cite">On 20 Feb 2020, at 06:20, Vianney Gomezgil Yaspik <vgomezg1@jhu.edu> wrote:<br><br></blockquote></div><blockquote type="cite"><div dir="ltr"><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);"><div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; text-align: left; background-color: rgb(255, 255, 255)">A group of students at Johns Hopkins University and I have been analyzing the circuit selection algorithm for TOR´s browser EXIT nodes. It is an exploratory project trying to discover how do the EXIT nodes are selected every time the circuit changes. </div>
<div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; text-align: left; background-color: rgb(255, 255, 255)">
<br>
</div>
<div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; text-align: left; background-color: rgb(255, 255, 255)">
So far, we have discovered that the time that the browser is accessed, calendar date,</div></div></div></blockquote><blockquote type="cite"><div dir="ltr"><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);"><div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; text-align: left; background-color: rgb(255, 255, 255)">physical location, use of a bridge (or not), and the entry node do not change the pattern of the EXIT nodes.</div></div></div></blockquote><div><br></div><div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">The set of Tor exits changes over time, so the calendar</div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">date will change Tor's path selection slightly.</div></div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);"><br></div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">Similarly, Tor clients try to avoid choosing paths that</div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">are within the same network, or all controlled by the</div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">same operator. So guard selection does have a slight</div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">impact on the chosen exit.</div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);"><br></div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">For more details, see tor's path spec, particularly the</div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">constraints section:</div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);"><a href="https://gitweb.torproject.org/torspec.git/tree/path-spec.txt#n230">https://gitweb.torproject.org/torspec.git/tree/path-spec.txt#n230</a></div><br><blockquote type="cite"><div dir="ltr"><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);"><div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; text-align: left; background-color: rgb(255, 255, 255)">Moreover, than approximately 80% of all exit nodes come from 10
 specific countries, even though these 10 countries only account for approximately 50% of all available exit nodes. </div></div></div></blockquote><div><br></div><div>How are you counting exit nodes?</div><div><br></div><div>Tor uses the bandwidth weights in the consensus, to</div><div>weight its random selection of exit nodes:</div><div><a href="https://gitweb.torproject.org/torspec.git/tree/path-spec.txt#n92">https://gitweb.torproject.org/torspec.git/tree/path-spec.txt#n92</a></div><div><br></div><div>These weights are limited by:</div><div>* any operator-configured bandwidth limits,</div><div>and scaled using:</div><div><span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">* the relay's own observed bandwidth usage, and</span></div><div>* the capacities measured by the 6 Tor bandwidth</div><div>  authorities.</div><br><blockquote type="cite"><div dir="ltr"><div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<div style="margin: 0px; font-size: 12pt; font-family: Calibri, Arial, Helvetica, sans-serif; text-align: left; background-color: rgb(255, 255, 255)">
All of which has led us to conclude that the selection of the EXIT nodes in the TOR browser is not random. We would like to further explore however, what are the factors that determine which relay becomes the exit node every time a circuit is changed. Is there
 anyone that we could speak to or that could give us further insight as to how the selection of the exit node in TOR´s circuit works?</div></div></div></blockquote><br></div><div>Have you looked at the destination port?</div><div>Tor tried to select exits that will allow the requested</div><div>port.</div><div><br></div><div>Are you aware of preemptive circuits?</div><div><a href="https://gitweb.torproject.org/torspec.git/tree/path-spec.txt#n147">https://gitweb.torproject.org/torspec.git/tree/path-spec.txt#n147</a></div><div><br></div><div>If you're mainly measuring preemptive circuits, you'll</div><div>see fairly consistent behaviour. These circuits have</div><div>fewer constraints, because they need to be suitable</div><div>for general use.</div><div><br></div><div>That's probably enough to get you started, please</div><div>let us know if you have more questions.</div><div><br></div><div>T</div></body></html>