aboutsummaryrefslogtreecommitdiff
path: root/summary/src/tlwo
diff options
context:
space:
mode:
authorRasmus Dahlberg <rasmus@rgdd.se>2024-10-15 16:08:16 +0200
committerRasmus Dahlberg <rasmus@rgdd.se>2024-10-15 16:08:16 +0200
commit385cc92bc91e1a6c3724085c060e76bf40c13ed3 (patch)
tree26d0a8f81f2caa472830fd40a51844bb202c1355 /summary/src/tlwo
Import PhD thesis
Diffstat (limited to 'summary/src/tlwo')
-rw-r--r--summary/src/tlwo/.gitignore9
-rw-r--r--summary/src/tlwo/img/.gitkeep1
-rw-r--r--summary/src/tlwo/img/attack.pdfbin0 -> 19745 bytes
-rw-r--r--summary/src/tlwo/img/cached.pdfbin0 -> 14759 bytes
-rw-r--r--summary/src/tlwo/img/plot_cache_entries-permissive.pdfbin0 -> 13239 bytes
-rw-r--r--summary/src/tlwo/img/plot_cache_entries-web.pdfbin0 -> 12990 bytes
-rw-r--r--summary/src/tlwo/img/plot_cache_hits-permissive.pdfbin0 -> 28384 bytes
-rw-r--r--summary/src/tlwo/img/plot_cache_hits-web.pdfbin0 -> 28479 bytes
-rw-r--r--summary/src/tlwo/img/plot_lookups-permissive.pdfbin0 -> 15707 bytes
-rw-r--r--summary/src/tlwo/img/plot_lookups-web.pdfbin0 -> 15988 bytes
-rw-r--r--summary/src/tlwo/img/plot_popularity_match-permissive.pdfbin0 -> 12204 bytes
-rw-r--r--summary/src/tlwo/img/plot_popularity_match-web.pdfbin0 -> 12201 bytes
-rw-r--r--summary/src/tlwo/img/plot_preload_entries-permissive.pdfbin0 -> 107993 bytes
-rw-r--r--summary/src/tlwo/img/plot_preload_entries-web.pdfbin0 -> 107839 bytes
-rw-r--r--summary/src/tlwo/img/plot_preload_hits-permissive.pdfbin0 -> 40862 bytes
-rw-r--r--summary/src/tlwo/img/plot_preload_hits-web.pdfbin0 -> 40856 bytes
-rw-r--r--summary/src/tlwo/img/plot_preload_lists-permissive.pdfbin0 -> 34103 bytes
-rw-r--r--summary/src/tlwo/img/plot_preload_lists-web.pdfbin0 -> 35606 bytes
-rw-r--r--summary/src/tlwo/img/preload.pdfbin0 -> 110579 bytes
-rw-r--r--summary/src/tlwo/img/preload.svg1009
-rw-r--r--summary/src/tlwo/img/repeat-attack.pdfbin0 -> 15385 bytes
-rw-r--r--summary/src/tlwo/img/resolve.pdfbin0 -> 16334 bytes
-rw-r--r--summary/src/tlwo/img/setting.pdfbin0 -> 214769 bytes
-rw-r--r--summary/src/tlwo/img/uncached.pdfbin0 -> 15740 bytes
-rw-r--r--summary/src/tlwo/main.tex69
-rw-r--r--summary/src/tlwo/src/abstract.tex25
-rw-r--r--summary/src/tlwo/src/acknowledgements.tex20
-rw-r--r--summary/src/tlwo/src/attack.tex247
-rw-r--r--summary/src/tlwo/src/availability.tex19
-rw-r--r--summary/src/tlwo/src/background.tex73
-rw-r--r--summary/src/tlwo/src/conclusion.tex52
-rw-r--r--summary/src/tlwo/src/introduction.tex151
-rw-r--r--summary/src/tlwo/src/long.tex473
-rw-r--r--summary/src/tlwo/src/ref.bib352
-rw-r--r--summary/src/tlwo/src/related.tex174
-rw-r--r--summary/src/tlwo/src/short.tex63
-rw-r--r--summary/src/tlwo/src/tor-cache.tex167
37 files changed, 2904 insertions, 0 deletions
diff --git a/summary/src/tlwo/.gitignore b/summary/src/tlwo/.gitignore
new file mode 100644
index 0000000..8bb88c8
--- /dev/null
+++ b/summary/src/tlwo/.gitignore
@@ -0,0 +1,9 @@
+main.pdf
+*.blg
+*.bbl
+*.fls
+*.fdb_latexmk
+*.log
+*.out
+*.aux
+*.swp
diff --git a/summary/src/tlwo/img/.gitkeep b/summary/src/tlwo/img/.gitkeep
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/summary/src/tlwo/img/.gitkeep
@@ -0,0 +1 @@
+
diff --git a/summary/src/tlwo/img/attack.pdf b/summary/src/tlwo/img/attack.pdf
new file mode 100644
index 0000000..c99c22c
--- /dev/null
+++ b/summary/src/tlwo/img/attack.pdf
Binary files differ
diff --git a/summary/src/tlwo/img/cached.pdf b/summary/src/tlwo/img/cached.pdf
new file mode 100644
index 0000000..c0a4524
--- /dev/null
+++ b/summary/src/tlwo/img/cached.pdf
Binary files differ
diff --git a/summary/src/tlwo/img/plot_cache_entries-permissive.pdf b/summary/src/tlwo/img/plot_cache_entries-permissive.pdf
new file mode 100644
index 0000000..2016a3f
--- /dev/null
+++ b/summary/src/tlwo/img/plot_cache_entries-permissive.pdf
Binary files differ
diff --git a/summary/src/tlwo/img/plot_cache_entries-web.pdf b/summary/src/tlwo/img/plot_cache_entries-web.pdf
new file mode 100644
index 0000000..1373ed0
--- /dev/null
+++ b/summary/src/tlwo/img/plot_cache_entries-web.pdf
Binary files differ
diff --git a/summary/src/tlwo/img/plot_cache_hits-permissive.pdf b/summary/src/tlwo/img/plot_cache_hits-permissive.pdf
new file mode 100644
index 0000000..6a92fe9
--- /dev/null
+++ b/summary/src/tlwo/img/plot_cache_hits-permissive.pdf
Binary files differ
diff --git a/summary/src/tlwo/img/plot_cache_hits-web.pdf b/summary/src/tlwo/img/plot_cache_hits-web.pdf
new file mode 100644
index 0000000..f56588b
--- /dev/null
+++ b/summary/src/tlwo/img/plot_cache_hits-web.pdf
Binary files differ
diff --git a/summary/src/tlwo/img/plot_lookups-permissive.pdf b/summary/src/tlwo/img/plot_lookups-permissive.pdf
new file mode 100644
index 0000000..172046d
--- /dev/null
+++ b/summary/src/tlwo/img/plot_lookups-permissive.pdf
Binary files differ
diff --git a/summary/src/tlwo/img/plot_lookups-web.pdf b/summary/src/tlwo/img/plot_lookups-web.pdf
new file mode 100644
index 0000000..8936b14
--- /dev/null
+++ b/summary/src/tlwo/img/plot_lookups-web.pdf
Binary files differ
diff --git a/summary/src/tlwo/img/plot_popularity_match-permissive.pdf b/summary/src/tlwo/img/plot_popularity_match-permissive.pdf
new file mode 100644
index 0000000..ccd2d4c
--- /dev/null
+++ b/summary/src/tlwo/img/plot_popularity_match-permissive.pdf
Binary files differ
diff --git a/summary/src/tlwo/img/plot_popularity_match-web.pdf b/summary/src/tlwo/img/plot_popularity_match-web.pdf
new file mode 100644
index 0000000..fc49a4b
--- /dev/null
+++ b/summary/src/tlwo/img/plot_popularity_match-web.pdf
Binary files differ
diff --git a/summary/src/tlwo/img/plot_preload_entries-permissive.pdf b/summary/src/tlwo/img/plot_preload_entries-permissive.pdf
new file mode 100644
index 0000000..a08e43a
--- /dev/null
+++ b/summary/src/tlwo/img/plot_preload_entries-permissive.pdf
Binary files differ
diff --git a/summary/src/tlwo/img/plot_preload_entries-web.pdf b/summary/src/tlwo/img/plot_preload_entries-web.pdf
new file mode 100644
index 0000000..e3f3ebf
--- /dev/null
+++ b/summary/src/tlwo/img/plot_preload_entries-web.pdf
Binary files differ
diff --git a/summary/src/tlwo/img/plot_preload_hits-permissive.pdf b/summary/src/tlwo/img/plot_preload_hits-permissive.pdf
new file mode 100644
index 0000000..1f6cacc
--- /dev/null
+++ b/summary/src/tlwo/img/plot_preload_hits-permissive.pdf
Binary files differ
diff --git a/summary/src/tlwo/img/plot_preload_hits-web.pdf b/summary/src/tlwo/img/plot_preload_hits-web.pdf
new file mode 100644
index 0000000..ce38004
--- /dev/null
+++ b/summary/src/tlwo/img/plot_preload_hits-web.pdf
Binary files differ
diff --git a/summary/src/tlwo/img/plot_preload_lists-permissive.pdf b/summary/src/tlwo/img/plot_preload_lists-permissive.pdf
new file mode 100644
index 0000000..9c79a77
--- /dev/null
+++ b/summary/src/tlwo/img/plot_preload_lists-permissive.pdf
Binary files differ
diff --git a/summary/src/tlwo/img/plot_preload_lists-web.pdf b/summary/src/tlwo/img/plot_preload_lists-web.pdf
new file mode 100644
index 0000000..a864f65
--- /dev/null
+++ b/summary/src/tlwo/img/plot_preload_lists-web.pdf
Binary files differ
diff --git a/summary/src/tlwo/img/preload.pdf b/summary/src/tlwo/img/preload.pdf
new file mode 100644
index 0000000..9f06a14
--- /dev/null
+++ b/summary/src/tlwo/img/preload.pdf
Binary files differ
diff --git a/summary/src/tlwo/img/preload.svg b/summary/src/tlwo/img/preload.svg
new file mode 100644
index 0000000..e507b66
--- /dev/null
+++ b/summary/src/tlwo/img/preload.svg
@@ -0,0 +1,1009 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="284.57263mm"
+ height="251.33842mm"
+ viewBox="0 0 284.57263 251.33843"
+ version="1.1"
+ id="svg5"
+ inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+ sodipodi:docname="preload.svg"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <sodipodi:namedview
+ id="namedview7"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ inkscape:document-units="mm"
+ showgrid="false"
+ inkscape:zoom="0.58081186"
+ inkscape:cx="445.06667"
+ inkscape:cy="513.93579"
+ inkscape:window-width="1870"
+ inkscape:window-height="1000"
+ inkscape:window-x="20"
+ inkscape:window-y="50"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="layer1"
+ inkscape:showpageshadow="2"
+ inkscape:deskcolor="#d1d1d1" />
+ <defs
+ id="defs2">
+ <marker
+ style="overflow:visible"
+ id="Arrow1Lstart"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lstart"
+ inkscape:isstock="true">
+ <path
+ transform="matrix(0.8,0,0,0.8,10,0)"
+ style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path20233" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="Arrow1Lend"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lend"
+ inkscape:isstock="true">
+ <path
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path20236" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="EmptyTriangleOutL"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="EmptyTriangleOutL"
+ inkscape:isstock="true">
+ <path
+ transform="matrix(0.8,0,0,0.8,-4.8,0)"
+ style="fill:context-fill;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 5.77,0 -2.88,5 V -5 Z"
+ id="path20393" />
+ </marker>
+ <clipPath
+ id="clipPath4258"
+ clipPathUnits="userSpaceOnUse">
+ <path
+ id="path4260"
+ d="M 0,11.34 H 11.34 V 0 H 0 Z" />
+ </clipPath>
+ <clipPath
+ id="clipPath4258-3"
+ clipPathUnits="userSpaceOnUse">
+ <path
+ id="path4260-6"
+ d="M 0,11.34 H 11.34 V 0 H 0 Z" />
+ </clipPath>
+ <clipPath
+ id="clipPath4258-7"
+ clipPathUnits="userSpaceOnUse">
+ <path
+ id="path4260-0"
+ d="M 0,11.34 H 11.34 V 0 H 0 Z" />
+ </clipPath>
+ <marker
+ style="overflow:visible"
+ id="Arrow1Lstart-3"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lstart"
+ inkscape:isstock="true">
+ <path
+ transform="matrix(0.8,0,0,0.8,10,0)"
+ style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path20233-6" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="Arrow1Lend-1"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lend"
+ inkscape:isstock="true">
+ <path
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path20236-0" />
+ </marker>
+ <clipPath
+ id="clipPath4258-0"
+ clipPathUnits="userSpaceOnUse">
+ <path
+ id="path4260-61"
+ d="M 0,11.34 H 11.34 V 0 H 0 Z" />
+ </clipPath>
+ <symbol
+ id="AuxillaryOp">
+ <title
+ id="title18961">Auxiliary Operation</title>
+ <desc
+ id="desc18963">Offline operation.</desc>
+ <rect
+ x="9.260417"
+ y="9.260417"
+ width="21.166666"
+ height="21.166666"
+ style="stroke-width:0.529167"
+ id="rect18965" />
+ </symbol>
+ <symbol
+ id="Connector">
+ <title
+ id="title19024">Connector</title>
+ <desc
+ id="desc19026">Exit to or entry from another part of chart.</desc>
+ <circle
+ cx="19.84375"
+ cy="19.84375"
+ r="5.2916665"
+ style="stroke-width:0.529167"
+ id="circle19028" />
+ </symbol>
+ <marker
+ style="overflow:visible"
+ id="Arrow1Lstart-8"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lstart"
+ inkscape:isstock="true">
+ <path
+ transform="matrix(0.8,0,0,0.8,10,0)"
+ style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path20233-5" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="Arrow1Lend-6"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lend"
+ inkscape:isstock="true">
+ <path
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path20236-1" />
+ </marker>
+ <filter
+ inkscape:collect="always"
+ style="color-interpolation-filters:sRGB"
+ id="filter350648"
+ x="-0.10917709"
+ y="-0.10917709"
+ width="1.2183542"
+ height="1.2183542">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="0.85263812"
+ id="feGaussianBlur350650" />
+ </filter>
+ <clipPath
+ id="clipPath4258-9"
+ clipPathUnits="userSpaceOnUse">
+ <path
+ id="path4260-7"
+ d="M 0,11.34 H 11.34 V 0 H 0 Z" />
+ </clipPath>
+ <marker
+ style="overflow:visible"
+ id="Arrow1Lend-3"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lend"
+ inkscape:isstock="true">
+ <path
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path20236-6" />
+ </marker>
+ </defs>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-39.016081,-39.231054)">
+ <use
+ xlink:href="#AuxillaryOp"
+ style="fill:#800080;stroke:#59316b;stroke-width:0.0822417;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter350648)"
+ id="use132437"
+ x="0"
+ y="0"
+ width="100%"
+ height="100%"
+ transform="matrix(6.4761141,0,0,4.2447218,50.339004,138.18261)" />
+ <use
+ xlink:href="#AuxillaryOp"
+ style="fill:#ffffff;stroke:#000000"
+ id="use265468"
+ x="0"
+ y="0"
+ width="100%"
+ height="100%"
+ transform="matrix(1.3391931,0,0,0.9961219,170.10623,195.62004)" />
+ <text
+ xml:space="preserve"
+ style="font-size:7.76111px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
+ x="120.89084"
+ y="279.25372"
+ id="text39324-8-9"><tspan
+ sodipodi:role="line"
+ style="font-size:7.76111px;stroke-width:0.264583"
+ x="120.89084"
+ y="279.25372"
+ id="tspan193052"><tspan
+ style="font-weight:bold"
+ id="tspan161473-6">Phase 3</tspan> - periodically resolve</tspan><tspan
+ sodipodi:role="line"
+ style="font-size:7.76111px;stroke-width:0.264583"
+ x="120.89084"
+ y="288.95511"
+ id="tspan191514">all domains in allowlist locally</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:7.76111px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
+ x="204.31744"
+ y="151.77661"
+ id="text39324-8"><tspan
+ sodipodi:role="line"
+ style="font-size:7.76111px;stroke-width:0.264583"
+ x="204.31744"
+ y="151.77661"
+ id="tspan123782"><tspan
+ style="font-weight:bold"
+ id="tspan161473">Phase 2</tspan> - compile allowlist</tspan><tspan
+ sodipodi:role="line"
+ style="font-size:7.76111px;stroke-width:0.264583"
+ x="204.31744"
+ y="161.478"
+ id="tspan28648">with unqiue domain names</tspan></text>
+ <g
+ id="g42075"
+ transform="translate(0,-4.7923209)">
+ <image
+ preserveAspectRatio="none"
+ inkscape:svg-dpi="96"
+ width="31.920643"
+ height="41.946896"
+ xlink:href="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzdmcKICAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5v cmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y Zy8yMDAwL3N2ZyIKICAgIHhtbG5zOmNjPSJodHRwOi8vd2ViLnJlc291cmNlLm9yZy9jYy8iCiAg ICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIKICAgIHhtbG5zOmRj PSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgIHhtbG5zOnN2Zz0iaHR0cDov L3d3dy53My5vcmcvMjAwMC9zdmciCiAgICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtz Y2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgIHhtbG5zOnNvZGlwb2RpPSJodHRwOi8v c29kaXBvZGkuc291cmNlZm9yZ2UubmV0L0RURC9zb2RpcG9kaS0wLmR0ZCIKICAgIHhtbG5zOm5z MT0iaHR0cDovL3NvemkuYmFpZXJvdWdlLmZyIgogICAgYmFzZVByb2ZpbGU9ImZ1bGwiCiAgICB2 ZXJzaW9uPSIxLjEiCiAgICB2aWV3Qm94PSIwIDAgMzUwIDUwMCIKICA+CiAgPGRlZnMKICAgID4K ICAgIDxwYXRoCiAgICAgICAgaWQ9ImNvZyIKICAgICAgICB0cmFuc2Zvcm09InNjYWxlKC40KSIK ICAgICAgICBmaWxsPSJkYXJrcmVkIgogICAgICAgIGQ9Im0yMTMgMGwtNCAzOS01IDM5LTIwIDkt MjAgOS0zMi0yNi0zMS0yNS0yNyAyNy0yNyAyNyAyNSAzMSAyNSAzMi05IDE5LTkgMTktMzUgNWMt MjAgMy0zNyA1LTQwIDZzLTQgMTItNCAzOXYzN2wzOSA0YzI0IDMgNDAgNiA0MCA4czMgMTIgOCAy MWw4IDE4LTI1IDMwLTI1IDMxIDI3IDI3IDI3IDI3IDMwLTIzIDMwLTI0IDE4IDljMTAgNSAyMCAx MCAyMiAxMCAxIDEgNCAxNiA3IDM0IDIgMTggNCAzNCA1IDM3czExIDQgMzggNGgzOGw0LTM2YzMt MjggNS0zNyAxMC0zOCAzLTEgMTMtNSAyMy0xMGwxNy04IDI5IDI0IDMwIDIzIDI2LTI3YzIwLTIw IDI2LTI4IDI0LTMxcy0xMy0xNi0yMy0yOWwtMjAtMjUgOS0xOGM1LTEwIDgtMjAgOC0yMiAwLTQg OC02IDUyLTExbDIyLTMgMS0zOCAxLTM4LTM4LTRjLTIzLTMtMzgtNi0zOC04cy0zLTEyLTgtMjJs LTktMTkgMjQtMjkgMjQtMzAtMjctMjctMjctMjctMzAgMjQtMzAgMjQtMjEtOS0yMS05LTUtMzct NS0zOC0zOC0xLTM4LTF6bTM3IDE3MGM0NCAwIDgwIDM2IDgwIDgwcy0zNiA4MC04MCA4MC04MC0z Ni04MC04MCAzNi04MCA4MC04MHoiCiAgICAvPgogIDwvZGVmcwogID4KICA8dXNlCiAgICAgIG9w YWNpdHk9Ii4zIgogICAgICB4bGluazpocmVmPSIjY29nIgogIC8+CiAgPHVzZQogICAgICBvcGFj aXR5PSIuNiIKICAgICAgeGxpbms6aHJlZj0iI2NvZyIKICAgICAgdHJhbnNmb3JtPSJ0cmFuc2xh dGUoMTIwLDEyMCkgcm90YXRlKDIyLjUgMTAwLDEwMCkiCiAgLz4KICA8dXNlCiAgICAgIHhsaW5r OmhyZWY9IiNjb2ciCiAgICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsMjQwKSIKICAvPgogIDxt ZXRhZGF0YQogICAgPgogICAgPHJkZjpSREYKICAgICAgPgogICAgICA8Y2M6V29yawogICAgICAg ID4KICAgICAgICA8ZGM6Zm9ybWF0CiAgICAgICAgICA+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0 CiAgICAgICAgPgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0 cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiCiAgICAgICAgLz4KICAgICAgICA8 Y2M6bGljZW5zZQogICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1v bnMub3JnL2xpY2Vuc2VzL3B1YmxpY2RvbWFpbi8iCiAgICAgICAgLz4KICAgICAgICA8ZGM6cHVi bGlzaGVyCiAgICAgICAgICA+CiAgICAgICAgICA8Y2M6QWdlbnQKICAgICAgICAgICAgICByZGY6 YWJvdXQ9Imh0dHA6Ly9vcGVuY2xpcGFydC5vcmcvIgogICAgICAgICAgICA+CiAgICAgICAgICAg IDxkYzp0aXRsZQogICAgICAgICAgICAgID5PcGVuY2xpcGFydDwvZGM6dGl0bGUKICAgICAgICAg ICAgPgogICAgICAgICAgPC9jYzpBZ2VudAogICAgICAgICAgPgogICAgICAgIDwvZGM6cHVibGlz aGVyCiAgICAgICAgPgogICAgICAgIDxkYzp0aXRsZQogICAgICAgICAgPlBpbmsgY29nd2hlZWxz PC9kYzp0aXRsZQogICAgICAgID4KICAgICAgICA8ZGM6ZGF0ZQogICAgICAgICAgPjIwMTMtMDkt MTRUMTY6MDA6NDE8L2RjOmRhdGUKICAgICAgICA+CiAgICAgICAgPGRjOmRlc2NyaXB0aW9uCiAg ICAgICAgICA+U29tZSBjb2d3aGVlbHMgZnJvbSBodHRwczovL2NvbW1vbnMud2lraW1lZGlhLm9y Zy93aWtpL0ZpbGU6Q29nLXNjcmlwdGVkLXN2Zy5zdmc8L2RjOmRlc2NyaXB0aW9uCiAgICAgICAg PgogICAgICAgIDxkYzpzb3VyY2UKICAgICAgICAgID5odHRwczovL29wZW5jbGlwYXJ0Lm9yZy9k ZXRhaWwvMTgzNDM2L3BpbmstY29nd2hlZWxzLWJ5LWxpZnRhcm4tMTgzNDM2PC9kYzpzb3VyY2UK ICAgICAgICA+CiAgICAgICAgPGRjOmNyZWF0b3IKICAgICAgICAgID4KICAgICAgICAgIDxjYzpB Z2VudAogICAgICAgICAgICA+CiAgICAgICAgICAgIDxkYzp0aXRsZQogICAgICAgICAgICAgID5s aWZ0YXJuPC9kYzp0aXRsZQogICAgICAgICAgICA+CiAgICAgICAgICA8L2NjOkFnZW50CiAgICAg ICAgICA+CiAgICAgICAgPC9kYzpjcmVhdG9yCiAgICAgICAgPgogICAgICAgIDxkYzpzdWJqZWN0 CiAgICAgICAgICA+CiAgICAgICAgICA8cmRmOkJhZwogICAgICAgICAgICA+CiAgICAgICAgICAg IDxyZGY6bGkKICAgICAgICAgICAgICA+Y29nPC9yZGY6bGkKICAgICAgICAgICAgPgogICAgICAg ICAgICA8cmRmOmxpCiAgICAgICAgICAgICAgPmNvZ3doZWVsPC9yZGY6bGkKICAgICAgICAgICAg PgogICAgICAgICAgICA8cmRmOmxpCiAgICAgICAgICAgICAgPmNvZ3doZWVsczwvcmRmOmxpCiAg ICAgICAgICAgID4KICAgICAgICAgICAgPHJkZjpsaQogICAgICAgICAgICAgID5nZWFyPC9yZGY6 bGkKICAgICAgICAgICAgPgogICAgICAgICAgICA8cmRmOmxpCiAgICAgICAgICAgICAgPmdlYXJz PC9yZGY6bGkKICAgICAgICAgICAgPgogICAgICAgICAgICA8cmRmOmxpCiAgICAgICAgICAgICAg PnBpbms8L3JkZjpsaQogICAgICAgICAgICA+CiAgICAgICAgICAgIDxyZGY6bGkKICAgICAgICAg ICAgICA+cmVkPC9yZGY6bGkKICAgICAgICAgICAgPgogICAgICAgICAgPC9yZGY6QmFnCiAgICAg ICAgICA+CiAgICAgICAgPC9kYzpzdWJqZWN0CiAgICAgICAgPgogICAgICA8L2NjOldvcmsKICAg ICAgPgogICAgICA8Y2M6TGljZW5zZQogICAgICAgICAgcmRmOmFib3V0PSJodHRwOi8vY3JlYXRp dmVjb21tb25zLm9yZy9saWNlbnNlcy9wdWJsaWNkb21haW4vIgogICAgICAgID4KICAgICAgICA8 Y2M6cGVybWl0cwogICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1v bnMub3JnL25zI1JlcHJvZHVjdGlvbiIKICAgICAgICAvPgogICAgICAgIDxjYzpwZXJtaXRzCiAg ICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjRGlz dHJpYnV0aW9uIgogICAgICAgIC8+CiAgICAgICAgPGNjOnBlcm1pdHMKICAgICAgICAgICAgcmRm OnJlc291cmNlPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyNEZXJpdmF0aXZlV29ya3Mi CiAgICAgICAgLz4KICAgICAgPC9jYzpMaWNlbnNlCiAgICAgID4KICAgIDwvcmRmOlJERgogICAg PgogIDwvbWV0YWRhdGEKICA+Cjwvc3ZnCj4K "
+ id="image746-2"
+ x="212.19563"
+ y="87.908249" />
+ <g
+ id="g42049"
+ transform="translate(-12.160676,6.5898579)">
+ <image
+ preserveAspectRatio="none"
+ inkscape:svg-dpi="96"
+ width="45.069122"
+ height="49.637085"
+ xlink:href="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjwh LS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgo8 c3ZnIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5z IyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczpjYz0iaHR0cDovL2Ny ZWF0aXZlY29tbW9ucy5vcmcvbnMjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1l bnRzLzEuMS8iIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOmlu a3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIiB4bWxu czpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGkt MC5kdGQiIHhtbG5zOm5zMT0iaHR0cDovL3NvemkuYmFpZXJvdWdlLmZyIiB4bWxuczp4bGluaz0i aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgaWQ9InN2ZzM2MDkiIHZpZXdCb3g9IjAgMCAx NzAuMzQgMjI1LjIzIiB2ZXJzaW9uPSIxLjEiIGlua3NjYXBlOnZlcnNpb249IjAuOTEgcjEzNzI1 Ij4KICA8dGl0bGUgaWQ9InRpdGxlMzYzMCI+RG9jdW1lbnQ8L3RpdGxlPgogIDxnIGlkPSJsYXll cjEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMTQuODMgLTQyMi42KSI+CiAgICA8ZyBpZD0iZzU1 MDgiIHRyYW5zZm9ybT0ibWF0cml4KC43NTI0OSAwIDAgLjc0MDI4IC0yMDUuMzkgNTI5LjgxKSI+ CiAgICAgIDxwYXRoIGlkPSJyZWN0NTQ5OCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13 aWR0aDoxMy4zOTg7ZmlsbDpub25lIiBkPSJtNTY1LjEyLTEzOC4xMnYyOTAuODhoMjEyLjc1di0y MjAuMDlsLTEzMi42OS03MC43ODFoLTgwLjA2MnoiLz4KICAgICAgPHBhdGggaWQ9InJlY3Q1NTAw IiBzdHlsZT0iZmlsbDojYzhiN2I3IiBkPSJtNzMzLjUyLTAuMTUyMTEgMzguMDc4LTUyLjQwMy0x MzIuNTUtNzUuMTU5IDg5LjU0OCAxMjEuMjYgNC45MjM0IDYuMzAyNHoiLz4KICAgICAgPHBhdGgg aWQ9InBhdGg1NTAzIiBzdHlsZT0ic3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZTojMDAwMDAw O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS13aWR0aDoxMy4zOTg7ZmlsbDojZmZmZmZmIiBk PSJtNzQ2LjM1LTM4LjY5MiAzMS43Ny0zOC41OTktMTI5LjI1LTU3LjkyNyA5Ny40ODMgOTYuNTI2 eiIvPgogICAgPC9nPgogIDwvZz4KICA8bWV0YWRhdGE+CiAgICA8cmRmOlJERj4KICAgICAgPGNj Oldvcms+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAg ICAgPGRjOnR5cGUgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3Rp bGxJbWFnZSIvPgogICAgICAgIDxjYzpsaWNlbnNlIHJkZjpyZXNvdXJjZT0iaHR0cDovL2NyZWF0 aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvcHVibGljZG9tYWluLyIvPgogICAgICAgIDxkYzpwdWJs aXNoZXI+CiAgICAgICAgICA8Y2M6QWdlbnQgcmRmOmFib3V0PSJodHRwOi8vb3BlbmNsaXBhcnQu b3JnLyI+CiAgICAgICAgICAgIDxkYzp0aXRsZT5PcGVuY2xpcGFydDwvZGM6dGl0bGU+CiAgICAg ICAgICA8L2NjOkFnZW50PgogICAgICAgIDwvZGM6cHVibGlzaGVyPgogICAgICAgIDxkYzp0aXRs ZT5Eb2N1bWVudDwvZGM6dGl0bGU+CiAgICAgICAgPGRjOmRhdGU+MjAxMi0wNC0wOFQwNjo1MDoz MzwvZGM6ZGF0ZT4KICAgICAgICA8ZGM6ZGVzY3JpcHRpb24+QSBkb2N1bWVudCBpY29uIGZyb20g dGhlIGZhY2lsaXRhdGlvbiBzZXQuPC9kYzpkZXNjcmlwdGlvbj4KICAgICAgICA8ZGM6c291cmNl Pmh0dHBzOi8vb3BlbmNsaXBhcnQub3JnL2RldGFpbC8xNjk0MTYvZG9jdW1lbnQtYnktYml0dGVy anVnPC9kYzpzb3VyY2U+CiAgICAgICAgPGRjOmNyZWF0b3I+CiAgICAgICAgICA8Y2M6QWdlbnQ+ CiAgICAgICAgICAgIDxkYzp0aXRsZT5iaXR0ZXJqdWc8L2RjOnRpdGxlPgogICAgICAgICAgPC9j YzpBZ2VudD4KICAgICAgICA8L2RjOmNyZWF0b3I+CiAgICAgICAgPGRjOnN1YmplY3Q+CiAgICAg ICAgICA8cmRmOkJhZz4KICAgICAgICAgICAgPHJkZjpsaT5Eb2N1bWVudDwvcmRmOmxpPgogICAg ICAgICAgICA8cmRmOmxpPmFic3RyYWN0PC9yZGY6bGk+CiAgICAgICAgICAgIDxyZGY6bGk+Y29y bmVyPC9yZGY6bGk+CiAgICAgICAgICAgIDxyZGY6bGk+Zm9sZDwvcmRmOmxpPgogICAgICAgICAg ICA8cmRmOmxpPnBhcGVyPC9yZGY6bGk+CiAgICAgICAgICA8L3JkZjpCYWc+CiAgICAgICAgPC9k YzpzdWJqZWN0PgogICAgICA8L2NjOldvcms+CiAgICAgIDxjYzpMaWNlbnNlIHJkZjphYm91dD0i aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvcHVibGljZG9tYWluLyI+CiAgICAg ICAgPGNjOnBlcm1pdHMgcmRmOnJlc291cmNlPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9u cyNSZXByb2R1Y3Rpb24iLz4KICAgICAgICA8Y2M6cGVybWl0cyByZGY6cmVzb3VyY2U9Imh0dHA6 Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL25zI0Rpc3RyaWJ1dGlvbiIvPgogICAgICAgIDxjYzpwZXJt aXRzIHJkZjpyZXNvdXJjZT0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjRGVyaXZhdGl2 ZVdvcmtzIi8+CiAgICAgIDwvY2M6TGljZW5zZT4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRh Pgo8L3N2Zz4K "
+ id="image844-6"
+ x="258.59555"
+ y="74.910477" />
+ <text
+ xml:space="preserve"
+ style="font-size:6.35px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
+ x="269.35754"
+ y="97.615578"
+ id="text47096-4"><tspan
+ sodipodi:role="line"
+ id="tspan47094-3"
+ style="font-size:6.35px;stroke-width:0.264583"
+ x="269.35754"
+ y="97.615578">foo.org</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.35px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
+ x="263.29333"
+ y="105.99963"
+ id="text47096-2-1"><tspan
+ sodipodi:role="line"
+ id="tspan47094-0-4"
+ style="font-size:6.35px;stroke-width:0.264583"
+ x="263.29333"
+ y="105.99963">cdn.foo.org</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.35px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
+ x="263.32269"
+ y="114.00768"
+ id="text47096-23-9"><tspan
+ sodipodi:role="line"
+ style="font-size:6.35px;stroke-width:0.264583"
+ x="263.32269"
+ y="114.00768"
+ id="tspan115821">ads.foo.org</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.35px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
+ x="278.09979"
+ y="117.81873"
+ id="text118919-0"><tspan
+ sodipodi:role="line"
+ style="stroke-width:0.264583"
+ x="278.09979"
+ y="117.81873"
+ id="tspan118921-6">...</tspan></text>
+ </g>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-size:9.87778px;line-height:1.25;font-family:sans-serif;stroke-width:0.384866"
+ x="150.32043"
+ y="46.735851"
+ id="text141573-3"><tspan
+ sodipodi:role="line"
+ style="font-weight:bold;font-size:9.87778px;stroke-width:0.384866"
+ x="150.32043"
+ y="46.735851"
+ id="tspan141583-5">central party</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:9.87778px;line-height:1.25;font-family:sans-serif;stroke-width:0.384866"
+ x="163.69237"
+ y="172.31128"
+ id="text141573-3-3"><tspan
+ sodipodi:role="line"
+ style="font-weight:bold;font-size:9.87778px;stroke-width:0.384866"
+ x="163.69237"
+ y="172.31128"
+ id="tspan141583-5-5">relay</tspan></text>
+ <use
+ xlink:href="#AuxillaryOp"
+ style="fill:#ffffff;stroke:#000000"
+ id="use195341"
+ x="0"
+ y="0"
+ width="100%"
+ height="100%"
+ transform="matrix(2.7111909,0,0,3.0465015,91.170814,167.07129)" />
+ <text
+ xml:space="preserve"
+ style="font-size:6.35px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
+ x="125.21515"
+ y="207.75603"
+ id="text197942"><tspan
+ sodipodi:role="line"
+ id="tspan197940"
+ style="stroke-width:0.264583"
+ x="125.21515"
+ y="207.75603">foo.org &lt;IP&gt;</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.35px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
+ x="124.58415"
+ y="237.75603"
+ id="text197942-2"><tspan
+ sodipodi:role="line"
+ style="stroke-width:0.264583"
+ x="124.58415"
+ y="237.75603"
+ id="tspan216926">bar.org &lt;IP&gt;</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.35px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
+ x="123.3081"
+ y="247.79585"
+ id="text197942-2-2"><tspan
+ sodipodi:role="line"
+ style="stroke-width:0.264583"
+ x="123.3081"
+ y="247.79585"
+ id="tspan216926-2">baz.org &lt;IP&gt;</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.35px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
+ x="117.81051"
+ y="217.75603"
+ id="text197942-0"><tspan
+ sodipodi:role="line"
+ id="tspan197940-4"
+ style="stroke-width:0.264583"
+ x="117.81051"
+ y="217.75603">cdn.foo.org &lt;IP&gt;</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.35px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
+ x="117.7795"
+ y="227.75603"
+ id="text197942-0-8"><tspan
+ sodipodi:role="line"
+ style="stroke-width:0.264583"
+ x="117.7795"
+ y="227.75603"
+ id="tspan205582">ads.foo.org &lt;IP&gt;</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.35px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
+ x="132.48187"
+ y="253.71907"
+ id="text222454"><tspan
+ sodipodi:role="line"
+ style="stroke-width:0.264583"
+ x="132.48187"
+ y="253.71907"
+ id="tspan243464">... </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.35px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
+ x="159.98187"
+ y="253.71907"
+ id="text242464"><tspan
+ sodipodi:role="line"
+ id="tspan242462"
+ style="stroke-width:0.264583"
+ x="159.98187"
+ y="253.71907">...</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.188829;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Lend-3)"
+ d="M 87.769169,229.39894 H 110.90383"
+ id="path245597-7" />
+ <text
+ xml:space="preserve"
+ style="font-size:5.64444px;line-height:1.25;font-family:sans-serif;fill:#e3dbdb;stroke-width:0.264583"
+ x="146.05469"
+ y="184.60161"
+ id="text247911"><tspan
+ sodipodi:role="line"
+ id="tspan247909"
+ style="font-weight:bold;font-size:5.64444px;text-align:center;text-anchor:middle;fill:#e3dbdb;stroke-width:0.264583"
+ x="146.05469"
+ y="184.60161">Shared</tspan><tspan
+ sodipodi:role="line"
+ style="font-weight:bold;font-size:5.64444px;text-align:center;text-anchor:middle;fill:#e3dbdb;stroke-width:0.264583"
+ x="146.05469"
+ y="191.65717"
+ id="tspan249695">preload cache</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:5.64444px;line-height:1.25;font-family:sans-serif;fill:#e3dbdb;stroke-width:0.264583"
+ x="212.68121"
+ y="184.60161"
+ id="text247911-0"><tspan
+ sodipodi:role="line"
+ style="font-weight:bold;font-size:5.64444px;text-align:center;text-anchor:middle;fill:#e3dbdb;stroke-width:0.264583"
+ x="212.68121"
+ y="184.60161"
+ id="tspan249695-1">Per-circuit caches</tspan><tspan
+ sodipodi:role="line"
+ style="font-weight:bold;font-size:5.64444px;text-align:center;text-anchor:middle;fill:#e3dbdb;stroke-width:0.264583"
+ x="212.68121"
+ y="191.65717"
+ id="tspan252089">without any sharing</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.35px;line-height:1.25;font-family:sans-serif;fill:#e3dbdb;stroke-width:0.264583"
+ x="182.99969"
+ y="203.61807"
+ id="text267626"><tspan
+ sodipodi:role="line"
+ id="tspan267624"
+ style="font-size:6.35px;fill:#e3dbdb;stroke-width:0.264583"
+ x="182.99969"
+ y="203.61807">Circuit A</tspan></text>
+ <use
+ xlink:href="#AuxillaryOp"
+ style="fill:#ffffff;stroke:#000000"
+ id="use265468-0"
+ x="0"
+ y="0"
+ width="100%"
+ height="100%"
+ transform="matrix(1.3391931,0,0,0.9961219,201.44371,195.62004)" />
+ <text
+ xml:space="preserve"
+ style="font-size:6.35px;line-height:1.25;font-family:sans-serif;fill:#e3dbdb;stroke-width:0.264583"
+ x="214.33716"
+ y="203.61807"
+ id="text267626-9"><tspan
+ sodipodi:role="line"
+ id="tspan267624-1"
+ style="font-size:6.35px;fill:#e3dbdb;stroke-width:0.264583"
+ x="214.33716"
+ y="203.61807">Circuit B</tspan></text>
+ <use
+ xlink:href="#AuxillaryOp"
+ style="fill:#ffffff;stroke:#000000"
+ id="use265468-7"
+ x="0"
+ y="0"
+ width="100%"
+ height="100%"
+ transform="matrix(1.3391931,0,0,0.9961219,170.10592,219.76682)" />
+ <text
+ xml:space="preserve"
+ style="font-size:6.35px;line-height:1.25;font-family:sans-serif;fill:#e3dbdb;stroke-width:0.264583"
+ x="182.70322"
+ y="256.8056"
+ id="text267626-7"><tspan
+ sodipodi:role="line"
+ id="tspan267624-11"
+ style="font-size:6.35px;fill:#e3dbdb;stroke-width:0.264583"
+ x="182.70322"
+ y="256.8056">Circuit C</tspan></text>
+ <use
+ xlink:href="#AuxillaryOp"
+ style="fill:#ffffff;stroke:#000000"
+ id="use265468-0-5"
+ x="0"
+ y="0"
+ width="100%"
+ height="100%"
+ transform="matrix(1.3391931,0,0,0.9961219,201.4434,219.76683)" />
+ <text
+ xml:space="preserve"
+ style="font-size:6.35px;line-height:1.25;font-family:sans-serif;fill:#e3dbdb;stroke-width:0.264583"
+ x="214.04068"
+ y="256.8056"
+ id="text267626-9-9"><tspan
+ sodipodi:role="line"
+ id="tspan267624-1-7"
+ style="font-size:6.35px;fill:#e3dbdb;stroke-width:0.264583"
+ x="214.04068"
+ y="256.8056">Circuit D</tspan></text>
+ <use
+ xlink:href="#Connector"
+ style="fill:#000000;stroke:#000000"
+ id="use286452"
+ x="0"
+ y="0"
+ width="100%"
+ height="100%"
+ transform="translate(260.60151,203.49378)" />
+ <use
+ xlink:href="#Connector"
+ style="fill:#000000;stroke:#000000"
+ id="use286485"
+ x="0"
+ y="0"
+ width="100%"
+ height="100%"
+ transform="matrix(0.62627983,0,0,0.62627983,287.26915,201.16267)" />
+ <use
+ xlink:href="#Connector"
+ style="fill:#000000;stroke:#000000"
+ id="use286514"
+ x="0"
+ y="0"
+ width="100%"
+ height="100%"
+ transform="matrix(1.7675124,0,0,1.8148081,267.16148,197.49215)" />
+ <use
+ xlink:href="#Connector"
+ style="fill:#000000;stroke:#000000"
+ id="use286543"
+ x="0"
+ y="0"
+ width="100%"
+ height="100%"
+ transform="matrix(0.32203591,0,0,0.32203591,285.88929,214.32011)" />
+ <use
+ xlink:href="#Connector"
+ style="fill:#000000;stroke:#000000"
+ id="use286572"
+ x="0"
+ y="0"
+ width="100%"
+ height="100%"
+ transform="matrix(0.22896026,0,0,0.22896026,271.99081,227.94076)" />
+ <use
+ xlink:href="#Connector"
+ style="fill:#000000;stroke:#000000"
+ id="use286601"
+ x="0"
+ y="0"
+ width="100%"
+ height="100%"
+ transform="matrix(0.41887097,0,0,0.41887097,276.71473,232.09806)" />
+ <use
+ xlink:href="#Connector"
+ style="fill:#000000;stroke:#000000"
+ id="use286630"
+ x="0"
+ y="0"
+ width="100%"
+ height="100%"
+ transform="matrix(0.59805015,0,0,0.59805015,308.39824,225.69642)" />
+ <use
+ xlink:href="#Connector"
+ style="fill:#000000;stroke:#000000"
+ id="use286659"
+ x="0"
+ y="0"
+ width="100%"
+ height="100%"
+ transform="matrix(0.18981869,0,0,0.18981869,312.59608,214.1791)" />
+ <use
+ xlink:href="#Connector"
+ style="fill:#000000;stroke:#000000"
+ id="use286688"
+ x="0"
+ y="0"
+ width="100%"
+ height="100%"
+ transform="matrix(0.17756172,0,0,0.17756172,314.32185,218.07642)" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 282.84226,224.72766 16.89521,8.22082"
+ id="path286788" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 282.84226,224.72766 9.24705,-3.97375"
+ id="path286792" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 318.13979,221.99684 2.58324,15.8614"
+ id="path286794" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 316.41794,217.92136 -15.95991,-4.4174"
+ id="path286796" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 276.92327,233.15939 8.19229,7.47513"
+ id="path286798" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 285.11556,240.63452 -3.56695,-13.33556"
+ id="path286800" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 301.54124,225.40244 -1.44981,-9.58557"
+ id="path286915" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 309.50144,235.61937 9.20475,2.17804"
+ id="path287030" />
+ <text
+ xml:space="preserve"
+ style="font-size:7.05556px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
+ x="277.85809"
+ y="205.14281"
+ id="text291742"><tspan
+ sodipodi:role="line"
+ id="tspan291740"
+ style="font-size:7.05556px;text-align:center;text-anchor:middle;stroke-width:0.264583"
+ x="277.85809"
+ y="205.14281">DNS</tspan><tspan
+ sodipodi:role="line"
+ style="font-size:7.05556px;text-align:center;text-anchor:middle;stroke-width:0.264583"
+ x="277.85809"
+ y="213.96225"
+ id="tspan300714">hierarchy</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.35px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
+ x="193.21259"
+ y="216.56465"
+ id="text310768"><tspan
+ sodipodi:role="line"
+ style="stroke-width:0.264583"
+ x="193.21259"
+ y="216.56465"
+ id="tspan310770">...</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.35px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
+ x="224.71259"
+ y="216.26466"
+ id="text310768-8"><tspan
+ sodipodi:role="line"
+ style="stroke-width:0.264583"
+ x="224.71259"
+ y="216.26466"
+ id="tspan310770-4">...</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.35px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
+ x="224.71259"
+ y="240.26466"
+ id="text315480"><tspan
+ sodipodi:role="line"
+ style="stroke-width:0.264583"
+ x="224.71259"
+ y="240.26466"
+ id="tspan315482">...</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.35px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
+ x="193.21259"
+ y="240.26466"
+ id="text320216"><tspan
+ sodipodi:role="line"
+ id="tspan320214"
+ style="stroke-width:0.264583"
+ x="193.21259"
+ y="240.26466">...</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.35px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
+ x="114.83587"
+ y="53.926041"
+ id="text86572"><tspan
+ sodipodi:role="line"
+ style="text-align:center;text-anchor:middle;stroke-width:0.264583"
+ x="114.83587"
+ y="53.926041"
+ id="tspan86594">Store domains found</tspan><tspan
+ sodipodi:role="line"
+ style="text-align:center;text-anchor:middle;stroke-width:0.264583"
+ x="114.83587"
+ y="61.863541"
+ id="tspan12129">while loading foo.org,</tspan><tspan
+ sodipodi:role="line"
+ style="text-align:center;text-anchor:middle;stroke-width:0.264583"
+ x="114.83587"
+ y="69.801041"
+ id="tspan12237">bar.org, baz.org, ..., from</tspan><tspan
+ sodipodi:role="line"
+ style="text-align:center;text-anchor:middle;stroke-width:0.264583"
+ x="114.83587"
+ y="77.738541"
+ id="tspan262940">several vantage points</tspan><tspan
+ sodipodi:role="line"
+ style="text-align:center;text-anchor:middle;stroke-width:0.264583"
+ x="114.83587"
+ y="85.676041"
+ id="tspan12670" /></text>
+ <text
+ xml:space="preserve"
+ style="font-size:7.76111px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
+ x="75.484276"
+ y="151.77661"
+ id="text141573"><tspan
+ sodipodi:role="line"
+ style="font-size:7.76111px;stroke-width:0.264583"
+ x="75.484276"
+ y="151.77661"
+ id="tspan141579"><tspan
+ style="font-weight:bold"
+ id="tspan149241">Phase 1</tspan> - visit sites</tspan><tspan
+ sodipodi:role="line"
+ style="font-size:7.76111px;stroke-width:0.264583"
+ x="75.484276"
+ y="161.478"
+ id="tspan141583">on a popularity list</tspan></text>
+ <g
+ id="g42025"
+ transform="translate(5.2384051,-10.302621)">
+ <image
+ preserveAspectRatio="none"
+ inkscape:svg-dpi="96"
+ width="45.069122"
+ height="49.637085"
+ xlink:href="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjwh LS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgo8 c3ZnIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5z IyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczpjYz0iaHR0cDovL2Ny ZWF0aXZlY29tbW9ucy5vcmcvbnMjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1l bnRzLzEuMS8iIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOmlu a3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIiB4bWxu czpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGkt MC5kdGQiIHhtbG5zOm5zMT0iaHR0cDovL3NvemkuYmFpZXJvdWdlLmZyIiB4bWxuczp4bGluaz0i aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgaWQ9InN2ZzM2MDkiIHZpZXdCb3g9IjAgMCAx NzAuMzQgMjI1LjIzIiB2ZXJzaW9uPSIxLjEiIGlua3NjYXBlOnZlcnNpb249IjAuOTEgcjEzNzI1 Ij4KICA8dGl0bGUgaWQ9InRpdGxlMzYzMCI+RG9jdW1lbnQ8L3RpdGxlPgogIDxnIGlkPSJsYXll cjEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMTQuODMgLTQyMi42KSI+CiAgICA8ZyBpZD0iZzU1 MDgiIHRyYW5zZm9ybT0ibWF0cml4KC43NTI0OSAwIDAgLjc0MDI4IC0yMDUuMzkgNTI5LjgxKSI+ CiAgICAgIDxwYXRoIGlkPSJyZWN0NTQ5OCIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS13 aWR0aDoxMy4zOTg7ZmlsbDpub25lIiBkPSJtNTY1LjEyLTEzOC4xMnYyOTAuODhoMjEyLjc1di0y MjAuMDlsLTEzMi42OS03MC43ODFoLTgwLjA2MnoiLz4KICAgICAgPHBhdGggaWQ9InJlY3Q1NTAw IiBzdHlsZT0iZmlsbDojYzhiN2I3IiBkPSJtNzMzLjUyLTAuMTUyMTEgMzguMDc4LTUyLjQwMy0x MzIuNTUtNzUuMTU5IDg5LjU0OCAxMjEuMjYgNC45MjM0IDYuMzAyNHoiLz4KICAgICAgPHBhdGgg aWQ9InBhdGg1NTAzIiBzdHlsZT0ic3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZTojMDAwMDAw O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS13aWR0aDoxMy4zOTg7ZmlsbDojZmZmZmZmIiBk PSJtNzQ2LjM1LTM4LjY5MiAzMS43Ny0zOC41OTktMTI5LjI1LTU3LjkyNyA5Ny40ODMgOTYuNTI2 eiIvPgogICAgPC9nPgogIDwvZz4KICA8bWV0YWRhdGE+CiAgICA8cmRmOlJERj4KICAgICAgPGNj Oldvcms+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAg ICAgPGRjOnR5cGUgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3Rp bGxJbWFnZSIvPgogICAgICAgIDxjYzpsaWNlbnNlIHJkZjpyZXNvdXJjZT0iaHR0cDovL2NyZWF0 aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvcHVibGljZG9tYWluLyIvPgogICAgICAgIDxkYzpwdWJs aXNoZXI+CiAgICAgICAgICA8Y2M6QWdlbnQgcmRmOmFib3V0PSJodHRwOi8vb3BlbmNsaXBhcnQu b3JnLyI+CiAgICAgICAgICAgIDxkYzp0aXRsZT5PcGVuY2xpcGFydDwvZGM6dGl0bGU+CiAgICAg ICAgICA8L2NjOkFnZW50PgogICAgICAgIDwvZGM6cHVibGlzaGVyPgogICAgICAgIDxkYzp0aXRs ZT5Eb2N1bWVudDwvZGM6dGl0bGU+CiAgICAgICAgPGRjOmRhdGU+MjAxMi0wNC0wOFQwNjo1MDoz MzwvZGM6ZGF0ZT4KICAgICAgICA8ZGM6ZGVzY3JpcHRpb24+QSBkb2N1bWVudCBpY29uIGZyb20g dGhlIGZhY2lsaXRhdGlvbiBzZXQuPC9kYzpkZXNjcmlwdGlvbj4KICAgICAgICA8ZGM6c291cmNl Pmh0dHBzOi8vb3BlbmNsaXBhcnQub3JnL2RldGFpbC8xNjk0MTYvZG9jdW1lbnQtYnktYml0dGVy anVnPC9kYzpzb3VyY2U+CiAgICAgICAgPGRjOmNyZWF0b3I+CiAgICAgICAgICA8Y2M6QWdlbnQ+ CiAgICAgICAgICAgIDxkYzp0aXRsZT5iaXR0ZXJqdWc8L2RjOnRpdGxlPgogICAgICAgICAgPC9j YzpBZ2VudD4KICAgICAgICA8L2RjOmNyZWF0b3I+CiAgICAgICAgPGRjOnN1YmplY3Q+CiAgICAg ICAgICA8cmRmOkJhZz4KICAgICAgICAgICAgPHJkZjpsaT5Eb2N1bWVudDwvcmRmOmxpPgogICAg ICAgICAgICA8cmRmOmxpPmFic3RyYWN0PC9yZGY6bGk+CiAgICAgICAgICAgIDxyZGY6bGk+Y29y bmVyPC9yZGY6bGk+CiAgICAgICAgICAgIDxyZGY6bGk+Zm9sZDwvcmRmOmxpPgogICAgICAgICAg ICA8cmRmOmxpPnBhcGVyPC9yZGY6bGk+CiAgICAgICAgICA8L3JkZjpCYWc+CiAgICAgICAgPC9k YzpzdWJqZWN0PgogICAgICA8L2NjOldvcms+CiAgICAgIDxjYzpMaWNlbnNlIHJkZjphYm91dD0i aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvcHVibGljZG9tYWluLyI+CiAgICAg ICAgPGNjOnBlcm1pdHMgcmRmOnJlc291cmNlPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9u cyNSZXByb2R1Y3Rpb24iLz4KICAgICAgICA8Y2M6cGVybWl0cyByZGY6cmVzb3VyY2U9Imh0dHA6 Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL25zI0Rpc3RyaWJ1dGlvbiIvPgogICAgICAgIDxjYzpwZXJt aXRzIHJkZjpyZXNvdXJjZT0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjRGVyaXZhdGl2 ZVdvcmtzIi8+CiAgICAgIDwvY2M6TGljZW5zZT4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRh Pgo8L3N2Zz4K "
+ id="image844"
+ x="33.777676"
+ y="213.74522" />
+ <text
+ xml:space="preserve"
+ style="font-size:6.35px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
+ x="44.5397"
+ y="236.45029"
+ id="text47096"><tspan
+ sodipodi:role="line"
+ id="tspan47094"
+ style="font-size:6.35px;stroke-width:0.264583"
+ x="44.5397"
+ y="236.45029">foo.org</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.35px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
+ x="38.428299"
+ y="244.90999"
+ id="text47096-2"><tspan
+ sodipodi:role="line"
+ id="tspan47094-0"
+ style="font-size:6.35px;stroke-width:0.264583"
+ x="38.428299"
+ y="244.90999">cdn.foo.org</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.35px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
+ x="38.571056"
+ y="252.73021"
+ id="text47096-23"><tspan
+ sodipodi:role="line"
+ id="tspan47094-7"
+ style="font-size:6.35px;stroke-width:0.264583"
+ x="38.571056"
+ y="252.73021">ads.foo.org</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.35px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
+ x="52.293133"
+ y="257.54556"
+ id="text118919"><tspan
+ sodipodi:role="line"
+ style="stroke-width:0.264583"
+ x="52.293133"
+ y="257.54556"
+ id="tspan118921">...</tspan></text>
+ </g>
+ <image
+ preserveAspectRatio="none"
+ inkscape:svg-dpi="96"
+ width="31.920643"
+ height="41.946896"
+ xlink:href="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzdmcKICAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5v cmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y Zy8yMDAwL3N2ZyIKICAgIHhtbG5zOmNjPSJodHRwOi8vd2ViLnJlc291cmNlLm9yZy9jYy8iCiAg ICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIKICAgIHhtbG5zOmRj PSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgIHhtbG5zOnN2Zz0iaHR0cDov L3d3dy53My5vcmcvMjAwMC9zdmciCiAgICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtz Y2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgIHhtbG5zOnNvZGlwb2RpPSJodHRwOi8v c29kaXBvZGkuc291cmNlZm9yZ2UubmV0L0RURC9zb2RpcG9kaS0wLmR0ZCIKICAgIHhtbG5zOm5z MT0iaHR0cDovL3NvemkuYmFpZXJvdWdlLmZyIgogICAgYmFzZVByb2ZpbGU9ImZ1bGwiCiAgICB2 ZXJzaW9uPSIxLjEiCiAgICB2aWV3Qm94PSIwIDAgMzUwIDUwMCIKICA+CiAgPGRlZnMKICAgID4K ICAgIDxwYXRoCiAgICAgICAgaWQ9ImNvZyIKICAgICAgICB0cmFuc2Zvcm09InNjYWxlKC40KSIK ICAgICAgICBmaWxsPSJkYXJrcmVkIgogICAgICAgIGQ9Im0yMTMgMGwtNCAzOS01IDM5LTIwIDkt MjAgOS0zMi0yNi0zMS0yNS0yNyAyNy0yNyAyNyAyNSAzMSAyNSAzMi05IDE5LTkgMTktMzUgNWMt MjAgMy0zNyA1LTQwIDZzLTQgMTItNCAzOXYzN2wzOSA0YzI0IDMgNDAgNiA0MCA4czMgMTIgOCAy MWw4IDE4LTI1IDMwLTI1IDMxIDI3IDI3IDI3IDI3IDMwLTIzIDMwLTI0IDE4IDljMTAgNSAyMCAx MCAyMiAxMCAxIDEgNCAxNiA3IDM0IDIgMTggNCAzNCA1IDM3czExIDQgMzggNGgzOGw0LTM2YzMt MjggNS0zNyAxMC0zOCAzLTEgMTMtNSAyMy0xMGwxNy04IDI5IDI0IDMwIDIzIDI2LTI3YzIwLTIw IDI2LTI4IDI0LTMxcy0xMy0xNi0yMy0yOWwtMjAtMjUgOS0xOGM1LTEwIDgtMjAgOC0yMiAwLTQg OC02IDUyLTExbDIyLTMgMS0zOCAxLTM4LTM4LTRjLTIzLTMtMzgtNi0zOC04cy0zLTEyLTgtMjJs LTktMTkgMjQtMjkgMjQtMzAtMjctMjctMjctMjctMzAgMjQtMzAgMjQtMjEtOS0yMS05LTUtMzct NS0zOC0zOC0xLTM4LTF6bTM3IDE3MGM0NCAwIDgwIDM2IDgwIDgwcy0zNiA4MC04MCA4MC04MC0z Ni04MC04MCAzNi04MCA4MC04MHoiCiAgICAvPgogIDwvZGVmcwogID4KICA8dXNlCiAgICAgIG9w YWNpdHk9Ii4zIgogICAgICB4bGluazpocmVmPSIjY29nIgogIC8+CiAgPHVzZQogICAgICBvcGFj aXR5PSIuNiIKICAgICAgeGxpbms6aHJlZj0iI2NvZyIKICAgICAgdHJhbnNmb3JtPSJ0cmFuc2xh dGUoMTIwLDEyMCkgcm90YXRlKDIyLjUgMTAwLDEwMCkiCiAgLz4KICA8dXNlCiAgICAgIHhsaW5r OmhyZWY9IiNjb2ciCiAgICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsMjQwKSIKICAvPgogIDxt ZXRhZGF0YQogICAgPgogICAgPHJkZjpSREYKICAgICAgPgogICAgICA8Y2M6V29yawogICAgICAg ID4KICAgICAgICA8ZGM6Zm9ybWF0CiAgICAgICAgICA+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0 CiAgICAgICAgPgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0 cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiCiAgICAgICAgLz4KICAgICAgICA8 Y2M6bGljZW5zZQogICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1v bnMub3JnL2xpY2Vuc2VzL3B1YmxpY2RvbWFpbi8iCiAgICAgICAgLz4KICAgICAgICA8ZGM6cHVi bGlzaGVyCiAgICAgICAgICA+CiAgICAgICAgICA8Y2M6QWdlbnQKICAgICAgICAgICAgICByZGY6 YWJvdXQ9Imh0dHA6Ly9vcGVuY2xpcGFydC5vcmcvIgogICAgICAgICAgICA+CiAgICAgICAgICAg IDxkYzp0aXRsZQogICAgICAgICAgICAgID5PcGVuY2xpcGFydDwvZGM6dGl0bGUKICAgICAgICAg ICAgPgogICAgICAgICAgPC9jYzpBZ2VudAogICAgICAgICAgPgogICAgICAgIDwvZGM6cHVibGlz aGVyCiAgICAgICAgPgogICAgICAgIDxkYzp0aXRsZQogICAgICAgICAgPlBpbmsgY29nd2hlZWxz PC9kYzp0aXRsZQogICAgICAgID4KICAgICAgICA8ZGM6ZGF0ZQogICAgICAgICAgPjIwMTMtMDkt MTRUMTY6MDA6NDE8L2RjOmRhdGUKICAgICAgICA+CiAgICAgICAgPGRjOmRlc2NyaXB0aW9uCiAg ICAgICAgICA+U29tZSBjb2d3aGVlbHMgZnJvbSBodHRwczovL2NvbW1vbnMud2lraW1lZGlhLm9y Zy93aWtpL0ZpbGU6Q29nLXNjcmlwdGVkLXN2Zy5zdmc8L2RjOmRlc2NyaXB0aW9uCiAgICAgICAg PgogICAgICAgIDxkYzpzb3VyY2UKICAgICAgICAgID5odHRwczovL29wZW5jbGlwYXJ0Lm9yZy9k ZXRhaWwvMTgzNDM2L3BpbmstY29nd2hlZWxzLWJ5LWxpZnRhcm4tMTgzNDM2PC9kYzpzb3VyY2UK ICAgICAgICA+CiAgICAgICAgPGRjOmNyZWF0b3IKICAgICAgICAgID4KICAgICAgICAgIDxjYzpB Z2VudAogICAgICAgICAgICA+CiAgICAgICAgICAgIDxkYzp0aXRsZQogICAgICAgICAgICAgID5s aWZ0YXJuPC9kYzp0aXRsZQogICAgICAgICAgICA+CiAgICAgICAgICA8L2NjOkFnZW50CiAgICAg ICAgICA+CiAgICAgICAgPC9kYzpjcmVhdG9yCiAgICAgICAgPgogICAgICAgIDxkYzpzdWJqZWN0 CiAgICAgICAgICA+CiAgICAgICAgICA8cmRmOkJhZwogICAgICAgICAgICA+CiAgICAgICAgICAg IDxyZGY6bGkKICAgICAgICAgICAgICA+Y29nPC9yZGY6bGkKICAgICAgICAgICAgPgogICAgICAg ICAgICA8cmRmOmxpCiAgICAgICAgICAgICAgPmNvZ3doZWVsPC9yZGY6bGkKICAgICAgICAgICAg PgogICAgICAgICAgICA8cmRmOmxpCiAgICAgICAgICAgICAgPmNvZ3doZWVsczwvcmRmOmxpCiAg ICAgICAgICAgID4KICAgICAgICAgICAgPHJkZjpsaQogICAgICAgICAgICAgID5nZWFyPC9yZGY6 bGkKICAgICAgICAgICAgPgogICAgICAgICAgICA8cmRmOmxpCiAgICAgICAgICAgICAgPmdlYXJz PC9yZGY6bGkKICAgICAgICAgICAgPgogICAgICAgICAgICA8cmRmOmxpCiAgICAgICAgICAgICAg PnBpbms8L3JkZjpsaQogICAgICAgICAgICA+CiAgICAgICAgICAgIDxyZGY6bGkKICAgICAgICAg ICAgICA+cmVkPC9yZGY6bGkKICAgICAgICAgICAgPgogICAgICAgICAgPC9yZGY6QmFnCiAgICAg ICAgICA+CiAgICAgICAgPC9kYzpzdWJqZWN0CiAgICAgICAgPgogICAgICA8L2NjOldvcmsKICAg ICAgPgogICAgICA8Y2M6TGljZW5zZQogICAgICAgICAgcmRmOmFib3V0PSJodHRwOi8vY3JlYXRp dmVjb21tb25zLm9yZy9saWNlbnNlcy9wdWJsaWNkb21haW4vIgogICAgICAgID4KICAgICAgICA8 Y2M6cGVybWl0cwogICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1v bnMub3JnL25zI1JlcHJvZHVjdGlvbiIKICAgICAgICAvPgogICAgICAgIDxjYzpwZXJtaXRzCiAg ICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjRGlz dHJpYnV0aW9uIgogICAgICAgIC8+CiAgICAgICAgPGNjOnBlcm1pdHMKICAgICAgICAgICAgcmRm OnJlc291cmNlPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyNEZXJpdmF0aXZlV29ya3Mi CiAgICAgICAgLz4KICAgICAgPC9jYzpMaWNlbnNlCiAgICAgID4KICAgIDwvcmRmOlJERgogICAg PgogIDwvbWV0YWRhdGEKICA+Cjwvc3ZnCj4K "
+ id="image746"
+ x="85.593079"
+ y="83.116173" />
+ <g
+ style="stroke:#58928a;stroke-opacity:1"
+ clip-path="url(#clipPath4258)"
+ id="g4256"
+ transform="matrix(2.0735697,-0.38889921,-0.43078373,-1.8719593,173.29626,93.1446)">
+ <g
+ style="stroke:#58928a;stroke-opacity:1"
+ transform="translate(0.563,5.6699)"
+ id="g4262">
+ <path
+ id="path4264"
+ style="fill:none;stroke:#6c6c6c;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="m 0,0 c 0,2.82 2.287,5.107 5.107,5.107 2.82,0 5.107,-2.287 5.107,-5.107 0,-2.82 -2.287,-5.107 -5.107,-5.107 C 2.287,-5.107 0,-2.82 0,0 Z" />
+ </g>
+ <g
+ style="stroke:#6c6c6c;stroke-opacity:1"
+ transform="translate(8.4111,5.6704)"
+ id="g4266">
+ <path
+ id="path4268"
+ style="fill:none;stroke:#6c6c6c;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="m 0,0 c 0,2.819 -1.259,5.106 -2.811,5.106 -1.552,0 -2.811,-2.287 -2.811,-5.106 0,-2.823 1.259,-5.108 2.811,-5.108 C -1.259,-5.108 0,-2.823 0,0 Z" />
+ </g>
+ <g
+ style="stroke:#6c6c6c;stroke-opacity:1"
+ transform="translate(5.6699,10.647)"
+ id="g4270">
+ <path
+ id="path4272"
+ style="fill:none;stroke:#6c6c6c;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="M 0,0 V -9.855" />
+ </g>
+ <g
+ style="stroke:#6c6c6c;stroke-opacity:1"
+ transform="translate(0.563,5.6699)"
+ id="g4274">
+ <path
+ id="path4276"
+ style="fill:none;stroke:#6c6c6c;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="M 0,0 H 10.214" />
+ </g>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="171.64845"
+ y="97.92038"
+ id="text3572"><tspan
+ sodipodi:role="line"
+ id="tspan3570"
+ style="font-size:7.05556px;stroke-width:0.264583"
+ x="171.64845"
+ y="97.92038">foo.org</tspan><tspan
+ sodipodi:role="line"
+ style="font-size:7.05556px;stroke-width:0.264583"
+ x="171.64845"
+ y="106.73983"
+ id="tspan68806" /></text>
+ <g
+ style="stroke:#58928a;stroke-opacity:1"
+ clip-path="url(#clipPath4258-9)"
+ id="g4256-3"
+ transform="matrix(2.0735697,-0.38889921,-0.43078373,-1.8719593,173.29628,139.42531)">
+ <g
+ style="stroke:#58928a;stroke-opacity:1"
+ transform="translate(0.563,5.6699)"
+ id="g4262-6">
+ <path
+ id="path4264-1"
+ style="fill:none;stroke:#6c6c6c;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="m 0,0 c 0,2.82 2.287,5.107 5.107,5.107 2.82,0 5.107,-2.287 5.107,-5.107 0,-2.82 -2.287,-5.107 -5.107,-5.107 C 2.287,-5.107 0,-2.82 0,0 Z" />
+ </g>
+ <g
+ style="stroke:#6c6c6c;stroke-opacity:1"
+ transform="translate(8.4111,5.6704)"
+ id="g4266-2">
+ <path
+ id="path4268-9"
+ style="fill:none;stroke:#6c6c6c;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="m 0,0 c 0,2.819 -1.259,5.106 -2.811,5.106 -1.552,0 -2.811,-2.287 -2.811,-5.106 0,-2.823 1.259,-5.108 2.811,-5.108 C -1.259,-5.108 0,-2.823 0,0 Z" />
+ </g>
+ <g
+ style="stroke:#6c6c6c;stroke-opacity:1"
+ transform="translate(5.6699,10.647)"
+ id="g4270-3">
+ <path
+ id="path4272-1"
+ style="fill:none;stroke:#6c6c6c;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="M 0,0 V -9.855" />
+ </g>
+ <g
+ style="stroke:#6c6c6c;stroke-opacity:1"
+ transform="translate(0.563,5.6699)"
+ id="g4274-9">
+ <path
+ id="path4276-4"
+ style="fill:none;stroke:#6c6c6c;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="M 0,0 H 10.214" />
+ </g>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="171.64847"
+ y="144.20119"
+ id="text3572-7"><tspan
+ sodipodi:role="line"
+ id="tspan3570-8"
+ style="font-size:7.05556px;stroke-width:0.264583"
+ x="171.64847"
+ y="144.20119">foo.org</tspan><tspan
+ sodipodi:role="line"
+ style="font-size:7.05556px;stroke-width:0.264583"
+ x="171.64847"
+ y="153.02063"
+ id="tspan68806-4" /></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)"
+ d="m 120.28722,108.51063 19.30483,7.65883 3.56213,-4.825 -1.72511,10.81668 5.84978,-8.92633 -0.47502,5.37605 18.52116,7.40042"
+ id="path9445" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)"
+ d="m 119.75925,97.003192 20.08697,-6.068938 -1.26348,-7.255973 5.72206,10.656067 -1.48746,-11.573417 3.69027,6.41613 18.3502,-5.493549"
+ id="path9471" />
+ <text
+ xml:space="preserve"
+ style="font-size:6.35px;line-height:1.25;font-family:sans-serif;stroke-width:0.264583"
+ x="142.28778"
+ y="103.97533"
+ id="text22310"><tspan
+ sodipodi:role="line"
+ id="tspan22308"
+ style="stroke-width:0.264583"
+ x="142.28778"
+ y="103.97533">...</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 1.5;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)"
+ d="m 271.47134,228.65635 -24.769,0.0425"
+ id="path42256" />
+ <image
+ preserveAspectRatio="none"
+ inkscape:svg-dpi="96"
+ width="21.618526"
+ height="34.065556"
+ xlink:href="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNjZweCIg aGVpZ2h0PSIxMDRweCIgdmlld0JveD0iMCAwIDY2IDEwNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0i aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9y Zy8xOTk5L3hsaW5rIj4KICAgIDwhLS0gR2VuZXJhdG9yOiBTa2V0Y2ggNDcuMSAoNDU0MjIpIC0g aHR0cDovL3d3dy5ib2hlbWlhbmNvZGluZy5jb20vc2tldGNoIC0tPgogICAgPHRpdGxlPm9uaW9u LWJnPC90aXRsZT4KICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPgogICAgPGRl ZnM+PC9kZWZzPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9 IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9InN0eWxl Z3VpZGUtcG9ydGFsIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMi4wMDAwMDAsIC0yMy4wMDAwMDAp IiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8ZyBpZD0ib25pb24tYmciIHRyYW5z Zm9ybT0idHJhbnNsYXRlKDIuMDAwMDAwLCAyMy4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxn IGlkPSJsYXllcjVfMTdfIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0icGF0aDI1NTRfMjhf IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMC4yOTcxNDMsIDAuMDAwMDAwKSIgZmlsbD0iIzY4QjA0 NCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik04LjEzMjM5MTA1LDcuNzUyNTA1 NDUgTDUuNDIxNTk0MDMsMTguNzM1MjIxNSBDOS4yNDg2MDE1OSwxMC45ODI3MTYgMTUuNDY3NDg4 OSw1LjE2ODMzNjk2IDIyLjQ4MzY2OTQsLTcuMTA1NDI3MzZlLTE1IEMxNy4zODA5OTI2LDYuMTM3 NDAwMTUgMTIuNTk3MjMzMiwxMi4xMTMyODk4IDkuNzI2OTc3NTMsMTguMjUwNjg5OSBDMTQuNjcw MTk1NiwxMS4zMDU3MzcxIDIxLjIwODAwMDIsNy40Mjk0ODQzOSAyOC41NDMwOTgsNS4wMDY4MjY0 MyBDMTguNjU2NjYxOCwxMy44ODk5MDU2IDExLjAwMjY0NjcsMjMuNDE5MDI2OSA0Ljk0MzIxODA5 LDMyLjk0ODE0ODEgTDAuMTU5NDU4NjQ4LDMwLjg0ODUxMTMgQzEuMTE2MjEwNTQsMjMuMDk2MDA1 OCAzLjk4NjQ2NjIsMTUuMzQzNTAwNCA4LjEzMjM5MTA1LDcuNzUyNTA1NDUgTDguMTMyMzkxMDUs Ny43NTI1MDU0NSBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L2c+ CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InBhdGgyNTM0XzdfIiB0cmFuc2Zvcm09InRyYW5z bGF0ZSgwLjAwMDAwMCwgMjguMjI3MTYwKSIgZmlsbD0iI0Y1RjhERSI+CiAgICAgICAgICAgICAg ICAgICAgICAgIDxwYXRoIGQ9Ik0yNS44MzIzMDEsMC41MjE3MTM4NzEgTDM0Ljc2MTk4NTMsNC4y MzY0NTYwNiBDMzQuNzYxOTg1Myw2LjQ5NzYwMzQ5IDM0LjYwMjUyNjYsMTMuNjA0MDY2OCAzNi4w Mzc2NTQ1LDE1LjcwMzcwMzcgQzUxLjAyNjc2NzQsMzUuMjQ2NDc3OSA0OC40NzU0MjksNzQuMTcw NTE1NiAzMy4wMDc5NDAxLDc1LjEzOTU3ODggQzkuNTY3NTE4ODgsNzUuMTM5NTc4OCAwLjQ3ODM3 NTk0NCw1OC45ODg1MjU4IDAuNDc4Mzc1OTQ0LDQ0LjEyOTU1NyBDMC40NzgzNzU5NDQsMzAuNTYy NjcyNSAxNi41ODM2OTk0LDIxLjUxODA4MjggMjYuMTUxMjE4MywxMy42MDQwNjY4IEMyOC43MDI1 NTY2LDExLjUwNDQyOTkgMjguMjI0MTgwNyw2LjY1OTExNDAyIDI1LjgzMjMwMSwwLjUyMTcxMzg3 MSBMMjUuODMyMzAxLDAuNTIxNzEzODcxIFoiIGlkPSJTaGFwZSI+PC9wYXRoPgogICAgICAgICAg ICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0icGF0aDI1MzZfMThfIiB0 cmFuc2Zvcm09InRyYW5zbGF0ZSgzNC44MTkyOTEsIDMyLjMwMjEwNikiIGZpbGw9IiM2MjM2NzYi PgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMC4xMDIxNTMxOTYsMCBMMy4yOTEz MjYxNiwxLjYxNTEwNTMgQzIuOTcyNDA4ODYsMy43MTQ3NDIxOSAzLjQ1MDc4NDgsOC41NjAwNTgx IDUuNTIzNzQ3MjMsOS44NTIxNDIzNCBDMTQuOTMxODA3NSwxNS44MjgwMzIgMjMuODYxNDkxOCwy Mi4yODg0NTMyIDI3LjM2OTU4MiwyOC43NDg4NzQ0IEMzOS44MDczNTY2LDUxLjUyMTg1OTEgMTgu NTk5MzU2NCw3Mi42Nzk3Mzg2IDAuMjYxNjExODQ0LDcwLjU4MDEwMTcgQzEwLjE0ODA0OCw2My4x NTA2MTczIDEzLjE3Nzc2MjMsNDcuODA3MTE2OSA5LjM1MDc1NDc4LDMxLjAxMDAyMTggQzcuNzU2 MTY4MywyNC4zODgwOTAxIDUuNTIzNzQ3MjMsMTguNTczNzExIDEuMjE4MzYzNzMsMTEuNzkwMjY4 NyBDLTAuMzc2MjIyNzQ4LDguNzIxNTY4NjMgMC4yNjE2MTE4NDQsNC42ODM4MDUzNyAwLjEwMjE1 MzE5NiwwIEwwLjEwMjE1MzE5NiwwIFoiIGlkPSJTaGFwZSI+PC9wYXRoPgogICAgICAgICAgICAg ICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDxnIGlkPSJs YXllcjRfMTdfIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg5LjAwMDAwMCwgMzIuMDAwMDAwKSIgZmls bD0iIzAxMDEwMSI+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InBhdGgyNTQwXzE4XyIgdHJh bnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDEwLjMyOTY2MSkiPgogICAgICAgICAgICAgICAg ICAgICAgICA8cGF0aCBkPSJNMjIuOTY0NjY3OCwwLjUwMjY1MDQwNSBDMjIuMzM1NDk4OSw0LjAw NzIyMTYzIDIxLjU0OTAzNzYsMTAuMzc5MTY5MyAxOC41NjA0ODUsMTIuNjA5MzUxIEMxNy4zMDIx NDcsMTMuNTY1MTQzMSAxNi4wNDM4MDksMTQuMzYxNjM2NiAxNC42MjgxNzg4LDE1LjMxNzQyODgg QzkuMjgwMjQyNDksMTguOTgxMjk4NyAzLjc3NTAxMzg5LDIyLjQ4NTg2OTkgMS40MTU2MzAyMSwz MS41NjU4OTUzIEMwLjk0Mzc1MzQ3MywzMy40Nzc0Nzk2IDEuNDE1NjMwMjEsMzUuNTQ4MzYyNiAx LjczMDIxNDcsMzcuNDU5OTQ2OSBDMy4xNDU4NDQ5MSw0Mi44NzYxMDI1IDYuOTIwODU4OCw0OC45 Mjk0NTI3IDkuOTA5NDExNDcsNTIuMjc0NzI1MyBDOS45MDk0MTE0Nyw1Mi40MzQwMjQgMTAuNTM4 NTgwNCw1Mi43NTI2MjE0IDEwLjUzODU4MDQsNTIuOTExOTIgQzEzLjA1NTI1NjQsNTUuOTM4NTk1 MiAxMy44NDE3MTc2LDU2LjczNTA4ODYgMjMuMTIxOTYwMSw1OC44MDU5NzE2IEwyMi45NjQ2Njc4 LDU5LjkyMTA2MjUgQzE3LjMwMjE0Nyw1OC4zMjgwNzU2IDEyLjc0MDY3MTksNTcuMDUzNjg2IDku NzUyMTE5MjIsNTMuNTQ5MTE0OCBDOS43NTIxMTkyMiw1My41NDkxMTQ4IDkuMjgwMjQyNDksNTIu OTExOTIgOS4yODAyNDI0OSw1Mi45MTE5MiBDNi4xMzQzOTc1OCw0OS4yNDgwNTAxIDIuMzU5Mzgz NjgsNDMuMTk0Njk5OCAwLjk0Mzc1MzQ3MywzNy40NTk5NDY5IEMwLjQ3MTg3NjczNywzNS4yMjk3 NjUyIC04Ljg4MTc4NDJlLTE0LDMzLjQ3NzQ3OTYgMC42MjkxNjg5ODIsMzEuMDg3OTk5MyBDMy4x NDU4NDQ5MSwyMS44NDg2NzUxIDguODA4MzY1NzUsMTguMTg0ODA1MiAxNC4zMTM1OTQzLDE0LjM2 MTYzNjYgQzE1LjU3MTkzMjMsMTMuNTY1MTQzMSAxNy4xNDQ4NTQ4LDEyLjc2ODY0OTcgMTguMjQ1 OTAwNSwxMS44MTI4NTc1IEMyMC40NDc5OTE5LDEwLjA2MDU3MTkgMjEuNzA2MzI5OSw0LjgwMzcx NTA5IDIyLjk2NDY2NzgsMC41MDI2NTA0MDUgTDIyLjk2NDY2NzgsMC41MDI2NTA0MDUgWiIgaWQ9 IlNoYXBlIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAg ICAgIDxnIGlkPSJwYXRoMjU0Ml8xOF8iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYuMjkxNjkwLCAy NS4yMjIyOTMpIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE5LjAzMjM2MTcs MC4xMDYxOTkxMjggQzE5LjAzMjM2MTcsNC4wODg2NjY0MyAxOC43MTc3NzcyLDYuMDAwMjUwNzMg MTkuNjYxNTMwNyw4Ljg2NzYyNzE4IEMyMC4yOTA2OTk3LDEwLjQ2MDYxNDEgMjIuMzM1NDk4OSwx Mi44NTAwOTQ1IDIyLjk2NDY2NzgsMTUuMDgwMjc2MiBDMjMuNzUxMTI5MSwxOC4xMDY5NTEzIDI0 LjY5NDg4MjUsMjEuMjkyOTI1MiAyNC41Mzc1OTAzLDIzLjM2MzgwODEgQzI0LjUzNzU5MDMsMjUu NTkzOTg5OCAyNC4zODAyOTgxLDI5Ljg5NTA1NDUgMjMuNDM2NTQ0NiwzNC41MTQ3MTY2IEMyMi42 NTAwODM0LDM4LjMzNzg4NTIgMjAuOTE5ODY4Nyw0MS41MjM4NTkgMTguMDg4NjA4Miw0My4yNzYx NDQ2IEMxNS4xMDAwNTU2LDQyLjYzODk0OTkgMTEuNjM5NjI2Miw0MS42ODMxNTc3IDkuNTk0ODI2 OTgsMzkuNzcxNTczNCBDNS42NjI1MjA4NCwzNi4yNjcwMDIyIDIuMDQ0Nzk5MTksMzAuMzcyOTUw NiAxLjU3MjkyMjQ2LDI1LjI3NTM5MjQgQzEuMjU4MzM3OTYsMjEuMTMzNjI2NSA1LjAzMzM1MTg2 LDE0LjkyMDk3NzUgMTAuMzgxMjg4MiwxMS44OTQzMDIzIEMxNC45NDI3NjMzLDkuMTg2MjI0NTcg MTUuODg2NTE2OCw2LjE1OTU0OTQyIDE2LjgzMDI3MDMsMS4zODA1ODg2NiBDMTUuNDE0NjQwMSw1 LjY4MTY1MzM0IDE0LjE1NjMwMjEsOS4xODYyMjQ1NyA5LjkwOTQxMTQ3LDExLjQxNjQwNjMgQzMu NjE3NzIxNjUsMTQuNzYxNjc4OCAwLjMxNDU4NDQ5MSwyMC4zMzcxMzMgMC42MjkxNjg5ODIsMjUu NzUzMjg4NSBDMS4xMDEwNDU3MiwzMi42MDMxMzIzIDMuNzc1MDEzODksMzcuMjIyNzk0MyA5LjEy Mjk1MDI0LDQwLjg4NjY2NDMgQzExLjMyNTA0MTcsNDIuNDc5NjUxMiAxNS41NzE5MzIzLDQ0LjIz MTkzNjggMTguMjQ1OTAwNSw0NC41NTA1MzQyIEwxOC4yNDU5MDA1LDQ0LjIzMTkzNjggQzIwLjI5 MDY5OTcsNDMuOTEzMzM5NCAyMi44MDczNzU2LDQwLjU2ODA2NjkgMjQuMDY1NzEzNiwzNi4xMDc3 MDM1IEMyNS4xNjY3NTkzLDMyLjEyNTIzNjIgMjUuNjM4NjM2LDI2Ljg2ODM3OTQgMjUuNDgxMzQz OCwyMy42ODI0MDU1IEMyNS40ODEzNDM4LDIxLjc3MDgyMTIgMjQuNTM3NTkwMywxNy42MjkwNTUy IDIzLjEyMTk2MDEsMTMuOTY1MTg1MyBDMjIuMzM1NDk4OSwxMS44OTQzMDIzIDIxLjA3NzE2MDks OS44MjM0MTkzMyAyMC4xMzM0MDc0LDguMzg5NzMxMTEgQzE5LjUwNDIzODQsNi45NTYwNDI4OCAx OS41MDQyMzg0LDMuNzcwMDY5MDQgMTkuMDMyMzYxNywwLjEwNjE5OTEyOCBaIiBpZD0iU2hhcGUi PjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgPGcg aWQ9InBhdGgyNTQ0XzE4XyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTcuMzAyMTQ3LCA0MC41OTY0 MTIpIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTcuMzkyNzM1NTQsMC4zNDMz NTE3MTMgQzcuMzkyNzM1NTQsMy4wNTE0Mjk0OCA4LjQ5Mzc4MTI2LDYuMzk2NzAyMDEgOC45NjU2 NTc5OSw5LjkwMTI3MzIzIEM5LjI4MDI0MjQ5LDEyLjQ1MDA1MjMgOS4xMjI5NTAyNCwxNS4xNTgx MzAxIDkuMTIyOTUwMjQsMTcuMzg4MzExNyBDOS4xMjI5NTAyNCwyMC4wOTYzODk1IDguMTc5MTk2 NzcsMjQuNzE2MDUxNiA2LjkyMDg1ODgsMjcuMTA1NTMyIEM1LjgxOTgxMzA4LDI2LjYyNzYzNTkg NS4zNDc5MzYzNSwyNS45OTA0NDExIDQuNTYxNDc1MTIsMjUuMDM0NjQ5IEMzLjYxNzcyMTY1LDIz Ljc2MDI1OTQgMi45ODg1NTI2NiwyMi40ODU4Njk5IDIuNTE2Njc1OTMsMjAuODkyODgzIEMyLjA0 NDc5OTE5LDE5Ljc3Nzc5MjEgMS41NzI5MjI0NiwxOC41MDM0MDI2IDEuMjU4MzM3OTYsMTYuOTEw NDE1NyBDMC45NDM3NTM0NzMsMTQuNjgwMjM0IDEuMTAxMDQ1NzIsMTEuMDE2MzY0MSAzLjYxNzcy MTY1LDcuMzUyNDk0MTYgQzUuNTA1MjI4NTksNC40ODUxMTc3IDUuOTc3MTA1MzMsNC4xNjY1MjAz MiA2Ljc2MzU2NjU2LDAuOTgwNTQ2NDgxIEM1LjgxOTgxMzA4LDQuMDA3MjIxNjMgNS4xOTA2NDQx LDQuMTY2NTIwMzIgMy4xNDU4NDQ5MSw2LjcxNTI5OTM5IEMwLjc4NjQ2MTIyOCw5LjQyMzM3NzE1 IDAuNDcxODc2NzM3LDEzLjQwNTg0NDQgMC40NzE4NzY3MzcsMTYuNzUxMTE3IEMwLjQ3MTg3Njcz NywxOC4xODQ4MDUyIDAuOTQzNzUzNDczLDE5LjYxODQ5MzQgMS41NzI5MjI0NiwyMS4wNTIxODE3 IEMyLjIwMjA5MTQ0LDIyLjY0NTE2ODYgMi42NzM5NjgxNywyNC4wNzg4NTY4IDMuNDYwNDI5NCwy NS4xOTM5NDc3IEM0LjcxODc2NzM3LDI3LjEwNTUzMiA2LjI5MTY4OTgyLDI4LjA2MTMyNDEgNy4w NzgxNTEwNSwyOC4yMjA2MjI4IEM3LjA3ODE1MTA1LDI4LjIyMDYyMjggNy4wNzgxNTEwNSwyOC4y MjA2MjI4IDcuMDc4MTUxMDUsMjguMjIwNjIyOCBDNy4wNzgxNTEwNSwyOC4yMjA2MjI4IDcuMDc4 MTUxMDUsMjguMjIwNjIyOCA3LjA3ODE1MTA1LDI4LjIyMDYyMjggTDcuMDc4MTUxMDUsMjguMDYx MzI0MSBDOC40OTM3ODEyNiwyNi40NjgzMzcyIDkuNDM3NTM0NzMsMjQuNzE2MDUxNiA5Ljc1MjEx OTIyLDIzLjEyMzA2NDcgQzEwLjA2NjcwMzcsMjEuMjExNDgwNCAxMC4yMjM5OTYsMTkuMTQwNTk3 NCAxMC4zODEyODgyLDE2Ljc1MTExNyBDMTAuNTM4NTgwNCwxNC44Mzk1MzI3IDEwLjM4MTI4ODIs MTIuMTMxNDU0OSA5LjkwOTQxMTQ3LDkuNDIzMzc3MTUgQzkuMTIyOTUwMjQsNi4yMzc0MDMzMSA3 Ljg2NDYxMjI4LDIuNzMyODMyMDkgNy4zOTI3MzU1NCwwLjM0MzM1MTcxMyBMNy4zOTI3MzU1NCww LjM0MzM1MTcxMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L2c+ CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9InBhdGgyNTUwXzE4XyIgdHJhbnNmb3JtPSJ0cmFu c2xhdGUoMjQuMzczODM3LCA3LjE0MzY4NykiPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0 aCBkPSJNMC43OTI5MjI0NTUsMC4zNDMzNTE3MTMgQzAuNzkyOTIyNDU1LDQuMzI1ODE5MDEgMS4x MDc1MDY5NSwxMS42NTM1NTg4IDIuMjA4NTUyNjYsMTQuNTIwOTM1MyBDMi41MjMxMzcxNiwxNS40 NzY3Mjc0IDUuMzU0Mzk3NTgsMTkuNzc3NzkyMSA3LjI0MTkwNDUyLDI1LjAzNDY0OSBDOC42NTc1 MzQ3MywyOC42OTg1MTg5IDguODE0ODI2OTgsMzIuMDQzNzkxNCA5LjEyOTQxMTQ3LDMyLjk5OTU4 MzYgQzEwLjA3MzE2NDksMzcuMzAwNjQ4MiA4Ljk3MjExOTIyLDQ0LjYyODM4ODEgNy4zOTkxOTY3 Nyw1MS40NzgyMzE4IEM2LjYxMjczNTU0LDU1LjE0MjEwMTcgNC4wOTYwNTk2MSw1OS43NjE3NjM4 IDEuMTA3NTA2OTUsNjEuNjczMzQ4MSBMMC40NzgzMzc5NjQsNjIuNzg4NDM4OSBDMi4wNTEyNjA0 Miw2Mi43ODg0Mzg5IDYuMTQwODU4OCw1OC42NDY2NzMgNy41NTY0ODkwMSw1My43MDg0MTM1IEM5 LjkxNTg3MjcsNDUuMjY1NTgyOCAxMC44NTk2MjYyLDQxLjI4MzExNTUgOS43NTg1ODA0NSwzMS44 ODQ0OTI3IEM5LjYwMTI4ODIsMzAuOTI4NzAwNiA5LjI4NjcwMzcxLDI3LjkwMjAyNTQgNy44NzEw NzM1LDI0LjU1Njc1MjkgQzUuODI2Mjc0MzEsMTkuNDU5MTk0NyAyLjgzNzcyMTY1LDE0LjY4MDIz NCAyLjM2NTg0NDkxLDEzLjU2NTE0MzEgQzEuODkzOTY4MTcsMTEuOTcyMTU2MiAwLjk1MDIxNDcw MSw1LjEyMjMxMjQ3IDAuNzkyOTIyNDU1LDAuMzQzMzUxNzEzIEwwLjc5MjkyMjQ1NSwwLjM0MzM1 MTcxMyBaIiBpZD0iU2hhcGUiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAg ICAgICAgICAgICAgICAgPGcgaWQ9InBhdGgyNTUyXzE4XyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUo MjQuMzczODM3LCAwLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJN Mi4yMDg1NTI2NiwwLjQ3Nzg5NjA3NiBDMi4wNTEyNjA0Miw0LjQ2MDM2MzM3IDEuODkzOTY4MTcs Ny44MDU2MzU5IDIuNjgwNDI5NCwxMC42NzMwMTI0IEMzLjQ2Njg5MDYzLDE0LjAxODI4NDkgNy43 MTM3ODEyNiwxOC42Mzc5NDcgOS40NDM5OTU5NiwyNC4wNTQxMDI1IEMxMi43NDcxMzMxLDM0LjQw ODUxNzUgMTEuOTYwNjcxOSw0Ny45NDg5MDYzIDkuNDQzOTk1OTYsNTguNDYyNjE5OSBDOC41MDAy NDI0OSw2Mi4xMjY0ODk4IDQuMjUzMzUxODYsNjcuNTQyNjQ1NCAwLjAwNjQ2MTIyNzU4LDY5LjI5 NDkzMSBMMy4xNTIzMDYxNCw3MC4wOTE0MjQ0IEM0Ljg4MjUyMDg0LDcwLjA5MTQyNDQgOS4yODY3 MDM3MSw2NS43OTAzNTk4IDExLjAxNjkxODQsNjEuMDExMzk5IEMxMy44NDgxNzg4LDUzLjUyNDM2 MDUgMTQuMzIwMDU1Niw0NC42MDM2MzM3IDEzLjIxOTAwOTksMzUuMDQ1NzEyMiBDMTMuMjE5MDA5 OSwzNC4wODk5MjAxIDExLjY0NjA4NzQsMjUuOTY1Njg2OCAxMC4yMzA0NTcyLDIyLjYyMDQxNDMg QzguMTg1NjU3OTksMTcuNTIyODU2MSA1LjAzOTgxMzA4LDE0LjAxODI4NDkgMy43ODE0NzUxMiwx MC44MzIzMTEgQzIuODM3NzIxNjUsOC40NDI4MzA2NyAyLjUyMzEzNzE2LDIuMjMwMTgxNjkgMy4x NTIzMDYxNCwwLjc5NjQ5MzQ2IEwyLjIwODU1MjY2LDAuNDc3ODk2MDc2IFoiIGlkPSJTaGFwZSI+ PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAg ICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+ "
+ id="image1098"
+ x="99.816887"
+ y="168.93225" />
+ </g>
+</svg>
diff --git a/summary/src/tlwo/img/repeat-attack.pdf b/summary/src/tlwo/img/repeat-attack.pdf
new file mode 100644
index 0000000..36e2f73
--- /dev/null
+++ b/summary/src/tlwo/img/repeat-attack.pdf
Binary files differ
diff --git a/summary/src/tlwo/img/resolve.pdf b/summary/src/tlwo/img/resolve.pdf
new file mode 100644
index 0000000..ff7ab6e
--- /dev/null
+++ b/summary/src/tlwo/img/resolve.pdf
Binary files differ
diff --git a/summary/src/tlwo/img/setting.pdf b/summary/src/tlwo/img/setting.pdf
new file mode 100644
index 0000000..aee9012
--- /dev/null
+++ b/summary/src/tlwo/img/setting.pdf
Binary files differ
diff --git a/summary/src/tlwo/img/uncached.pdf b/summary/src/tlwo/img/uncached.pdf
new file mode 100644
index 0000000..2a83a17
--- /dev/null
+++ b/summary/src/tlwo/img/uncached.pdf
Binary files differ
diff --git a/summary/src/tlwo/main.tex b/summary/src/tlwo/main.tex
new file mode 100644
index 0000000..09110c4
--- /dev/null
+++ b/summary/src/tlwo/main.tex
@@ -0,0 +1,69 @@
+\begin{kaupaper}[
+ author={%
+ \textbf{Rasmus Dahlberg} and
+ Tobias Pulls
+ },
+ title={%
+ Timeless Timing Attacks and Preload Defenses in Tor's DNS Cache
+ },
+ reference={%
+ USENIX Security (2023)
+ },
+ summary={%
+ Tor relays cache resolved domains with constant time-to-live values not to
+ reveal information about past exit traffic while boosting performance. We
+ show that this caching strategy and its implementation in the live Tor
+ network can be exploited by a \emph{timeless timing attack} that leaks if a
+ domain is (not) cached. Further, the time that a domain was inserted into
+ the cache can be inferred by repeated probes. Our attack prototype's
+ experimental evaluation in real conditions shows that there are neither
+ false positives nor false negatives (10M~repetitions). Thus, it is useful
+ for instantiating a real-world website oracle without requiring any special attacker
+ capabilities or reach (just a modest computer that can create a Tor
+ circuit). One of our mitigations has been merged in Tor: probabilistic
+ time-to-live values that make the time-of-insertion fuzzy. Long-term,
+ Tor's DNS cache could be redesigned to \emph{preload} the same domains at all
+ exits. Such preloading would eliminate all (timeless) timing attacks in
+ Tor's DNS cache because the same domains would always be (un)cached across
+ different circuits. To retain performance within the same circuit, we
+ propose that the preloaded domains should be complemented by a dynamic
+ same-circuit cache that is not shared across circuits. Our
+ four-month-long DNS cache measurement at two 100~Mbit/s exit relays
+ informs on today's baseline performance. It is compared to a preloaded
+ DNS cache based on different variations of three popularity lists: Alexa,
+ Tranco, and Umbrella. A preloaded DNS cache can be as performant as today
+ with similar resource usage or significantly improve cache-hit ratios by
+ 2-3x. However, the increased cache-hit ratios have the cost of modest
+ increases in memory and resolver load.
+ },
+ participation={\vspace{-.25cm}
+ Tobias and I collaborated closely from start to finish with the following
+ exceptions. I did most implementation work. Volunteers from DFRI---a
+ Swedish non-profit and non-partisan organization that promotes digital
+ rights---operated our exit relays. Tobias did most DNS cache data
+ analysis. Tobias also had the initial idea, which was refined with
+ feedback~from~Roger~Dingledine.
+ },
+ label={
+ paper:tlwo
+ },
+]
+ \maketitle
+ \begin{abstract}
+ \input{src/tlwo/src/abstract}
+ \end{abstract}
+
+ \input{src/tlwo/src/introduction}
+ \input{src/tlwo/src/background}
+ \input{src/tlwo/src/tor-cache}
+ \input{src/tlwo/src/attack}
+ \input{src/tlwo/src/short}
+ \input{src/tlwo/src/long}
+ \input{src/tlwo/src/related}
+ \input{src/tlwo/src/conclusion}
+ \input{src/tlwo/src/acknowledgements}
+ \input{src/tlwo/src/availability}
+
+ \bibliographystyle{plain}
+ \bibliography{src/tlwo/src/ref}
+\end{kaupaper}
diff --git a/summary/src/tlwo/src/abstract.tex b/summary/src/tlwo/src/abstract.tex
new file mode 100644
index 0000000..df4fa1b
--- /dev/null
+++ b/summary/src/tlwo/src/abstract.tex
@@ -0,0 +1,25 @@
+\noindent
+We show that Tor's DNS cache is vulnerable to a timeless timing attack, allowing
+anyone to determine if a domain is cached or not without any false positives.
+The attack requires sending a single TLS record. It can be repeated to determine
+when a domain is no longer cached to leak the insertion time. Our evaluation in
+the Tor network shows no instances of cached domains being reported as uncached
+and vice versa after 12M repetitions while only targeting our own domains. This
+shifts DNS in Tor from an unreliable side-channel---using traditional timing
+attacks with network jitter---to being perfectly reliable. We responsibly
+disclosed the attack and suggested two short-term mitigations.
+
+As a long-term defense for the DNS cache in Tor against all types of (timeless)
+timing attacks, we propose a redesign where only an allowlist of domains is
+preloaded to always be cached across circuits. We compare the performance of a
+preloaded DNS cache to Tor's current solution towards DNS by measuring
+aggregated statistics for four months from two exits (after engaging with the
+Tor Research Safety Board and our university ethical review process). The
+evaluated preload lists are variants of the following top-lists: Alexa, Cisco
+Umbrella, and Tranco. Our results show that four-months-old preload lists can be
+tuned to offer comparable performance under similar resource usage or to
+significantly improve shared cache-hit ratios (2--3x) with a modest increase in
+memory usage and resolver load compared to a 100 Mbit/s exit. We conclude that
+Tor's current DNS cache is mostly a privacy harm because the majority of cached
+domains are unlikely to lead to cache hits but remain there to be probed by
+attackers.
diff --git a/summary/src/tlwo/src/acknowledgements.tex b/summary/src/tlwo/src/acknowledgements.tex
new file mode 100644
index 0000000..84302c0
--- /dev/null
+++ b/summary/src/tlwo/src/acknowledgements.tex
@@ -0,0 +1,20 @@
+\section*{Acknowledgments}
+Many thanks to
+ Georg Koppen and
+ Marc Juarez
+for engaging with us in continuous Tor Research Safety Board discussions, as
+well as
+ Elias Rudberg,
+ Johan Nilsson, and
+ Linus Nordberg
+who operated our modified Tor relays at the premises of DFRI.
+We would further like to thank our shepherd, the anonymous reviewers,
+ Mike Perry,
+ Nick Mathewson,
+ Paul Syverson, and
+ Roger Dingledine
+for their valuable feedback.
+The authors were supported by
+ Mullvad VPN,
+ the Swedish Foundation for Strategic Research, and
+ the Swedish Internet Foundation.
diff --git a/summary/src/tlwo/src/attack.tex b/summary/src/tlwo/src/attack.tex
new file mode 100644
index 0000000..542cdb3
--- /dev/null
+++ b/summary/src/tlwo/src/attack.tex
@@ -0,0 +1,247 @@
+\section{Timeless Timing Attack} \label{tlwo:sec:attack}
+
+Past work demonstrated timing attacks against Tor's DNS cache~\cite{wfwo}. In
+short, anyone can observe the latency of a domain lookup to determine if it is
+more or less likely that an answer is (not) cached. A quick response is more
+likely to be cached, thereby leaking information about past traffic on an exit.
+A downside of such a remote timing attack is that it is subject to network
+jitter while traversing hops in the Tor network. We show how to bypass this
+limitation by constructing a timeless timing attack that is immune to network
+jitter~\cite{timeless}. Notably the attack only requires Internet access and a
+very modest computer.
+
+Section~\ref{tlwo:sec:attack:detailed} outlines the attack, followed by a description
+of our prototype implementation in Section~\ref{tlwo:sec:attack:prototype},
+evaluation in Section~\ref{tlwo:sec:attack:measurements}, as well as ethical
+considerations in Section~\ref{tlwo:sec:attack:ethical}.
+
+\subsection{Detailed Description} \label{tlwo:sec:attack:detailed}
+An exit's processing of an incoming RESOLVE cell depends on if an answer is
+cached or not, see Figure~\ref{tlwo:fig:resolve}. An answer may already be available
+and a RESOLVED cell can be scheduled for sending immediately (``cached'').
+Otherwise an answer is not yet available and a resolve process needs to take
+place concurrently to avoid blocking (``uncached''). We construct a timeless
+timing attack by exploiting the fact that scheduling RESOLVED cells for sending
+with different concurrent timings depend on if an answer is cached (send
+immediately) or uncached (send based on an event later on)~\cite{ctor-1}.
+
+\begin{figure}[!t]
+ \centering
+ \includegraphics[width=.67\columnwidth]{src/tlwo/img/resolve}
+ \caption{%
+ Processing of an incoming RESOLVE cell at an exit relay.
+ Answers of concurrent resolves are triggered by events.
+ }
+ \label{tlwo:fig:resolve}
+\end{figure}
+
+\subsubsection{Attack Outline}
+
+Suppose that we craft two RESOLVE cells for \texttt{example.com} and
+\texttt{evil.com} such that they are processed by an exit \emph{directly after
+each other without any events in between}. Further suppose that
+\texttt{evil.com} is cached. The first RESOLVE cell is \texttt{example.com}.
+The second RESOLVE cell is \texttt{evil.com}. Following from the flow in
+Figure~\ref{tlwo:fig:resolve}, we can determine if \texttt{example.com} is (un)cached
+by observing only the order in which the two RESOLVED cells come back. The
+order will be switched if \texttt{example.com} needs concurrent resolving
+because \emph{the answer is not available until after an event} (uncached).
+Otherwise the order is preserved (cached). Sending two requests to be processed
+at the same time and exploiting concurrency as well as differences in processing
+time that affects the response order is what makes it
+\emph{timeless}~\cite{timeless}.
+
+Figure~\ref{tlwo:fig:timeless} provides a detailed description on how to satisfy the
+presumed setup. The attacker starts by looking up its own domain name for a
+selected exit. This ensures that \texttt{evil.com} is cached. Next, two RESOLVE
+cells are sent in the same TLS record from a hop proceeding the exit. Both cells
+will be unpacked at the same time by TLS~\cite{ctor-2},
+% Note: input parameter at_most is set to -1 by tor's main loop
+and when processing starts all available cells will be handled before giving
+control back to Tor's main loop~\cite{ctor-3}.
+Now recall that Tor is single-threaded. An event from any concurrent DNS
+resolve can thus not be completed before all unpacked cells were fully
+processed. This ensures that the order in which our two RESOLVED cells come
+back in is guaranteed to leak if \texttt{example.com} is (un)cached as long as
+both RESOLVE cells arrived together in-order and \texttt{evil.com} is really
+cached.
+
+\begin{figure}[!t]
+ \centering
+ \subfloat[][uncached]{%
+ \includegraphics[width=.7\columnwidth]{src/tlwo/img/uncached}
+ \label{tlwo:fig:timeless:a}
+ }\\
+ \subfloat[][cached]{%
+ \includegraphics[width=.7\columnwidth]{src/tlwo/img/cached}
+ \label{tlwo:fig:timeless:b}
+ }
+ \caption{%
+ The attacker ensures a domain \texttt{evil.com} is cached. Next, two
+ RESOLVE cells are sent to arrive at the same time in-order. The relay
+ processes both cells before triggering any resolve event. This means
+ that answers can only be sent directly if no resolving is needed. The
+ order of RESOLVED cells switch if \texttt{example.com} is uncached.
+ Otherwise the order is preserved. }
+ \label{tlwo:fig:timeless}
+\end{figure}
+
+It should be noted that an attacker can gain full control of how their TLS
+records are packed to exits by either running a modified Tor relay or creating
+one-hop circuits. In practise, it is also possible to omit the step of caching
+\texttt{evil.com} and instead send a \texttt{RESOLVE} cell containing an IP
+address. Tor will simply echo the IP as if it was cached~\cite{ctor-4}. We
+describe the attack without this optimization because it is more general.
+
+\subsubsection{Repeated Attack to Learn Insertion Time}
+So far we described how to determine if a domain is (un)cached at an exit.
+Figure~\ref{tlwo:fig:attack-repeated} shows how to derive the exact time that a
+domain was added to an exit's DNS cache. First determine whether the domain's
+TTL will be clipped to 300 or 3,600 seconds by observing the TTL returned from
+the authoritative name server or the configured resolvers of the
+exit~\cite{GreschbachPRWF17}. Then repeat the timeless timing attack
+periodically until the domain is no longer cached, say, once per second. Suppose
+the expected clip is 300 seconds and the attack started at time $t$. If it
+takes $x < 300$ seconds for the entry to become uncached, it was added to the
+exit's DNS cache at time $t+x - 300\textrm{s}$. Observing $x > 300$ seconds
+means that a different party inserted the entry into the cache between probes
+(may happen for some of the most frequently looked-up domains, depending on
+probing frequency). To recover, the attacker can perform the same steps again
+until they succeed. For example, with two tries the initial insertion happened
+at $t+x - 600\textrm{s}$. Notably these estimates cannot be more precise than
+the attacker's repetition interval.
+
+\begin{figure}[!t]
+ \centering
+ \includegraphics[width=.53\columnwidth]{src/tlwo/img/repeat-attack}
+ \caption{%
+ Repeated timeless timing attack to infer the exact time that a domain
+ was cached by someone at an exit relay. For example, if the expected
+ clip is 300s ($\mathsf{ttl}\le300$s), the attack is repeated every
+ second, and the observed $x$ is 40s, then caching of
+ \texttt{example.com} happened at time $\approx t-260$s. }
+ \label{tlwo:fig:attack-repeated}
+\end{figure}
+
+\subsubsection{Discussion}
+While an attacker can determine if a domain is cached by an exit and if so the
+exact time it was added, the attacker cannot determine the number or timings of
+lookups for a domain after entering the cache. In isolation, the attacker also
+cannot determine which identifiable user cached a given domain.
+
+It is easy to conduct the attack in parallel because
+probing for the status of \texttt{foo.org} is completely independent from
+\texttt{bar.org} at the same relay as well as other probes on different relays.
+In other words, an attacker can probe a single domain on all exits
+simultaneously, many different domains at a single exit, or both. Network-wide
+probes for the same domain may be detectable by observing the DNS caches of
+multiple relays and correlating their contents. However, note that a risk-averse
+attacker~\cite{AumannL07} may spread their probes over time (five or sixty
+minutes) and domains (expected twelve domains per website on Alexa top-1M
+websites~\cite{GreschbachPRWF17}), if the goal is to confirm a website visit.
+
+An example use-case for a parallel attack is answering network-wide queries, for
+example, ``is \texttt{foo.org} visited more frequently than \texttt{bar.org}, or
+did any Tor user visit \texttt{baz.org} at a particular point in time?'' The
+latter is an instantiation of a so-called website oracle~\cite{wfwo}. Website
+oracles remove virtually all false positives in WF attacks for all but the most
+popular websites on the web, and WF attacks may connect identifiable users with
+visited websites. See Figure~\ref{tlwo:fig:setting} in
+Section~\ref{tlwo:sec:introduction} for an overview of this attack setting.
+
+\subsection{Prototype Implementation} \label{tlwo:sec:attack:prototype}
+
+We prototyped our timeless timing attack so that it runs for a given exit and a
+list of domains. Figure~\ref{tlwo:fig:attack} shows the overall setup which consists
+of \texttt{carml},
+\texttt{tor-resolve}, a locally patched Tor process, and a Python script
+automating the entire setup. First Tor is started, a \emph{one-hop circuit} is
+built to the selected exit, and all streams are attached to it using
+\texttt{carml}. Next, \texttt{tor-resolve} is used to send a special lookup
+query for \texttt{example.com} by simply appending a magic string
+\texttt{---sc}. The patched Tor process splits such requests into two RESOLVE
+cells in the same TLS record: one for the specified domain, and another one that
+is guaranteed to not need any concurrent resolving. Finally Tor sets the output
+to \texttt{0.0.0.0} if the resulting RESOLVED cells switched order, otherwise
+\texttt{1.1.1.1} (arbitrary constants).
+After processing all domains Tor is closed and the output
+is a list where each item is zero (uncached), one (cached), or negative
+(unknown, e.g., due to a resolve timeout, a stream attach failure, or a vanished
+circuit).
+The complete attack required less than 100 lines of C to patch Tor, as well as
+200 lines of Python to make it fully automated.
+
+\begin{figure}[!t]
+ \centering
+ \includegraphics[width=.53\columnwidth]{src/tlwo/img/attack}
+ \caption{%
+ Local attack setup consisting of \texttt{carml} to build one-hop
+ circuits, \texttt{tor-resolve} to inject queries, and a patched
+ tor process that transforms them into timeless timing attacks.
+ }
+ \label{tlwo:fig:attack}
+\end{figure}
+
+\subsection{Network Measurements} \label{tlwo:sec:attack:measurements}
+
+We conducted measurements in the live Tor network to evaluate the reliability of
+our prototype with four parallel instances of
+the setup in Figure~\ref{tlwo:fig:attack} on a system with an Intel(R) Xeon(R) CPU
+E5-2630 @ 2.30GHz and 4GB of DRAM. All targeted domains were our own, see
+ethical considerations in Section~\ref{tlwo:sec:attack:ethical}. In total there were
+$14,446$ runs between May 17--26, 2022. Each run used an exit that was sampled
+uniformly at random. Assuming $1,000$ exits at all times (conservative), the
+individual select probability should not exceed $0.004$ per run. Each run
+performed up to $1,000$ timeless timing attacks, chunked into $500$ attacks per
+circuit and alternating between uncached and cached lookups by specifying a
+unique domain twice in a row: \texttt{<counter>.<timestamp>.<instance
+id>.example.com}. The maximum runtime was set to ten minutes. Each query also
+had a ten second timeout. In the advent of errors like circuit failure or
+timeouts, the remainder of the run was canceled but all results up until that
+point were collected. The average number of DNS requests leaving the Tor
+network from \emph{all four combined instances} was $8.6$ per second. The
+effective queries per second was slightly higher due to brief pauses while
+setting up a new run. For reference, Sonntag reported in 2018 that the DNS
+resolver of an exit with $200$Mbit/s received an average and maximum of $18$ and
+$81$ requests per second~\cite{sonntag-metrics}. Earlier,
+Figure~\ref{tlwo:fig:lookups} also showed significant variability in lookups.
+Handling our per-exit overhead during a couple of minutes should thus be
+insignificant when compared to regular patterns for DNS traffic in the network.
+
+Table~\ref{tlwo:tab:attack} summarizes our results. After 12M timeless timing
+attacks, there were no cases of uncached lookups being reported as cached and
+vice versa. This is consistent with the description in
+Section~\ref{tlwo:sec:attack:detailed}: neither false positives nor false negatives
+are expected. The observed probability to not get an answer due to
+detectable failures were $0.00025$.
+
+\begin{table}[!t]
+ \centering
+ \caption{%
+ Timeless timing attack results. Neither false negatives nor
+ false positives were observed with 6M repetitions each.
+ }
+ \begin{tabular}{c|ccc}
+ Type & Got uncached & Got cached & Failures \\
+ \hline
+ Uncached & $6,034,779$ & $0$ & $2,858$ \\
+ Cached & $0$ & $6,034,594$ & $142$ \\
+ \end{tabular}
+ \label{tlwo:tab:attack}
+\end{table}
+
+\subsection{Ethical Considerations} \label{tlwo:sec:attack:ethical}
+
+We responsibly disclosed our attack to the Tor Project through their security
+list. The submitted disclosure included a theoretical attack description, a
+prototype implementation with measurements showing how reliable it was, as well
+as a sketch of short-term and long-term defenses. As part of our dialog, we also
+coordinated with the Tor Project on submitting this paper to USENIX Security to
+get peer review.
+
+The conducted network measurements targeted domains under our own control. This
+ensured that we did not learn anything about real Tor users. Performance
+overhead on exits and the Tor network at large was also modest, see
+Section~\ref{tlwo:sec:attack:measurements}. In other words, the downsides were
+negligible while the significance of evaluating \emph{real-world reliability}
+was helpful to inform and motivate the need for mitigations and defenses.
diff --git a/summary/src/tlwo/src/availability.tex b/summary/src/tlwo/src/availability.tex
new file mode 100644
index 0000000..cff4dbc
--- /dev/null
+++ b/summary/src/tlwo/src/availability.tex
@@ -0,0 +1,19 @@
+\section*{Availability} \label{tlwo:sec:availability}
+We make the following three artifacts available:
+
+\begin{enumerate}
+ \item Patches to Tor, associated scripts and data, and documentation for
+ performing timeless timing attacks.
+ \item The measurement data from our two exits, a detailed timeline of
+ operations, scripts for creating extended preload lists, and associated
+ Python scripts for parsing all stats and generating figures.
+ Sharing of the dataset was discussed as part of the contact with the Tor
+ Research Safety Board and our university ethical review process. Relevant
+ parts of our research safety board contact are included in our artifact.
+ \item Contributions to the Tor Project, including source code and associated
+ tooling for our Fuzzy TTLs mitigation and preload defense.
+\end{enumerate}
+
+See
+\url{https://gitlab.torproject.org/rgdd/ttapd}
+to locate the above.
diff --git a/summary/src/tlwo/src/background.tex b/summary/src/tlwo/src/background.tex
new file mode 100644
index 0000000..719dec6
--- /dev/null
+++ b/summary/src/tlwo/src/background.tex
@@ -0,0 +1,73 @@
+\section{Background} \label{tlwo:sec:background}
+The remainder of the paper requires preliminaries about DNS
+(Section~\ref{tlwo:sec:background:dns}), in particular in relation to Tor
+(Section~\ref{tlwo:sec:background:tor}).
+
+\subsection{DNS} \label{tlwo:sec:background:dns} DNS is a hierarchical system that
+maps domain names (``domains'') to IP addresses. The hierarchy is composed of
+root servers, top-level domain (TLD) servers, and authoritative name servers.
+Root servers are aware of TLD servers like \texttt{.com}. TLD servers are aware
+of authoritative name servers in their zone like \texttt{example.com}.
+Authoritative name servers are aware of the actual answers to a domain lookup.
+A domain lookup for \texttt{example.com} involves asking the root server for the
+TLD server of \texttt{.com}; the TLD server for the authoritative name server of
+\texttt{example.com}; and finally the authoritative name server for the IP
+address of \texttt{example.com}. The resolve process is typically performed
+iteratively in plaintext over UDP by a third-party resolver that caches
+responses, e.g., to improve performance. The default is usually to rely on ISP
+DNS resolvers. It is also possible to configure other ones, e.g., Google's
+\texttt{8.8.8.8} or self-hosted using \texttt{unbound}, \texttt{bind}, etc.
+
+Of note is that the resolved domains are associated with a Time To Live (TTL)
+value. As the name suggest, it is the amount of time that a resolved domain
+should be considered fresh. TTL values are sometimes overridden in caches to
+improve reliability~\cite{rfc8767,MouraHMSD18} or preserve
+privacy~\cite{GreschbachPRWF17}.
+
+\subsection{Tor} \label{tlwo:sec:background:tor}
+The Tor network is composed of thousands of relays that route encrypted traffic
+on behalf of millions of daily users~\cite{tor,ManiWJJS18}. Ordinary uses of
+Tor include preserving privacy, safety and freedom as well as facilitating
+dissent and circumventing censorship~\cite{tpo-russia,tpo-who-uses-tor}. Access
+to the Tor network is easy using Tor Browser (TB), which is configured to proxy
+all traffic through a local Tor process that takes care of routing. TB adds
+many other protections that are orthogonal to our work~\cite{tb}.
+
+During a regular website visit a circuit is built through a guard, middle, and
+exit relay. The first relay is fixed in a small guard set that rarely changes
+once selected, while the middle and exit relays are randomly selected weighted
+by bandwidth for each new circuit. A circuit may have many streams (analogous
+to TCP/IP connections), typically corresponding to separate flows for a
+particular destination. Control traffic and data is transported through the
+network in fixed-size cells that are encrypted in layers. At each hop in a
+circuit, one layer of encryption is peeled-off. Outstanding cells from relay A
+to relay B are sent in a shared channel that is TLS protected. Public keys,
+relay identities, and more are discovered in Tor's consensus, which is secure if
+a threshold of trusted directory authorities act honestly.
+
+We are particularly interested in how Tor interacts with DNS. To look up a
+domain, the user's Tor process may send a RESOLVE cell that requests resolution
+by the exit. Some exits are configured with their own iterative resolvers,
+while others rely on DNS from their ISP or other
+third-parties~\cite{GreschbachPRWF17}. The answer to a lookup is stored in the
+exit's cache, but with the TTL \emph{clipped} to 300 or 3600 seconds depending
+on if the TTL is $\le 300$ seconds or not. A RESOLVED cell is then sent to the
+user, who only gets to see the clipped TTL regardless of how long it has been
+stored in the cache to avoid leaking information about past exit traffic (like
+the insertion time which would be trivial to infer from a counted-down TTL). If
+too many entries are added to Tor's DNS cache and memory becomes a scarce
+resource, an Out-Of-Memory (OOM) job deletes domains until freeing enough
+memory. This is all controlled by an event-driven single-threaded main loop.
+
+Of further note is that TB is based on Firefox. As part of connecting to a
+website, DNS is handled transparently through a SOCKS proxy provided by the
+local Tor process. Requests to connect to a domain through the SOCKS proxy
+results in the user's Tor process sending a BEGIN cell to establish a connection
+to the destination, which in turn triggers domain resolution at the exit. In
+other words, there are two ways to look up domains: RESOLVE cells and BEGIN
+cells. At no point is any resolved IP address cached in TB or in the user's Tor
+process. This prevents shared state (the cache) from being used to
+fingerprint a user's activity across different circuits.
+
+We continue our introduction to Tor's DNS cache next while describing the
+first measurement of its performance.
diff --git a/summary/src/tlwo/src/conclusion.tex b/summary/src/tlwo/src/conclusion.tex
new file mode 100644
index 0000000..485c593
--- /dev/null
+++ b/summary/src/tlwo/src/conclusion.tex
@@ -0,0 +1,52 @@
+\section{Conclusion} \label{tlwo:sec:conclusion}
+Our timeless timing attack on Tor's DNS cache is virtually perfect,
+significantly improving over earlier timing attacks~\cite{wfwo}. Based on 12
+million measurements in the live Tor network, we only observed a 0.00025 failure
+rate due to vanished circuits and other transient networking errors that are
+easy to account for. We responsibly disclosed the attack to the Tor Project
+and coordinated the process around defenses with them.
+
+Our proposed mitigations are just that---mitigations---and do not completely
+address the underlying issues. The fuzzy TTLs mitigation primarily addresses
+confirmation with WF attacks involving moderately popular domains. Cover
+lookups, while valuable if done, does not scale and requires continuous efforts
+that are not easily automated on a large scale.
+
+Setting out to find long-term solutions, we landed in redesigning Tor's DNS
+cache completely with a preload design. To inform the design and to evaluate its
+feasibility, we ran a four-month experiment starting in May 2022 measuring key
+performance metrics. To ensure that our measurements were safe, we repeatedly
+consulted the Tor Research Safety Board and completed our university ethical
+review process. We received positive feedback as well as invaluable suggestions
+along the way to minimize any potential harm to the Tor network and its users.
+
+First, the preload design is immune to timing and timeless attacks due to never
+sharing any data in the DNS cache injected due to user activity across circuits.
+Secondly, the preload lists of domains based on extended Alexa, extended Tranco,
+and Cisco Umbrella all show impressive cache-hit ratios. Depending on list, it
+is possible to get comparable cache-hit ratios, memory usage, and resolver load
+as Tor today. More extensive lists can trade modest increases in memory and
+resolver load with significantly higher cache-hit ratios, especially for web
+traffic. Important future work is improving how the extended lists are
+generated---e.g., by tailoring them specifically for relays in certain regions
+(location sensitivity), excluding unique tracking domains, or crawling websites
+to discover subdomains---which is likely to lead to higher cache-hit ratios and
+smaller lists.
+
+One of the biggest downsides of the preload design is that the most effective
+preload lists are extended lists based on Alexa or Tranco, requiring continuous
+efforts to update. Fortunately, our measurements show that even four-month-old
+extended lists remain effective with significant improvement over baseline Tor.
+It is likely feasible for the Tor Project to generate and ship hard-coded
+preload lists as part of regular Tor releases and still improve performance
+compared to today.
+
+Like Mani \emph{et~al.}~\cite{ManiWJJS18}, we see that traffic in the Tor
+network appears to reasonably match website/domain popularity lists like Alexa,
+Tranco, and Umbrella. This is fundamental for the preload design, and likely
+also a contributing factor for the observed long stability of the extended
+preload lists, since the most popular sites see relatively little
+churn~\cite{PochatGJ19}. Finally, our measurements indicate that the Tor network
+has grown by about 300\% in terms of number of streams since 2018, and that the
+large majority of Tor's current DNS caching is a privacy harm rather than a
+cross-circuit performance boost.
diff --git a/summary/src/tlwo/src/introduction.tex b/summary/src/tlwo/src/introduction.tex
new file mode 100644
index 0000000..04dd6bc
--- /dev/null
+++ b/summary/src/tlwo/src/introduction.tex
@@ -0,0 +1,151 @@
+\section{Introduction} \label{tlwo:sec:introduction}
+Tor~\cite{tor} is a volunteer-operated anonymity network composed of relays that
+route encrypted traffic with low latency.
+One of Tor's trade-offs is to not provide anonymity against a global passive
+attacker that observes traffic as it enters and leaves the
+network~\cite{trilemma,tor}.
+A typical attacker setting is therefore to only observe encrypted traffic as it
+enters the network from an identifiable user, forcing traffic analysis of the
+encrypted packets to classify the user's behavior. An attacker that tries to
+classify visited websites is said to perform Website Fingerprinting
+(WF)~\cite{cheng1998traffic,HerrmannWF09,Hintz02,DBLP:conf/ccs/LiberatoreL06,PanchenkoNZE11,DBLP:conf/sp/SunSWRPQ02}.
+Many questions about the practicality of WF attacks have been raised, ranging
+from how to keep a trained dataset updated to managing false
+positives~\cite{onlinewf,JuarezAADG14,perryCrit,realistic}. False positives in
+WF may be ruled out using side-channels~\cite{JuarezAADG14,wfwo}. For example,
+an attacker with access to (traffic to~\cite{SibyJDVT20}) Google's public DNS
+resolver can use it to confirm if a website visit really happened over
+Tor~\cite{GreschbachPRWF17}.
+
+Side-channels that leak information about exiting traffic are in fact
+many~\cite{wfwo}. For example, during the course of a website visit there may
+be interactions with DNS resolvers, OCSP responders, real-time bidding
+platforms, and CDNs. An attacker that is able to query or gain access to the
+resulting datasets learns partial information about destination traffic, notably
+without ever observing any of the exiting TCP flows typically associated with
+correlation attacks on Tor~\cite{JohnsonWJSS13,deepcorr}. Depending on the ease
+of accessibility (e.g., does it require Google reach), reliability (e.g., are
+there any false positives), and coverage (e.g., is it only applicable for a
+small fraction of exit traffic), the impact of a given side-channel will be more
+or less urgent to address with mitigations and/or defenses~\cite{tor}.
+
+\subsection{Timeless Timing Attacks in Tor's DNS}
+Timing attacks exploit that an operation takes more or less time to execute
+depending on something secret. The attacker's goal is to infer the secret
+information by merely observing the non-constant execution times, e.g., to
+recover a private key~\cite{timing-attack}, decrypt a ciphertext~\cite{lucky13},
+or check if a domain is cached by a Tor exit~\cite{wfwo}. A remote timing
+attack takes place over a network. Repeated measurements and statistics are
+usually required to account for network jitter, which adds noise to the observed
+timings~\cite{remote-timing-attacks}. Van Goethem~\emph{et~al.}~\cite{timeless}
+proposed a technique that eliminates all network jitter in remote attacks. It is applicable if
+two requests can be sent to arrive at the same time, request processing is
+concurrent, and the order in which responses are returned reflects differences in
+execution time.
+
+We find that Tor's DNS cache at exits fulfills all three criteria of a timeless
+timing attack, allowing anyone to determine if a domain is cached or not by
+sending a single TLS record. The attack is reliable (neither false positives
+nor negatives), confirmed by using our prototype to make 12M network
+measurements against our own domains. The attack is also repeatable, making the
+exact time that a domain was inserted into the cache inferable due to
+determinism in Tor's TTL logic.
+
+Figure~\ref{tlwo:fig:setting} provides a summary of how the ability to infer whether
+domains are (un)cached at exits make WF attacks more practical.
+The attacker observes encrypted traffic from a client
+to a guard relay at time $t$, classifying the network trace as associated with
+\texttt{foo.org}. The attacker then conducts timeless timing attacks against
+all exits in the Tor network to determine if \texttt{foo.org} was really visited
+by \emph{someone} at time $t$. If the answer is yes the classification is
+accepted, otherwise it is rejected. Prior work by Pulls and Dahlberg show that
+the capability to determine whether a website was visited from Tor at time $t$
+removes virtually all false positives in WF attacks for all but the most popular
+websites on the web~\cite{wfwo}. We provide further evidence that this is a
+realistic capability to assume by demonstrating that \emph{any attacker with an
+Internet connection could have used it in attacks for the last two decades}.
+While it is a powerful capability to eliminate false positives, the overall
+success in linking users with their website visits also depends on the WF
+attack~\cite{onlinewf,JuarezAADG14,perryCrit,realistic}.
+
+\begin{figure}[!t]
+ \centering
+ \includegraphics[width=0.67\columnwidth]{src/tlwo/img/setting}
+ \caption{%
+ WF with an attacker that rules out false positives by checking
+ that the expected DNS records were cached at the right time by
+ conducting timeless timing attacks against exits.
+ }
+ \label{tlwo:fig:setting}
+\end{figure}
+
+\subsection{Preload Defenses and Measurements}
+Patching Tor's DNS cache to resist (timeless) timing attacks is challenging
+without hurting performance. For example, making all DNS lookups constant time
+would defeat the purpose of having a cache. The idea of our long-term defense
+is to remove harmful cross-circuit caching that is unlikely to boost performance
+while still safely caching useful domains. The Tor-network measurements of Mani
+\emph{et~al.}~\cite{ManiWJJS18} tell us that web-traffic from the Tor network
+matches that of the rest of the Internet, following popularity lists like
+Alexa~\cite{alexa}. What should boost cross-circuit performance is the upper
+parts of a representative popularity list; not the long tail of infrequently
+visited sites. This is the intuition of our defense. Preload a list of popular
+domains that are cached and continuously refreshed by all exits. A domain name
+is either always cached as part of the preload list or not shared across
+circuits at all.
+
+We conduct four months of measurements in the live Tor network to evaluate 400
+popularity lists derived from Alexa~\cite{alexa}, Cisco
+Umbrella~\cite{umbrella}, and Tranco~\cite{tranco}. To put our results into
+perspective, we also measure a baseline of Tor's current DNS cache performance.
+The measurement method is to collect aggregated counters every 15 minutes, e.g.,
+the number of lookups cache-hits, and memory overhead, from two 100 Mbit/s
+relays with web and permissive exit port policies.
+
+Tor's mean \emph{cross-circuit} cache-hit ratio is currently 11\% (web) and 17\%
+(permissive). Variants of Alexa/Tranco top-200 (web) and Alexa/Tranco top-700
+(permissive) achieve the same cross-circuit cache-hit ratios. A preload list
+from the top-10k can achieve 2--3 times higher cross-circuit cache-hit ratios at
+the cost of at most 60 MiB memory and some increased resolver load (manageable
+in part due to RFC 8767~\cite{rfc8767}). Throughout the entire measurement we
+noted only a slight decline in effectiveness while using stale preload lists
+(i.e., when using four-month-old lists at the end). This adds to the feasibility
+of using preload lists, as in practice someone has to assemble and deliver them
+to all exits in the Tor network.
+
+\subsection{Contributions and Outline}
+Our contributions are as follows:
+
+\begin{itemize}
+ \item Performance measurements of the DNS cache in Tor over four months from
+ two exits, showing an average 80--83\% cache-hit ratio with approximately
+ 10,000 entries in the cache; around 11--17\% of the observed cache hits are
+ due to the cache being shared across circuits, and the number of lookups
+ appears weakly correlated with exit probability
+ (Section~\ref{tlwo:sec:torcache}).
+ \item Demonstration of a timeless timing attack that probes for cached
+ domains in Tor's DNS cache without any false positives or false
+ negatives after 12M repetitions against our own domain in the Tor
+ network (Section~\ref{tlwo:sec:attack}).
+ \item Mitigations based on fuzzy TTLs and cover lookups that add some
+ limited short-term protections (Section~\ref{tlwo:sec:short}).
+ \item A long-term redesign of Tor's DNS cache that defends against
+ (timeless) timing attacks. Cache-hit ratios can be tuned to offer
+ comparable performance under similar resource usage as today or to
+ significantly improve shared cache-hit ratios (2--3x) with a modest
+ increase in memory usage and resolver load, notably invariant to
+ exit probability as preload lists are fixed (Section~\ref{tlwo:sec:long}).
+\end{itemize}
+
+Section~\ref{tlwo:sec:background} provides necessary background on DNS and Tor,
+Section~\ref{tlwo:sec:related} discusses related work, and
+Section~\ref{tlwo:sec:conclusion} offers conclusions, followed by the availability of
+our research artifacts.
+
+We would like to highlight that Sections~\ref{tlwo:sec:torcache:ethics},
+\ref{tlwo:sec:attack:ethical}, and \ref{tlwo:sec:long:preload:ethics} describe ethical and
+safety precautions to ensure that no users were harmed by our research and to
+maximize its positive impact. We responsibly disclosed our timeless timing
+attack to the Tor Project and engaged with the Tor Research Safety Board as well
+as our university's ethical review process as part of performing network
+measurements to inform our defenses.
diff --git a/summary/src/tlwo/src/long.tex b/summary/src/tlwo/src/long.tex
new file mode 100644
index 0000000..16331ac
--- /dev/null
+++ b/summary/src/tlwo/src/long.tex
@@ -0,0 +1,473 @@
+\section{Redesigning Tor's DNS Cache} \label{tlwo:sec:long}
+To address (timeless) timing attacks in Tor's DNS cache we considered a
+number of possible smaller changes. All of them failed for different reasons,
+however. Section~\ref{tlwo:sec:long:strawman} presents a straw-man design that is
+helpful to understand \emph{why}, while at the same time being closely related
+to the properties achieved by the preload DNS cache design in
+Section~\ref{tlwo:sec:long:preload}. Section~\ref{tlwo:sec:long:evaluation} presents an
+extensive evaluation that answers questions about how feasible and performant
+our proposal is.
+
+\subsection{Straw-man Design} \label{tlwo:sec:long:strawman}
+We omit all but one
+straw-man design that is particularly important to understand the proposed
+redesign in Section~\ref{tlwo:sec:long:preload}: \emph{simply remove Tor's DNS
+cache}. If there is no DNS cache to speak of in Tor, it is easy to see that
+there cannot be any (timeless) timing attacks against Tor's DNS cache (because
+it does not exist). What these attacks would instead target is the exit's DNS
+resolver which also has a cache. At a first glance it may seem like an
+insignificant improvement that just moves the problem elsewhere. This would be
+the case if every exit used its own dedicated DNS resolver. However, an exit may
+share a resolver with other exits or most importantly clients outside of the Tor
+network. A prime example is the resolver of the ISP of the exit. Any inference
+made from the state of shared resolvers would thus not be directly attributable
+to activity on the Tor network. This would therefore make \emph{false positives}
+a reality with regards to if a domain was cached or not as a consequence of
+activity in the Tor network.
+
+Introducing false positives to the timeless timing attack itself is in general
+challenging because an answer needs to be available at the same time regardless
+of there being a cache hit or miss. False negatives may seem easier and could
+make the attacker discard otherwise correct classifications, e.g., because an
+attack only works half of the time. However, without false positives, attackers
+are still able to reliably remove otherwise incorrect classification through
+confirmation~\cite{wfwo}. Because websites typically make use of multiple domain
+names, defenses that add random delays to responses (to cause false negatives)
+would need to consistently add similar delays for all relevant domains tied to
+websites or other user activity the attacker is trying to infer. The semantics
+surrounding user activity is hard if not impossible to capture at the DNS level.
+Therefore, all false negative defenses we could think of failed.
+
+Now suppose that Tor has no DNS cache and exits always use a shared resolver
+that may introduce false positives.
+A major downside is that performance would take a significant hit due to the
+lack of a cache in Tor, especially since a shared resolver is likely not running
+locally, but provided by the ISP or some third-party. It is likely that both
+page-load latency and resolver load would increase. Worsening performance and
+especially latency is the opposite of what the Tor project is working
+towards~\cite{tor,tor-congestion}. Next we show how to get the good properties
+of not having a DNS cache in Tor (potential for false positives) while improving
+performance.
+
+\subsection{The Preload DNS Cache} \label{tlwo:sec:long:preload}
+This is not only a defense against (timeless) timing attacks in the DNS cache,
+but a complete redesign of Tor's DNS cache. Ultimately, \emph{what we want to
+achieve is false positives for an attacker trying to determine client activity
+in the Tor network with the help of DNS}. The only way to achieve this---upon
+learning that a domain associated with some activity has been looked up---is if
+there is a possibility that this domain lookup was caused from outside of the
+Tor network. Therefore, as a starting point, we assume that the Tor Project
+would strongly encourage exit operators to not run local resolvers dedicated to
+exits. Instead, exit operators should configure their systems to use their ISP
+resolvers or use a third-party provider. Greschbach
+\emph{et~al.}~\cite{GreschbachPRWF17} investigated the effect of DNS on Tor's
+anonymity, including resolver configuration, and found that using the ISP's
+resolver would be preferable.
+
+First remove all of Tor's current DNS caching as in our straw-man design. The
+preloaded DNS cache instead contains two types of caches: a same-circuit cache
+and a shared preload cache, see Figure~\ref{tlwo:fig:preload}. The preloaded cache
+only contains domains from an allowlist. This allowlist is compiled by a
+central party (e.g., by the Network Health team in the Tor Project) by visiting
+popular sites from several different vantage points. The allowed domains are
+then delivered to exits and continuously resolved to IPs by each exit. During
+domain resolution on a circuit, the client's lookup first hits the preload
+cache. If the domain is preloaded, a cache hit is guaranteed regardless of if
+anyone performed a lookup before. Therefore, it is safe to share this cache
+across circuits without leaking information about past exit traffic. On a cache
+miss, the circuit's same-circuit cache is consulted. As the name suggests, this
+cache is shared for streams on the same circuit but not across different
+circuits. Due to Tor's circuit isolation, an attacker is unable to probe any
+other cache than their own. Therefore, (timeless) timing attacks are eliminated
+(similar to if Tor did not have a DNS cache at all), but without removing the
+possibility of cache hits.
+
+\begin{figure}[!t]
+ \centering
+ \includegraphics[width=.85\columnwidth]{src/tlwo/img/preload}
+ \caption{%
+ Overview of the preloaded DNS cache design. A central party
+ visits sites on a popularity list from different vantage points
+ to compile an allowlist of domains that each relay keeps
+ preloaded at all times by resolving them continuously. DNS
+ looks-ups start in the shared preload cache and moves on to a
+ dynamic cache that is never shared across circuits on cache
+ misses.
+ }
+ \label{tlwo:fig:preload}
+\end{figure}
+
+Including a same-circuit cache in the defense is motivated by Tor's significant
+same-circuit caching to retain performance, see
+Figures~\ref{tlwo:fig:metrics:hitsweb} and~\ref{tlwo:fig:metrics:hitsperm} in
+Section~\ref{tlwo:sec:torcache:metrics}. One can confirm that this is most likely due
+to Tor Browser opening several concurrent connections by referring to the
+\texttt{network.http.max-persistent-con
+nections-per-proxy} option and/or
+enabling debug logging,\footnote{%
+ Enable debug logging in Tor Browser: \url{https://gitlab.torproject.org/tpo/applications/tor-browser/-/wikis/Hacking\#debugging-the-tor-browser}
+} observing that multiple streams are often created to the same destination.
+Note that these destinations are domains and not IPs, and that neither TB nor
+the client-side Tor process has any notion of a DNS cache to prevent
+cross-circuit fingerprinting (see Section~\ref{tlwo:sec:background:tor}). While a
+hypothetical \emph{per-circuit client-side cache} would be an option, it would
+per definition not be able to generate cache hits for concurrent resolves
+(without violating circuit isolation, potentially leading to cross-circuit
+fingerprinting) and put pressure on exits unless they do the appropriate
+caching. This is why our design places the same-circuit cache at exits instead
+of clients.
+
+A preload cache is also motivated by performance, however without any of the
+harmful cross-circuit sharing. The remainder of this section explores the
+performance impact of compiling an allowlist from popularity lists---like
+Alexa~\cite{alexa}, Cisco Umbrella~\cite{umbrella}, and
+Tranco~\cite{tranco}---by comparing the resulting cache-hit ratios to baseline
+Tor today. The preloaded DNS cache is inspired by RFC 8767~\cite{rfc8767} which
+allows resolvers to serve stale data in some cases (see
+Section~\ref{tlwo:sec:related}). Here, exits keep domains on a preloaded allowlist
+fresh on a best-effort level, serving stale records if necessary. Upon shutdown,
+exits could persist IPs in the preload cache to disk as a starting point on
+startup. Upon startup, if the preload cache have yet to be populated with IPs,
+simply treat lookups as cache misses. We discuss periodic refresh overhead
+further in Section~\ref{tlwo:sec:long:preload:resolverload}.
+
+\subsection{Data Collection} \label{tlwo:sec:long:preload:collection}
+
+As part of understanding Tor's DNS cache (Section~\ref{tlwo:sec:torcache}) we also
+collected data to be able to evaluate the performance of the preload design. In
+particular, we evaluate different popularity lists, the impact on cache-hit
+ratio, estimated DNS cache size, and how these change over time.
+
+Central to the preload design is domain popularity lists. We included the Alexa
+list~\cite{alexa} because that is what Mani \emph{et~al.} showed to be accurate for
+Tor~\cite{ManiWJJS18}, the newer Tranco list because it may be more
+accurate~\cite{tranco}, and the Cisco Umbrella list because it also contains
+``non-web'' domains~\cite{umbrella}.
+
+In addition to considering the popularity lists, we also created \emph{extended}
+lists from Alexa and Tranco by visiting each domain on those lists using the
+Chromium browser and recording all requests for additional domains. We repeated
+this three times from Europe, twice from the US, and twice from Hong Kong by
+using a popular VPN service. Each visit was given a timeout of 20 seconds. No
+pruning of the resulting extended lists of domains was done. Much can likely be
+done to make these lists of domains significantly more comprehensive (e.g., by
+considering popular subpages that might contain domains not on the front-page of
+websites) and smaller (e.g., by pruning unique tracking domains: in one of our
+biggest lists, \texttt{*.safeframe.googlesyndication.com} makes up 8\% of
+domains with unique tracking subdomains with no value for caching). Another
+direction to explore that could result in lists that are smaller and/or more
+comprehensive would be to tailor them specifically for relays in certain
+regions. For example, website visits from Europe may be treated differently by
+website operators due to regulations like the GDPR. (In other words, there could
+be differences with regards to \emph{domains}---not to be confused with IPs that
+each relay already resolves locally---that are encountered during website
+visits.)
+
+Based on the regular and extended popularity lists, we made several lists from
+top-10 up to and including top-10,000 in increments. Further, the weekend before
+each of the \emph{first four weeks} of data collection (see
+Section~\ref{tlwo:sec:torcache}), we downloaded fresh popularity lists (Fridays) and
+generated new extended lists (Saturdays and Sundays). We generated in total
+$4*20*5 = 400$ lists: for the first four weeks, 20 lists each for \{Alexa,
+Tranco, Umbrella, extended Alexa, extended Tranco\}.
+
+Our data collection involving the lists took place in three phases. The first
+phase consisted of the first four weeks with increasingly more lists, which was
+followed by two weeks of analysis of our results and dialog with the Tor
+Research Safety Board. This lead us to the third and final phase of data
+collection where we excluded the vast majority of lists, focusing only on
+getting extended data for about eleven more weeks on the most informative and
+useful lists (see Section~\ref{tlwo:sec:long:evaluation}).
+
+\subsection{Further Ethical Considerations} \label{tlwo:sec:long:preload:ethics}
+
+We discussed the preload additions as part of our other data collection,
+received feedback from the Tor Research Safety Board, and passed our
+university's ethical review process.
+
+Our rationale for why including counters for preload lists is safe was as
+follows. We collect counters of aggregate lookups that would have been
+cache-hits on each list over 15 minutes. Except for the top-10 lists
+(non-extended), all other lists contain in the order of 100--1,000 unique
+domains aggregated into a single counter. The main harm associated with the
+dataset is if they enable an attacker to \emph{rule out} that a particular
+website or Tor-user activity took place at our exits (see following paragraph).
+So, little to no zero counters in our data is what we set out to achieve. As an
+additional safety precaution our exits only have a $0.1$\% exit probability,
+further making any zero counter less useful.
+
+Let us look more closely at the potential harm. For websites, the results of Mani
+\emph{et~al.}~\cite{ManiWJJS18} tell an attacker to expect a power-law-like
+distribution of website popularity in the network. As discussed in
+Section~\ref{tlwo:sec:torcache:ethics}, we expect on average about 725 website visits
+to each exit per 15 minute period. This is \emph{the prior of an attacker}
+wishing to perform confirmation or correlation attacks. Most of the visits
+should be to popular websites (per definition) and if the dataset allows an
+attacker to rule such visits out it may cause harm because it is useful
+information to the attacker~\cite{wfwo}. Because of this, we grouped our lists
+into intervals of 100s (for top-?00) and 1000s (for top-?000). We stopped at
+top-10k because we estimated little utility of caching domains of even less
+popular websites. Further, to illustrate when the type of data we collect can be
+harmful, the results of Mani \emph{et~al.}~\cite{ManiWJJS18} and Pulls and
+Dahlberg~\cite{wfwo} tell us that at some point the logic becomes flipped in
+terms of attacker utility: confirming that it was possible that a visit took
+place to a \emph{rarely visited website} is useful. The popularity (i.e.,
+network base rate) of websites is central. We set out to only collect data on
+the most popular of websites/domains, so for us, the focus is on when the
+attacker can rule out website visits or some user activity: an attacker already
+expects that popular websites/domains are visited.
+
+We analyzed the 1,330,400 sample counters we collected over the first four weeks
+for different popularity lists. We found 33 zero counters. All of them belonged
+to Alexa top-10 lists from different weeks! Besides Alexa top-10, the next list
+with the lowest counter was Tranco top-100 from 20 May with 39 hits. Finding
+empty counters for Alexa top-10 was at first very surprising, because the list
+contains the most popular websites on the web (e.g., from 20 May:
+\texttt{google.com}, \texttt{youtube.com}, \texttt{baidu.com},
+\texttt{facebook.com}, \texttt{instagram.com}, \texttt{bilibili.com},
+\texttt{qq.com}, \texttt{wikipedia.org}, \texttt{amazon.com}, and
+\texttt{yahoo.com}). H-owever, note how the actual \emph{domains} on the list (of
+\emph{websites}) do not contain the \texttt{www} prefix nor any other popular subdomain
+associated with the sites. This highlights how poor the regular non-extended
+lists are at capturing actual \emph{website} traffic. We can further see this
+for both Alexa and Tranco in Figure~\ref{tlwo:fig:preload:heatmap}, presented next in
+Section~\ref{tlwo:sec:long:preload:lists}. Even the top-10k lists have low
+cache-hit ratios.
+
+By comparing a list with a more popular list (which should be a strict subset)
+and observing the same counter value it is also possible to infer that
+\emph{likely} no visits took place to the unique domains on the less popular
+list. (This could happen by chance though.) We found 16,055 (1.2\%) such
+samples: 5,073 to top-10k lists, 3,703 to top-[1k,10k) lists, and 7,279 to
+top-[200,1k) lists. None of them were to top-100 lists. This might seem alarming
+at first glance, but taking a closer look at the lists we find that only 135 of
+the samples were to extended lists (77 to x-Tranco top-10k, the highest rank
+list was x-Tranco top-600 with one sample). Further, only five of the samples
+belonged to a list from Umbrella. The remaining 15,915 samples were to the
+regular (non-extended) Alexa and Tranco lists. This is of limited use to
+attackers for popular domains, because while the lists capture popular
+\emph{websites}, our dataset contains counters of \emph{aggregate domain
+lookups}. An inferred zero counter \emph{does not mean that no visits took
+place} to \emph{websites} for the \emph{non-extended} lists. For example, if you
+enter \texttt{www.google.com} or \texttt{www.wikipedia.org} into Tor Browser,
+neither \texttt{google.com} nor \texttt{wikipedia.org} are actually connected
+to. The recursive resolver of the exit may perform the lookup, but Tor will not,
+so it is not captured in our dataset for the non-extended lists. The extended
+lists, due to being generated from actual website visits, include domains
+typically connected to by Tor Browser. Another example is users visiting direct
+links to websites and not entering the domain manually in the browser, such as
+when following links from search engines or sent through social media.
+
+When designing our measurements the above detail was not considered. We included
+the regular popularity lists for sake of comparison. Ideally the non-extended
+lists would have been effective sources for preload lists. This was evidently
+not the case for Alexa and Tranco (see later results), but was the case for
+Umbrella. So while what we did learn helped us understand the value of using
+extended lists to improve cache hits, in hindsight we could have come to the
+same conclusion without the same granularity for non-extended lists.
+
+In the second phase of our data collection (see
+Section~\ref{tlwo:sec:long:preload:collection}), we discussed the above detail with
+the Tor Research Safety Board and concluded to stop collecting data for
+(non-extended) Alexa and Tranco, and to minimize the lists for future collection
+to those necessary to determine the longevity of potentially useful preload
+lists (based on our findings). Out of an abundance of caution, we will only
+share the collected counters for non-extended Alexa and Tranco lists with
+researchers for research purposes (the rest of the data is public). The counters
+collected during the second phase were consistent with the data from the first
+phase.
+
+During the third phase of data collection, we limited the collection to extended
+Tranco top-\{10, 100, 1k, 2k, 4k, 5k, 7k, 10k\} lists and the Umbrella top-10k
+list, all from April 29. The goal was to learn how cache hits get worse over
+time with old lists. Out of 141,624 sample counters collected, three were zero
+and 59 were relatively zero when compared to the more popular list.
+
+\subsection{Performance Evaluation} \label{tlwo:sec:long:evaluation}
+
+The goal of our evaluation is to determine over time:
+ cache-hit ratio of potential preload lists (Section~\ref{tlwo:sec:long:preload:lists}),
+ memory usage at exits (Section~\ref{tlwo:sec:long:preload:entries}), and
+ resolver load (Section~\ref{tlwo:sec:long:preload:resolverload}).
+
+\subsubsection{Results: Preload Lists} \label{tlwo:sec:long:preload:lists}
+
+\begin{figure}
+ \centering
+ \subfloat[][web]{%
+ \includegraphics[width=.75\columnwidth]{src/tlwo/img/plot_preload_lists-web.pdf}
+ \label{tlwo:fig:preload:heatmap:web}
+ }\\
+ \subfloat[][permissive]{%
+ \includegraphics[width=.75\columnwidth]{src/tlwo/img/plot_preload_lists-permissive.pdf}
+ \label{tlwo:fig:preload:heatmap:perm}
+ }
+ \caption{%
+ Shared cross-circuit cache-hit ratios (\%) for selected preload lists during
+ the first six weeks (x-axis) of data collection. The plotted values are medians over
+ 24h, and dates on the y-axis show the date of original list download.}
+ \label{tlwo:fig:preload:heatmap}
+\end{figure}
+
+Our dataset is extensive with 2,498,424 sample counters from 400 popularity
+lists spanning about four months. Figure~\ref{tlwo:fig:preload:heatmap} shows
+comprehensive heatmaps of shared cross-circuit cache-hit ratios for the web
+(Figure~\ref{tlwo:fig:preload:heatmap:web}) and permissive
+(Figure~\ref{tlwo:fig:preload:heatmap:perm}) exits over the first six weeks of data
+collection (first and second phases). Cache-hit ratios are medians (very similar
+to the mean) for 24h periods. In each figure, the groupings of the four weeks
+when we added new lists are visible (top to bottom), as well as baseline Tor at
+the bottom row for sake of comparison. Note how the regular Alexa and Tranco
+top-10k lists perform poorly: the two black ($<5\%$ cache-hit ratio) lines at
+the top of each grouping. Even Umbrella 1k is better, with Umbrella 10k being
+comparable to baseline Tor. The extended lists clearly improve over baseline
+Tor, with the extended 10k-lists even reaching over 30\% cross-circuit cache-hit
+ratios some days. Look at how the lists change over time: we see no real
+difference between lists generated at end of April and those generated during
+May, but consistent changes across all lists over time, likely due to varying
+traffic at the exits. The differences between using Alexa or Tranco to generate
+extended lists are negligible, so we focus on Tranco for the remainder of this
+analysis as it is open, maintained, and a more recent source of website
+popularity~\cite{tranco}.
+
+
+\begin{figure}[!t]
+ \centering
+ \subfloat[][web]{%
+ \includegraphics[width=.67\columnwidth]{src/tlwo/img/plot_preload_hits-web.pdf}
+ \label{tlwo:fig:preload:hits:web}
+ }\\
+ \subfloat[][permissive]{%
+ \includegraphics[width=.67\columnwidth]{src/tlwo/img/plot_preload_hits-permissive.pdf}
+ \label{tlwo:fig:preload:hits:perm}
+ }
+ \caption{%
+ Shared cross-circuit cache-hit ratios for eight different extended Tranco
+ lists, Umbrella top-10k, and Tor baseline during four months in 2022.}
+ \label{tlwo:fig:preload:hits}
+\end{figure}
+
+Figure~\ref{tlwo:fig:preload:hits} shows the observed \emph{cross-circuit} cache-hit
+ratios for eight different extended Tranco lists, Umbrella top-10k, and Tor
+baseline. We used lists from the end of April because they have the most data.
+As a baseline, Tor's current DNS cache has a mean cache-hit ratio of 11\% for
+web and 17\% for permissive. In terms of different popularity lists, the regular
+(non-extended) Tranco and Alexa lists are ineffective: the top-10k lists are
+regularly below $5\%$ for web and permissive (see
+Figure~\ref{tlwo:fig:preload:heatmap}). Umbrella top-10k does much better with mean
+17\% (web) and 16\% (permissive). This is slightly worse (permissive) and
+comparable (web) to baseline Tor.
+
+The extended lists show a further improvement, comparable in terms of
+\emph{average} (full duration of lists) cross-circuit cache-hit ratios to
+baseline Tor at top-200 for Alexa and Tranco for web and at top-700 for
+permissive. The extended lists from top-1k get (depending on which of the
+compiled extended Tranco lists) 20--24\% (web) and 15--18\% (permissive) and up
+to 27--32\% (web) and 22--27\% (permissive) at 10k. There is very little gain
+between top-7k and top-10k. In general, the extended lists do relatively worse
+on the permissive exit and the Tor baseline is higher: this makes sense, since
+Alexa and Tranco are focused on websites. This is further confirmed by Umbrella
+doing better as a more general-purpose domain popularity list.
+
+Note that Figure~\ref{tlwo:fig:preload:hits} shows the cross-circuit cache-hit ratios
+for a selection of the very first preload lists we created on the April 29. The
+results are very encouraging: time seems to have only a slight detrimental
+impact on cache hits. After four months the larger extended lists show a
+noticable performance improvement over baseline, with the exception of an odd
+spike in baseline in early September (we speculate that this is DDoS-related).
+The robustness of preload lists removes one of the main downsides of the preload
+design, i.e., to maintain and deliver a current list to exits. It is likely
+feasible to ship hard-coded preload lists as part of regular Tor releases and
+still improve performance, assuming that exit operators upgrade their software a
+couple of times per year.
+
+\subsubsection{Results: Cache Entries} \label{tlwo:sec:long:preload:entries}
+
+\begin{figure}
+ \centering
+ \subfloat[][web]{%
+ \includegraphics[width=.67\columnwidth]{src/tlwo/img/plot_preload_entries-web.pdf}
+ \label{tlwo:fig:preload:entries:web}
+ }\\
+ \subfloat[][permissive]{%
+ \includegraphics[width=.67\columnwidth]{src/tlwo/img/plot_preload_entries-permissive.pdf}
+ \label{tlwo:fig:preload:entries:perm}
+ }
+ \caption{%
+ Estimated cache entries for eight different extended Tranco lists, Umbrella
+ top-10k, and Tor baseline.}
+ \label{tlwo:fig:preload:entries}
+\end{figure}
+
+Figure~\ref{tlwo:fig:preload:entries} shows the number of cache entries needed in Tor
+as-is (``baseline Tor'') and for the preload design for a range of different
+popularity lists. We can accurately estimate an upper bound because we collected
+the total number of entires in all same-circuit caches as part of our
+measurements. This count is an upper bound, because some of those entries would
+have already been cached in the preload cache. The popularity lists have static
+sizes, and to be an accurate upper bound we used the largest observed size for
+each list over the four weeks.
+
+Starting with the same-circuit cache, look at the line for extended Tranco
+top-10 (``x-Tranco 10'') in Figure~\ref{tlwo:fig:preload:entries}: this extended list
+contains only 90 entries, so the lines at the bottom show mostly the number of
+entries used by the same circuit cache. The size of the same-circuit caches
+should be proportional to the number of open circuits, and therefore follow exit
+probability. Based on the data from Figure~\ref{tlwo:fig:preload:entries}, we do not
+suspect this to be a significant burden. It would be trivial to cap the size
+and/or prune the size as part of OOM-management, or dropping entries based on
+their age would probably have little impact on performance (presumably most
+value is at the start of the circuit when most streams are attached).
+
+Recall from Section~\ref{tlwo:sec:torcache:metrics} and
+Figures~\ref{tlwo:fig:metrics:cacheweb} and~\ref{tlwo:fig:metrics:cacheperm} that the
+permissive exit had a mean of 12,130 entries compared to the web exit's 7,672
+mean. We see the same figures for the baseline in
+Figure~\ref{tlwo:fig:preload:entries}. Albeit slightly higher on average for the web
+exit but more stable, we see that Umbrella 10k as well as extended Tranco top-1k
+are about the same as Tor baseline. So with about the same memory usage as now
+the preload design would offer slightly (permissive) or noticeably (web) better
+cache-hit ratios. Looking at the top-2k up until top-10k extended lists we see a
+significant higher memory usage (only slightly sublinear) but that comes with
+significantly higher cache-hit ratios, as seen in Figure~\ref{tlwo:fig:preload:hits}.
+In absolute terms, for extended Tranco top-10k, about 60,000 cache
+entries---even if pessimistically assuming 1 KiB per entry---would end up using
+about 60 MiB of memory for the cache. Since domains can be at most 255 bytes and
+most domains are much shorter, one could clearly implement the cache
+more memory-efficiently. Also, as mentioned earlier, it is likely possible to
+reduce the size of the extended top-10k lists by removing useless tracking
+domains. Further note that the memory needed to cache the preload list---unlike
+the same-circuit cache---only depends on the size of the list, not the number
+circuits or streams created at the exit.
+
+\subsubsection{Results: Resolver Load} \label{tlwo:sec:long:preload:resolverload}
+
+In general, on the one hand, improving cache-hit ratios will reduce resolver load
+and scale well with increased traffic. On the other hand, continuously
+refreshing domains on the preload list increases resolver load. Consider the
+mean number of lookups at the web exit, 17,529, and its mean/median cache-hit
+ratio of 0.80 (see Section~\ref{tlwo:sec:torcache}). This implies an expected
+$3.9\gets\frac{17529(1-0.80)}{15\cdot60}$ requests per second to the exit's
+resolver. For the permissive exit we observed about 7.8 requests per second. As
+a source of comparison, Sonntag~\cite{sonntag-metrics,Sonntag19} reports for a
+DNS resolver dedicated to a 200 Mbit/s exit in 2018 an average of 18.5 requests
+per second.
+
+The resolver load for the different preload lists should be proportional to the
+estimated number of cache entries shown in Figure~\ref{tlwo:fig:preload:entries}. The
+estimated load for an extended top-1k list would be similar to current Tor,
+while the extended top-10k list would see about a seven-fold increase without
+changes. This may or may not be problem. Given the variability of lookups we
+observed throughout our data collection (Figure~\ref{tlwo:fig:lookups}) and reported
+by Sonntag, resolvers are clearly capable of dealing with increased loads.
+Requests due to the preload list should be predictable, consistent, and cheap in
+terms of bandwidth even for a low-capacity exit.
+
+Regardless, the load on resolvers could be lowered by reducing the number of
+domains, e.g., the increased cache-hit ratio from top-7k to top-10k is very
+small ($\approx$1\%) for a 20--30\% increase in entries. One could also increase
+the internal TTLs, i.e., the frequency of refreshing the entries in the preload
+cache. In Tor, this is especially practical since circuits use random exits. In
+the rare case of stale data causing issues, simply create a fresh circuit.
+Serving stale data is not uncommon in DNS~\cite{rfc8767}, further discussed next
+in Section~\ref{tlwo:sec:related}.
diff --git a/summary/src/tlwo/src/ref.bib b/summary/src/tlwo/src/ref.bib
new file mode 100644
index 0000000..c62bea8
--- /dev/null
+++ b/summary/src/tlwo/src/ref.bib
@@ -0,0 +1,352 @@
+@misc{ctor-1,
+ author = {Tor Project},
+ title = {{Tor source code}},
+ howpublished = {\url{https://gitlab.torproject.org/tpo/core/tor/-/blob/tor-0.4.7.7/src/feature/relay/dns.c\#L600-689}, accessed 2022-06-01},
+}
+
+@misc{ctor-2,
+ author = {Tor Project},
+ title = {{Tor source code}},
+ howpublished = {\url{https://gitlab.torproject.org/tpo/core/tor/-/blob/tor-0.4.7.7/src/lib/tls/buffers\_tls.c\#L43-100}, accessed 2022-06-01},
+}
+
+@misc{ctor-3,
+ author = {Tor Project},
+ title = {{Tor source code}},
+ howpublished = {\url{https://gitlab.torproject.org/tpo/core/tor/-/blob/tor-0.4.7.7/src/core/or/connection\_or.c\#L2361-2426}, accessed 2022-06-01},
+}
+
+@misc{ctor-4,
+ author = {Tor Project},
+ title = {{Tor source code}},
+ howpublished = {\url{https://gitlab.torproject.org/tpo/core/tor/-/blob/tor-0.4.7.7/src/feature/relay/dns.c\#L725-732}, accessed 2022-06-01},
+}
+
+@misc{network-ddos,
+ author = {Tor Project},
+ title = {{Tor Project status}},
+ howpublished = {\url{https://web.archive.org/web/20220906145324/https://status.torproject.org/}},
+}
+
+@article{jung,
+ author = {Jaeyeon Jung and Emil Sit and Hari Balakrishnan and Robert Tappan Morris},
+ title = {{DNS} performance and the effectiveness of caching},
+ journal = {{IEEE/ACM} Trans. Netw.},
+ volume = {10},
+ number = {5},
+ year = {2002},
+}
+
+@article{hao-and-wang,
+ author = {Shuai Hao and Haining Wang},
+ title = {Exploring Domain Name Based Features on the Effectiveness of {DNS} Caching},
+ journal = {CCR},
+ volume = {47},
+ number = {1},
+ year = {2017},
+}
+
+
+
+@inproceedings{trilemma,
+ author = {Debajyoti Das and Sebastian Meiser and Esfandiar Mohammadi and Aniket Kate},
+ title = {Anonymity Trilemma: Strong Anonymity, Low Bandwidth Overhead, Low Latency---Choose Two},
+ booktitle = {{IEEE} {S\&P}},
+ year = {2018},
+}
+
+@article{remote-timing-attacks,
+ author = {Scott A. Crosby and Dan S. Wallach and Rudolf H. Riedi},
+ title = {Opportunities and Limits of Remote Timing Attacks},
+ journal = {{ACM} Trans. Inf. Syst. Secur.},
+ volume = {12},
+ number = {3},
+ year = {2009},
+}
+
+
+@inproceedings{lucky13,
+ author = {Nadhem J. AlFardan and Kenneth G. Paterson},
+ title = {Lucky Thirteen: Breaking the {TLS} and {DTLS} Record Protocols},
+ booktitle = {{IEEE} {S\&P}},
+ year = {2013},
+}
+
+@inproceedings{timing-attack,
+ author = {Paul C. Kocher},
+ title = {Timing Attacks on Implementations of {Diffie-Hellman}, {RSA}, {DSS}, and Other Systems},
+ booktitle = {{CRYPTO}},
+ year = {1996},
+}
+
+@inproceedings{tor,
+ author = {Roger Dingledine and Nick Mathewson and Paul F. Syverson},
+ title = {Tor: The Second-Generation Onion Router},
+ booktitle = {USENIX Security},
+ year = {2004},
+}
+
+@article{wfwo,
+ author = {Tobias Pulls and Rasmus Dahlberg},
+ title = {Website Fingerprinting with Website Oracles},
+ journal = {PETS},
+ volume = {2020},
+ number = {1},
+}
+
+@inproceedings{timeless,
+ author = {Tom van Goethem and Christina P{\"{o}}pper and Wouter Joosen and Mathy Vanhoef},
+ title = {Timeless Timing Attacks: Exploiting Concurrency to Leak Secrets over Remote Connections},
+ booktitle = {{USENIX} Security},
+ year = {2020},
+}
+
+@inproceedings{sonntag-metrics,
+ author = {Michael Sonntag},
+ title = {{DNS} Traffic of a {Tor} Exit Node---An Analysis},
+ booktitle = {{SpaCCS}},
+ year = {2018},
+}
+
+@inproceedings{ManiWJJS18,
+ author = {Akshaya Mani and T. Wilson{-}Brown and Rob Jansen and Aaron Johnson and Micah Sherr},
+ title = {Understanding {Tor} Usage with Privacy-Preserving Measurement},
+ booktitle = {{IMC}},
+ year = {2018},
+}
+
+@inproceedings{tranco,
+ author = {{Le Pochat}, Victor and {Van Goethem}, Tom and Tajalizadehkhoob, Samaneh and Korczy\'{n}ski, Maciej and Joosen, Wouter},
+ title = {Tranco: A Research-Oriented Top Sites Ranking Hardened Against Manipulation},
+ booktitle = {NDSS},
+ year = {2019},
+}
+
+@misc{umbrella,
+ author = {Cisco},
+ title = {Umbrella Popularity List},
+ howpublished = {\url{https://umbrella-static.s3-us-west-1.amazonaws.com/index.html}, accessed 2022-04-29},
+}
+
+@misc{alexa,
+ author = {Amazon},
+ title = {Alexa Top 1 Million},
+ howpublished = {\url{https://www.alexa.com/}, accessed 2022-04-29},
+}
+
+@inproceedings{GreschbachPRWF17,
+ author = {Benjamin Greschbach and Tobias Pulls and Laura M. Roberts and Philipp Winter and Nick Feamster},
+ title = {The Effect of {DNS} on {Tor}'s Anonymity},
+ booktitle = {NDSS},
+ year = {2017},
+}
+
+@techreport{rfc8767,
+ author = {David C Lawrence and Warren Kumari and Puneet Sood},
+ title = {Serving Stale Data to Improve {DNS} Resiliency},
+ type = {RFC},
+ institution = {IETF},
+ number = {8767},
+ year = {2020},
+}
+
+@inproceedings{Sonntag19,
+ title = {Malicious {DNS} Traffic in {Tor}: Analysis and Countermeasures},
+ author = {Sonntag, Michael},
+ booktitle = {ICISSP},
+ year = {2019}
+}
+
+@inproceedings{privcount,
+ author = {Rob Jansen and Aaron Johnson},
+ title = {Safely Measuring {Tor}},
+ booktitle = {{CCS}},
+ year = {2016},
+}
+
+@inproceedings{privex,
+ author = {Tariq Elahi and George Danezis and Ian Goldberg},
+ title = {{PrivEx}: Private Collection of Traffic Statistics for Anonymous Communication Networks},
+ booktitle = {{CCS}},
+ year = {2014},
+}
+
+
+@inproceedings{FenskeMJS17,
+ author = {Ellis Fenske and Akshaya Mani and Aaron Johnson and Micah Sherr},
+ title = {Distributed Measurement with Private Set-Union Cardinality},
+ booktitle = {{CCS}},
+ year = {2017},
+}
+
+@inproceedings{JansenTH18,
+ author = {Rob Jansen and Matthew Traudt and Nicholas Hopper},
+ title = {Privacy-Preserving Dynamic Learning of {Tor} Network Traffic},
+ booktitle = {{CCS}},
+ year = {2018},
+}
+
+@inproceedings{MouraHMSD18,
+ author = {Giovane C. M. Moura and John S. Heidemann and Moritz M{\"{u}}ller and Ricardo de Oliveira Schmidt and Marco Davids},
+ title = {When the Dike Breaks: Dissecting {DNS} Defenses During {DDoS}},
+ booktitle = {{IMC}},
+ year = {2018},
+}
+
+@misc{unbound,
+ author = {{NLnet Labs}},
+ title = {Serving Stale Data---Unbound 1.14.0 documentation},
+ howpublished = {\url{https://unbound.docs.nlnetlabs.nl/en/latest/topics/serve-stale.html}, accessed 2022-06-01},
+}
+
+@article{cheng1998traffic,
+ title = {Traffic analysis of {SSL} encrypted web browsing},
+ author = {Cheng, Heyning and Avnur, Ron},
+ journal = {Project paper, University of Berkeley},
+ year = {1998}
+}
+
+@inproceedings{DBLP:conf/sp/SunSWRPQ02,
+ author = {Qixiang Sun and Daniel R. Simon and Yi{-}Min Wang and Wilf Russell and Venkata N. Padmanabhan and Lili Qiu},
+ title = {Statistical Identification of Encrypted Web Browsing Traffic},
+ booktitle = {{IEEE S\&P}},
+ year = {2002}
+}
+
+@inproceedings{Hintz02,
+ author = {Andrew Hintz},
+ title = {Fingerprinting Websites Using Traffic Analysis},
+ booktitle = {{PETS}},
+ year = {2002}
+}
+
+@inproceedings{DBLP:conf/ccs/LiberatoreL06,
+ author = {Marc Liberatore and Brian Neil Levine},
+ title = {Inferring the source of encrypted {HTTP} connections},
+ booktitle = {{CCS}},
+ year = {2006}
+}
+
+@inproceedings{HerrmannWF09,
+ author = {Dominik Herrmann and Rolf Wendolsky and Hannes Federrath},
+ title = {Website fingerprinting: attacking popular privacy enhancing technologies with the multinomial na{\"{\i}}ve-bayes classifier},
+ booktitle = {{CCSW}},
+ year = {2009}
+}
+
+@inproceedings{PanchenkoNZE11,
+ author = {Andriy Panchenko and Lukas Niessen and Andreas Zinnen and Thomas Engel},
+ title = {Website fingerprinting in onion routing based anonymization networks},
+ booktitle = {{WPES}},
+ year = {2011}
+}
+
+@inproceedings{PochatGJ19,
+ author = {Victor Le Pochat and Tom van Goethem and Wouter Joosen},
+ title = {Evaluating the Long-term Effects of Parameters on the Characteristics of the {Tranco} Top Sites Ranking},
+ booktitle={{USENIX Security}},
+ year={2019}
+}
+
+@inproceedings{JuarezAADG14,
+ author = {Marc Ju{\'{a}}rez and Sadia Afroz and Gunes Acar and Claudia D{\'{\i}}az and Rachel Greenstadt},
+ title = {A Critical Evaluation of Website Fingerprinting Attacks},
+ booktitle = {{CCS}},
+ year = {2014},
+}
+
+@misc{perryCrit,
+ author = {Mike Perry},
+ title = {A Critique of Website Traffic Fingerprinting Attacks},
+ howpublished = {\url{https://blog.torproject.org/critique-website-traffic-fingerprinting-attacks}, accessed 2022-06-01},
+}
+
+@article{realistic,
+ author = {Tao Wang and Ian Goldberg},
+ title = {On Realistically Attacking {Tor} with Website Fingerprinting},
+ journal = {PETS},
+ volume = {2016},
+ number = {4},
+}
+
+@inproceedings{JohnsonWJSS13,
+ author = {Aaron Johnson and Chris Wacek and Rob Jansen and Micah Sherr and Paul F. Syverson},
+ title = {Users get routed: traffic correlation on {Tor} by realistic adversaries},
+ booktitle = {{CCS}},
+ year = {2013}
+}
+
+@inproceedings{deepcorr,
+ author = {Milad Nasr and Alireza Bahramali and Amir Houmansadr},
+ title = {DeepCorr: Strong Flow Correlation Attacks on {Tor} Using Deep Learning},
+ booktitle = {{CCS}},
+ year = {2018}
+}
+
+@inproceedings{AumannL07,
+ author = {Yonatan Aumann and Yehuda Lindell},
+ title = {Security Against Covert Adversaries: Efficient Protocols for Realistic Adversaries},
+ booktitle = {{TCC}},
+ year = {2007},
+}
+
+@inproceedings{chen,
+ author = {Yizheng Chen and Manos Antonakakis and Roberto Perdisci and Yacin Nadji and David Dagon and Wenke Lee},
+ title = {{DNS} Noise: Measuring the Pervasiveness of Disposable Domains in Modern {DNS} Traffic},
+ booktitle = {{IEEE/IFIP} {DSN}},
+ year = {2014},
+}
+
+
+@inproceedings{exitmap,
+ author = {Philipp Winter and Richard K{\"{o}}wer and Martin Mulazzani and Markus Huber and Sebastian Schrittwieser and Stefan Lindskog and Edgar R. Weippl},
+ title = {Spoiled Onions: Exposing Malicious {Tor} Exit Relays},
+ booktitle = {{PETS}},
+ year = {2014},
+}
+
+@inproceedings{SibyJDVT20,
+ author = {Sandra Siby and Marc Ju{\'{a}}rez and Claudia D{\'{\i}}az and Narseo Vallina{-}Rodriguez and Carmela Troncoso},
+ title = {Encrypted {DNS} -{\textgreater} Privacy? {A} Traffic Analysis Perspective},
+ booktitle = {NDSS},
+ year = {2020},
+}
+
+@misc{tpo-russia,
+ author = {Gustavo Gus},
+ title = {Responding to {Tor} censorship in {Russia}},
+ year = {2021},
+ howpublished = {\url{https://blog.torproject.org/tor-censorship-in-russia/}, accessed 2022-06-01},
+}
+
+@misc{tpo-who-uses-tor,
+ author = {Al Smith},
+ title = {Tor and the humans who use it},
+ howpublished = {\url{https://blog.torproject.org/tor-and-the-humans-who-use-it/}, accessed 2022-06-01},
+}
+
+@misc{tb,
+ author = {Mike Perry and Erinn Clark and Steven Murdoch and Georg Koppen},
+ title = {The Design and Implementation of the {Tor Browser} {[DRAFT]}},
+ howpublished = {\url{https://2019.www.torproject.org/projects/torbrowser/design/}, accessed 2022-06-01},
+}
+
+@misc{tor-congestion,
+ author = {Mike Perry},
+ title = {Congestion Control Arrives in {Tor} 0.4.7-stable!},
+ howpublished = {\url{https://blog.torproject.org/congestion-contrl-047/}, accessed 2022-06-01},
+}
+
+@inproceedings{histor,
+ author = {Akshaya Mani and Micah Sherr},
+ title = {HisTor{\(\epsilon\)}: Differentially Private and Robust Statistics Collection for {Tor}},
+ booktitle = {NDSS},
+ year = {2017},
+}
+
+@inproceedings{onlinewf,
+ title={Online Website Fingerprinting: Evaluating Website Fingerprinting Attacks on {Tor} in the Real World},
+ author={Cherubin, Giovanni and Jansen, Rob and Troncoso, Carmela},
+ booktitle={{USENIX Security}},
+ year={2022}
+}
diff --git a/summary/src/tlwo/src/related.tex b/summary/src/tlwo/src/related.tex
new file mode 100644
index 0000000..3521d45
--- /dev/null
+++ b/summary/src/tlwo/src/related.tex
@@ -0,0 +1,174 @@
+\section{Related Work} \label{tlwo:sec:related}
+
+Van Goethem \emph{et~al.}~\cite{timeless} originally proposed timeless timing
+attacks, showing significant improvements against HTTP/2 web servers, Tor onion
+services, and EAP-pwd. All timeless timing attacks exploit concurrent
+processing, e.g., in HTTP/2, by filling buffers at the relay closest to an onion
+service, or packing two authentication requests in EAP-pwd into the same RadSec
+(TLS over TCP) packet. The latter was the inspiration for our timeless timing
+attack on Tor's DNS cache, i.e., packing two RESOLVE cells into a single TLS
+record.
+
+There has been a long body of work on how to safely perform measurements of the
+Tor network~\cite{privex,FenskeMJS17,privcount,histor}, laying the foundation
+for safely performing large-scale measurements~\cite{JansenTH18,ManiWJJS18}. Our
+timeless timing attack enables anyone to do network-wide measurements for exact
+domains on specific exits with a precision of at least one second. This is
+highly invasive and a useful resource to deanonymize Tor-users, discussed
+further shortly. Our network measurements to inform the design of defenses have
+been focused around the DNS in Tor. Similar to other related work (see below),
+we focused on how to make those limited measurements safe; not on how to broadly
+perform a much wider range of measurements safely.
+
+%% ATTACK
+Greschbach \emph{et~al.}~\cite{GreschbachPRWF17} investigated the effect of DNS on
+Tor's anonymity. They quantified the use of DNS resolvers in the network, the
+impact of choice of resolver on correlation and confirmation attacks, and how to
+incorporate observed DNS traffic with website fingerprinting
+attacks~\cite{cheng1998traffic,HerrmannWF09,Hintz02,DBLP:conf/ccs/LiberatoreL06,PanchenkoNZE11,DBLP:conf/sp/SunSWRPQ02}
+to make improved correlation attacks. In their construction, DNS traffic is used
+to either reduce the number of websites to consider during classification or to
+confirm classification. A key observation was that Tor, due to a bug, clipped
+all TTLs to 60 seconds. This was resolved and lead to the current approach of
+clipping to 300 or 3,600 seconds. One of our short-time mitigations update
+these clips to be fuzzy.
+
+Greschbach \emph{et~al.}~\cite{GreschbachPRWF17} also measured DNS requests from
+an exit for both web and a more permissive exit policy in 2016. The collection
+was done by observing DNS requests to the exit's resolver and aggregating
+results into five-minute buckets. Similarly, we aggregate over time in 15-minute
+buckets and do not directly collect resolved domains. They found a small
+difference between exit policies, with the permissive exit having slightly fewer
+(3\% smaller median) lookups. Our results are very different: the permissive
+exit policy resulted in significantly more (double the median) lookups.
+
+Pulls and Dahlberg~\cite{wfwo} generalized the classifier confirmation attack of
+Greschbach \emph{et~al.}~\cite{GreschbachPRWF17} into a new security notion for website
+fingerprinting attacks, and further explored the use of DNS. They showed that
+timing attacks were possible in Tor's DNS cache, performing network-wide
+measurements on a domain under their control with a true positive
+rate of 17.3\% when attempting to minimize false positives. We use a similar
+method for measurements, but our attack is significantly better with a
+100\% true positive rate and no false positives at all.
+
+Sonntag collected hourly data from the resolver of an exit during five months in
+2018~\cite{sonntag-metrics,Sonntag19}. In terms of frequency, they noted about
+18.5 requests per second, with a peak of 291,472 requests in an hour. The
+average is higher than ours (3.9 and 7.8 requests per second) while the peak
+significantly smaller (1,183,275 requests in 15 minutes). Sonntag also analyzed
+the actual domains looked up, including categorization (porn, social network,
+shopping, advertisement etc). We do not collect domains; only cache-hits as part
+of popularity lists by aggregating domains into buckets like top-100, top-1k,
+etc.
+
+Mani \emph{et~al.}~\cite{ManiWJJS18} used PrivCount~\cite{privcount} and
+PSC~\cite{FenskeMJS17} to safely make extensive network-wide measurements of the
+Tor network. They measured, e.g., circuits, streams, destination ports, and exit
+domains at exits, as well as client connections, churn, composition, and
+diversity at clients. Their exit probability ranged between 1.5--2.2\%, compared
+to our peak of 0.1\%. While our data is much more limited and targeted around
+DNS, there are two interesting comparisons to consider:
+\begin{itemize}
+ % mean lookups: 17529.813 and 41099.697
+ % 15 minutes x4 = 1h, 24h per day
+ % mean exit probabilities: 0.041% and 0.049%
+ % (17529.813+41099.697)×4×24÷(0.01×(0.041+0.049)) = 6,253,814,400
+
+ \item Mani \emph{et~al.} observed 2.1 billion exit streams inferred in the
+ network every 24 hours. Extrapolating on our lookup statistics we have an
+ average of 6.3 billion lookups, which corresponds to the number of
+ streams.\footnote{Streams either do a lookup with RELAY\_BEGIN or are closed
+ after a RELAY\_RESOLVE cell. Timeout and retries are possible on resolver
+ failure, but the way we measure hides those extra lookups.} This suggests a
+ significant increase ($\approx3x$) in the number of streams in the Tor network since 2018.
+ \item Mani \emph{et~al.} measured the frequency of how well the primary
+ domain on a circuit matched the Alexa top-one-million list. We transform
+ their reported relative counts and compare it to the relative count of
+ average lookups in the same intervals in our dataset for top-10k, shown in
+ Figure~\ref{tlwo:fig:mani:popularity}. Note that this only uses data from phase
+ one of our data collection. Broadly, we see that their results show
+ significantly more traffic to top-10 than any of the lists we use. That
+ said, our data supports one of Mani \emph{et~al.}'s conclusion that the
+ popularity lists are reasonably accurate representations of traffic from the
+ Tor network.
+\end{itemize}
+
+\begin{figure}[!t]
+ \centering
+ \subfloat[][web]{%
+ \includegraphics[width=.67\columnwidth]{src/tlwo/img/plot_popularity_match-web.pdf}
+ \label{tlwo:fig:mani:popularity:web}
+ }\\
+ \subfloat[][permissive]{%
+ \includegraphics[width=.67\columnwidth]{src/tlwo/img/plot_popularity_match-permissive.pdf}
+ \label{tlwo:fig:mani:popularity:perm}
+ }
+ \caption{%
+ Comparison of \emph{relative popularity} of popularity rankings with the
+ results of Mani \emph{et~al.}~\cite{ManiWJJS18}.}
+ \label{tlwo:fig:mani:popularity}
+\end{figure}
+
+%% DNS prefetching paragraphs and software from there
+% Defenses can expand on DNS prefetching
+% https://datatracker.ietf.org/doc/html/rfc8767
+% https://unbound.docs.nlnetlabs.nl/en/latest/topics/serve-stale.html
+
+The relatively recent RFC 8767~\cite{rfc8767} allows for DNS data to be served
+``stale'', i.e., after expiry according to its TTL, in the exceptional
+circumstance that a recursive resolver is unable to refresh the information. In
+case data goes stale, RFC 8767 suggests serving it for at most one to three days.
+The background of RFC 8767 aptly motivates this with the saying that
+\emph{``stale bread is better than no bread''}. In addition to serving
+potentially stale data, modern resolvers like Unbound~\cite{unbound} further
+support prefetching: preemptively refreshing domains in the cache before TTL
+expiry. These measures all serve to improved reliability and have been found to
+be used for sake of resiliency~\cite{MouraHMSD18}. Tor already clips TTLs, in a
+sense serving stale data for the vast majority of domains. Our preload design
+takes this further by introducing continuous prefetching of domains on a fixed
+allowlist.
+
+Two decades ago, Jung \emph{et~al.}~\cite{jung} found that cache-hit ratios on
+the order of 80--87\% are achieved if a resolver has ten or more clients and
+TTLs are at least ten minutes. More recently Hao and Wang~\cite{hao-and-wang}
+reported that 100k cached entries are required to achieve a baseline of 86\%
+cache-hits for a first-come first-serve cache in a university network. Their
+dataset had similar characteristics to a DNS trace collected for an ISP resolver
+by Chen \emph{et~al.}~\cite{chen} with regards to \emph{disposable domains} that
+are never requested more than once in the long-tail of DNS; out of the 11\% of
+domains that are not disposable, 5\% and 30\% of them have cache-hit ratios of
+at least 95\% and 80\% respectively. It appears that fewer disposable domains
+are resolved in Tor because the observed cache sizes are not large enough for
+89\% unique lookups. Achieving an 80\% cache-hit ratio with a cache of 10k
+entries does not seem to be an outlier.
+
+% Chen et al. (2014), DNS noise: Measuring the pervasiveness of disposable domains in modern DNS traffic
+% - ISP data set from end of 2011
+% - Fig 3, long-tail of domains with no additional look-ups (89%)
+% - Fig 4, cache hit distribution
+% - Fig 7, 30% of all non-unique domain names have at least 80% cache hit ratio
+% and 5% have at least 95% cache-hit ratios.
+%
+% Hao and Wang. (2017) Exploring Domain Name Based Features on the Effectiveness of DNS Caching
+% - University data set
+% - "we observe that a size of 100,000 entries would have a cache hit rate of about 86%"
+% - (context is to use this baseline for other policies than fifo/lru etc.)
+%
+% Avoiding to cache "disposable domains", i.e., domains that are only used
+% once seems to be a thing to research. This is what Hao and Wang does.
+%
+% Jung et al. (2002) DNS Performance and the Effectiveness of Caching
+% - MIT network 80-86% cache hits, much because multiple TCP connections from
+% browsers
+% - "We find that the distribution of names is Zipf-like, which immeaditely
+% limits even the theoretical effectivness of caching"
+% - 10 min TTL yields almost the same cache-hit ratio as a longer TTL
+% - Already with 10 clients, same cache-hit ratio as 1000 clients
+%
+% https://developers.google.com/speed/public-dns/docs/performance
+% - "While a few sites (and consequently DNS names) are very popular, most are of
+% interest to only a few users and are accessed rarely; so the majority of
+% requests result in cache misses"
+% - (Could not find anything about Google/Cloudflare cache-hit ratios for DNS)
+% - (Found a white paper saying 70-90%, but not a good source)
+% - https://www.senki.org/wp-content/uploads/2017/08/213049567-How-to-Measure-Resolver-Performance.pdf
diff --git a/summary/src/tlwo/src/short.tex b/summary/src/tlwo/src/short.tex
new file mode 100644
index 0000000..6d06c86
--- /dev/null
+++ b/summary/src/tlwo/src/short.tex
@@ -0,0 +1,63 @@
+\section{Mitigations} \label{tlwo:sec:short}
+
+Until a more comprehensive defense can be deployed we propose two short-term
+mitigations that require little (fuzzy TTLs) or no (cover lookups) changes to
+Tor. The former adds some uncertainty with regards to when a domain was added
+to an exit's DNS cache. The latter can remove or reduce the attacker's ability
+to conduct attacks against specific domains but is limited in its scalability.
+
+\subsection{Fuzzy TTLs} \label{tlwo:sec:short:fuzzy}
+Recall that it is possible to determine when a domain was inserted into an
+exit's DNS cache (Section~\ref{tlwo:sec:attack:detailed}) once you know the time $t$
+when the timeless timing attack started, the duration until the domain was no
+longer cached $x$ (repeated probes), and the expected clip value
+$\mathsf{clipped\_ttl}$ of the domain. The idea of fuzzy TTLs is to add
+uncertainty by randomizing the length of time that an entry is cached.
+
+In more detail, keep Tor's DNS cache as-is but sample the cache duration
+uniformly at random from $[m, \mathsf{clipped\_ttl}]$, where $m$ is the minimum
+duration to cache. Upon observing the exact time of removal $t+x$, the attacker
+now learns that the domain has been in the cache for the duration $x$ and was
+thus cached between $[t+x-\mathsf{clipped\_ttl}, t-m]$. Note that if $m =
+\mathsf{clipped\_ttl}$, then $x = 0$; the same as in Tor today.
+
+The reality of websites is unfortunately that they consist of multiple domains,
+reducing the effectiveness of fuzzy TTLs because the attacker uses the most
+lucky sample. For a list of domains $d_1,\hdots,d_k$ that were added at the same
+time with identical clips, then $x \leftarrow \mathsf{max}(x_1,\hdots,x_k)$.
+Based on our preload list measurements presented in
+Section~\ref{tlwo:sec:long:preload}, we expect around 8--13 domains per site
+available for an attacker to potentially query for. Earlier work found
+a median of two unique domains out of ten domains in total per website on Alexa
+top 1M~\cite{GreschbachPRWF17}.
+
+Fuzzy TTLs are an ineffective mitigation if the attacker just wants to confirm
+suspected activity with a low base rate, i.e., the mere existence of cached
+domains anywhere in the network is enough of a signal~\cite{wfwo}. Fuzzy TTLs
+are a plus for websites that are modestly popular in the network, since the
+attacker has to determine which of several exits with cached domains is the
+correct one. Having to consider multiple domains and exits (to narrow down the
+exact time) is more noisy in the network and increases the risk of
+detection~\cite{AumannL07}. Attackers may be forced to consider a time-window of
+several seconds or even minutes, which is a big win for defending against
+correlation and confirmation attacks~\cite{GreschbachPRWF17,wfwo}.
+
+\subsection{Cover Lookups}
+The idea of the cover lookups mitigation is to simply inject domains into DNS
+caches in the Tor network to create false positives. Injected domains must be
+indistinguishable from domains cached from real Tor user activity. For this, a
+distribution that models website visits for a particular base rate should be
+used rather than running, e.g., a deterministic cron job. Further, care has to
+be taken to capture all predictable domains for each website to defend.
+
+A more drastic mitigation would be to keep a site's domains cached at every exit
+all the time, e.g., by running \texttt{exitmap}~\cite{exitmap} every five
+minutes. This obviously scales poorly. The network overhead would already be
+significant for a few hundred sites, e.g., estimates based on Alexa top-1k would
+add about 26.7~requests per second to each exit.
+
+Cover lookups do not scale, even if just injected at few exits probabilistically
+according to some target base rate. It is a last resort mitigation for site
+operators that fear that their users are targeted by motivated attackers and
+where, for some reason, the site cannot transition to being completely (no
+resources loaded from other domains) hosted as an onion service.
diff --git a/summary/src/tlwo/src/tor-cache.tex b/summary/src/tlwo/src/tor-cache.tex
new file mode 100644
index 0000000..392b755
--- /dev/null
+++ b/summary/src/tlwo/src/tor-cache.tex
@@ -0,0 +1,167 @@
+\section{Tor's DNS Cache Today} \label{tlwo:sec:torcache}
+
+To better understand the DNS cache of Tor today, we set out to collect
+performance metrics from exits in the live Tor network.
+Section~\ref{tlwo:sec:torcache:ethics} covers ethical considerations, followed by
+data collection in Section~\ref{tlwo:sec:torcache:collection} and resulting metrics
+in Section~\ref{tlwo:sec:torcache:metrics}.
+
+\subsection{Ethical Considerations} \label{tlwo:sec:torcache:ethics}
+
+We submitted a proposal to the Tor Research Safety Board describing measurements
+that would ultimately inform the design of a long-term defense
+(Section~\ref{tlwo:sec:long}) against our improved attack (Section~\ref{tlwo:sec:attack}).
+To be able to assess the impact of the defense we needed to better understand
+the DNS cache Tor has today as a baseline. After a couple of iterations with the
+Tor Research Safety Board we reached consensus, and then successfully completed
+our university's ethical review process. The proposal also included measurements
+needed for our defense, described later in
+Section~\ref{tlwo:sec:long:preload:collection}. During the measurements period of
+four months we consulted the Tor Research Safety Board to discuss our results.
+
+The intuition of our measurement is as follows. Two exit relays are operated to
+collect counters related to domain lookups. For example, the number of lookups
+and cache hits (Section~\ref{tlwo:sec:torcache:collection}). These counters are the
+result of all traffic at the exit, aggregated over 15 minutes intervals before
+being written to disk and then reset in memory. Based on an exit probability of
+about $0.0005$ ($\approx 100$Mbit/s), we extrapolated from the measurements of
+Mani \emph{et~al.}~\cite{ManiWJJS18} that we should expect about 725 website
+visits during 15 minutes. Each website visit typically triggers multiple domain
+lookups~\cite{GreschbachPRWF17} that affect our global counters. A collection
+interval of 15 minutes should thus aggregate hundreds of website visits for a
+small fraction of the network, making the resulting dataset hardly useful for an
+attacker performing correlation or confirmation attacks on the network.
+This sketch appears to be confirmed by our measurement results: out of 23,632
+15-minute intervals, only 18 contained less than 1,000 lookups.
+Our conclusion together with the Tor Research Safety Board was that the
+resulting dataset should be safe to make public (further discussed later).
+
+\subsection{Data Collection} \label{tlwo:sec:torcache:collection}
+
+Two 100 Mbit/s exit relays were operated by volunteers on the premises of
+DFRI\footnote{More information about DFRI can be found at their website:
+\url{https://www.dfri.se}.}
+from May 2 until September 3, 2022. One exit was configured in its exit policy
+with \emph{web} ports.\footnote{%
+ Reject all ports except 80 and 443. (The exit can still do DNS for users.)
+} The other relay was configured with
+\emph{permissive} ports to also allow non-web traffic.\footnote{%
+ Allow all ports except 25, 119, 135--139, 445, 563, 1214, 4661--4666,
+ 6346--6429, 6699, and 6881--6999.
+} Otherwise the two exits were identical,
+running on the same VM with a dedicated \texttt{unbound} process that had
+caching disabled by setting the \texttt{rrset-cache-size} to zero (to avoid TTL
+biases). We collected the following counters every 15 minutes at both exits:
+
+\begin{description}
+ \item[timestamp] UNIX timestamp when the data was collected.
+ \item[lookups] Total number of observed domain lookups.
+ \item[hits\_5m] Number of cache hits with a TTL of 300 seconds.
+ \item[hits\_60m] Number of cache hits with a TTL of 3,600 seconds.
+ \item[hits\_pending] Number of cache hits with a pending resolve, i.e.,
+ an answer has been requested but is not yet available.
+ \item[hits\_same\_circuit] Number of streams that looked up a domain
+ that was previously looked up on the same circuit.
+ \item[num\_cache\_entries] Number of entries in Tor's DNS cache.
+\end{description}
+
+A timestamp is needed to plot metrics as a function of time. Timestamps are
+also crucial for the additional counters described in
+Section~\ref{tlwo:sec:long:preload:collection}. The number of lookups and different
+types of cache hits are needed to get a baseline of cache-hit ratios. The
+number of entries in Tor's DNS cache (at the time of collection) is needed to
+get a baseline of memory usage. The necessary Tor changes to collect all metrics
+(including Section~\ref{tlwo:sec:long:preload:collection}) were relatively modest:
+400 lines of code.
+
+\subsection{Metrics} \label{tlwo:sec:torcache:metrics}
+
+Regarding lookups per 15 minutes, the web exit processed a mean of 17,530 and
+median of 13,393 lookups (Figure~\ref{tlwo:fig:metrics:lookweb}), and the permissive
+exit processed a mean of 41,100 and median of 26,940 lookups
+(Figure~\ref{tlwo:fig:metrics:lookperm}). The permissive exit policy results in
+significantly more lookups. Around August 1, our exits experienced downtime,
+visible as dips in lookups in both figures (at times fewer than 1,000 lookups,
+as noted in Section~\ref{tlwo:sec:torcache:ethics}). Exit probability is weakly
+correlated with lookups: Pearson correlation 0.30 (web) and 0.16 (permissive).
+
+\begin{figure}[!t]
+ \centering
+ \subfloat[][web]{%
+ \includegraphics[width=.5\columnwidth]{src/tlwo/img/plot_lookups-web.pdf}
+ \label{tlwo:fig:metrics:lookweb}
+ }
+ \subfloat[][permissive]{%
+ \includegraphics[width=.5\columnwidth]{src/tlwo/img/plot_lookups-permissive.pdf}
+ \label{tlwo:fig:metrics:lookperm}
+ }
+ \caption{Lookups every 15 minutes and exit probability.}
+ \label{tlwo:fig:lookups}
+\end{figure}
+
+Figures~\ref{tlwo:fig:metrics:cacheweb} and~\ref{tlwo:fig:metrics:cacheperm} show the
+number of entries in Tor's DNS cache. The web exit has a mean of 7,672 and
+median of 7,325 entries, and the permissive exit a mean of 12,130 and median of
+11,408 entries. Both appear relatively stable compared to the number of lookups
+(note log-scale y-axis in Figure~\ref{tlwo:fig:lookups}). Likely, this is
+because traffic on the Tor network is not uniformly distributed, but rather
+concentrated to relatively few destinations, e.g., as shown with website
+popularity~\cite{ManiWJJS18}.
+
+\begin{figure}[!t]
+ \centering
+ \subfloat[][web]{%
+ \includegraphics[width=.5\columnwidth]{src/tlwo/img/plot_cache_entries-web.pdf}
+ \label{tlwo:fig:metrics:cacheweb}
+ }
+ \subfloat[][permissive]{%
+ \includegraphics[width=.5\columnwidth]{src/tlwo/img/plot_cache_entries-permissive.pdf}
+ \label{tlwo:fig:metrics:cacheperm}
+ }
+ \caption{Cache entries every 15 minutes.}
+ \label{tlwo:fig:cache}
+\end{figure}
+
+Central to a DNS cache is its \emph{cache-hit} ratio: how often lookups can be
+resolved using cached entries instead of asking DNS resolvers.
+Figures~\ref{tlwo:fig:metrics:hitsweb} and~\ref{tlwo:fig:metrics:hitsperm} show the
+cache-hit ratios for the two exits, with a mean cache-hit ratio of 0.80 (web)
+and 0.83 (permissive). We also show if the cache hits occurred due to a cache
+entry used earlier on the same circuit (``same'') or from another circuit
+(``shared''). Further, over all the cache hits, we show if the hits were because
+of DNS entries with a five-minute cached TTL (``5min''), a 60-minute cached TTL
+(``60min''), or pending entries in the DNS cache (``pending''). Same circuit
+hits are likely due to Tor Browser improving performance by creating multiple
+streams to the same destination. The cross-circuit cache-hit ratio is much
+smaller (``shared'') with a mean of 0.11 (web) and 0.17 (permissive). We return
+to these ratios in Section~\ref{tlwo:sec:long:evaluation} to compare with our
+defense.
+
+\begin{figure}[!t]
+ \centering
+ \subfloat[][web]{%
+ \includegraphics[width=.67\columnwidth]{src/tlwo/img/plot_cache_hits-web.pdf}
+ \label{tlwo:fig:metrics:hitsweb}
+ }\\
+ \subfloat[][permissive]{%
+ \includegraphics[width=.67\columnwidth]{src/tlwo/img/plot_cache_hits-permissive.pdf}
+ \label{tlwo:fig:metrics:hitsperm}
+ }
+ \caption{%
+ Cache-hit ratio every 15 minutes. The total ratio can be split
+ by same+shared hits or 60min+5min+pending hits.
+ }
+ \label{tlwo:fig:hits}
+\end{figure}
+
+During the four months of measurements, our exits experienced sporadic downtime
+(early August) and the Tor-network endured significant network DDoS
+activities~\cite{network-ddos}. This shows in our data, e.g., with the drop to
+close to zero lookups in Figure~\ref{tlwo:fig:lookups}, huge spikes of cached entries
+in Figure~\ref{tlwo:fig:cache}, and periods where the cache-hit ratio was almost
+one in Figure~\ref{tlwo:fig:hits}.
+
+To summarize, Tor's DNS cache has a cache-hit ratio over 80\% using a modestly
+sized DNS cache. About 11--17\% of these hits are due to sharing the cache
+across circuits. The number of lookups are weakly correlated to exit
+probability.