Представлена реализация криптографических алгоритмов ГОСТ на языке Java

от автора

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

В отличие от реализации алгоритмов ГОСТ из библиотеки Castle Bouncy Castle, в проекте crypto‑gost повышена производительность шифрования алгоритмом «Кузнечик», решены отдельные проблемы с безопасностью и предоставлены простые обёртки, не требующие глубоких знаний в криптографии.

Поддерживаемые алгоритмы:

  • ГОСТ Р 34.11–2012 (RFC 6986) — хэш‑функция «Стрибог» 256 и 512 бит.

  • ГОСТ Р 34.12–2015 — блочный шифр «Кузнечик», ключ 256 бит.

  • ГОСТ Р 34.13–2015 — режимы шифрования CBC, CFB, CTR (ГАММА), OFB; имитовставка (CMAC).

  • ГОСТ Р 34.10–2012 (RFC 7091) — электронная подпись 256 и 512 бит.

  • HMAC‑Стрибог (RFC 7836, HMAC‑Streebog-256 и HMAC‑Streebog-512).

  • MGM (Multilinear Galois Mode) — AEAD‑режим для Кузнечика (RFC 9058). Совместим с OpenSSL.

  • SCrypt (RFC 7914) — функция формирования ключа на основе пароля.

«Разработчикам иногда требуется российская криптография для защиты данных. Для личных проектов или для целей локальной разработки в тестовой среде не всегда возможно использовать сертифицированные средства. Если у вас есть личный проект на нескольких серверах, то для установки в них российской криптографии придётся приобрести лицензии. Де‑факто „стандартом“ в области криптографии для Java для разработчиков стала библиотека Bouncycastle. Этой библиотеке много лет, есть обширная документация и книги, которые я считаю очень полезно почитать», — пояснил автор проекта.

По словам разработчика, он при использовании Bouncycastle именно с российской криптографией столкнулся со следующими трудностями:

  • Очень медленное шифрование/расшифрование по ГОСТ «Кузнечик».

  • Есть проблемы с безопасностью реализации, некоторые из которых могут носить критический характер (об этом далее);

  • Если мне нужны только ГОСТ‑алгоритмы, то 95% остального кода библиотеки мне не нужно.

  • Нужен контроль изменений в новых версиях, как в плане безопасности, так и производительности.

  • Безопасность даже для личных проектов очень важна. Авторы развивают прежде всего западные алгоритмы и устраняют недостатки в них.

Ранее в Минцифры РФ подготовили проект приказа, согласно которому подключение импортных смартфонов к российским сетям 5G станет возможным только через отечественные криптоалгоритмы. Российские операторы сети 5G при её развёртывании в стране должны будут использовать отечественный алгоритм шифрования NEA 7, который также называют «Кузнечик». С его помощью смартфоны абонентов будут подключаться к базовым станциям. Иностранные алгоритмы SNOW из Европы, AES из США и ZUC из Китая смогут применяться лишь до 2032 года. Это следует из проекта требований к применению оборудования базовых станций связи пятого поколения.

ссылка на оригинал статьи https://habr.com/ru/articles/1029366/