Convergence: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
(One intermediate revision by the same user not shown) | |||
Line 5: | Line 5: | ||
== TLS CAs Praxis == |
== TLS CAs Praxis == |
||
* gängige Browser "vertrauen" in der default Einstellung mehreren hundert Organisationen |
* gängige Browser "vertrauen" in der default Einstellung mehreren hundert Organisationen |
||
** https://www.eff.org/observatory |
** https://www.eff.org/observatory |
||
Line 11: | Line 12: | ||
* unzureichende Validation |
* unzureichende Validation |
||
** https://bugzilla.mozilla.org/show_bug.cgi?id=556468 |
|||
** mozbug |
|||
* Comodo |
|||
* Diginotar |
* Diginotar |
||
* Lawful(?) Interception |
|||
** http://files.cloudprivacy.net/ssl-mitm.pdf |
|||
* wer ist vertrauenswürdig? |
* wer ist vertrauenswürdig? |
||
Line 24: | Line 29: | ||
* TOFU - trust on first use |
* TOFU - trust on first use |
||
** ssh trust model |
** ssh trust model |
||
** Unbekannte Schlüssel (für einen spez. host) müssen durch Benutzer bestätigt |
** Unbekannte Schlüssel (für einen spez. host) müssen durch Benutzer bestätigt werden |
||
⚫ | |||
werden |
|||
⚫ | |||
Benutzer-Interaktion |
|||
** Ändert sich ein Schlüssel muss dieser wiederum vom Benutzer bestätigt werden |
** Ändert sich ein Schlüssel muss dieser wiederum vom Benutzer bestätigt werden |
||
Line 36: | Line 39: | ||
*** network perspective |
*** network perspective |
||
* Annahme: MITM-Angriff von dem alle Notare betroffen sind sehr unwahrscheinlich |
* 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" |
* "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://perspectives-project.org/ |
||
Line 43: | Line 49: | ||
== Convergence == |
== Convergence == |
||
⚫ | |||
* will CAs komplett ersetzen |
* will CAs komplett ersetzen |
||
⚫ | |||
* Notare prinzipiell nicht nur auf Zertifikate beschränkt |
* Notare prinzipiell nicht nur auf Zertifikate beschränkt |
||
** DNSSEC, Content, ... |
** DNSSEC, Content, ... |
||
** momentan nur Zertifikat Verifier implementiert |
** momentan aber nur Zertifikat Verifier (network perspective) implementiert |
||
* Privacy |
* Privacy |
||
** Notar als Proxy zu anderen Notaren |
|||
* Benutzer soll letztendlich selbst entscheiden wem er vertraut |
* Benutzer soll letztendlich selbst entscheiden wem er vertraut |
||
** Trust Agility |
** Trust Agility |
||
Line 56: | Line 63: | ||
* http://www.youtube.com/watch?v=Z7Wl2FW2TcA |
* http://www.youtube.com/watch?v=Z7Wl2FW2TcA |
||
=== Convergence Firefox |
=== 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 === |
=== Convergence Notary === |
||
* HTTPS API |
|||
* feste (self sign.) Zertifikate |
|||
* implementierte verifier |
|||
** network perspective |
|||
*** Zertifikat fingerprint |
|||
** google certificate catalog |
|||
*** http://googleonlinesecurity.blogspot.com/2011/04/improving-ssl-certificate-security.html |
|||
⚫ | |||
⚫ | |||
https://github.com/moxie0/Convergence/wiki/Notary-Protocol |
https://github.com/moxie0/Convergence/wiki/Notary-Protocol |
||
Line 79: | Line 98: | ||
==== Notary Response ==== |
==== Notary Response ==== |
||
* HTTP Response Status Code |
* HTTP Response Status Code |
||
** 200 |
** 200 fingerprint match |
||
** 409 |
** 409 fingerprint mismatch |
||
** ... |
** ... |
||
Line 108: | Line 127: | ||
** Überprüfung der Zertifikate analog zu Convergence Plugin |
** Überprüfung der Zertifikate analog zu Convergence Plugin |
||
** Im Prinzip "Dual-Mode" Convergence + herkömmliche Zertifikats-Validierung des Browsers/Client. |
** 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 === |
=== TLS Handshake === |
||
Line 149: | Line 172: | ||
=== Probleme === |
=== Probleme === |
||
* sauberes beenden der TLS Verbindung falls das Zertifikat nicht verifiziert werden kann |
|||
** disconnect |
|||
*** erneuter Verbindungsaufbau |
|||
** TLS-Alert |
|||
*** welcher? |
|||
* UI |
|||
== Misc == |
== Misc == |
||
Line 156: | Line 187: | ||
* http://perspectives-project.org/ |
* http://perspectives-project.org/ |
||
* http://perspectivessecurity.files.wordpress.com/2011/07/perspectives_usenix08.pdf |
* 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 |
* 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.0 http://www.ietf.org/rfc/rfc2246.txt |
Latest revision as of 15:03, 15 October 2011
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/