Initial commit

This commit is contained in:
Peter Ludikovsky 2018-11-04 08:33:15 +01:00
commit 49464cf60c
Signed by: pludi
GPG Key ID: CFBA360E696EDC99
5 changed files with 118 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
*.html
*.pdf

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "reveal.js"]
path = reveal.js
url = https://github.com/hakimel/reveal.js.git

10
Makefile Normal file
View File

@ -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

1
reveal.js Submodule

@ -0,0 +1 @@
Subproject commit c35cce54a5d4800b90e71a43da140c0347308989

102
torhs.md Normal file
View File

@ -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
<aside class="notes">
Wer sich über Tor bei Facebook anmeldet wird dort genau so getrackt wie sonst. Es sieht nur niemand unterwegs.
</aside>
## 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/