urve25519 to najwyższy poziom funkcji Diffie-Hellman dostępny dla szerokiego zakresu scenariuszy, zaprojektowany przez profesora Daniela J. Bernsteina. W kryptografii Curve25519 to krzywa eliptyczna zapewniająca 128-bitowe bezpieczeństwo i jest zaprojektowana do użycia ze schematem negocjacji kluczy Diffie-Hellman (ECDH) z krzywą eliptyczną. Jest to jedna z najszybszych krzywych ECC i nie jest objęta żadnymi znanymi patentami.
Dla klucza użytkownika o długości 32 bajtów, curve25519 oblicza jego 32-bajtowy klucz publiczny. Mając 32-bajtowy klucz tego użytkownika i 32-bajtowy klucz publiczny innego, curve25519 oblicza 32-bajtowy klucz współdzielony dla obu użytkowników. Ten sekret może być następnie używany do uwierzytelniania i szyfrowania informacji dla obu użytkowników.
2. Pobierz i skompiluj Curve25519
Biblioteka curve25519 oblicza funkcję curve25519 z bardzo dużą prędkością. Biblioteka ma szerokie zastosowania. Możesz i powinieneś stosować go w swoim własnym programie zamiast linkować do współdzielonej biblioteki; Skompilowany kod ma około 16KB, w zależności od procesora.
Pobierz i skompiluj
Pobierać
kompilować
3. Użyj Curve25519
Dla dowolnego programu w języku C, który będzie używał curve25519, zmodyfikuj go tak, aby zawierał curve25519.h, a plik makefile, aby połączyć program z curve25519.a i stwierdzić, że program zależy od curve25519.a i curve25519.h.
Obliczaj klucze
Wewnętrznie, aby wygenerować klucz curve25519 o długości 32 bajtów, najpierw wygeneruj sekret 32 losowych bajtów z kryptograficznego źródła bezpieczeństwa: mysecret[0], mysecret[1], ..., mysecret[31]. Następnie zrób następująco: mysecret[0] &= 248; mysecret[31] &= 127; mysecret[31] |= 64; Wygeneruj 32-bajtowy klucz Curve25519: mysecret[0], mysecret[1], ..., mysecret[31].
W przyszłości wersja biblioteczna będzie obsługiwać funkcję kompresji curve25519_, która kompresuje 128 bajtów haszowania do 32 bajtów, co doda pewną ochronę przed niewystarczającymi generatorami liczb losowych; Funkcja curve25519_ clamp, która przekształca 32 bajty w klucz; oraz najłatwiejszą w użyciu kombinacją curve25519_ funkcji generowania kluczy, które bezpośrednio przekształcają 128 bajtów w klucze.
Oblicz klucze publiczne
Aby wygenerować 32-bajtowy klucz publiczny odpowiadający 32-bajtowemu kluczowi mypublic[0], mypublic[1], ..., mypublic[31], wywołaj funkcję curve25519 (mypublic, mysecret, punkt bazowy); gdzie stały punkt bazowy wynosi:
Const Underpoint Unsigned CHAR[32] = {9}; Przyszłe wersje biblioteki będą wspierać bardziej zwięzłe curve25519_ funkcje publiczne.
Wygeneruj wspólny klucz
Na podstawie klucza publicznego Curve25519 innego użytkownika: hispublic[0], hispublic[1], ..., hispublic[31],
Curve25519 (udostępnione, mysecret, hispublic); Generuj klucze współdzielone 32 bajtów[0], współdzielone[1], ..., współdzielone[31]. Inna osoba może wygenerować ten sam wspólny klucz na podstawie swojego klucza prywatnego oraz Twojego klucza publicznego. Następnie oboje możecie zahashować ten wspólny klucz i użyć wyniku jako klucza, na przykład dla Poly1305-AES. Przyszłe wersje biblioteki będą obsługiwać funkcję rozszerzenia curve25519_, która bezpośrednio haszuje klucz 32-bajtowy, generując 128 bajtów jako klucz, i jest najłatwiejsza w użyciu – funkcja łącząca curve25519_ współdzielona.
4. Odniesienie
[Wyjaśnienie Ed25519 i Curve25519]Logowanie do linku jest widoczne. [Curve25519 szyfrowanie i deszyfrowanie oraz ED25519 użycie sygnatur]Logowanie do linku jest widoczne. [ED25519]Logowanie do linku jest widoczne. [Implementacja ED25519 Androida]Logowanie do linku jest widoczne. [[ED25519 implementacja C]Logowanie do linku jest widoczne. [ed25519 Implementacja Java]Logowanie do linku jest widoczne.
Oryginał:Logowanie do linku jest widoczne. |