Увидел свет выпуск свободной криптографической библиотеки Sodium 1.0.0, совместимую на уровне API с библиотекой NaCl (Networking and Cryptography library) и предоставляющую функции для организации защищённого сетевого взаимодействия, шифрования и работы с цифровыми подписями. Выпуск 1.0 примечателен стабилизацией API и ABI, и обеспечением в дальнейшем обратной совместимости. Код библиотеки распространяется под свободной лицензией ISC.
В отличие от NaCl в Sodium решены проблемы с переносимостью кода на разные программные и аппаратные платформы, обеспечена сборка в виде разделяемой библиотеки, поставляется стандартный набор заголовочных файлов, добавлены средства для установки и интеграции со сторонними проектами. Среди поддерживаемых в Sodium платформ отмечаются Bitrig, OpenBSD, Dragonfly BSD, NetBSD, FreeBSD, SmartOS, Mac OS X, Linux, Windows, iOS и Android. Базовый API сформирован для языка Си, но дополнительно поставляются биндинги для языков Ruby и Python.
По сравнению с OpenSSL, Sodium и NaCl предоставляют существенно более простой API, а также применяет по умолчанию безопасные опции и методы шифрования и хэширования. API OpenSSL слишком усложнён и предоставляет обилие криптографических примитивов, режимов и обработчиков, из которых трудно выбрать действительно безопасный набор. Sodium и NaCl решают проблему выбора и предоставляют из коробки готовый к использованию небольшой и понятный набор функций, содержащий только безопасные методы.
API Sodium включает следующие возможности:
- Операции шифрования с использованием аутентифицированных открытых и симметричных (shared-key) ключей, позволяющие гарантировать, что зашифрованное сообщение останется в тайне и не сможет быть изменено атакующим;
- Создание и проверка цифровых подписей по открытым и симметричным ключам. Позволяет получателю проверить, что сообщения отправлено именно тем, от кого его ожидали получить и не было изменено третьим лицом;
- Операции хэширования, позволяющие сформировать слепок от сообщения, имеющий фиксированную длину, дающий возможность проверить соответствие хэшу начального сообщения, но не позволяющий восстановить элементы сообщений из хэша;
- Средства для формирования для хэш таблиц непредсказуемых ключей из коротких сообщений, позволяющие исключить проведение DoS-атак через манипуляции с коллизиями хэшей. В качестве функции хэширования используется метод SipHash-2-4, отличающийся высокой производительностью и непредсказуемым результатом операции;
- Безопасный генератор псевдослучайных чисел, пригодный для использования в криптографических операциях.