Frage:
ECDSA gegen ECDH gegen Ed25519 gegen Curve25519
Omar
2014-02-04 15:53:50 UTC
view on stackexchange narkive permalink

Unter den in openSSH verfügbaren ECC-Algorithmen (ECDH, ECDSA, Ed25519, Curve25519), die das beste Sicherheitsniveau bieten, und (idealerweise) warum?

Das ist eine ziemlich seltsame Art, es auszudrücken. Curve25519 ist eine bestimmte Kurve, auf der Sie Diffie-Hellman (ECDH) ausführen können. Diffie-Hellman wird verwendet, um einen Schlüssel auszutauschen. Ed25519 und ECDSA sind Signaturalgorithmen.
Verwandte: [SSH-Schlüssel: Ed25519 vs RSA] (http://security.stackexchange.com/questions/90077/ssh-key-ed25519-vs-rsa)
Siehe auch Bernsteins [Curve25519: Neue Diffe-Hellman-Geschwindigkeitsrekorde] (https://cr.yp.to/ecdh/curve25519-20060209.pdf).Er scheint einen ziemlich guten Job zu machen und beantwortet viele Ihrer Fragen.
Fünf antworten:
Tom Leek
2014-02-04 18:32:23 UTC
view on stackexchange narkive permalink

In SSH werden zwei Algorithmen verwendet: ein Schlüsselaustauschalgorithmus (Diffie-Hellman oder die elliptische Kurvenvariante ECDH) und ein Signaturalgorithmus. Der Schlüsselaustausch liefert den geheimen Schlüssel, der zum Verschlüsseln der Daten für diese Sitzung verwendet wird. Die Signatur dient dazu, dass der Client sicherstellen kann, dass er mit dem richtigen Server kommuniziert (eine andere vom Client berechnete Signatur kann verwendet werden, wenn der Server die schlüsselbasierte Clientauthentifizierung erzwingt).

ECDH verwendet a Kurve ; Die meisten Programme verwenden die Standard-NIST-Kurve P-256. Curve25519 ist eine weitere Kurve, deren "Verkaufsargument" darin besteht, dass sie schneller und nicht stärker als P-256 ist. Der Leistungsunterschied ist menschlich gesehen sehr gering: Wir sprechen von Berechnungen im Wert von weniger als einer Millisekunde auf einem kleinen PC, und dies geschieht nur einmal pro SSH-Sitzung. Sie werden es nicht bemerken. Keine der Kurven kann als "stärker" als die andere bezeichnet werden, weder praktisch (beide sind ziemlich weit im Bereich "kann es nicht brechen") noch akademisch (beide befinden sich auf der "128-Bit-Sicherheitsstufe"). P. >

Selbst wenn ECDH für den Schlüsselaustausch verwendet wird, verwenden die meisten SSH-Server und -Clients DSA- oder RSA-Schlüssel für die Signaturen. Wenn Sie einen Signaturalgorithmus möchten, der auf elliptischen Kurven basiert, dann ist das ECDSA oder Ed25519. Aus technischen Gründen ist dies aufgrund der genauen Definition der Kurvengleichung ECDSA für P-256, Ed25519 für Curve25519. Auch hier ist keiner stärker als der andere, und der Geschwindigkeitsunterschied ist viel zu gering, um von einem menschlichen Benutzer erkannt zu werden. Die meisten Browser (einschließlich Firefox und Chrome) unterstützen ECDH jedoch nicht mehr (dh auch).

Die Verwendung von P-256 sollte derzeit zu einer besseren Interoperabilität führen, da Ed25519 viel neuer und nicht so weit verbreitet ist. Für einen bestimmten Server, den Sie konfigurieren und auf den Sie von Ihren eigenen Computern aus zugreifen möchten, spielt die Interoperabilität jedoch keine große Rolle: Sie steuern sowohl die Client- als auch die Serversoftware.

Die Wahl liegt also im Grunde genommen in der Ästhetik, d. h. ganz bei Ihnen, ohne rationalen Grund. Sicherheitsprobleme werden durch diese Auswahl sowieso nicht verursacht. Die kryptografischen Algorithmen sind der stärkste Teil Ihres gesamten Systems, nicht der schwächste.

Das "Verkaufsgespräch" für 25519 ist mehr: Es ist kein NIST, also kein NSA. Nicht Geschwindigkeit.
Eigentlich ist es auch sehr viel Geschwindigkeit. Gut konstruierte Edwards / Montgomery-Kurven können um ein Vielfaches schneller sein als die etablierten NIST-Kurven
Wenn Sie wirklich Geschwindigkeit auf einem aktuellen PC wünschen, sind die von NIST genehmigten binären Koblitz-Kurven sogar noch schneller (dank des Opcode "Carryless Multiplication", der mit dem x86 AES-Befehl geliefert wird). Bis zu 40000 Zyklen für eine generische Punktmultiplikation in K-233, mehr als doppelt so schnell wie in Curve25519 - aber ein Szenario zu finden, in dem diese zusätzliche Geschwindigkeit tatsächlich einen spürbaren Unterschied macht, ist eine Herausforderung.
Weitere "Verkaufsargumente" stammen aus [diesem IETF-Entwurf] (https://tools.ietf.org/html/draft-ietf-ipsecme-safecurves-03#section-4): _Während die NIST-Kurven als nachweislich zufällig ausgewählt angekündigt werden, gibt es keine Erklärung für die Samen, mit denen sie erzeugt wurden.Im Gegensatz dazu ist der zur Auswahl dieser Kurven verwendete Prozess vollständig dokumentiert und starr genug, so dass eine unabhängige Überprüfung durchgeführt wurde.Dies wird allgemein als Sicherheitsvorteil angesehen, da es verhindert, dass die erzeugende Partei die Parameter böswillig manipuliert.
Laut der Website http://safecurves.cr.yp.to/ von DJB ist die NIST-Kurve möglicherweise nicht so sicher oder kinderleicht wie die Curve25519.
Es gibt tatsächlich drei Algorithmen.Der Host- (und Client-) Schlüsselalgorithmus (Authentifizierung), der Schlüsselaustauschalgorithmus (kex) und die Verschlüsselung.
@MartinSchröder, Enigma wurde auch nicht von Amerikanern erfunden ...
Ich schätze, dass der öffentliche Schlüssel mit ed25519 viel kürzer ist als der 4096-Bit-RSA für die Verwendung mit SSH.
Brian Minton
2014-03-14 20:53:08 UTC
view on stackexchange narkive permalink

Ab der Einführung in Ed25519 gibt es einige Geschwindigkeitsvorteile und einige Sicherheitsvorteile. Einer der interessanteren Sicherheitsvorteile besteht darin, dass es gegen mehrere Seitenkanalangriffe immun ist:

  • Keine geheimen Array-Indizes. Die Software liest oder schreibt niemals Daten von geheimen Adressen im RAM. Das Adressmuster ist vollständig vorhersehbar. Die Software ist daher immun gegen Cache-Timing-Angriffe, Hyperthreading-Angriffe und andere Seitenkanalangriffe, die auf dem Verlust von Adressen durch den CPU-Cache beruhen.
  • Keine geheimen Verzweigungsbedingungen. Die Software führt niemals bedingte Verzweigungen basierend auf geheimen Daten durch. Das Sprungmuster ist vollständig vorhersehbar. Die Software ist daher immun gegen Seitenkanalangriffe, die auf dem Verlust von Informationen durch die Zweigvorhersageeinheit beruhen.
* "Einer der interessanteren Sicherheitsvorteile ist, dass es gegen mehrere Seitenkanalangriffe immun ist." * - Um das Offensichtliche zu sagen, hängt dies von der Implementierung ab.Der Code des Bernstein-Teams, der Code von Adam Langley und der Code von Andrew Moon (et al.) Sollten in Ordnung sein.Aber ich glaube nicht, dass Sie dasselbe für eine willkürliche Implementierung sagen können.
Ich denke, es wäre genauer zu sagen, dass das Design des Algorithmus es ermöglicht, ihn zu implementieren, ohne geheime Array-Indizes oder Verzweigungsbedingungen zu verwenden.Natürlich haben Sie Recht, dass es immer noch möglich wäre, es schlecht umzusetzen.
Einmalige Pads sind nicht sicher, da dies von der Implementierung abhängt.
lxgr
2014-12-01 17:53:29 UTC
view on stackexchange narkive permalink

Es gibt einen wichtigen praktischen Vorteil von Ed25519 gegenüber (EC) DSA: Die letztere Familie von Algorithmen bricht vollständig ab, wenn sie für Signaturen zusammen mit einem defekten Zufallszahlengenerator verwendet werden. Ein solcher RNG-Fehler ist schon einmal aufgetreten und kann sehr gut wieder auftreten.

Theoretisch können Implementierungen vor diesem speziellen Problem schützen, aber es ist viel schwieriger um zu überprüfen, ob beide Enden eine korrekte Implementierung verwenden, als nur einen Algorithmus zu bevorzugen oder durchzusetzen (abhängig von Ihren Kompatibilitätsanforderungen), der das sichere Verhalten explizit spezifiziert (Ed25519).

zenith
2014-02-08 03:27:41 UTC
view on stackexchange narkive permalink

Ich hatte den Eindruck, dass Curve25519 aufgrund der Form der Kurve tatsächlich sicherer als die NIST-Kurven ist und daher weniger für verschiedene Seitenkanalangriffe sowie Implementierungsfehler geeignet ist. Siehe: http://safecurves.cr.yp.to

Ed25519 hat den Vorteil, dass Sie denselben Schlüssel für die Unterzeichnung einer Schlüsselvereinbarung verwenden können (normalerweise nicht) mach das). Ich bin mit der Mathematik nicht gut genug vertraut, um zu sagen, ob dies eine Eigenschaft einer Edwards-Kurve ist, obwohl ich weiß, dass sie zur Schlüsselübereinstimmung in das Montgomery-Koordinatensystem (effektiv in Curve25519) konvertiert wird ... Ed25519 ist mehr Als Kurve gibt sie unter anderem auch die deterministische Schlüsselgenerierung an (z. B. Hashing), die berücksichtigt werden sollte. Dies ist eine frustrierende Sache bei DJB-Implementierungen, da diese unterschiedlich behandelt werden müssen, um die Interoperabilität aufrechtzuerhalten.

Mecki
2019-06-07 18:04:24 UTC
view on stackexchange narkive permalink

Etwas, auf das bisher keine Antwort direkt eingegangen ist, ist, dass Ihre Fragen mehrere mehr oder weniger unabhängige Namen miteinander vermischen, als wären dies gleichwertige Alternativen zueinander, was nicht wirklich der Fall ist.

ECDH und ECDSA sind nur Namen kryptografischer Methoden.

ECDH ist eine Schlüsselaustauschmethode, mit der zwei Parteien einen sicheren Schlüssel über einen unsicheren aushandeln können Kommunikationskanal. Es ist eine Variation der DH (Diffie-Hellman) -Schlüsselaustauschmethode. ECDH steht für Elliptic-Curve Diffie-Hellman . ECDH ist jedoch nur eine Methode, dh Sie können es nicht nur mit einer bestimmten elliptischen Kurve verwenden, sondern auch mit vielen verschiedenen elliptischen Kurven.

ECDSA ist ein Signaturalgorithmus, der kann verwendet werden, um ein Datenelement so zu signieren, dass eine Änderung der Daten dazu führen würde, dass die Signaturüberprüfung fehlschlägt. Ein Angreifer kann die Daten nach einer solchen Änderung jedoch nicht korrekt neu signieren. Es ist eine Variation von DSA (Digital Signature Algorithm). ECDSA steht für Elliptic Curve Digital Signature Algorithm . Außerdem beschreibt ECDSA nur eine Methode, die mit unterschiedlichen elliptischen Kurven verwendet werden kann.

Die Sicherheit von ECDH und ECDSA hängt daher von zwei Faktoren ab:

  1. Wie sicher ist die Methode selbst? ? Wenn die Methode nicht sicher ist, würde die beste Kurve im Wort dies nicht ändern.
  2. Wie sicher ist die verwendete Kurve? Wenn die Kurve nicht sicher ist, spielt sie keine Rolle, wenn die Methode theoretisch lautet.
  3. ol>

    Curve25519 ist der Name einer bestimmten elliptischen Kurve. Andere Kurven heißen Curve448, P-256, P-384 und P-521.

    Ed25519 ist der Name einer konkreten Variation von EdDSA . Bei der Durchführung von EdDSA mit SHA-512 und Curve25519 wird diese Variante als Ed25519 bezeichnet. EdDSA ist genau wie ECDSA ein Signaturalgorithmus.

    Wenn eine Implementierung nur sagt, dass sie ECDH für den Schlüsselaustausch oder ECDSA zum Signieren von Daten verwendet, ohne eine bestimmte Kurve zu erwähnen, können Sie normalerweise davon ausgehen, dass die NIST-Kurven (P-256, P-384 oder P-) verwendet werden. 512), dennoch sollte die Implementierung die verwendete Kurve eigentlich immer explizit benennen.

    Um Ihre Frage zur Sicherheit zu beantworten: ECDH und ECDSA haben sich als konzeptionelle sichere Schlüsselaustausch- und Signaturmethoden erwiesen, daher die Sicherheit von ECDH und ECDSA hängt ziemlich stark von der Tatsache ab, ob jemand einen Weg findet, die elliptische Kryptographie im Allgemeinen zu brechen (wenig wahrscheinlich, aber nicht unmöglich) oder einen Fehler in den verwendeten Kurven zu finden (wahrscheinlicher).

    Der Grund, warum manche Leute Curve25519 gegenüber den NIST-Standardkurven bevorzugen, ist die Tatsache, dass das NIST nicht klar dokumentiert hat, warum es diese Kurven zugunsten bestehender Alternativen gewählt hat. Die generische Aussage " Die Kurven wurden angeblich für optimale Sicherheit und Implementierungseffizienz ausgewählt" klingt sehr nach Marketing-Balderdash und wird kryptografische Experten nicht überzeugen.

    Das NIST standardisierte 2006 auch eine auf Zufallszahlengeneratoren basierende Kryptographie mit elliptischen Kurven (Dual_EC_DRB), und die New Yorker Zeiten behaupteten (nach Überprüfung der von Edward Snowden durchgesickerten Memos), dass es die NSA war, die das NIST zur Standardisierung beeinflusste dieser spezifische Zufallszahlengenerator. In diesem Generator wurden große Schwachstellen entdeckt, und es wird angenommen, dass es sich um eine absichtliche Hintertür handelt, die von der NSA platziert wurde, um die TLS-Verschlüsselung basierend auf diesem Generator zu unterbrechen. Die ANSI hat die Schwachstelle offenbar entdeckt, als Dual_EC_DRB zum ersten Mal bei ihnen eingereicht wurde. Obwohl sie sich darüber im Klaren waren, wie sie vermieden werden können, haben sie weder den Algorithmus verbessert noch die Schwachstellen veröffentlicht ). Als die Schwäche öffentlich bekannt wurde, wurde der Standard 2014 zurückgezogen.

    Mit diesem Hintergrundwissen fragten sich die Leute natürlich, ob die Quelle der mysteriösen NIST-Kurvenparameter tatsächlich auch die NSA ist, da diese Kurven möglicherweise auch verborgene Schwächen aufweisen, die noch nicht öffentlich bekannt sind, die NSA jedoch möglicherweise kennt über sie und somit in der Lage sein, Kryptographie basierend auf diesen Kurven zu brechen. Es gibt keine Beweise für diese Behauptung, nicht einmal einen mutmaßlichen Beweis, aber es scheint sicherlich möglich und realistischer als ein Märchen. Aus diesem Grund haben die Menschen das Vertrauen in diese Kurven verloren und zu Alternativen gewechselt, bei denen es höchst unwahrscheinlich ist, dass diese von einem Geheimdienst auf der ganzen Welt beeinflusst wurden.

    Curve25519 wurde vom deutsch-amerikanischen Mathematiker und Kryptologen Daniel J veröffentlicht Bernstein im Jahr 2005, der auch die berühmte Salsa20-Stream-Chiffre und die mittlerweile weit verbreitete ChaCha20-Variante davon entwarf. Er erfand auch die Poly1305-Nachrichtenauthentifizierung. Google entschied, dass ChaCha20 in Kombination mit Poly1305 eine sichere Alternative für TLS darstellt, nachdem RC4 entfernt werden musste, weil der Algorithmus defekt war. Es erfordert viel weniger Rechenleistung als die Verwendung des AES-Blockchiffres (sehr nützlich für mobile Geräte, da es die Batterielaufzeit spart), bietet jedoch vermutlich eine vergleichbare Sicherheit. ChaCha20 / Poly1305 ist in RFC 7905 standardisiert und wird heute in der TLS-Client-Server-Kommunikation häufig verwendet. Wenn Bernstein also ein NSA-Spion wäre, was sehr unwahrscheinlich ist, wären wir alle bereits zum Scheitern verurteilt, da TLS, wie es heute häufig verwendet wird, wahrscheinlich nutzlos wäre, um Daten vor den Augen von Geheimdiensten zu schützen.

Obwohl ECDSA mit mehreren Kurven verwendet werden kann, wird es bei Bernstein tatsächlich nicht verwendet.Ed25519 und Ed448 sind Instanzen von EdDSA, einem anderen Algorithmus mit einigen technischen Vorteilen.Und in OpenSSH (wie gefragt) geben die Befehlsoption `ssh-keygen -t ecdsa` und der Standarddateiname` id_ecdsa *` nicht die Kurve an, sondern den tatsächlichen Schlüssel (Inhalt) einschließlich auf dem Draht und in `unknown_hosts` etc _do_;;siehe rfc5656.Einschließlich nistP-521, nicht P-512, das nicht existiert.
@dave_thompson_085 Ich habe nie behauptet, dass ECDSA mit Bernsteins verwendet wird.Ich habe nie behauptet, dass openSSH eine Kurve spezifiziert.Bitte kommentieren Sie keine Dinge, die ich noch nie geschrieben habe.Und P-512 war eindeutig ein Tippfehler, genau wie ECDSA für EdDSA, schließlich habe ich viel Text geschrieben, also passieren Tippfehler einfach.
Ich wollte nur darauf hinweisen, dass Sie einen Tippfehler in der Revisionsbeschreibung haben, in dem Sie "nervige Nitpicker" falsch geschrieben haben.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...