Российские криптопровайдеры в Java-приложениях с Liberica JDK

Расчет на безопасность. Российские криптопровайдеры в Java-приложениях с Liberica JDK


25 июня, 2021


Безопасность приложений — не только одна из главных головных болей разработчиков, но и базовое требование на современном рынке Java™. И в России есть свои стандарты криптозащиты, использование которых поднимет доверие к вашим программам и у пользователей, и у государственных органов.

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

Поэтому лучший способ защитить свои приложения — это одновременно

  • Использовать среду исполнения, признанную надежной как рынком, так и государственными органами,
  • Подключить криптографические инструменты от проверенных российских провайдеров.

И Liberica JDK позволяет это сделать быстро, легко и надежно!

Эта статья является первой в цикле, посвященном использованию инструментов шифрования в продуктах BellSoft. Сегодня мы расскажем, как в целом реализованы криптографические инструменты для Java-приложений, и объясним, как привязать криптопровайдеры к среде исполнения Liberica JDK. В дальнейшем мы рассмотрим альтернативные эффективные способы защиты данных.

Криптография на российском рынке Java™

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

Но российский рынок предъявляет свои требования — использование шифрования по ГОСТ или криптографических библиотек, сертифицированных ФСТЭК. И в этой ситуации особенно ярко проявляется одно из ключевых преимуществ Java™ — возможность легко подключить дополнительные алгоритмы.

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

Предлагаем рассмотреть все необходимые шаги для добавления российской криптографии в ваши программы. Для иллюстрации возьмем Liberica JDK 8 и проверенные временем и тестами библиотеки от отечественных компаний КриптоПРО и Инфотекс.

Порядок подключения библиотек российской криптографии

Для подключения библиотек, удовлетворяющих требованиям российского рынка, необходимо сделать следующие шаги:

alt_text

Рассмотрим интеграцию библиотек на конкретных примерах.

Интеграция «КриптоПРО» в Liberica JDK

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

Импортируем провайдер в класс:

import ru.CryptoPro.Crypto.CryptoProvider;

Регистрируем провайдер:

java.security.Security.addProvider(new CryptoProvider());

Становятся доступны новые алгоритмы, к которым можно получить доступ через стандартный Java API:

Cipher cipher = Cipher.getInstance("GOST28147/CFB/NoPadding");
KeyGenerator keyGen = KeyGenerator.getInstance("GOST28147");
SecretKey key = keyGen.generateKey();
cipher.init(Cipher.ENCRYPT_MODE, key);

byte[] encryptedBytes = cipher.doFinal("test message".getBytes());

Интеграция «Инфотекс» в Liberica JDK

Особенность библиотеки jcrypto от компании Инфотекс, предоставляемой по запросу к разработчику, — использование функционала, отсутствующего в OpenJFX, а именно метода javafx.application.HostServices::getWebContext().

Поэтому для ее интеграции необходимо модифицировать тестовое приложение следующим образом:

private JSObject jsHelper() {
   return null;
   //return (JSObject) getHostServices().getWebContext().getMember("cryptoApplet");
}

Такая правка позволит собрать проект с помощью Apache Maven и далее работать стандартным образом в соответствии с документацией.

Импортируем провайдер:

import ru.infotecs.crypto.ViPNetProvider;

Регистрируем его:

Security.addProvider(new ViPNetProvider());
KeyGenerator generator = KeyGenerator.getInstance(
       "GOST28147-89", "ViPNet");

SecretKey secretKey = generator.generateKey();

Cipher cipher = Cipher.getInstance("GOST28147-89/CFB/NoPadding","ViPNet");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);

byte[] encryptedBytes = cipher.doFinal("test message".getBytes());

Заключение

Liberica JDK в связке с сертифицированными криптопровайдерами — надежный способ защитить ваши приложения и привести их в соответствие со стандартами безопасностями Российской Федерации, а значит — реализовывать проекты на языке Java с использованием ПО из единого реестра российских программ.

В дальнейшей статье из цикла, посвященного шифрованию в продуктах BellSoft, мы рассмотрим использование связки Liberica JDK + LiberCat + библиотеки от криптопровайдеров как еще более эффективный и удобный способ защиты данных.

В случае, если вам требуется консультация по выбору криптопровайдера или его интеграции в вашу среду исполнения Java™, оставьте заявку, и наши инженеры оперативно вам помогут.

Author image

Роман Карпов

Директор по развитию и стратегии

BellSoft LTD [email protected] BellSoft LTD logo Liberica Committed to Freedom 199 Obvodnogo Kanala Emb. 190020 St. Petersburg RU +7 812-336-35-67 BellSoft LTD 199 Obvodnogo Kanala Emb. 190020 St. Petersburg RU +7 812-336-35-67 BellSoft LTD 111 North Market Street, Suite 300 CA 95113 San Jose US +1 702 213-59-59