Libsodium и Perfect Forward Secrecy

Я думаю о создании мобильного приложения, которое использует Libsodium's crypto_box_easyдля шифрования и дешифрования сообщений чата.

Однако после прочтения большого количества информации в сети я обнаружил, что одним из главных недостатков алгоритмов открытого-закрытого ключа является то, что записанные данные могут быть расшифрованы, как только утечка личного ключа получателя.

Чтобы избежать этого, предлагается использовать Perfect Forward Secrecy (PFS), и мне интересно, поддерживает ли Libsodium PFS в ранее упомянутой функции как индивидуальной? nonces используются для каждого шифрования.

Может быть, кто-то может подсказать мне разницу между функциями PFS и Libsodiums (если они есть) или помочь мне прояснить взаимосвязь одноразовых номеров и PFS.

1 ответ

Здесь нет прямой секретности.

crypto_box_seal() немного лучше, так как отправитель использует эфемерные ключи. Эти сообщения могут быть подписаны с использованием долгосрочного секретного ключа, чтобы проверить, что они получены от ожидаемой стороны, но этот скомпрометированный ключ не позволит расшифровать предыдущие сообщения.

Однако, если секретный ключ получателя будет взломан, записанные сообщения все равно можно будет расшифровать.

По этим причинам box конструкция не существует в либидрогене. Вместо этого есть реализации протокола на основе шума для безопасного обмена ключами, все с прямой секретностью. Эти API будут перенесены на libsodium в какой-то момент.

Но приложения для безопасного чата далеки от создания. Библиотека сигналов - гораздо лучшая отправная точка, хотя лицензия может не соответствовать вашим ожиданиям.

Другие вопросы по тегам