Алгоритмы шифрования: Русские криптографические алгоритмы (ГОСТ)

Технические статьи

Алгоритмы шифрования: Русские криптографические алгоритмы (ГОСТ)

Октябрь 2, 2019

Параллельно основному направлению развития в мире криптографии в России существует сильная школа разработки алгоритмов шифрования, таких как блочное шифры, функции хеширования, электронная подпись и т. д. Наблюдается медленная, но устойчивая тенденция приведения использования алгоритмов ГОСТ в соответствие с остальным интернет сообществом. Речь пойдет о развенчании нескольких мифов и описании текущего состояния поддержки в проектах с открытым исходным кодом.

1. Что значит шифрование по ГОСТ

Говоря о современной криптографии, мы привыкли иметь в виду обычные конструкционные блоки. Мы используем AES, SHA-2, RSA или ECDSA, не тратя много времени на выбор алгоритма. Эти алгоритмы считаются надежными, поэтому если нет особой причины не выбрать один из них, пользуются ими как «рекомендуемыми». Тем не менее, некоторые страны приложили значительные усилия для разработки своих криптографических примитивов, а также высокоуровневых алгоритмов в дополнение к этому всем известному списку. Россия – одна из таких стран.

Российские компании по разработке средств защиты информации представили целый набор криптографических алгоритмов и опубликовали их в качестве стандартов ГОСТ:

  • Алгоритм симметричного шифрования (64-битное и 128-битное шифрование);
  • Функция хеширования (256-битный и 512-битный варианты);
  • Электронная цифровая подпись (использование задачи дискретного логарифмирования на эллиптической кривой).

Кроме упомянутых примитивов были разработаны «Рекомендации по стандартизации», которые определяют использование алгоритмов в протоколах верхнего уровня, включая:

  • Инфраструктуру открытого ключа X.509;
  • (CMS) Синтаксис криптографических сообщений (бывший (криптографический стандарт с общим ключом) PKCS #7), расширение к файловым форматам PKCS #8, #12;
  • Набор шифров TLS;
  • Платежные приложения и т.д.
2. Крипто-мифы ГОСТ
2.1 Алгоритмы ГОСТ разрабатываются в ФСБ

Распространенный миф, что криптоалгоритмы ГОСТ были придуманы в ФСБ/ФАПСИ/КГБ для перехвата информации по каналам связи и подделки подписей. В действительности различные стандарты создавались разными сторонами, с передачей разработки из КГБ/ФАПСИ/ФСБ в коммерческие компании:

  • ГОСТ 28147-89 (64-битный симметричный ключ) разработан в КГБ, 8-ой Отдел;
  • ГОСТ Р 34.10-94 (старая электронная подпись, основанная на вычислениях в конечных полях), ГОСТ Р 34.11-94 (старая функция хеширования) и ГОСТ Р 34.10-2001 (новая электронная подпись, основанная на эллиптических кривых) разработаны в ФАПСИ;
  • ГОСТ Р 34.10-2012 (дополнение к ГОСТ Р 34.10-2001 об использовании 512-битных кривых), ГОСТ Р 34.11-2012 (новая функция хеширования), ГОСТ Р 34.12-2015 (блочные шифры) и ГОСТ Р 34.13-2015 (режимы шифрованных блоков) разработаны в ФСБ совместно с ОАО InfoTeCS;
  • Дальнейшие рекомендации по стандартизации разрабатывались коммерческими компаниями под руководством комитета по технической стандартизации (TK26).
2.2 Алгоритмы ГОСТ ненадежны и полны слабых мест и уязвимостей

До сих пор в стандартах не найдено путей обхода системы защиты. И это вполне логично по нескольким причинам.

Во-первых, в обычной жизни людям не требуется пользоваться алгоритмами ГОСТ. Пользоваться любыми из существующих криптографических решений запрещено, пока это не требуется законом, регулирующим доступ к сведениям, составляющим государственную тайну, или квалифицированным электронным подписям. В остальных случаях можно пользоваться любым набором шифров.

Во-вторых, если бы авторы поместили инструменты обхода системы защиты в алгоритмы, это могло бы быть обнаружено продуманными криптографическими изысканиями иностранного правительства. И это как раз то, от чего мы стараемся защититься. Сохранение государственной тайны намного более приоритетно по сравнению с теоретической возможностью чтения сообщений простых граждан.

Наиболее известные попытки несанкционированного доступа представлены в таблице 1. Как видно, ни одна из них не реализуема на практике.

2.3 Отечественная (ГОСТ) криптография не важна для остального мира

Широко известная позиция, что все государственные криптографические стандарты не интересны остальному миру, потому что никто не собирается их использовать.

Во-первых, это не совсем правда с позиции многообразия алгоритмов. ГОСТ обеспечивает комплексную альтернативу миру AES-SHA-ECDSA алгоритмов. Это позволяет нам (разработчикам) убедиться, что все стандарты и их использование не привязаны к определенному набору алгоритмов. Это позволяет нам находить баги и дефекты в используемых криптографических библиотеках, где API или фактическая реализация пользуются особыми фиксированными значениями или конкретными свойствами алгоритмов, предотвращая изменения в исходных примитивах.

Во-вторых, данный подход препятствует потоку идей из Российского сообщества в мировое сообщество. Примерами таких идей будут:

  • Протокол Security Evaluated Standardized Password-Authenticated Key Exchange (RFC 8133),
  • Механизм преобразования симметричного ключа (rfc 8645),
  • Мультилинейный режим Галуа (draft-smyshlyaev-mgm),
  • Внешнее преобразование ключа для протокола TLS (draft-smyshlyaev-tls12-gost-suites).

Таблица 1: Наиболее известные атаки на алгоритмы ГОСТ

3. Существующие реализации
3.1 Коммерческие реализации

Некоторые компании продают сертифицированные реализации алгоритмов ГОСТ с закрытым исходным кодом в формате Windows CSP или OpenSSL engine. Несколько примеров (в алфавитном порядке) CryptoCom, CryptoPro, InfoTeCS, LISSI. Реализации отличаются по функционалу, уровню сертификации и цене.

Также, CryptoCom предлагает измененные версии OpenVPN, а CryptoPro – измененную версию браузера Chromium.

3.2 Поддержка программного обеспечения с открытым исходным кодом

Программисты работают над внедрением поддержки криптографии ГОСТ в открытое программное обеспечение.

Для этого необходимо дополнительное тестирование и приведение к существующим библиотекам. OpenSSL, GOST-engine является известным примером успешного тестирования того, что устройства с криптографическими примитивами работают корректно.

С поддержкой ГОСТ для существующих библиотек появляется возможность заменить или дополнить существующее проприетарное программное обеспечение при работе с правительственной информацией.

4. Заключение

Набор алгоритмов ГОСТ является многообещающей альтернативой доминирующим алгоритмам AES/ SHA/RSA/ECDSA. Благодаря деятельности Российских инженеров в IETF и IEC/ISO алгоритмы ГОСТ получают выход на международные стандарты, способствуя более широкому внедрению и алгоритмическому разнообразию. При этом многое уже достигнуто по внедрению алгоритмов ГОСТ в существующие программные решения.

Приложение A. Поддержка ГОСТ алгоритмов в существующих программных продуктах в настоящее время
A.1 Плюсы

Программное обеспечение с поддержкой криптографии ГОСТ:

A.1.1 OpenSSL

Долгое время OpenSSL являлась главной целью всех разработок открытого программного обеспечения по ГОСТ. OpenSSL обеспечивает высокоуровневую поддержку использования алгоритмов ГОСТ для TLS, X.509 и CMS. Внешние устройства ГОСТ обеспечивают внедрение низкоуровневых алгоритмов для поддержки кода OpenSSL. Изначально это устройство было частью основной структуры, а теперь (начиная с OpenSSL 1.1.0) отделено для облегчения поддержки обеих сторон.

A.1.2 LibreSSL

Поскольку LibreSSL является ответвлением OpenSSL, было несложно перенести код OpenSSL, GOST-engine в библиотеку LibreSSL. Весь код, относящийся к ГОСТ, является частью основной библиотеки.

A.1.3 GnuTLS

GnuTLS обеспечивает разнородную поддержку криптографии ГОСТ. Поддержка PKI предоставляется изначально, тогда как поддержка TLS все еще предоставляется в форме патчей. Специалисты по сопровождению программных средств TLS ожидают публикации спецификации и RFC для приемки кода.

A.1.4 libgcrypt

Довольно давно libgcrypt объединяет поддержку всех примитивов ГОСТ. Так как libgcrypt является популярной низкоуровневой крипто-библиотекой, поддержка ГОСТ позволяет другим разработчикам использовать ее для дальнейшей поддержки криптографического программного обеспечения, такого как GnuPG, Kleopatra и т.д.

A.1.5 xmlsec

Библиотека xmlsec обеспечивает поддержку подписей XML согласно опубликованным проектам IETF.

A.2 Минусы

Программные продукты, которые (пока) не поддерживают криптостандарты ГОСТ, потому что специалисты по первичному сопровождению отказываются от их поддержки или потому что никто (пока) не озаботился обеспечением их поддержки.

A.2.1 Nettle

Патчи для библиотеки Nettle предоставляются, но автор не включает их в сборку. В настоящее время патчи тестируются как часть библиотеки GnuTLS, откладывая дальнейший переход в библиотеку Nettle.

A.2.2 BoringSSL

Работы не ведутся. Тем не менее, поскольку BoringSSL является еще одним ответвлением OpenSSL, будет легко перенести существующий код из OpenSSL/LibreSSL.

A.2.3 NSS/Mozilla/Thunderbird

Здесь все довольно печально. Для этого программного продукта давно разработаны патчи, однако специалисты по первичному сопровождению по разным причинам отказываются включать их в сборку.

A.2.4 BIND9

BIND9 отказался поддерживать ГОСТ DNSSEC, потому что относящийся к нему RFC 5933 медленно устаревает из-за смены лежащих в основе примитивов.

A.2.5 IPsec

Никакое открытое программное обеспечение IPsec не обеспечивает поддержку для шифрования ГОСТ в IKEv2 или ESP/AH преобразованиях.

Дмитрий Еремин-Солеников, инженер-разработчик, Аурига

Новости

Аурига и Parasoft стали партнерами в области автоматизации тестирования встроенных систем

Аурига и Parasoft стали партнерами в области автоматизации тестирования встроенных систем

Новое партнерство поможет компаниям-разработчикам встроенных систем повышенной надежности создавать и поддерживать стабильные, масштабируемые и комплексные стратегии тестирования программного обеспечения (ПО), обеспечивая безопасность и надежность своих

Аурига вновь признана лидером по развитию инноваций и качеству услуг

Аурига, одна из ведущих компаний-разработчиков программного обеспечения на заказ, снова заняла заслуженное место среди ста лучших аутсорсинговых компаний мира по версии Международной ассоциации профессионалов аутсорсинга...

Аурига открывает новую R&D лабораторию

Инженерный центр Ауриги в Вильнюсе, Литва, открывает новую лабораторию для тестирования программного обеспечения медицинских устройств одного из постоянных клиентов компании, – мирового лидера на рынке...

Признанный лидер услуг по разработке ПО:
управление командами и проектами;
разработка новых продуктов, сопровождение, тестирование