JCA (Java Cryptography Architecture) является криптографическим фреймворком в составе платформы
Java, предназначенным для упрощения интеграции функций безопасности (управления ключами, шифрования и др.) в существующие и новые
Java-приложения. Фреймворк
JCA состоит из четырех криптопровайдеров:
LCJCE, LCJSSE, LCXMLDSig и
LCPKCS11.
Криптопровайдер LCJCE
Компонент написан полностью на Java и не зависит от других криптопровайдеров. LCJCE реализует российские алгоритмы криптографических преобразований в соответствии со стандартами ГОСТ 28147-89 (алгоритм криптографического преобразования (шифрование и имитовставка)), ГОСТ Р 34.10-2001 (процессы формирования и проверки электронной цифровой подписи (ЭЦП)), ГОСТ Р 34.11-94 (функция хэширования). Криптопровайдер LCJCE выстроен в соответствии с требованиями Java Cryptography Architecture (JCA). Криптографическая архитектура Java обеспечивает независимость и совместимость реализации, независимость и расширяемость алгоритмов.
Криптопровайдер LCJSSE
Криптопровайдер представляет собой расширение безопасных сокетов (Java Secure Socket Extension) для безопасной интернет-коммуникации. LCJSSE предлагает средство программирования и реализацию для Java-версии протоколов SSL и TLS; включает функции шифрования данных, аутентификации сервера, целостности сообщений и, при необходимости, аутентификации клиента. Используя JSSE, разработчики могут предоставлять для безопасной передачи данных между клиентом и сервером любой прикладной протокол: HTTP, Telnet или FTP поверх TCP/IP. Абстрагируя сложные внутренние алгоритмы безопасности и механизмы «рукопожатия», JSSE снижает риск создания малозаметных, но опасных уязвимостей в безопасности.
Криптографический сервис-провайдер LCPKCS11
Криптопровайдер обеспечивает подключение токенов через их родные библиотеки PKCS#11 для стандарта 2.30. В отличие от провайдера LCJCE, LCPKCS11 сам не выполняет никаких криптографических операций, а служит посредником между прикладной программой и библиотекой токена PKCS#11 API. Провайдер LCPKCS11 позволяет использовать токен в программах Java в качестве полноценного хранилища ключей и сертификатов. При этом обеспечивается функция генерации ключевой пары самим токеном без возможности извлечения закрытого ключа. Реализованы возможности сохранения сертификатов, листания и выборки объектов и т. д.
Криптографический сервис-провайдер LCXMLDSig
Собственная реализация криптопровайдера LCXMLDSig, обеспечивающая поддержку алгоритмов российской криптографии в соответствии со спецификациями. LCXMLDSig поддерживает все три типа ЭЦП XML (отдельная, оборачивающая и обернутая подписи) с использованием алгоритмов российской криптографии. Сам этот провайдер не содержит реализации криптографических алгоритмов, а задействует для генерации и проверки ЭЦП криптографические сервис-провайдеры более низкого уровня, например, LCPKCS11 или LCJCE.