Как использовать ed25519 для шифрования/дешифрования данных?

В настоящее время я исследую https://github.com/orlp/ed25519, и у него есть пример для подписания, но как использовать его для шифрования/дешифрования данных? Спасибо


person Mickey Shine    schedule 16.11.2014    source источник


Ответы (2)


Предположим, вы хотите отправить сообщение Алисе, у которой есть открытый ключ A.

  1. Создайте новую пару эфемерных ключей e, E
  2. Вычислите общий секрет DH между e и A с помощью функции ed25519_key_exchange.
  3. Используйте какой-нибудь KDF этого секрета. В простейшем случае хэш.
  4. Используйте значение, полученное на шаге 3, в качестве ключа в симметричном алгоритме.

NaCl crypto_box работает почти так. Основные отличия заключаются в том, что он использует открытые ключи формы Монтгомери и использует HSalsa20 в качестве хэша на шаге 3.

Некоторым людям неудобно использовать одну и ту же пару ключей для подписи. и шифрование. Используйте на свой риск. Если вам не нужно повторное использование этого ключа, я бы порекомендовал LibSodium в качестве альтернативы.

person CodesInChaos    schedule 17.11.2014

Вы не знаете. ED25519 — это система подписи с открытым ключом, а не система шифрования. Попытка использовать его для целей, для которых он не был разработан, может привести к возникновению уязвимостей в системе безопасности.

person Community    schedule 16.11.2014
comment
Вы не можете использовать Ed25519, но можете использовать открытые ключи Ed25519. - person CodesInChaos; 17.11.2014