urve25519 je nejvyšší úroveň Diffie-Hellmanovy funkce dostupná pro širokou škálu scénářů, navržená profesorem Danielem J. Bernsteinem. V kryptografii je Curve25519 eliptická křivka, která poskytuje 128bitovou bezpečnost a je navržena pro použití s eliptickým Diffie-Hellmanovým (ECDH) schématem vyjednávání klíčů. Jedná se o jednu z nejrychlejších ECC křivek a není kryta žádnými známými patenty.
Na základě 32bajtového klíče uživatele curve25519 vypočítá jeho 32bajtový veřejný klíč. Na základě 32bajtového klíče tohoto uživatele a veřejného klíče 32 bajtů druhého uživatele curve25519 vypočítá sdílený 32bajtový klíč pro oba uživatele. Toto tajemství lze pak použít k autentizaci a šifrování informací pro oba uživatele.
2. Stáhnout a zkompilovat Curve25519
Knihovna curve25519 vypočítává funkci curve25519 velmi vysokou rychlostí. Knihovna má široké spektrum využití. Můžete a měli byste ji aplikovat ve svém vlastním programu místo propojení do sdílené knihovny; Zkompilovaný kód má přibližně 16 KB, v závislosti na CPU.
Stáhněte a zkompilujte
Stáhnout
kompilovat
3. Použijte Curve25519
Pro jakýkoli program v C, který bude používat curve25519, upravte program tak, aby zahrnoval curve25519.h, a upravte makefile tak, aby program propojil s curve25519.a a uveďte, že program závisí na curve25519.a a curve25519.h.
Výpočetní klíče
Interně, pro generování 32bajtové křivky25519 klíče, nejprve vygenerujte tajemství o 32 náhodných bajtech z kryptografického bezpečnostního zdroje: mysecret[0], mysecret[1], ..., mysecret[31]. Pak postupujte následovně: mysecret[0] &= 248; mysecret[31] &= 127; mysecret[31] |= 64; Vygenerujte 32bajtový klíč Curve25519 mysecret[0], mysecret[1], ..., mysecret[31].
V budoucnu bude knihovní verze podporovat curve25519_ kompresní funkci, která komprimuje 128 bajtů hashování do 32 bajtů, čímž přidá určitou ochranu proti nedostatečným generátorům náhodných čísel; curve25519_ clamp funkce, která převádí 32 bajtů na klíč; a nejjednodušší použití kombinace curve25519_ funkcí generování klíčů, které přímo převádějí 128 bajtů na klíče.
Spočítejte veřejné klíče
Pro vytvoření 32bajtového veřejného klíče, který odpovídá 32bajtovému klíči mypublic[0], mypublic[1], ..., mypublic[31], zavolejte funkci curve25519 (mypublic, mysecret, basepoint); kde konstantní základní bod je:
Const Undersigned CHAR Basepoint[32] = {9}; Budoucí verze knihovny budou podporovat stručnější curve25519_ veřejné funkce.
Generujte sdílený klíč
Na základě veřejného klíče Curve25519 jiného uživatele je jeho veřejný[0], jeho veřejný[1], ..., jehopublic[31], volá
Curve25519 (sdílené, mysecret, jeho veřejné); Generujte sdílené klíče o rozsahu 32 bajtů[0], sdílené[1], ..., sdílené[31]. Další osoba může vytvořit stejný sdílený klíč na základě svého soukromého klíče i vašeho veřejného klíče. Pak můžete oba tento sdílený klíč zahashovat a použít výsledek jako klíč, například pro Poly1305-AES. Budoucí verze knihovny budou podporovat curve25519_ rozšíření, které přímo hashuje 32bajtový klíč a generuje 128 bajtů jako klíč, a je nejjednodušší na použití, což je kombinace curve25519_ sdílené funkce.
4. Reference
[Vysvětlení Ed25519 a Curve25519]Přihlášení k hypertextovému odkazu je viditelné. [Curve25519 šifrování a dešifrování a ED25519 použití podpisů]Přihlášení k hypertextovému odkazu je viditelné. [ED25519]Přihlášení k hypertextovému odkazu je viditelné. [Android ED25519 implementace]Přihlášení k hypertextovému odkazu je viditelné. [[ED25519 C implementace]Přihlášení k hypertextovému odkazu je viditelné. [ed25519 Java implementace]Přihlášení k hypertextovému odkazu je viditelné.
Původní:Přihlášení k hypertextovému odkazu je viditelné. |