urve25519 är den högsta nivån av Diffie-Hellman-funktionen som finns tillgänglig för ett brett spektrum av scenarier, designad av professor Daniel J. Bernstein. Inom kryptografi är Curve25519 en elliptisk kurva som ger 128-bitars säkerhet och är designad för användning med den elliptiska kurvan Diffie-Hellman (ECDH) nyckelförhandlingsschema. Det är en av de snabbaste ECC-kurvorna och omfattas inte av några kända patent.
Givet en användares 32-bytes nyckel beräknar curve25519 användarens 32-bytes publika nyckel. Givet den användarens 32-bytes nyckel och en annan användares 32-bytes publika nyckel, beräknar curve25519 en 32-bytes delad nyckel för båda användarna att använda. Denna hemlighet kan sedan användas för att autentisera och kryptera information för båda användarna.
2. Ladda ner och kompilera Curve25519
Kurvbiblioteket beräknar kurvan25519-funktionen med mycket hög hastighet. Biblioteket har ett brett utbud av tillämpningar. Du kan och bör tillämpa det i ditt eget program istället för att länka till ett delat bibliotek; Den kompilerade koden är cirka 16 KB, beroende på CPU.
Ladda ner och kompilera
Ladda ned
kompilera
3. Använd Curve25519
För alla C-program som använder kurva25519, ändra programmet för att inkludera kurva25519.h, och ändra makefilen för att länka programmet med kurva25519.a och ange att programmet beror på kurva25519.a och kurva25519.h.
Beräkningsnycklar
Internt, för att generera en 32-bytes kurva25519-nyckel, generera först en hemlighet på 32 slumpmässiga byte från en kryptografisk säkerhetskälla: mysecret[0], mysecret[1], ..., mysecret[31]. Gör sedan följande: mysecret[0] &= 248; mysecret[31] &= 127; mysecret[31] |= 64; Generera en 32-bytes Curve25519-nyckel mysecret[0], mysecret[1], ..., mysecret[31].
I framtiden kommer biblioteksversionen att stödja en curve25519_ komprimeringsfunktion som komprimerar 128 byte hashning till 32 byte, vilket ger visst skydd mot otillräckliga slumptalsgeneratorer; En curve25519_ klämfunktion som omvandlar 32 byte till en nyckel; och en enklast att använda kombination av curve25519_ nyckelgenereringsfunktioner, som direkt omvandlar 128 byte till nycklar.
Beräkna publika nycklar
För att generera en 32Byte offentlig nyckel som matchar 32Byte-nyckeln mypublic[0], mypublic[1], ..., mypublic[31], anropa funktionen curve25519(mypublic, mysecret, basepoint); där den konstanta baspunkten är:
const osignerad char basepoint[32] = {9}; Framtida versioner av biblioteket kommer att stödja mer koncis curve25519_ offentliga funktioner.
Generera en delad nyckel
Givet en annan användares Curve25519 publika nyckel är hans public[0], hispublic[1], ..., hispublic[31], anrop
curve25519 (delade, min hemlighet, sin publik); Generera 32-bytes delade nycklar[0], delade[1], ..., delade[31]. En annan person kan generera samma delade nyckel baserat på sin egen privata nyckel samt din publika nyckel. Sedan kan ni båda hasha denna delade nyckel och använda resultatet som en nyckel, till exempel för Poly1305-AES. Framtida versioner av biblioteket kommer att stödja en curve25519_ extension-funktion som direkt hashar en 32-byte nyckel för att generera 128 byte som nyckel, och är den enklaste att använda, en kombination curve25519_ delad funktion.
4. Referens
[Ed25519 och Curve25519 förklaras]Inloggningen med hyperlänken är synlig. [Curve25519 kryptering och dekryptering samt ED25519 användning av signaturer]Inloggningen med hyperlänken är synlig. [ED25519]Inloggningen med hyperlänken är synlig. [Android ED25519 implementation]Inloggningen med hyperlänken är synlig. [[ED25519 C-implementering]Inloggningen med hyperlänken är synlig. [ed25519 Java-implementation]Inloggningen med hyperlänken är synlig.
Original:Inloggningen med hyperlänken är synlig. |