Convergence: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
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 |
||
Line 24: | Line 26: | ||
* 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 36: | ||
*** 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 46: | ||
== 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 |
||
** |
|||
* Benutzer soll letztendlich selbst entscheiden wem er vertraut |
* Benutzer soll letztendlich selbst entscheiden wem er vertraut |
||
** Trust Agility |
** Trust Agility |
||
Line 61: | Line 65: | ||
=== |
=== Notar Protokoll === |
||
https://github.com/moxie0/Convergence/wiki/Notary-Protocol |
https://github.com/moxie0/Convergence/wiki/Notary-Protocol |
||
Revision as of 20:12, 10 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
- 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
- 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 Plugin
Convergence Notary
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.
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
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
- 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/