urve25519 ist die höchste Stufe der Diffie-Hellman-Funktion, die für eine Vielzahl von Szenarien verfügbar ist und von Professor Daniel J. Bernstein entworfen wurde. In der Kryptographie ist Curve25519 eine elliptische Kurve, die 128-Bit-Sicherheit bietet und für die Verwendung mit dem Diffie-Hellman-(ECDH)-Schlüsselverhandlungsschema der elliptischen Kurve konzipiert ist. Sie ist eine der schnellsten ECC-Kurven und wird von keinem bekannten Patent abgedeckt.
Gegeben der 32-Byte-Schlüssel eines Benutzers, berechnet curve25519 den 32-Byte-öffentlichen Schlüssel des Benutzers. Angesichts des 32-Byte-Schlüssels dieses Benutzers und des 32-Byte-öffentlichen Schlüssels eines anderen Nutzers berechnet curve25519 einen 32-Byte-Shared-Schlüssel für beide Nutzer. Dieses Geheimnis kann dann zur Authentifizierung und Verschlüsselung von Informationen für beide Nutzer verwendet werden.
2. Curve25519 herunterladen und kompilieren
Die Kurve25519-Bibliothek berechnet die Kurve25519-Funktion mit sehr hoher Geschwindigkeit. Die Bibliothek bietet ein breites Anwendungsspektrum. Du kannst und solltest es in deinem eigenen Programm anwenden, anstatt auf eine gemeinsame Bibliothek zu verlinken; Der kompilierte Code umfasst je nach CPU etwa 16 KB.
Herunterladen und Kompilieren
Herunterladen
kompilieren
3. Verwenden Sie Curve25519
Für jedes C-Programm, das curve25519 verwendet, modifiziere das Programm, um curve25519.h einzuschließen, und ändere die Makefile, um das Programm mit curve25519.a zu verknüpfen und anzugeben, dass das Programm von curve25519.a und curve25519.h abhängt.
Berechnungsschlüssel
Intern erzeugt man zur Erzeugung eines 32-Byte-Curve25519-Schlüssels zunächst ein Secret von 32 zufälligen Bytes aus einer kryptografischen Sicherheitsquelle: mysecret[0], mysecret[1], ..., mysecret[31]. Dann machen Sie Folgendes: mysecret[0] &= 248; mysecret[31] &= 127; mysecret[31] |= 64; Generiere einen 32-Byte-Curve25519-Schlüssel mysecret[0], mysecret[1], ..., mysecret[31].
In Zukunft wird die Bibliotheksversion eine curve25519_ Kompressionsfunktion unterstützen, die 128 Bytes Hashing auf 32 Bytes komprimiert und so einen gewissen Schutz gegen unzureichende Zufallszahlengeneratoren bietet; Eine curve25519_ Clamp-Funktion, die 32 Bytes in einen Schlüssel umwandelt; und eine am einfachsten zu verwendende Kombination von curve25519_ Schlüsselgenerierungsfunktionen, die 128 Bytes direkt in Schlüssel umwandeln.
Berechnen öffentlicher Schlüssel
Um einen 32-Byte-öffentlichen Schlüssel zu erzeugen, der mit dem 32-Byte-Schlüssel übereinstimmt, rufen Sie die Funktion auf, mypublic[1], ..., mypublic[31], rufen Sie die Funktion auf. curve25519(Mypublic, MySecret, Basepoint); wobei der konstante Basispunkt ist:
const unsigned char Basepoint[32] = {9}; Zukünftige Versionen der Bibliothek werden prägnantere curve25519_ öffentliche Funktionen unterstützen.
Generiere einen gemeinsamen Schlüssel
Gegeben mit dem öffentlichen Schlüssel Curve25519 eines anderen Nutzers, sein Public[0], HisPublic[1], ..., HisPublic[31], Ruf
curve25519 (geteilt, MySecret, HisPublic); Generiere 32-Byte-Shared-Keys[0], shared[1], ..., shared[31]. Eine andere Person kann denselben gemeinsamen Schlüssel basierend auf ihrem eigenen privaten Schlüssel sowie Ihrem öffentlichen Schlüssel generieren. Dann können beide diesen gemeinsamen Schlüssel hashen und das Ergebnis als Schlüssel verwenden, zum Beispiel für Poly1305-AES. Zukünftige Versionen der Bibliothek werden eine curve25519_ Erweiterungsfunktion unterstützen, die direkt einen 32-Byte-Schlüssel hasht, um 128 Bytes als Schlüssel zu generieren, und am einfachsten zu bedienen ist, eine Kombination curve25519_ geteilten Funktion.
4. Referenz
[Ed25519 und Curve25519 erklärt]Der Hyperlink-Login ist sichtbar. [Curve25519 Verschlüsselung und Entschlüsselung sowie ED25519 Verwendung von Signaturen]Der Hyperlink-Login ist sichtbar. [ED25519]Der Hyperlink-Login ist sichtbar. [Android ED25519 Implementierung]Der Hyperlink-Login ist sichtbar. [[ED25519 C-Implementierung]Der Hyperlink-Login ist sichtbar. [ed25519 Java-Implementierung]Der Hyperlink-Login ist sichtbar.
Original:Der Hyperlink-Login ist sichtbar. |