urve25519 er det højeste niveau af Diffie-Hellman-funktion, der er tilgængeligt for en bred vifte af scenarier, designet af professor Daniel J. Bernstein. Inden for kryptografi er Curve25519 en elliptisk kurve, der giver 128-bit sikkerhed og er designet til brug med den elliptiske kurve Diffie-Hellman (ECDH) nøgleforhandlingsordning. Det er en af de hurtigste ECC-kurver og er ikke dækket af nogen kendte patenter.
Givet en brugers 32-byte nøgle beregner kurve25519 brugerens 32-byte offentlige nøgle. Givet den brugers 32-byte nøgle og en anden brugers 32-byte offentlige nøgle, beregner curve25519 en 32-byte delt nøgle, som begge brugere kan bruge. Denne hemmelighed kan derefter bruges til at autentificere og kryptere information for begge brugere.
2. Download og kompiler Curve25519
Kurven25519-biblioteket beregner kurvefunktionen med meget høj hastighed. Biblioteket har et bredt udvalg af anvendelser. Du kan og bør anvende det i dit eget program i stedet for at linke til et delt bibliotek; Den kompilerede kode er omkring 16KB, afhængigt af CPU'en.
Download og kompiler
Downloade
kompilere
3. Brug Curve25519
For ethvert C-program, der vil bruge kurve25519, modificerer programmet til at inkludere kurve25519.h, og modificerer makefilen til at linke programmet med kurve25519.a og angiver, at programmet afhænger af kurve25519.a og kurve25519.h.
Beregningsnøgler
Internt, for at generere en 32-byte curve25519-nøgle, genereres først en hemmelighed på 32 tilfældige bytes fra en kryptografisk sikkerhedskilde: mysecret[0], mysecret[1], ..., mysecret[31]. Gør derefter følgende: mysecret[0] &= 248; mysecret[31] &= 127; mysecret[31] |= 64; Generer en 32-byte Curve25519-nøgle mysecret[0], mysecret[1], ..., mysecret[31].
I fremtiden vil biblioteksversionen understøtte en curve25519_ komprimeringsfunktion, der komprimerer 128 bytes hashing til 32 bytes og dermed giver en vis beskyttelse mod utilstrækkelige tilfældige talgeneratorer; En curve25519_ clamp-funktion, der konverterer 32 bytes til en nøgle; og en lettest anvendelig kombination af curve25519_ nøglegenereringsfunktioner, som direkte konverterer 128 bytes til nøgler.
Beregn offentlige nøgler
For at generere en 32Byte offentlig nøgle, der matcher 32Byte-nøglen mypublic[0], mypublic[1], ..., mypublic[31], kald funktionen curve25519(mypublic, mysecret, basepoint); hvor det konstante basepunkt er:
const usigneret char basepoint[32] = {9}; Fremtidige versioner af biblioteket vil understøtte mere præcise curve25519_ offentlige funktioner.
Generer en delt nøgle
Givet en anden brugers Curve25519 offentlige nøgle, hans public[0], hanspublic[1], ..., hanspublic[31], kald
curve25519 (delt, mysecret, hanspublic); Generer 32-byte delte nøgler[0], delte[1], ..., delte[31]. En anden person kan generere den samme delte nøgle baseret på deres egen private nøgle samt din offentlige nøgle. Så kan I begge hashe denne delte nøgle og bruge resultatet som en nøgle, for eksempel for Poly1305-AES. Fremtidige versioner af biblioteket vil understøtte en curve25519_ udvidelsesfunktion, der direkte hasher en 32-byte nøgle for at generere 128 bytes som nøgle, og som er den letteste at bruge, en kombination curve25519_ delt funktion.
4. reference
[Ed25519 og Curve25519 forklaret]Hyperlink-login er synlig. [Curve25519 kryptering og dekryptering samt ED25519 brug af signaturer]Hyperlink-login er synlig. [ED25519]Hyperlink-login er synlig. [Android ED25519 implementering]Hyperlink-login er synlig. [[ED25519 C-implementering]Hyperlink-login er synlig. [ed25519 Java-implementering]Hyperlink-login er synlig.
Oprindelig:Hyperlink-login er synlig. |