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