RSA vs ECDH



  • Ich habe schon vor längerem den Microsoft Artikel über ECDH gelesen. Jetzt hab ich von Google eine Implementation, versteh aber nicht, wo/wie ich da meinen AES-Schlüssel austauschen kann?

    https://code.google.com/p/end-to-end/source/browse/javascript/crypto/e2e/ecc/ecdh_test.html?r=ed4a8aa0a9d9def3dfb5794ab6c1785af54c05fb

    Kann mir das Bitte einer erklären und vllt. den Vergleich zu RSA ziehen? Bei mir war RSA in JS bei 2k-Schlüsseln sehr langsam. Ist das bei ECDH besser? Welche Schlüssellänge brauch ich da im Vergleich zu 2 oder 4k RSA 😕

    Danke 🙂



  • kleinr schrieb:

    ...
    Kann mir das Bitte einer erklären und vllt. den Vergleich zu RSA ziehen? Bei mir war RSA in JS bei 2k-Schlüsseln sehr langsam. Ist das bei ECDH besser? Welche Schlüssellänge brauch ich da im Vergleich zu 2 oder 4k RSA 😕

    Das Erzeugen/Tauschen eines Sitzungsschlüssels per RSA, wie es bei SSL/TLS möglich ist, läuft so, dass der Client sich einen solchen Sitzungsschlüssel zufällig wählt und ihn mit dem Public-RSA-Key des Servers verschlüsselt und rüberschickt.

    Bei dem Diffie-Hellman-Schlüsselaustauschverfahren (DH) läuft das anders. Da ergibt sich der Sitzungsschlüssel dann aus dem gemeinsamen Geheimnis, welches jede Seite durch Kombination des eigenen Privatschlüsels und dem öffentlichen Schlüssel des Gegenübers erzeugen kann. ECDH ist nur die Anwendung von DH auf elliptischen Kurven (EC).

    Beide Ansätze erfordern allerdings noch ein bischen zusätzliche Arbeit, damit man sich vor aktiven PIMs (person in the middle) schptzen kann. (Mit "aktiv" meine ich die Fähigkeit, Nachrichten gegen andere auszutauschen).

    Bzgl Performance sind die Verfahren, die auf elliptische Kurven beruhen, interessant, da sie besser "skalieren". Das heißt, für eine bestimmte Sicherheit muss man bei RSA relativ lange Schlüssel wählen, was all die Rechenoperationen langsam macht (besonders bei den Berechnungen, wo der Privatschlüssel benötigt wird). RSA mit Schlüsseln, die etwa 3000 Bit lang sind, sind im Moment in etwa genauso sicher wie Elliptic-Curve-Crypto basierend auf Curve25519. Curve25519 ist sauschnell und kommt mit relativ kompakten Schlüsseln aus. Ich glaube, ein Public-Key ist da nur 33 Byte lang oder sowas.

    Es gibt aber auch Kryptographen (darunter Bruce Schneier), die einigermaßen skeptisch gegen über elliptischen Kurven sind. Zum Beispiel könnte jemand einen Weg finden, der Curve25519 genauso angreifbar macht, wie RSA mit 256 Bit-Schlüsseln. Und RSA-256 ist nicht sicher. Aber bisher ist das noch nicht passiert und die Zahl der Kryptographen, die deswegen RSA vorziehen, scheint nicht besonders groß zu sein.

    Ich kenne mich mit JavaScript und der von Dir verlinkten ECDH-Implementierung nicht aus, kann Dir also in der Hinsicht nicht weiterhelfen.



  • Es reicht mir, wenn die Parteien die Schlüssel bei Bedarf privat abgleichen können.
    Wie sieht es mit dem Gesetz aus, welche Schlüssellänge ist derzeit in DE/EU/US erlaubt?


Log in to reply