Convergence: Difference between revisions

From
Jump to navigation Jump to search
No edit summary
No edit summary
 
Line 16: Line 16:
* Comodo
* Comodo
* Diginotar
* Diginotar

* Lawful(?) Interception
** http://files.cloudprivacy.net/ssl-mitm.pdf


* wer ist vertrauenswürdig?
* wer ist vertrauenswürdig?
Line 52: Line 55:
** momentan aber nur Zertifikat Verifier (network perspective) 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 60: Line 63:
* http://www.youtube.com/watch?v=Z7Wl2FW2TcA
* http://www.youtube.com/watch?v=Z7Wl2FW2TcA


=== Convergence Firefox Plugin ===
=== 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


=== Notar Protokoll ===
=== Notar Protokoll ===
Line 83: Line 98:
==== Notary Response ====
==== Notary Response ====
* HTTP Response Status Code
* HTTP Response Status Code
** 200 -> fingerprint match
** 200 fingerprint match
** 409 -> fingerprint mismatch
** 409 fingerprint mismatch
** ...
** ...


Line 112: 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 153: 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 160: 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

  • Comodo
  • 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
  • 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.

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

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

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?
  • UI


Misc