
ECDSA-Signatur/-Verifizierung und ECDH-Schlüsselaustausch in reinem Python
Dies ist eine einfach zu verwendende Implementierung von ECC (Elliptic Curve Cryptography, Elliptische-Kurven-Kryptografie) mit Unterstützung für ECDSA (Elliptic Curve Digital Signature Algorithm, Elliptische-Kurven-Digitalsignaturalgorithmus), EdDSA (Edwards-curve Digital Signature Algorithm, Edwards-Kurven-Digitalsignaturalgorithmus) und ECDH (Elliptic Curve Diffie-Hellman, Elliptische-Kurven-Diffie-Hellman), vollständig in Python implementiert und unter der MIT-Lizenz veröffentlicht. Mit dieser Bibliothek können Sie schnell Schlüsselpaare (Signaturschlüssel und Verifikationsschlüssel) erstellen, Nachrichten signieren und die Signaturen verifizieren. Sie können auch einen gemeinsamen geheimen Schlüssel auf der Grundlage ausgetauschter öffentlicher Schlüssel vereinbaren. Die Schlüssel und Signaturen sind sehr kurz, wodurch sie einfach zu handhaben und in andere Protokolle einzubinden sind.
HINWEIS: Diese Bibliothek sollte nicht in Produktionsumgebungen verwendet werden; weitere Einzelheiten finden Sie unter Sicherheit.
Diese Bibliothek bietet Schlüsselerzeugung, Signieren, Verifizieren und Ableitung gemeinsamer Geheimnisse
für fünf
beliebte NIST-„Suite-B“-GF(p)-Kurven (Primkörper), mit Schlüssellängen von 192,
224, 256, 384 und 521 Bits. Die „Kurznamen“ dieser Kurven, wie sie vom
OpenSSL-Tool (openssl ecparam -list_curves) bekannt sind, lauten: prime192v1,
secp224r1, prime256v1, secp384r1 und secp521r1. Enthalten ist auch die
256-Bit-Kurve secp256k1, die von Bitcoin verwendet wird. Es gibt auch Unterstützung für die
regulären (nicht getwisteten) Varianten der Brainpool-Kurven von 160 bis 512 Bits. Die
„Kurznamen“ dieser Kurven lauten: brainpoolP160r1, brainpoolP192r1,
brainpoolP224r1, brainpoolP256r1, brainpoolP320r1, brainpoolP384r1,
brainpoolP512r1. Einige der kleinen Kurven aus dem SEC-Standard sind ebenfalls
enthalten (hauptsächlich um das Testen der Bibliothek zu beschleunigen), das sind:
secp112r1, secp112r2, secp128r1 und secp160r1.
Schlüsselerzeugung, Signieren und Verifizieren wird auch für die Kurven Ed25519 und
Ed448 unterstützt.
Weitere Kurven sind nicht enthalten, aber es ist nicht allzu schwer, Unterstützung für weitere
Kurven über Primkörpern hinzuzufügen.
Diese Bibliothek verwendet nur Python und das Paket „six“. Sie ist kompatibel mit Python 2.6, 2.7 und 3.6+. Sie unterstützt auch die Ausführung auf alternativen Implementierungen wie pypy und pypy3.
Wenn gmpy2 oder gmpy installiert ist, werden diese für schnellere Arithmetik verwendet.
Eines von beiden kann nach der Installation dieser Bibliothek installiert werden;
python-ecdsa erkennt deren Vorhandensein beim Start und verwendet sie
automatisch.
Für optimale Leistung sollten Sie unter Python3 gmpy2 bevorzugen.
Um die OpenSSL-Kompatibilitätstests auszuführen, muss sich das Tool „openssl“ in Ihrem
PATH befinden. Diese Version wurde erfolgreich gegen OpenSSL 0.9.8o,
1.0.0a, 1.0.2f, 1.1.1d und 3.0.1 getestet (unter anderem).
Diese Bibliothek ist auf PyPI verfügbar; es wird empfohlen, sie mit pip zu installieren:```
pip install ecdsa
Falls eine höhere Leistung gewünscht ist und die Verwendung von nativem Code kein Problem darstellt,
ist es möglich, die Installation zusammen mit `gmpy2` anzugeben:```
pip install ecdsa[gmpy2]
oder (langsamere, Legacy-Option):``` pip install ecdsa[gmpy]
## Speed