В сентябре состоялся первый стабильный релиз свободной криптографической библиотеки libsodium 1.0.0 (Sodium). Библиотека предназначена для создания программного инструментария для шифрования-дешифрования контента, хэширования паролей, работы с цифровыми подписями и др. Исходный код Sodium распространяется по лицензии ISC.
Проект Sodium был анонсирован компанией OpenDNS в 2013 г. как форк (версия) разработанной ранее криптографической библиотеки NaCl (Networking and Cryptography library), но не получившей широкого распространения из-за нерешенной проблемы переносимости кода на другие платформы (NaCl может использоваться лишь в отдельных Unix-системах). Разработчик ПО, сотрудник компании OpenDNS, Фрэнк Денис представил Sodium как универсальную кросс-платформенную библиотеку, обеспечивающую полную совместимость с NaCl на уровне API, с поддержкой целого ряда платформ. Библиотека включается в пакеты и инсталляторы для многих ОС, и ее функции доступны пользователям через API. В Sodium обеспечена сборка в виде разделяемой библиотеки, поставляется стандартный набор заголовочных файлов, добавлены средства для установки и интеграции со сторонними проектами; базовый API ориентирован на язык Си, но дополнительно в пакет включаются биндинги для языков Ruby и Python. Среди поддерживаемых Sodium платформ называются: Bitrig, OpenBSD, Dragonfly BSD, NetBSD, FreeBSD, SmartOS, OSX, Linux, Windows, iOS и Android.
Отмечается, что libsodium (как и NaCl) предоставляет упрощенный API с ограниченным, но проверенным набором безопасных криптографических опций и методов, а потому проще в освоении пользователями, по сравнению с такими распространенными аналогами как OpenSSL и др., которые обладают избыточной функциональностью (содержат множество криптографических примитивов, режимов и обработчиков, из которых пользователю трудно выбрать безопасный набор), что влечет за собой сложности при работе с ними, и в которых периодически обнаруживаются уязвимости. Sodium и NaCl решают проблему оптимального выбора, предоставляя в распоряжение пользователя готовый к использованию компактный и понятный набор функций, содержащий только безопасные методы.
Sodium предоставляет через API следующие функции:
- шифрование с использованием аутентификации с открытыми (public-key) и общими (shared-key) ключами, обеспечивающее надежность передачи зашифрованного сообщения, гарантируя его неизменность;
- создание и проверка цифровых подписей по открытым и общим ключам. Позволяет получателю проверить, что сообщение отправлено именно тем, от кого его ожидали получить, и не было изменено третьим лицом;
- операции хэширования, позволяющие сформировать слепок от сообщения, имеющий фиксированную длину, дающий возможность проверить соответствие хэшу начального сообщения, но не позволяющий восстановить элементы сообщений из хэша;
- средства для формирования для хэш-таблиц непредсказуемых ключей из коротких сообщений, позволяющие исключить проведение DoS-атак через манипуляции с коллизиями хэшей. В качестве функции хэширования используется метод SipHash-2-4, отличающийся высокой производительностью и непредсказуемым результатом операции;
- безопасный генератор псевдослучайных чисел для использования в криптографических операциях.
Автор библиотеки Фрэнк Дэвис опубликовал исходный код Sodium и документацию на Gitbook.