presentation-torhs/torhs.html

176 lines
7.6 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="generator" content="pandoc">
<title></title>
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
<link rel="stylesheet" href="reveal.js//css/reveal.css">
<style type="text/css">code{white-space: pre;}</style>
<link rel="stylesheet" href="reveal.js//css/theme/black.css" id="theme">
<link rel="stylesheet" href="usrspace.css"/>
<!-- Printing and PDF exports -->
<script>
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match( /print-pdf/gi ) ? 'reveal.js//css/print/pdf.css' : 'reveal.js//css/print/paper.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
</script>
<!--[if lt IE 9]>
<script src="reveal.js//lib/js/html5shiv.js"></script>
<![endif]-->
</head>
<body>
<div class="reveal">
<div class="slides">
<section><section id="tor-hidden-services-for-fun-and-nat-traversal" class="titleslide slide level1"><h1>Tor Hidden Services for Fun and NAT Traversal</h1></section></section>
<section><section id="was-ist-tor" class="titleslide slide level1"><h1>Was ist Tor</h1></section><section id="was-ist-tor-1" class="slide level2">
<h2>Was ist Tor</h2>
<ul>
<li>Tor (<em>nicht</em> TOR) steht für “The onion router”</li>
<li>Möglichkeit Kommunikationswege zu anonymisieren</li>
<li>Anonymisiert <strong>nicht</strong> den Inhalt</li>
</ul>
<aside class="notes">
Wer sich über Tor bei Facebook anmeldet wird dort genau so getrackt wie sonst. Es sieht nur niemand unterwegs.
</aside>
</section><section id="warum-the-onion-router" class="slide level2">
<h2>Warum The onion router</h2>
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/-FtCTW2rVFM?controls=0&amp;start=44" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>
</iframe>
</section><section id="tor-verbindung" class="slide level2">
<h2>Tor Verbindung</h2>
<ol type="1">
<li>Client holt sich die Info über <em>alle</em> Relays von einem Directory Server</li>
<li>Client verbindet sich zu erstem Hop</li>
<li>Client holt sich von diesem Infos zu zweitem Hop</li>
<li>Von diesem kommen dann die Infos zum dritten (Exit) Hop</li>
</ol>
</section><section id="tor-verbindung-1" class="slide level2">
<h2>Tor Verbindung</h2>
<ol start="5" type="1">
<li><p>Daten werden 3x verschlüsselt und an den 1. Hop gesendet</p>
<pre><code>ENC(Hop2+ENC(Hop3+ENC(Ziel+Daten)))</code></pre></li>
<li>Jeder Hop entschlüsselt einen Layer &amp; sendet den Inhalt weiter</li>
<li>Exit-Node sendet an das eigentliche Ziel</li>
<li><p>Zurück wird bei jedem Hop ein Layer hinzugefügt</p></li>
</ol>
</section><section id="tldr" class="slide level2">
<h2>TL;DR</h2>
<ul>
<li>Tor verschlüsselt die Daten in Schichten (wie eine Zwiebel)</li>
<li>Jeder Hop kann nur seine eigenen Daten lesen</li>
<li>Jeder Hop kennt nur seine direkten Nachbarn, nicht den gesamten Pfad</li>
<li>Exit-Node kennt das Ziel, und Klardaten (wenn nicht TLS)</li>
<li>Entry-Node kenn den Client</li>
<li>Wer Entry- und Exit-Node kennt kann den Nutzer relativ leicht deanonymisieren</li>
</ul>
</section></section>
<section><section id="hidden-services" class="titleslide slide level1"><h1>Hidden Services</h1></section><section id="was-ist-ein-hidden-service" class="slide level2">
<h2>Was ist ein Hidden Service</h2>
<ul>
<li>Kurz: ein Dienst, der nur innerhalb des Tor-Netzwerkes erreichbar ist und damit ein „Darknet“ bildet</li>
<li>Vorbehaltlich:
<ul>
<li>Es gibt Web2Tor Proxies</li>
<li>„Darknet“ deswegen weil es innerhalb von Tor Suchmaschinen gibt</li>
<li>Inhaltsdaten werden noch immer nicht anonymisiert</li>
</ul></li>
</ul>
</section><section id="wie-funktioniert-ein-hs" class="slide level2">
<h2>Wie funktioniert ein HS</h2>
<ol type="1">
<li>Server erstellt einen Service-Descriptor aus Public Key und 3 Introduction Points (IPs)</li>
<li>Server sendet den Service-Descriptor in das Hidden Service Directory (HSDir)</li>
<li>Client wählt einen IP und einen Rendezvous Point (RP)</li>
<li>Client baut eine Verbindung zum RP auf</li>
</ol>
</section><section id="wie-funktioniert-ein-hs-1" class="slide level2">
<h2>Wie funktioniert ein HS</h2>
<ol start="5" type="1">
<li>Client sendet RP via IP an den Server</li>
<li>Server baut eine Verbindung zum RP auf</li>
<li>Client und Server können nun verschlüsselt kommunizieren</li>
</ol>
</section><section id="hs-vorteile" class="slide level2">
<h2>HS Vorteile</h2>
<ul>
<li>Dienste nicht aus dem Internet erreichbar</li>
<li>Dienste auch ohne Port Forwarding erreichbar</li>
<li>Kommunikation ist verschleiert</li>
<li>Kommunikation ist verschlüsselt</li>
</ul>
</section><section id="hs-nachteile" class="slide level2">
<h2>HS Nachteile</h2>
<ul>
<li>Dienste nicht ohne Tor erreichbar (nicht-trivial auf Smartphones, non-HTTP(s) unmöglich auf iOS)</li>
<li>Verbindung nur so gut wie der schlechteste Knoten</li>
<li>Keine ACLs, wer den Service-Namen kennt kommt hin</li>
<li>TLS fast nur Self-Signed oder teuer möglich</li>
<li>HS Namen unmöglich zu merken (mit HSv3 noch schlimmer)</li>
</ul>
</section></section>
<section><section id="demo-time" class="titleslide slide level1"><h1>Demo Time!</h1></section><section id="demo" class="slide level2">
<h2>Demo</h2>
<ol type="1">
<li>Web-Service aufsetzen</li>
<li>SSH-Service aufsetzen</li>
<li>beides via Hidden Services erreichbar machen</li>
<li>Web-Service via Tor Browser testen</li>
<li>SSH-Service via Linux und Android testen</li>
</ol>
</section></section>
<section><section id="links" class="titleslide slide level1"><h1>Links</h1></section><section id="allgemein" class="slide level2">
<h2>Allgemein</h2>
<ul>
<li>Design documents: https://www.torproject.org/docs/documentation.html.en#DesignDoc</li>
<li>Statistiken zu <code>.onion</code> Services: https://metrics.torproject.org/hidserv-dir-onions-seen.html</li>
<li>Liste von Tor Hidden Services: https://en.wikipedia.org/wiki/List_of_Tor_hidden_services</li>
<li>Tor2web (Onion to Clearnet): https://www.tor2web.org/</li>
<li>Orbot: https://guardianproject.info/apps/orbot/</li>
</ul>
</section><section id="konfiguration" class="slide level2">
<h2>Konfiguration</h2>
<ul>
<li>Tor: https://www.torproject.org/docs/documentation.html.en</li>
<li>Installation unter Debian/Ubuntu: https://www.torproject.org/docs/debian.html.en</li>
<li>Tor Hidden Services: https://www.torproject.org/docs/tor-onion-service.html.en</li>
<li>Bridges: https://www.torproject.org/docs/bridges.html.en</li>
</ul>
</section><section id="hidden-services-1" class="slide level2">
<h2>Hidden Services</h2>
<ul>
<li>Facebook: https://facebookcorewwwi.onion</li>
<li>DuckDuckGo: https://3g2upl4pq6kufc4m.onion</li>
<li>OnionDir: http://dirnxxdraygbifgc.onion</li>
<li>TORCH: http://xmh57jrzrnw6insl.onion/</li>
</ul>
</section></section>
</div>
</div>
<script src="reveal.js//lib/js/head.min.js"></script>
<script src="reveal.js//js/reveal.js"></script>
<script>
// Full list of configuration options available at:
// https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
// Optional reveal.js plugins
dependencies: [
{ src: 'reveal.js//lib/js/classList.js', condition: function() { return !document.body.classList; } },
{ src: 'reveal.js//plugin/zoom-js/zoom.js', async: true },
{ src: 'reveal.js//plugin/notes/notes.js', async: true }
]
});
</script>
</body>
</html>