Convergence: Difference between revisions

From
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
** Bestätigte Schlüssel/Host Paare werden gecacht und erfordern keine weitere Benutzer-Interaktion
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
** Ä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 ==


* basiert auf der Perspectives Idee
* will CAs komplett ersetzen
* will CAs komplett ersetzen
* basiert auf der Perspectives Idee
* 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:




=== Notary Protokoll ===
=== 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

  • 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
  • Benutzer soll letztendlich selbst entscheiden wem er vertraut
    • Trust Agility

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