страница 1страница 2 ... страница 8страница 9
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Похожие работы
|
Руководство программиста 2008-2011. Компания "лисси-крипто" - страница №1/9
LirJSSE - расширение безопасных сокетов с поддержкой алгоритмов ГОСТ для Java Руководство программиста ©2008-2011. Компания "ЛИССИ-Крипто". Все права защищены Содержание Введение 6 Возможности и преимущества 7 Криптографическая функциональность, доступная с JSSE 8 Стандартный API JSSE 8 Провайдер SunJSSE 9 Провайдер LirJSSE 9 Соответствующая документация 10 Документация Java Secure Socket Extension 10 Документация по безопасности платформы Java 10 Экспортные вопросы по криптографии 10 Документация по криптографии 11 Документация по Secure Sockets Layer 11 Термины и определения 12 Аутентификация 12 Шифр-сьют 12 Сертификат 12 Криптографическая хэш-функция 12 Криптографический сервис-провайдер 12 Цифровая подпись 12 Шифрование и расшифровка 13 Протокол рукопожатия 13 Согласование ключей 13 Обмен ключами 13 Ключевые и доверенные менеджеры 13 Ключевые и доверенные хранилища 13 Код аутентификации сообщения 14 Криптография с открытым ключом 14 Протокол записи 14 Криптография с секретным ключом 15 Сеанс 15 Доверенные менеджеры 15 Доверенное хранилище 15 Обзор протокола Secure Sockets Layer (SSL) 16 Стек протокола TCP/IP с SSL 16 Зачем использовать SSL? 16 Как работает SSL 17 Криптографические процессы 17 Процесс SSL 21 Протокол SSL 22 Ссылки по SSL и TLS 25 Основные классы 26 Отношения между классами 26 Классы и интерфейсы ядра 27 Классы SocketFactory и ServerSocketFactory 27 Классы SSLSocketFactory и SSLServerSocketFactory 28 Классы SSLSocket и SSLServerSocket 29 Неблокированный ввод-вывод с SSLEngine 29 SSLEngine 31 Первые шаги 31 Генерация и обработка данных SSL/TLS 32 Статус операций 34 Блокированные задачи 37 Завершение 37 Интерфейс SSLSession 38 Класс HttpsURLConnection 39 Вспомогательные классы и интерфейсы 40 Класс SSLContext 41 Интерфейс TrustManager 42 Класс TrustManagerFactory 42 Интерфейс X509TrustManager 45 Интерфейс KeyManager 48 Класс KeyManagerFactory 48 Интерфейс X509KeyManager 50 Отношения между TrustManagers и KeyManagers 50 Второстепенные вспомогательные классы и интерфейсы 50 Интерфейс SSLSessionContext 50 Интерфейс SSLSessionBindingListener 51 Класс SSLSessionBindingEvent 51 Интерфейс HandShakeCompletedListener 51 Класс HandShakeCompletedEvent 51 Интерфейс HostnameVerifier 51 Класс X509Certificate 53 Настройка JSSE 54 Установочная папка 54 Настройка 54 Как задать свойство java.lang.system 55 Как задать свойство java.security.Security 55 Настройка реализации X509Certificate 56 Задание альтернативной реализации протокола HTTPS 56 Настройка реализации провайдера 57 Настройка умалчиваемых ключевых и доверенных хранилищ, их типов и паролей 58 Настройка умалчиваемых ключевых и доверенных менеджеров 60 Настройка провайдеров алгоритмов шифрования 61 Замечание для тех, кто реализует провайдеры 61 JCE и аппаратная поддержка ускорения/смарткарт 62 Использование JCE 62 Аппаратные акселераторы 62 Конфигурирование JSSE для использования смарткарт в качестве ключевых и доверенных хранилищ 62 Использование нескольких хранилищ и динамических хранилищ 63 Шифр-сьюты Kerberos 64 Требования Kerberos 64 Информация о подлинности субъекта 65 Менеджер безопасности 66 Дополнительные форматы ключевых хранилищ (PKCS12) 67 Особенности реализации PKCS#12 в LirJSSE 67 Структура хранилища 69 Структура данных хранилища 69 Структура дайджеста хранилища 69 RSA: 69 69 ГОСТ: 69 69 Структура данных секретного ключа 70 Структура обернутого секретного ключа 70 RSA: 70 70 ГОСТ: 70 70 Идентификационные данные секретного ключа 71 Структура зашифрованной цепочки сертификатов 72 Структура параметров обертки цепочки сертификатов 72 RSA: 72 72 ГОСТ: 72 72 Помощь в затруднительных ситуациях 73 Проблемы конфигурирования 73 CertificateException: (во время рукопожатия) 73 java.security.KeyStoreException: TrustedCertEntry not supported 73 Исключение при выполнении: SSL Service Not Available 73 Исключение: "No available certificate corresponding to the SSL cipher suites which are enabled" 74 Исключение при выполнении: No Cipher Suites in Common 74 Замедление первого обращения к JSSE 75 Программа, использующая класс HttpsURLConnection, генерирует ClassCastException в JSSE 1.0.x 75 Отсоединение сокета после отправки сообщения ClientHello 76 SunJSSE не может найти провайдера JCA/JCE, поддерживающего требуемый алгоритм, и генерирует NoSuchAlgorithmException 76 Отладочные утилиты 77 Примеры 78 Примеры программ 79 Преобразование небезопасных сокетов в безопасные 79 Пример сокетов без SSL 79 Пример сокетов с SSL 80 Запуск примера программы JSSE 81 Где найти код примера 82 Пример программы, иллюстрирующей безопасное сокетное соединение между клиентом и сервером 82 Конфигурационные требования 83 Запуск SSLSocketClient 83 Запуск SSLSocketClientWithTunneling 84 Запуск SSLSocketClientWithClientAuth 84 Запуск ClassFileServer 84 Запуск SSLSocketClientWithClientAuth с ClassFileServer 85 Пример программы, иллюстрирующей соединения HTTPS 85 Запуск URLReader 86 Запуск URLReaderWithOptions 86 Пример клиентской программы для HTTPS 87 Пример программы, иллюстрирующей безопасное соединение RMI 89 Пример программы, иллюстрирующей использование SSLEngine 89 Запуск SSLEngineSimpleDemo 90 Запуск сервера NIO 90 Создание ключевого хранилища для использования с JSSE 91 Создание простых ключевых и доверенных хранилищ 91 Приложение A: Стандартные названия 94 Приложение B: Присоединение провайдеров 95 ВведениеДанные, передаваемые по сети, легко могут быть перехвачены теми, кому они не предназначены. Когда эти данные содержат конфиденциальную информацию, такую как пароли или номера кредитных карт, должны быть предприняты меры по защите данных от посторонних лиц. Также важно быть уверенными, что данные не были изменены, умышленно или неумышленно, в процессе передачи. Протоколы 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. (См. Введение в SSL в Обзоре протокола Secure Sockets Layer (SSL).) Абстрагируя сложные внутренние алгоритмы безопасности и механизмы “рукопожатия”, JSSE минимизирует риск создания малозаметных, но опасных уязвимостей в безопасности. Более того, оно упрощает прикладную разработку, служа в качестве строительного блока, который разработчики могут интегрировать непосредственно в свои приложения. Первоначально JSSE было опциональным пакетом в Java TM 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 Cryptography Extension (JCE), Java Authentication and Authorization Service (JAAS), и Java Security Tools. JSSE включает многие из концепций и алгоритмов JCE, но автоматически применяет их с простым поточным сокетовым API. JSSE API был разработан таким образом, чтобы можно было подключить другие реализации протоколов SSL/TLS и инфрастуктуры открытых ключей (Public Key Infrastructure - PKI). Разработчики могут также предоставить альтернативную логику для определения необходимости проверки удаленных хостов или состава ключевого материала, высылаемого на удаленный хост. Реализация LirJSSE компании «ЛИССИ-Крипто» базируется на реализации Sun JSSE версии 1.5.0 и добавляет возможности использования криптографических алгоритмов ГОСТ с протоколами SSL/TLS в соответствии с Internet Draft от 8 сентября 2005 года «GOST Cipher Suites for Transport Layer Security» компании «Крипто-Про». Данная реализация использует криптографический сервис-провайдер LirJCE компании «ЛИССИ-Крипто». Возможности и преимуществаJSSE включает следующие важные возможности:
* Замечание: Реализация SunJSSE использует JavaTM Cryptography Extension (JCE) для всех криптографических алгоритмов. Реализация LirJSSE, дополнительно к этому, использует сервис-провайдера LirJCE компании «ЛИССИ-Крипто» для применения российских криптографических алгоритмов. следующая страница >> |
|