urve25519 je najvyššia úroveň Diffie-Hellmanovej funkcie dostupná pre širokú škálu scenárov, navrhnutá profesorom Danielom J. Bernsteinom. V kryptografii je Curve25519 eliptická krivka, ktorá poskytuje 128-bitovú bezpečnosť a je navrhnutá na použitie s eliptickou krivkou Diffie-Hellman (ECDH) na vyjednávanie kľúčov. Je to jedna z najrýchlejších ECC kriviek a nie je krytá žiadnymi známymi patentmi.
Pri danom 32-bajtovom kľúči používateľa curve25519 vypočíta 32-bajtový verejný kľúč používateľa. Na základe 32-bajtového kľúča tohto používateľa a 32-bajtového verejného kľúča iného používateľa curve25519 vypočíta 32-bajtový zdieľaný kľúč pre oboch používateľov. Toto tajomstvo je potom možné použiť na autentifikáciu a šifrovanie informácií pre oboch používateľov.
2. Stiahnuť a skompilovať Curve25519
Knižnica curve25519 počíta funkciu curve25519 veľmi rýchlo. Knižnica má široké spektrum využitia. Môžete a mali by ste ho aplikovať vo svojom programe namiesto prepojenia na zdieľanú knižnicu; Skompilovaný kód má približne 16KB, v závislosti od CPU.
Stiahnuť a skompilovať
Stiahnuť
kompilovať
3. Použite Curve25519
Pre akýkoľvek C program, ktorý bude používať curve25519, upravte program tak, aby zahŕňal curve25519.h, a upravte makefile tak, aby program prepojil s curve25519.a a uveďte, že program závisí od curve25519.a a curve25519.h.
Výpočtové kľúče
Interne, na vygenerovanie 32-bajtového kľúča curve25519, najprv vygenerujte tajomstvo 32 náhodných bajtov z kryptografického bezpečnostného zdroja: mysecret[0], mysecret[1], ..., mysecret[31]. Potom postupujte nasledovne: mysecret[0] &= 248; mysecret[31] &= 127; mysecret[31] |= 64; Vygenerujte 32-bajtový kľúč Curve25519 mysecret[0], mysecret[1], ..., mysecret[31].
V budúcnosti bude knižničná verzia podporovať curve25519_ kompresnú funkciu, ktorá komprimuje 128 bajtov hashovania do 32 bajtov, čím pridá určitú ochranu proti nedostatočným generátorom náhodných čísel; Funkcia curve25519_ clamp, ktorá prevádza 32 bajtov na kľúč; a najjednoduchšia kombinácia curve25519_ kľúčových funkcií, ktoré priamo konvertujú 128 bajtov na kľúče.
Vypočítajte verejné kľúče
Na generovanie 32-bajtového verejného kľúča, ktorý zodpovedá 32-bajtovému kľúču mypublic[0], mypublic[1], ..., mypublic[31], zavolajte funkciu curve25519 (mypublic, mysecret, basepoint); kde konštantný základný bod je:
Const nepodpísaný char základný bod[32] = {9}; Budúce verzie knižnice budú podporovať stručnejšie curve25519_ verejné funkcie.
Vygenerujte zdieľaný kľúč
Na základe verejného kľúča Curve25519 iného používateľa jehopublic[0], jehopublic[1], ..., jehopublic[31], volá
Curve25519 (zdieľané, mysecret, jeho verejnosť); Generujte zdieľané 32-bajtowe zdieľané kľúče[0], zdieľané[1], ..., zdieľané[31]. Ďalšia osoba môže vytvoriť rovnaký zdieľaný kľúč na základe svojho vlastného súkromného kľúča aj vášho verejného kľúča. Potom môžete obaja zahashovať tento zdieľaný kľúč a použiť výsledok ako kľúč, napríklad pre Poly1305-AES. Budúce verzie knižnice budú podporovať curve25519_ rozširujúcu funkciu, ktorá priamo zahashuje 32-bajtový kľúč a generuje 128 bajtov ako kľúč, a je najjednoduchšia na použitie ako kombinácia curve25519_ zdieľaná funkcia.
4. Referencia
[Vysvetlenie Ed25519 a Curve25519]Prihlásenie na hypertextový odkaz je viditeľné. [Curve25519 šifrovanie a dešifrovanie a ED25519 používanie podpisov]Prihlásenie na hypertextový odkaz je viditeľné. [ED25519]Prihlásenie na hypertextový odkaz je viditeľné. [Android ED25519 implementácia]Prihlásenie na hypertextový odkaz je viditeľné. [[ED25519 C implementácia]Prihlásenie na hypertextový odkaz je viditeľné. [ed25519 Java implementácia]Prihlásenie na hypertextový odkaz je viditeľné.
Originál:Prihlásenie na hypertextový odkaz je viditeľné. |