Компания Amazon анонсировала проект s2n, в рамках которого подготовлена компактная и быстрая библиотека с реализацией протоколов SSLv3, TLS1.0, TLS1.1 и TLS1.2. Из методов шифрования поддерживаются 128-и 256-разрядный AES в режимах CBC и GCM, а также 3DES и RC4. Среди других возможностей: DHE, ECDHE, TLS-расширения SNI (Server Name Indicator), ALPN (Application-Layer Protocol Negotiation) и OCS (Online Certificate Status Protocol). Код s2n написан на языке Си и распространяется под лицензией Apache. Библиотека имеет модульную структуру и, помимо встроенных алгоритмов шифрования, может использовать для выполнения операций шифрования внешние криптографические фреймворки, такие как OpenSSL, LibreSSL, BoringSSL и Apple Common Crypto.

Предоставляемый библиотекой API во многом напоминает типовой программный интерфейс ввода/вывода, реализуемый в стандартах POSIX. Поддерживаются блокируемые и неблокируемые операции, а также передача в полнодуплексном режиме, без необходимости установки блокировок и мьютексов. Пользователю предлагается достаточно взвешенный набор настроек по умолчанию, подразумевающий отключение SSLv3, RC4 и DHE. В целом, разработчики библиотеки придерживаются принципа минимализма и реализуют только самые необходимые и востребованные на практике возможности, без нагромождения кода редко используемыми расширениями и возможностями, которые потеряли актуальность из-за уязвимостей (например, согласование сеансов или DTLS).

Код библиотеки составляет всего около 6 тысяч строк, что значительно упрощает проведение аудита и выявление ошибок (для сравнения OpenSSL занимает около 500 тысяч строк, из которых 70 тысяч связано с TLS). Для повышения защищённости в s2n также предпринят ряд дополнительных мер, таких как регулярное проведение статического анализа кода и fuzzing-тестирования, обширный набор unit-тестов, применение методов безопасного программирования на Си с использованием обвязок, проверяющих соблюдение границ буферов для всех функций работы с памятью, сериализацией и строками. Для предотвращения утечки данных в s2n применяется техника оперативной очистки буфера с зашифрованными данными после его чтения приложением. Также используются специализированные вызовы операционной системы для запрета сброса областей памяти в раздел подкачки и core-дампы.

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

Источник: http://www.opennet.ru/opennews/art.shtml?num=42537