Доступ к 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.