it-swarm.com.de

ECC in (offenem) PGP

Wie ist die Unterstützung für ECC (Elliptic Curve Cryptography) in (Open) PGP bisher? Es scheint, dass GnuPG (The GNU Privacy Guard) keine offizielle Implementierung hat - aber ich habe das gnupg-ecc-Projekt gefunden ( ECC-fähiges GnuPG per RFC 6637) bei Google Code:

Dieses Projekt hat die Unterstützung der Elliptic Curve Cryptography in OpenPGP als Endbenutzerfunktion zum Leben erweckt. Benutzer können einfach eine ECC-Schlüsselgenerierungsoption in auswählen

gpg2 --gen-key

und verwenden Sie dann den generierten öffentlichen Schlüssel wie normalerweise jeden anderen öffentlichen Schlüssel, wie gezeigt hier .

Ich weiß, dass Symantec ECC unterstützt. Gibt es Gründe, ECC nicht zu verwenden?

[~ # ~] edit [~ # ~]

Ich habe weitere Nachforschungen angestellt und herausgefunden, dass ECC vor langer Zeit den Weg zur Hauptlinie von gnupg gefunden hat, aber nur in der Entwicklerversion :

$ gpg2 --expert --gen-key
gpg: NOTE: THIS IS A DEVELOPMENT VERSION!
gpg: It is only intended for test purposes and should NOT be
gpg: used in a production environment or with production keys!
Please select what kind of key you want:
    (1) RSA and RSA (default)
    (2) DSA and Elgamal
    (3) DSA (sign only)
    (4) RSA (sign only)
    (7) DSA (set your own capabilities)
    (8) RSA (set your own capabilities)
    (9) ECDSA and ECDH
   (10) ECDSA (sign only)
   (11) ECDSA (set your own capabilities)
Your selection?`
24
esskar

Ich sehe zwei Hauptgründe, warum Sie ECC nicht verwenden möchten:

Praktischer Grund: Kommunikation beinhaltet notwendigerweise zwei Parteien, den Absender und den Empfänger. ECC kann nur verwendet werden, wenn sowohl Sender als auch Empfänger dies unterstützen. Wie Sie bemerkt haben, sind vorhandene, bereitgestellte Implementierungen noch nicht unbedingt geeignet. Wenn Sie einen öffentlichen ECC-Schlüssel verwenden, können Personen Ihnen mit diesem Schlüssel verschlüsselte Nachrichten senden oder Ihre Signaturen mit diesem Schlüssel überprüfen, nur wenn ihre OpenPGP-Implementierung den entsprechenden Code enthält.

Ihre Wahl von ECC oder nicht ECC hängt also davon ab, ob Sie die Interoperabilität maximieren möchten oder lieber ein "Early Adopter" sein möchten (obwohl im Fall von ECC bereits wirklich Early Adopters vorhanden sind; ECC wird zum Mainstream).

Moralischer Grund: Mathematisch gesehen haben wir keinen Beweis dafür, dass einer der von uns verwendeten kryptografischen Algorithmen wirklich robust gegen Angriffe ist. Wir wissen nicht einmal, ob es mathematisch möglich ist, robust gegen Angriffe zu sein. Derzeit müssen wir die Stärke eines kryptografischen Algorithmus nur bewerten, indem wir ihn definieren und dann viele Kryptografen einige Jahre lang daran arbeiten lassen. Wenn keiner dieser intelligenten Leute etwas Falsches an dem Algorithmus gefunden hat, können Sie wissen, dass der Algorithmus, wenn er schwach ist, zumindest nicht offensichtlich schwach ist.

Elliptische Kurven wurden 1985 als Objekte für die Kryptographie vorgeschlagen (von Koblitz und Miller unabhängig voneinander). Die Mathematik elliptischer Kurven wurde zuvor etwa 40 Jahre lang untersucht. So kann ECC etwa 70 Jahre Exposition zeigen, davon 30 in einer definitiv kryptografischen Umgebung. Das ist nicht schlecht.

Integer Factorization , auf dem RSA basiert, kann eine kryptografische Exposition von 35 Jahren aufweisen (RSA wurde 1978 vorgeschlagen) und mehr als ein Keuchhusten 2500 Jahre für den Basiswert Mathematik. Daher kann argumentiert werden, dass die Sicherheit von RSA "besser verstanden" wird als die von elliptischen Kurven.


Persönlich denke ich, dass ECC ausgereift genug ist, um bereitgestellt zu werden, und da ECC hochmodisch sind, werden Implementierungen alltäglich und wir können erwarten, dass sich GnuPG bald anpasst. Daher lautet meine Empfehlung: ECC ist in Ordnung, solange Sie bereit sind, einige Jahre lang auf Interoperabilitätsprobleme zu stoßen.

(Ein dunkler Punkt bei der ECC-Bereitstellung ist, dass es nur sehr wenige "generische" ECC-Implementierungen gibt. Die meisten Implementierungen sind spezifisch für einen eingeschränkten Satz unterstützter Kurven, häufig beschränkt auf die beiden NIST P-256- und P-384-Kurven. Die Wahl der Kurve Ihr Schlüssel hat somit einen nicht trivialen Einfluss auf die Interoperabilität. P-256 ist jedoch aus Sicherheitsgründen in Ordnung, sodass Sie ihn verwenden und sich keine Sorgen mehr machen können.)

25
Thomas Pornin

Derzeit wird ECC in GnuPG 2.1 Beta unterstützt. Sie können es aus dem Quellcode kompilieren und selbst sehen, dass die folgenden Kurven unterstützt werden:

nistp256 nistp384 nistp521 brainpoolP256r1 brainpoolP384r1 brainpoolP512r1 secp256k1

9
Adrian

in GPG würde man sich aus Sicherheitsgründen von Brainpool und nistischen Kurven fernhalten. edDSA-, Montgomery- und Edward-Kurven sind in Ordnung. ed25519 wird zum Glück vorerst ohne Subrterfuge eingesetzt.

Obwohl es nur zum Signieren/Zertifizieren/Authentifizieren ist. Die Verschlüsselung wird folgen.

die Mailinglisten auf ietf.org sind hervorragende Ausgangspunkte, um auch cryp.to zu überprüfen.

Die Verwendung von ECC mit Folly-Implementierung ist schlechter als die Verwendung von RSA.

6
Njomsky