Криптопровайдер LCJSSE
Данные, передаваемые по сети, легко могут быть перехвачены теми, кому они не предназначены. Когда эти данные содержат конфиденциальную информацию, такую как пароли или номера кредитных карт, должны быть предприняты меры по защите данных от посторонних лиц. Также важно быть уверенными, что данные не были изменены, умышленно или неумышленно, в процессе передачи. Протоколы Secure Sockets Layer (SSL) и Transport Layer Security (TLS) были разработаны для обеспечения конфиденциальности и целостности данных при передаче их по сети.
Расширение безопасных сокетов Java Secure Socket Extension (JSSE) обеспечивает безопасные коммуникации в Интернет. Оно предоставляет средство программирования и реализацию для Java-версии протоколов SSL и TLS и включает функциональность шифрования данных, аутентификации сервера, целостности сообщений и, при необходимости, аутентификации клиента. Используя JSSE, разработчики могут предоставить для безопасной передачи данных между клиентом и сервером любой прикладной протокол, такой как Hypertext Transfer Protocol (HTTP), Telnet, или FTP, поверх TCP/IP.
Абстрагируя сложные внутренние алгоритмы безопасности и механизмы “рукопожатия”, JSSE минимизирует риск создания малозаметных, но опасных уязвимостей в безопасности. Более того, оно упрощает прикладную разработку, служа в качестве строительного блока, который разработчики могут интегрировать непосредственно в свои приложения.
Первоначально JSSE было опциональным пакетом в JavaTM 2 SDK, Standard Edition (J2SDK), v1.3. Начиная с версии J2SDK 1.4, JSSE было интегрировано в Java TM Standard Edition Development Kit
JSSE предоставляет как прикладной программный интерфейс (application programming interface – API), так и реализацию данного API. JSSE API дополняет “ядерные” сетевые и криптографические службы, определенные в пакетах java.security и java.net, предоставляя расширенные классы сетевых сокетов, доверенных менеджеров, ключевых менеджеров, контекстов SSL и фабрик сокетов для инкапсуляции создания сокетов. Поскольку API сокетов был основан на модели блокированного ввода-вывода, в JDK 5.0 был введен API неблокированного ввода-вывода SSLEngine, позволяющий реализации выбирать свои собственные методы ввода-вывода.
JSSE API способен поддерживать SSL версий 2.0 и 3.0, а также TLS 1.0. Эти протоколы безопасности инкапсулируют обычный двунаправленный поточный сокет, а JSSE API добавляет прозрачную поддержку для аутентификации, шифрования и защиты целостности. Реализация JSSE, поставляемая с Sun JRE, поддерживает SSL 3.0 и TLS 1.0. Она не реализует SSL 2.0.
Как отмечено выше, JSSE – это компонента безопасности на платформе Java SE, она базируется на тех же принципах разработки, которые применяются везде в Java Cryptography Architecture (JCA). Для криптографических компонент безопасности данная архитектура позволяет иметь независимость реализации и, где возможно, независимость алгоритмов. JSSE использует ту же архитектуру “провайдеров”, которая определена в JCA.
Другие компоненты безопасности на платформе Java SE включают Java CryptographyExtension (JCE), Java Authentication and Authorization Service (JAAS), и Java Security Tools. JSSE включает многие из концепций и алгоритмов JCE, но автоматически применяет их с простым поточным сокетовым API.
JSSE API был разработан таким образом, чтобы можно было подключить другие реализации протоколов SSL/TLS и инфрастуктуры открытых ключей (Public Key Infrastructure - PKI). Разработчики могут также предоставить альтернативную логику для определения необходимости проверки удаленных хостов или состава ключевого материала, высылаемого на удаленный хост.
Реализация LCJSSE компании «ЛИССИ-Софт» базируется на реализации Sun JSSE версии 6 и добавляет возможности использования криптографических алгоритмов ГОСТ с протоколами SSL/TLS в соответствии с Internet Draft от 8 сентября 2005 года «GOST Cipher Suites for Transport Layer Security» компании «Крипто-Про». Данная реализация использует криптографический сервис-провайдер LCJCE компании «ЛИССИ-Софт».
JSSE включает следующие важные возможности:
- Включено в качестве стандартной компоненты JRE версии 1.4 и выше
- Расширяемая архитектура, основанная на провайдерах
- Реализовано 100% на чистой Java
- Предоставляет поддержку API для SSL версий 2.0 и 3.0, TLS 1.0 и выше и реализацию SSL 3.0 и TLS 1.0.
- Включает классы, которые могут быть конкретизированы для создания безопасных каналов (SSLSocket, SSLServerSocket и SSLEngine)
- Предоставляет поддержку для согласования шифр-сьютов, что является частью рукопожатия SSL, используемого для инициализации или проверки безопасных коммуникаций
- Предоставляет поддержку аутентификации клиента и сервера, что является частью обычного рукопожатия SSL
- Предоставляет поддержку Hypertext Transfer Protocol (HTTP), инкапсулированного в протокол SSL (HTTPS), который обеспечивает доступ к данным, таким как веб-страницы, с помощью HTTPS
- Предоставляет API управления сеансами сервера для управления сеансами SSL, резидентными в памяти
- Предоставляет поддержку некоторых криптографических алгоритмов, обычно используемых в шифр-сьютах, включая перечисленные в следующей таблице:
Криптографическая функциональность, доступная с JSSE |
||
Криптографический алгоритм * |
Криптографический процесс |
Длина ключа (бит) |
RSA |
Аутентификация и обмен ключами |
512 и больше |
RC4 |
Объемное шифрование |
128 128 (40 эффективных) |
DES |
Объемное шифрование |
64 (56 эффективных) 64 (40 эффективных) |
Triple DES |
Объемное шифрование |
192 (112 эффективных) |
AES |
Объемное шифрование |
256 128 |
Diffie-Hellman |
Согласование ключей |
1024 512 |
DSA |
Аутентификация |
1024 |
ГОСТ Р 34.10-2001 |
Аутентификация и обмен ключами |
256 |
ГОСТ 28147-89 |
Объемное шифрование |
256 |
Internet Draft от 8 сентября 2005 года “GOST Cipher Suites for Transport Layer Security” компании “Крипто-Про” |
Согласование ключей |
256 |
* Замечание: Реализация SunJSSE использует JavaTM Cryptography Extension (JCE) для всех криптографических алгоритмов. Реализация LCJSSE, дополнительно к этому, использует сервис-провайдер LCJCE компании «ЛИССИ-Софт» для применения российских криптографических алгоритмов.
Стандартный JSSE API, доступный в пакетах javax
.
net
и javax
.
net
.
ssl
, охватывает:
- Безопасные (SSL) сокеты и серверные сокеты.
- Неблокированный движок для выработки и приема потоков данных SSL/TLS.
- Фабрики для создания сокетов, серверных сокетов, SSL-сокетов и серверных SSL-сокетов. Используя фабрики сокетов, вы можете инкапсулировать создание сокетов и конфигурирование их поведения.
- Класс, представляющий контекст безопасных сокетов, который действует в качестве фабрики для фабрик безопасных сокетов и движков.
- Интерфейсы ключевых и доверенных менеджеров (включая специфические X.509 ключевые и доверенные менеджеры) и фабрики для их создания.
- Класс для безопасных HTTP URL соединений (HTTPS).
Провайдер SunJSSE
Реализация Sun Java SE включает провайдер JSSE с именем "SunJSSE
",
который становится предустановленным и регистрируется в JCA. Провайдер предоставляет следующие
криптографические службы:
- Реализацию безопасных протоколов SSL 3.0 и TLS 1.0.
- Реализацию самых употребительных SSL и TLS шифр-сьютов, которые определяют комбинацию аутентификации, шифрования и защиты целостности.
- Реализацию X.509 ключевого менеджера, который выбирает соответствующие ключи аутентификации из стандартного ключевого хранилища JCA KeyStore.
- Реализацию X.509 доверенного менеджера, который производит проверку цепочки связанных сертификатов.
- Реализацию PKCS12 в качестве типа ключевого хранилища JCA "pkcs12". Размещение доверенных сертификатов в PKCS12 не поддерживается. Пользователи должны хранить доверенные сертификаты в формате JKS, а секретные ключи – в формате PKCS12.
Провайдер LCJSSE
Реализация компании «ЛИССИ-Софт» включает провайдер JSSE с именем
"LCJSSE
",
который нужно зарегистрировать в JCA. Провайдер добавляет к функциональности SunJSSE следующие возможности:
- Реализацию SSL и TLS шифр-сьютов, которые определяют комбинацию аутентификации, шифрования и защиты целостности по алгоритмам ГОСТ Р 34.10-2001, ГОСТ 28147-89 и ГОСТ Р 34.11-94 в соответствии с Internet Draft от 8 сентября 2005 года “GOST Cipher Suites for Transport Layer Security” компании “Крипто-Про”.
- Использование ключевых и доверенных хранилищ типов “LKS” и “LKS12”, поддерживаемых криптографическим сервис-провайдером LCJCE.
- Использование ключевых хранилищ типа “PKCS12” с реализацией алгоритмов ГОСТ.
Документация
-
LCJSSE -
расширение безопасных сокетов с поддержкой алгоритмов ГОСТ для Java. Руководство
программиста
скачать