Доступ к MAC-ключам в NaCl/libsodium

Согласно https://cr.yp.to/highspeed/naclcrypto-20090310.pdf, NaCl получает ключ MAC из общего секретного ключа и одноразового номера в crypto_box API-интерфейсы.

Алиса использует первые 32 байта длинного потока (генерируется из общего секрета и одноразового использования с использованием salsa20) для вычисления аутентификатора зашифрованного пакета.

Однако эта процедура является внутренней. Интересно, есть ли API для получения ключа MAC вручную?

1 ответ

Решение

box конструкция использует xsalsa20 Шифр (изначально - есть вариант с использованием xchacha20).

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

Итак, вы можете просто использовать crypto_stream() вычислить ключ Poly1305.

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