Расчет на безопасность. Российские криптопровайдеры в Java-приложениях с Axiom JDK
25 июня, 2021
Безопасность приложений — не только одна из главных головных болей разработчиков, но и базовое требование на современном рынке Java™. И в России есть свои стандарты криптозащиты, использование которых поднимет доверие к вашим программам и у пользователей, и у государственных органов.
Как известно, злоумышленники постоянно находят новые способы обойти известные методы шифрования. И для того, чтобы обеспечить постоянную неприкосновенность данных, специалисты в этой области отслеживают появление новых уязвимостей, обновляют библиотеки и алгоритмы, поддерживают сертификаты в актуальном состоянии.
Поэтому лучший способ защитить свои приложения — это одновременно
- Использовать среду исполнения, признанную надежной как рынком, так и государственными органами,
- Подключить криптографические инструменты от проверенных российских провайдеров.
И Axiom JDK позволяет это сделать быстро, легко и надежно!
Эта статья является первой в цикле, посвященном использованию инструментов шифрования в продуктах Axiom JDK. Сегодня мы расскажем, как в целом реализованы криптографические инструменты для Java-приложений, и объясним, как привязать криптопровайдеры к среде исполнения Axiom JDK. В дальнейшем мы рассмотрим альтернативные эффективные способы защиты данных.
Криптография на российском рынке Java™
Поскольку Java™ — одна из лидирующих платформ для построения серверной части приложений, стандартные сборки обычно включают широкий набор криптографических инструментов и алгоритмов. Они работают сразу, обновляются и поддерживаются вместе с самой JDK. В некоторых случаях, как, например, в Axiom JDK, эти стандарты усиливаются специальными апдейтами для дополнительной безопасности, включенными в цикл обновлений.
Но российский рынок предъявляет свои требования — использование шифрования по ГОСТ или криптографических библиотек, сертифицированных ФСТЭК. И в этой ситуации особенно ярко проявляется одно из ключевых преимуществ Java™ — возможность легко подключить дополнительные алгоритмы.
Сегодня уже несколько российских компаний, специализирующихся в вопросах безопасности ПО, реализовали алгоритмы, соответствующие всем стандартам, и провели их сертификацию. Все комплекты защиты поставляются только по запросу к разработчику.
Предлагаем рассмотреть все необходимые шаги для добавления российской криптографии в ваши программы. Для иллюстрации возьмем Axiom JDK 8 и проверенные временем и тестами библиотеки от отечественных компаний КриптоПРО и Инфотекс.
Порядок подключения библиотек российской криптографии
Для подключения библиотек, удовлетворяющих требованиям российского рынка, необходимо сделать следующие шаги:
Рассмотрим интеграцию библиотек на конкретных примерах.
Интеграция «КриптоПРО» в Axiom 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());
Интеграция «Инфотекс» в Axiom 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());
Заключение
Axiom JDK в связке с сертифицированными криптопровайдерами — надежный способ защитить ваши приложения и привести их в соответствие со стандартами безопасностями Российской Федерации, а значит — реализовывать проекты на языке Java с использованием ПО из единого реестра российских программ.
В дальнейшей статье из цикла, посвященного шифрованию в продуктах Axiom JDK, мы рассмотрим использование связки Axiom JDK + Libercat + библиотеки от криптопровайдеров как еще более эффективный и удобный способ защиты данных.
В случае, если вам требуется консультация по выбору криптопровайдера или его интеграции в вашу среду исполнения Java™, оставьте заявку, и наши инженеры оперативно вам помогут.