From 49464cf60c64dacbc70f645215eb1a4290cad915 Mon Sep 17 00:00:00 2001 From: Peter Ludikovsky Date: Sun, 4 Nov 2018 08:33:15 +0100 Subject: [PATCH] Initial commit --- .gitignore | 2 ++ .gitmodules | 3 ++ Makefile | 10 ++++++ reveal.js | 1 + torhs.md | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 118 insertions(+) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 Makefile create mode 160000 reveal.js create mode 100644 torhs.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..23f832b --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.html +*.pdf diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..12123b5 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "reveal.js"] + path = reveal.js + url = https://github.com/hakimel/reveal.js.git diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..71a8447 --- /dev/null +++ b/Makefile @@ -0,0 +1,10 @@ +all: torhs.html + +torhs.html: torhs.md + pandoc -t revealjs --standalone --smart --slide-level=2 \ + --css=usrspace.css \ + -V 'revealjs-url:reveal.js/' \ + -o torhs.html torhs.md + +clean: + rm -rf torhs.html diff --git a/reveal.js b/reveal.js new file mode 160000 index 0000000..c35cce5 --- /dev/null +++ b/reveal.js @@ -0,0 +1 @@ +Subproject commit c35cce54a5d4800b90e71a43da140c0347308989 diff --git a/torhs.md b/torhs.md new file mode 100644 index 0000000..c4fa828 --- /dev/null +++ b/torhs.md @@ -0,0 +1,102 @@ +# Tor Hidden Services for Fun and NAT Traversal + +# Was ist Tor + +## Was ist Tor + +- Tor (*nicht* TOR) steht für "The onion router" +- Möglichkeit Kommunikationswege zu anonymisieren +- Anonymisiert **nicht** den Inhalt + + + +## Tor Verbindung + +1. Client holt sich die Info über *alle* Relays von einem Directory Server +2. Client verbindet sich zu erstem Hop +3. Client holt sich von diesem Infos zu zweitem Hop +4. Von diesem kommen dann die Infos zum dritten (Exit) Hop + +## Tor Verbindung + +5. Daten werden 3x verschlüsselt und an den 1. Hop gesendet + + ENC(Hop2+ENC(Hop3+ENC(Ziel+Daten))) +6. Jeder Hop entschlüsselt einen Layer & sendet den Inhalt weiter +7. Exit-Node sendet an das eigentliche Ziel +8. Zurück wird bei jedem Hop ein Layer hinzugefügt + +## TL;DR + +- Tor verschlüsselt die Daten in Schichten (wie eine Zwiebel) +- Jeder Hop kann nur seine eigenen Daten lesen +- Jeder Hop kennt nur seine direkten Nachbarn, nicht den gesamten Pfad +- Exit-Node kennt das Ziel, und Klardaten (wenn nicht TLS) +- Entry-Node kenn den Client +- Wer Entry- und Exit-Node kennt kann den Nutzer relativ leicht deanonymisieren + +# Hidden Services + +## Was ist ein Hidden Service + +- Kurz: ein Dienst, der nur innerhalb des Tor-Netzwerkes erreichbar ist und damit ein „Darknet“ bildet +- Vorbehaltlich: + - Es gibt Web2Tor Proxies + - „Darknet“ deswegen weil es innerhalb von Tor Suchmaschinen gibt + - Inhaltsdaten werden noch immer nicht anonymisiert + +## Wie funktioniert ein HS + +1. Server erstellt einen Service-Descriptor aus Public Key und 3 Introduction Points (IPs) +2. Server sendet den Service-Descriptor in das Hidden Service Directory (HSDir) +3. Client wählt einen IP und einen Rendezvous Point (RP) +4. Client baut eine Verbindung zum RP auf + +## Wie funktioniert ein HS + +5. Client sendet RP via IP an den Server +6. Server baut eine Verbindung zum RP auf +7. Client und Server können nun verschlüsselt kommunizieren + +## HS Vorteile + +- Dienste nicht aus dem Internet erreichbar +- Dienste auch ohne Port Forwarding erreichbar +- Kommunikation ist verschleiert +- Kommunikation ist verschlüsselt + +## HS Nachteile + +- Dienste nicht ohne Tor erreichbar (nicht-trivial auf Smartphones, non-HTTP(s) unmöglich auf iOS) +- Verbindung nur so gut wie der schlechteste Knoten +- Keine ACLs, wer den Service-Namen kennt kommt hin +- TLS fast nur Self-Signed oder teuer möglich +- HS Namen unmöglich zu merken (mit HSv3 noch schlimmer) + +# Demo Time! + +## Demo + +1. Web-Service aufsetzen +2. SSH-Service aufsetzen +3. beides via Hidden Services erreichbar machen +4. Web-Service via Tor Browser testen +5. SSH-Service via Linux und Android testen + +# Links + +## Allgemein + +- Design documents: https://www.torproject.org/docs/documentation.html.en#DesignDoc +- Statistiken zu `.onion` Services: https://metrics.torproject.org/hidserv-dir-onions-seen.html +- Liste von Tor Hidden Services: https://en.wikipedia.org/wiki/List\_of\_Tor\_hidden\_services +- Tor2web (Onion to Clearnet): https://www.tor2web.org/ + +## Hidden Services + +- Facebook: https://facebookcorewwwi.onion +- DuckDuckGo: https://3g2upl4pq6kufc4m.onion +- OnionDir: http://dirnxxdraygbifgc.onion +- TORCH: http://xmh57jrzrnw6insl.onion/