urve25519 е най-високото ниво на функция на Дифи-Хелман, достъпно за широк спектър от сценарии, проектирано от професор Даниел Дж. Бърнстийн. В криптографията Curve25519 е елиптична крива, която осигурява 128-битова сигурност и е проектирана за използване с елиптичната крива на Diffie-Hellman (ECDH) схема за преговори на ключове. Това е една от най-бързите ECC криви и не е обхваната от никакви известни патенти.
С 32-байтов ключ на потребителя, curve25519 изчислява 32-байтовия публичен ключ на потребителя. Като се има предвид 32-байтов ключ на този потребител и 32-байтов публичен ключ на друг потребител, curve25519 изчислява 32-байтов споделен ключ за двамата потребители. Тази тайна може да се използва за удостоверяване и криптиране на информация и за двамата потребители.
2. Изтеглете и компилирайте Curve25519
Библиотеката curve25519 изчислява функцията curve25519 с много висока скорост. Библиотеката предлага широк спектър от приложения. Можете и трябва да го приложите в собствената си програма, вместо да свързвате към споделена библиотека; Компилираният код е около 16KB, в зависимост от процесора.
Изтегляне и компилиране
Свалям
компилирам
3. Използвайте Curve25519
За всяка C програма, която използва curve25519, модифицирайте програмата да включва curve25519.h и променете makefile-а, за да свърже програмата с curve25519.a и да посочите, че програмата зависи от curve25519.a и curve25519.h.
Ключове за изчисление
Вътрешно, за да генерирате 32-байтов ключ curve25519, първо генерирайте тайна от 32 произволни байта от криптографски източник за сигурност: mysecret[0], mysecret[1], ..., mysecret[31]. След това направете следното: mysecret[0] &= 248; mysecret[31] &= 127; mysecret[31] |= 64; Генерирайте 32-байтов ключ Curve25519 mysecret[0], mysecret[1], ..., mysecret[31].
В бъдеще библиотечната версия ще поддържа функция за компресия curve25519_, която компресира 128 байта хеширане в 32 байта, добавяйки известна защита срещу недостатъчни генератори на случайни числа; Функция за curve25519_ clamp, която преобразува 32 байта в клавиш; и най-лесна за използване комбинация от curve25519_ функции за генериране на ключове, които директно конвертират 128 байта в ключове.
Изчисление на публични ключове
За да генерирате 32-байтов публичен ключ, който съвпада с 32-байтовия ключ mypublic[0], mypublic[1], ..., mypublic[31], извикайте функцията curve25519(моята публична, моята тайна, базова точка); където константната базова точка е:
Конст неподписан чар базова точка[32] = {9}; Бъдещите версии на библиотеката ще поддържат по-кратки curve25519_ публични функции.
Генериране на споделен ключ
Давайки на друг потребител публичен ключ Curve25519 hispublic[0], hispublic[1], ..., hispublic[31], call
curve25519(споделена, моята тайна, неговата публична); Генериране на споделени ключове от 32 байта, споделени[0], споделени[1], ..., споделени[31]. Друг човек може да генерира същия споделен ключ въз основа на своя частен ключ, както и на вашия публичен ключ. След това и двамата можете да хеширате този споделен ключ и да използвате резултата като ключ, например за Poly1305-AES. Бъдещите версии на библиотеката ще поддържат функция за разширение curve25519_, която директно хешира 32-байтов ключ, генерирайки 128 байта като ключ, и е най-лесна за използване – комбинация curve25519_ споделена функция.
4. Препратка
[Обяснение на Ed25519 и Curve25519]Входът към хиперлинк е видим. [Curve25519 криптиране и декриптиране и ED25519 използване на подписи]Входът към хиперлинк е видим. [ED25519]Входът към хиперлинк е видим. [Android ED25519 внедряване]Входът към хиперлинк е видим. [[ED25519 C имплементация]Входът към хиперлинк е видим. [ed25519 Java имплементация]Входът към хиперлинк е видим.
Оригинален:Входът към хиперлинк е видим. |