urve25519 er det høyeste nivået av Diffie-Hellman-funksjon tilgjengelig for et bredt spekter av scenarioer, designet av professor Daniel J. Bernstein. Innen kryptografi er Curve25519 en elliptisk kurve som gir 128-bits sikkerhet og er designet for bruk med den elliptiske kurven Diffie-Hellman (ECDH) nøkkelforhandlingsskjema. Det er en av de raskeste ECC-kurvene og er ikke dekket av noen kjente patenter.
Gitt en brukers 32-byte nøkkel, beregner curve25519 brukerens 32-byte offentlige nøkkel. Gitt den brukerens 32-byte nøkkel og en annen brukers 32-byte offentlige nøkkel, beregner curve25519 en 32-byte delt nøkkel for begge brukere å bruke. Denne hemmeligheten kan deretter brukes til å autentisere og kryptere informasjon for begge brukerne.
2. Last ned og kompiler Curve25519
Curve25519-biblioteket beregner curve25519-funksjonen med svært høy hastighet. Biblioteket har et bredt spekter av bruksområder. Du kan og bør bruke det i ditt eget program i stedet for å lenke til et delt bibliotek; Den kompilerte koden er omtrent 16 KB, avhengig av CPU-en.
Last ned og kompiler
Laste ned
kompilere
3. Bruk Curve25519
For ethvert C-program som skal bruke kurve25519, modifiser programmet til å inkludere kurve25519.h, og modifiser makefilen til å koble programmet til kurve25519.a og oppgi at programmet avhenger av kurve25519.a og kurve25519.h.
Beregningsnøkler
Internt, for å generere en 32-bytes curve25519-nøkkel, generer du først en hemmelighet på 32 tilfeldige byte fra en kryptografisk sikkerhetskilde: mysecret[0], mysecret[1], ..., mysecret[31]. Gjør deretter følgende: mysecret[0] &= 248; mysecret[31] &= 127; mysecret[31] |= 64; Generer en 32-byte Curve25519-nøkkel mysecret[0], mysecret[1], ..., mysecret[31].
I fremtiden vil bibliotekversjonen støtte en curve25519_ komprimeringsfunksjon som komprimerer 128 byte hashing til 32 byte, noe som gir noe beskyttelse mot utilstrekkelige tilfeldige tallgeneratorer; En curve25519_ klemmefunksjon som konverterer 32 byte til en nøkkel; og en enklest kombinasjon av curve25519_ nøkkelgenereringsfunksjoner, som direkte konverterer 128 byte til nøkler.
Beregning av offentlige nøkler
For å generere en 32Byte offentlig nøkkel som matcher 32Byte-nøkkelen mypublic[0], mypublic[1], ..., mypublic[31], kall funksjonen curve25519(mypublic, mysecret, basepoint); hvor det konstante basepunktet er:
const usignert char basepoint[32] = {9}; Fremtidige versjoner av biblioteket vil støtte mer konsise curve25519_ offentlige funksjoner.
Generer en delt nøkkel
Gitt en annen brukers Curve25519 offentlige nøkkel hanspublic[0], hanspublic[1], ..., hanspublic[31], kall
curve25519 (delt, mysecret, hanspublic); Generer 32-byte delte nøkler som deles [0], delt[1], ..., delt[31]. En annen person kan generere den samme delte nøkkelen basert på sin egen private nøkkel samt din offentlige nøkkel. Deretter kan dere begge hashe denne delte nøkkelen og bruke resultatet som en nøkkel, for eksempel for Poly1305-AES. Fremtidige versjoner av biblioteket vil støtte en curve25519_ utvidelsesfunksjon som direkte hasher en 32-byte nøkkel for å generere 128 byte som en nøkkel, og er den enkleste å bruke, en kombinasjon curve25519_ delt funksjon.
4. referanse
[Ed25519 og Curve25519 forklart]Innloggingen med hyperkoblingen er synlig. [Curve25519 kryptering og dekryptering og ED25519 bruk av signaturer]Innloggingen med hyperkoblingen er synlig. [ED25519]Innloggingen med hyperkoblingen er synlig. [Android ED25519 implementering]Innloggingen med hyperkoblingen er synlig. [[ED25519 C-implementering]Innloggingen med hyperkoblingen er synlig. [ed25519 Java-implementering]Innloggingen med hyperkoblingen er synlig.
Original:Innloggingen med hyperkoblingen er synlig. |