Convergence: Difference between revisions
Jump to navigation
Jump to search
(link dump) |
No edit summary |
||
Line 1: | Line 1: | ||
== 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 |
|||
** mozbug |
|||
* Diginotar |
|||
* wer ist vertrauenswürdig? |
|||
** https://bugzilla.mozilla.org/show_bug.cgi?id=647959 ;) |
|||
== 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 |
|||
* "irgendeine CA hat den Schlüssel signiert" vs. "x von y Notaren sehen den selben Schlüssel" |
|||
* http://perspectives-project.org/ |
|||
* http://perspectivessecurity.files.wordpress.com/2011/07/perspectives_usenix08.pdf |
|||
== Convergence == |
== Convergence == |
||
* basiert auf der Perspectives Idee |
|||
* will CAs komplett ersetzen |
|||
* Notare prinzipiell nicht nur auf Zertifikate beschränkt |
|||
** DNSSEC, Content, ... |
|||
** momentan nur Zertifikat Verifier implementiert |
|||
* Privacy |
|||
* Benutzer soll letztendlich selbst entscheiden wem er vertraut |
|||
** Trust Agility |
|||
* http://convergence.io/ |
* http://convergence.io/ |
||
Line 5: | Line 56: | ||
* http://www.youtube.com/watch?v=Z7Wl2FW2TcA |
* http://www.youtube.com/watch?v=Z7Wl2FW2TcA |
||
=== Convergence Firefox Plugin === |
|||
== Perspectives == |
|||
=== Convergence Notary === |
|||
* http://perspectives-project.org/ |
|||
* http://perspectivessecurity.files.wordpress.com/2011/07/perspectives_usenix08.pdf |
|||
== foo == |
|||
* 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/ |
|||
== |
=== Notary Protokoll === |
||
https://github.com/moxie0/Convergence/wiki/Notary-Protocol |
|||
==== Notary Request==== |
|||
* HTTP POST request /target/*<host>*+*<port>* |
|||
* fingerprint (SHA1 des Zertifikats) |
|||
<pre> |
|||
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 |
|||
</pre> |
|||
==== Notary Response ==== |
|||
* HTTP Response Status Code |
|||
** 200 -> fingerprint match |
|||
** 409 -> fingerprint mismatch |
|||
** ... |
|||
<pre> |
|||
{ |
|||
"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==" |
|||
} |
|||
</pre> |
|||
== 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 === |
|||
<pre> |
|||
Client Server |
|||
ClientHello --------> |
|||
ServerHello |
|||
Certificate |
|||
ServerKeyExchange |
|||
<-------- ServerHelloDone |
|||
ClientKeyExchange |
|||
ChangeCipherSpec |
|||
Finished --------> |
|||
ChangeCipherSpec |
|||
<-------- Finished |
|||
Application Data <-------> Application Data |
|||
</pre> |
|||
=== TLS Handshake / Proxy === |
|||
<pre> |
|||
Client Proxy Server |
|||
ClientHello --> ------> --> |
|||
<-- <------ <-- ServerHello |
|||
/-- <-- Certificate |
|||
| |
|||
verify(certificate) |
|||
| |
|||
<-- --/ |
|||
<-- <----- <-- ServerKeyExchange |
|||
<-- <----- <-- ServerHelloDone |
|||
ClientKeyExchange |
|||
ChangeCipherSpec |
|||
Finished --> -----> --> |
|||
ChangeCipherSpec |
|||
<-- <----- <-- Finished |
|||
Application Data <-> <----> <-> Application Data |
|||
</pre> |
|||
=== 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 |
* 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 |
||
Line 23: | Line 163: | ||
* http 1.1 http://www.ietf.org/rfc/rfc2616.txt |
* 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 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/ |
Revision as of 20:11, 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
- mozbug
- 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
- "irgendeine CA hat den Schlüssel signiert" vs. "x von y Notaren sehen den selben Schlüssel"
- http://perspectives-project.org/
- http://perspectivessecurity.files.wordpress.com/2011/07/perspectives_usenix08.pdf
Convergence
- basiert auf der Perspectives Idee
- will CAs komplett ersetzen
- Notare prinzipiell nicht nur auf Zertifikate beschränkt
- DNSSEC, Content, ...
- momentan nur Zertifikat Verifier 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
Notary 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/