Протокол TLS 1.3 с российскими алгоритмами шифрования
Компании «Криптонит» и «Криптоком» объявили о том, что завершили разработку открытой реализации протокола TLS версии 1.3, обеспечивающего защиту данных с использованием российских криптографических алгоритмов. Она доступна как расширение для OpenSSL 1.1.1.
Протокол TLS используется в браузерах, мессенджерах, клиентах электронной почты, IP-телефонии и в других приложениях для обеспечения конфиденциальности данных, передаваемых через интернет. Версия 1.3 этого протокола определена в международном стандарте RFC8446; благодаря ей внесены существенные модификации в протокол, обеспечивающие одновременно усиление безопасности и улучшение его пользовательских характеристик.
TLS 1.3 позволяет использовать различные алгоритмы шифрования, распределения ключей и цифровой подписи. Конкретный набор криптографических алгоритмов (cipher suites), поддерживаемый обеими сторонами, задается на этапе «рукопожатия» (handshake) – согласования параметров соединения.
Стандарт RFC8446 предусматривает использование в протоколе только зарубежных криптоалгоритмов. В России принято расширение RFC8446 – стандарт Р 1323565.1.030-2020. Его основное отличие – использование российских криптографических алгоритмов и поддержка других режимов работы протокола. Отечественный стандарт определяет четыре криптонабора, каждый из которых использует режим MGM со своими уникальными параметрами.
Ранее «Криптонит» сообщала о создании на базе OpenSSL 1.1.1 реализации с открытым исходным кодом всех актуальных российских алгоритмов шифрования и режимов их использования, включая режим MGM. Следующим шагом стало обеспечение возможности использования этих алгоритмов в протоколе TLS 1.3.
Основной механизм расширения функциональности библиотеки OpenSSL в версии 1.1.1 и более ранних – это механизм «движка» (engine). Большое количество российских криптографических алгоритмов доступны в OpenSSL через расширение Gost Engine. «Криптонит» и «Криптоком» выполнили ряд доработок Gost Engine, а также исходного кода самой библиотеки OpenSSL:
- добавлен алгоритм кодировки открытого эфемерного ключа в расширении key_share (на этапе handshake);
- добавлен алгоритм выработки общего секретного значения ECDHE при использовании протокола Диффи-Хеллмана;
- реализован алгоритм TLSTREE, используемый для порождения ключей защиты записей из корневого ключа;
- доработан механизм согласования алгоритма в расширении signature_algorithms (потребовало правки кода OpenSSL);
- доработана встроенная система тестов.
На заключительном этапе согласно методическим рекомендациям ТК26 была проведена проверка полученной реализации протокола TLS 1.3 на контрольных примерах. Дополнительно выполнено ее тестирование с использованием формального языка первичных спецификаций криптографических протоколов. Разработанную реализацию протокола TLS 1.3 планируется использовать на стенде тестирования совместимости криптографических средств, также разработанного в НПК «Криптонит». Параллельно для текущей ветки OpenSSL 3.0 уже ведется аналогичная работа по внедрению российских стандартов шифрования.