Convergence: Difference between revisions

From
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/


== bar ==
=== 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

  • unzureichende Validation
    • mozbug
  • Diginotar


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"

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

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