Convergence
Jump to navigation
Jump to search
TLS CAs Theorie
- Vertrauensanker
- Schutz gegen MITM
- Authentication
TLS CAs Praxis
- gängige Browser "vertrauen" in der default Einstellung mehreren hundert Organisationen
- https://www.eff.org/observatory
- https://www.eff.org/files/colour_map_of_CAs.pdf
- eine einzige kompromittierte CA reicht aus, jede CA darf alles signieren.
- unzureichende Validation
- Comodo
- Diginotar
- Lawful(?) Interception
- wer ist vertrauenswürdig?
Perspectives
- Suche nach einer Alternative zu Authentifizierung via PKI
- TOFU - trust on first use
- ssh trust model
- Unbekannte Schlüssel (für einen spez. host) müssen durch Benutzer bestätigt werden
- Bestätigte Schlüssel/Host Paare werden gecacht und erfordern keine weitere Benutzer-Interaktion
- Ändert sich ein Schlüssel muss dieser wiederum vom Benutzer bestätigt werden
- Problem: MITM/First Use
- Manuelle Überprüfung i.d.R. nicht praktikabel.
- Risiko minimieren durch Notare
- Notare geben Auskunft welche Schlüssel sie "sehen".
- network perspective
- Annahme: MITM-Angriff von dem alle Notare betroffen sind sehr unwahrscheinlich
- Neues Problem: Was wenn sich die Notare nicht einig sind?
- Benutzer entscheidet
- "irgendeine CA hat den Schlüssel signiert" vs. "x von y Notaren sehen den selben Schlüssel"
- kompromittierter Notar weniger fatal als kompromittierte CA.
- http://perspectives-project.org/
- http://perspectivessecurity.files.wordpress.com/2011/07/perspectives_usenix08.pdf
Convergence
- will CAs komplett ersetzen
- basiert auf der Perspectives Idee
- Notare prinzipiell nicht nur auf Zertifikate beschränkt
- DNSSEC, Content, ...
- momentan aber nur Zertifikat Verifier (network perspective) implementiert
- Privacy
- Notar als Proxy zu anderen Notaren
- Benutzer soll letztendlich selbst entscheiden wem er vertraut
- Trust Agility
- http://convergence.io/
- https://github.com/moxie0/Convergence
- http://www.youtube.com/watch?v=Z7Wl2FW2TcA
Convergence Firefox Add-On
- installiert lokale CA
- MITM jeder TLS-Verbindung
- Unbekannte (Hostname, Port, Zertifikat) Tupel werden über Notare verifiziert
- generiert neues Zertifikat für Hostname (lokale CA sig.)
- Cache
- Browser "sieht" nur noch Zertifikate die von der lokalen CA signiert sind.
Convergence Notary
- HTTPS API
- feste (self sign.) Zertifikate
- implementierte verifier
- network perspective
- Zertifikat fingerprint
- google certificate catalog
- network perspective
Notar Protokoll
https://github.com/moxie0/Convergence/wiki/Notary-Protocol
Notary Request
- HTTP POST request /target/*<host>*+*<port>*
- fingerprint (SHA1 des Zertifikats)
POST /target/www.google.de+443 HTTP/1.1 Content-Type: application/x-www-form-urlencoded Content-Length: 71 Host: convergence.crypto.is:8843 Connection: close fingerprint=40:50:62:E5:BE:FD:E4:AF:97:E9:38:2A:F1:6C:C8:7C:8F:B7:C4:E2
Notary Response
- HTTP Response Status Code
- 200 fingerprint match
- 409 fingerprint mismatch
- ...
{ "fingerprintList": [ { "timestamp": {"start": "1312537562", "finish": "1315604078"}, "fingerprint": "51:1F:8E:C6:22:82:5B:ED:A2:75:CB:3E:95:AB:63:7F:69:D3:18:1C" } ], "signature": "MHu+jKdTJhRiNqTZleFnTY...RDYcPWuWBawQcReP3N82y54ZcEl3g==" }
Convergence Proxy
- Convergence momentan nur für Firefox verfügbar
- Implementierung in anderen Browsern unwahrscheinlich (fehlende APIs)
- Probleme mit Clientzertifikaten
- Plan
- externer TLS Proxy
- Passives Mitlesen des TLS-Handshakes
- kein MITM / keine eigenen Zertifikate
- Überprüfung der Zertifikate analog zu Convergence Plugin
- Im Prinzip "Dual-Mode" Convergence + herkömmliche Zertifikats-Validierung des Browsers/Client.
HTTP Tunnel
http://curl.haxx.se/rfc/draft-luotonen-web-proxy-tunneling-01.txt
TLS Handshake
Client Server ClientHello --------> ServerHello Certificate ServerKeyExchange <-------- ServerHelloDone ClientKeyExchange ChangeCipherSpec Finished --------> ChangeCipherSpec <-------- Finished Application Data <-------> Application Data
TLS Handshake / Proxy
Client Proxy Server ClientHello --> ------> --> <-- <------ <-- ServerHello /-- <-- Certificate | verify(certificate) | <-- --/ <-- <----- <-- ServerKeyExchange <-- <----- <-- ServerHelloDone ClientKeyExchange ChangeCipherSpec Finished --> -----> --> ChangeCipherSpec <-- <----- <-- Finished Application Data <-> <----> <-> Application Data
Probleme
- sauberes beenden der TLS Verbindung falls das Zertifikat nicht verifiziert werden kann
- disconnect
- erneuter Verbindungsaufbau
- TLS-Alert
- welcher?
- disconnect
- UI
Misc
- http://convergence.io/
- https://github.com/moxie0/Convergence
- http://www.youtube.com/watch?v=Z7Wl2FW2TcA
- http://perspectives-project.org/
- http://perspectivessecurity.files.wordpress.com/2011/07/perspectives_usenix08.pdf
- http://googleonlinesecurity.blogspot.com/2011/04/improving-ssl-certificate-security.html
- ssl 3.0 http://www.mozilla.org/projects/security/pki/nss/ssl/traces/index.html
- tls 1.0 http://www.ietf.org/rfc/rfc2246.txt
- tls 1.1 http://www.ietf.org/rfc/rfc4346.txt
- tls 1.2 http://www.ietf.org/rfc/rfc5246.txt
- ssl connection walkthrough http://www.mozilla.org/projects/security/pki/nss/ssl/traces/index.html
- http 1.1 http://www.ietf.org/rfc/rfc2616.txt
- http tunnel http://curl.haxx.se/rfc/draft-luotonen-web-proxy-tunneling-01.txt
- http://files.cloudprivacy.net/ssl-mitm.pdf
- http://pki.net.in.tum.de/
- cert pinning https://addons.mozilla.org/en-US/firefox/addon/certificate-patrol/