1. Протокол SSL.
Разработан компанией Netscape. Достоинства:
• обеспечение безопасности и удобства использования (автоматическая
установка криптографически защищенного соединения между
клиентом и сервером).
• аутентификация сервера;
• возможность автоматической аутентификации клиента;
• расширяемость (возможность добавления новых криптоалгоритмов).
Стандартная реализация SSL
• Использование алгоритма RSA для обмена сеансовыми ключами.
• Использование алгоритма RC4 для симметричного шифрования
сообщений.
• Использование функции хеширования MD5 для защиты целостности
сообщений.
• Отсутствие автоматической аутентификации клиента (клиент может
быть аутентифицирован после установки защищенного соединения с
сервером).
Составные части протокола SSL
• протокол записи (передачи) – протокол сеансового уровня,
обеспечивающий базовый набор средств защиты для протоколов
уровня представления и прикладного;
• протокол квитирования (установки сеанса связи между клиентом и
сервером);
• протокол изменения параметров шифрования;
• протокол извещения (три последних протокола относятся к протоколам
уровня представления).
Протокол записи SSL
1. Разбиение данных сообщения на фрагменты длиной ≤ 214 байт.
2. Сжатие фрагментов (необязательное).
3. Добавление HMAC, вычисленного с помощью соответствующего
ключа.
4. Шифрование фрагмента и HMAC симметричным алгоритмом с
помощью ключа шифрования и (при использовании блочного
шифрования) начального вектора.
5. Добавление заголовка.
Протокол квитирования SSL
Согласование параметров защиты:
1. Клиент C->Сервер S: случайное число NC, идентификатор сеанса ID,
предлагаемые клиентом криптоалгоритмы {CAC}.
2. S->C: случайное число NS, ID (или ID′, если ID=0), выбранные
сервером криптоалгоритмы {CAS}.
Аутентификация и передача ключей сервера:
3. S->C: сертификат своего открытого ключа C(PKS).
4. S->C (дополнительное сообщение server_key_exchange требуется при
выборе криптографической системы Диффи-Хеллмана с одноразовыми
ключами): основание a, модуль p, открытый ключ сервера yS,
ESKS(H(NC,NS,a,p,yS)) (ЭЦП для подтверждения подлинности выбранных
параметров).
Аутентификация и передача ключей сервера
5. S->C: тип запрашиваемого сервером сертификата открытого ключа
клиента C(PKC) и список доверенных удостоверяющих центров.
6. S->C: сообщение Server_Hello_Done (без параметров).
Аутентификация и передача ключей клиента:
7. C->S: сертификат своего открытого ключа C(PKC) (если у клиента есть
удовлетворяющий условиям сертификат) или сообщение no_certificate
(без параметров).
8. C: генерация предварительного мастер-ключа pmk (для криптосистемы
RSA) или вычисление открытого ключа клиента yC (для криптосистемы
Диффи-Хеллмана), вычисление мастер-ключа mk и других параметров
устанавливаемого с сервером защищенного соединения (ключей
шифрования сообщений клиента KC и сервера KS, ключей для
вычисления HMAC клиента и сервера, начальных векторов для клиента
и сервера).
9. C->S: EPKS(pmk) (для криптографической системы RSA) или открытый
ключ клиента yC (для криптографической системы Диффи-Хеллмана).
10.C->S: ESKC(H(mk,все сообщения кроме данного)) (ЭЦП)
(дополнительное сообщение, если у клиента есть сертификат и
связанный с ним личный ключ).
Завершение квитирования:
11.C->S: Change_Cipher_Spec (без параметров).
12.C->S: EKC(H(mk, все сообщения кроме данного, C)).
13.S: расшифрование pmk с помощью своего закрытого ключа (для
криптосистемы RSA), вычисление мастер-ключа mk и других
параметров устанавливаемого с клиентом защищенного соединения,
расшифрование полученного от клиента сообщения с помощью только
что вычисленного ключа симметричного шифрования клиента.
14.S->C: Change_Cipher_Spec (без параметров).
15.S->C: EKS(H(mk, все сообщения кроме данного, S)).
16.C: расшифрование полученного от сервера сообщения с помощью
вычисленного на шаге 8 ключа шифрования сервера и проверка
расшифрованного сообщения.
Из-за включения в пересылаемые между клиентом и сервером сообщения
случайных одноразовых чисел (NC и NS) атака перехвата и воспроизведения
невозможна.
2. Криптографический интерфейс приложений ОС Windows.
Преимущества использования криптографических библиотек
• Уменьшение риска создания уязвимостей в системах защиты
информации за счет уменьшения вероятности внесения ошибок в
программные реализации даже стойких криптографических
алгоритмов.
• Отсутствие необходимости внесения изменений в прикладные
программы при замене одной криптографической библиотеки другой.
Криптографический интерфейс приложений ОС Windows (CryptoAPI)
• Набор констант, типов данных и функций, предназначенных для
выполнения операций шифрования, расшифрования, получения и
проверки ЭЦП, генерации, хранения и распределения ключей
шифрования.
• Эти услуги для приложений предоставляют криптопровайдеры
(Cryptographic Service Provider, CSP) – динамически компонуемые
библиотеки (DLL), экспортирующие единый набор объектов,
определяемый интерфейсом CryptoAPI.
Архитектура криптографической подсистемы Windows
Функции Ядро операционной системы Функции
(модуль [Link])
Приложение CSP
CryptoSPI
CryptoAPI
Принципы взаимодействия между приложением и CSP
1. приложение не имеет прямого доступа к изготовлению и хранению
ключей шифрования (нет риска их потери из-за ошибок);
2. приложение не определяет деталей выполнения операций, а лишь
указывает на требуемые от CSP действия (например, зашифровать по
заданному алгоритму данные и получить для них ЭЦП);
3. приложение не обрабатывает данных, по которым проводится
аутентификация пользователя (владельца секретных ключей), а
предоставляет это CSP.
Криптопровайдер
• Характеризуется своим присвоенным производителем именем (строкой
символов) и типом (именованной целочисленной константой),
определяющим поддерживаемые этим провайдером
криптографические алгоритмы и их характеристики (атрибуты
криптопровайдера).
• Для установки криптопровайдера в системе необходима ЭЦП для этого
программного модуля от корпорации Microsoft, которая будет
проверяться ядром Windows).
Основные атрибуты CSP
• обязательно поддерживаемый алгоритм ЭЦП (всегда единственный);
• длина ключей ЭЦП;
• формат ЭЦП;
• форматы блобов, в которых открытый и закрытый ключи
асимметричного шифрования экспортируются из CSP (с возможностью
его последующего импорта в CSP);
• поддерживаемые функции хеширования.
Дополнительные атрибуты CSP
• поддерживаемый алгоритм обмена сеансовыми ключами (всегда
единственный);
• поддерживаемые алгоритмы симметричного шифрования;
• схема генерации сеансового ключа из хеш-значения парольной фразы;
• длины сеансовых ключей;
• формат блоба сеансового ключа при его экспорте из CSP;
• режимы симметричного шифрования, принятые по умолчанию
(например, режим CBC).
Экспорт и импорт ключей
• Закрытый ключ в блобе зашифрован симметричным алгоритмом на
ключе, выводимым из парольной фразы.
• Сеансовый ключ в блобе зашифрован асимметричным алгоритмом на
открытом ключе получателя (владельца) зашифрованного этим
сеансовым ключом сообщения (для расшифрования сеансового ключа
потребуется доступ к закрытому ключу получателя или владельца).
Контейнеры ключей
• Для каждого зарегистрированного у него пользователя или
конкретного приложения CSP хранит контейнер ключей
асимметричного шифрования, который может включать в себя две
пары ключей – открытый и секретный ключи для обмена сеансовыми
ключами, а также открытый и секретный ключи для ЭЦП.
• Ключи симметричного шифрования (сеансовые ключи) не сохраняются
CSP и об их сохранении (или правильной повторной генерации)
должно позаботиться приложение.
Хранение контейнеров ключей
• На жестком диске компьютера (например, в разделе реестра
HKEY_CURRENT_USER, где хранят ключи криптопровайдеры,
распространяемые вместе с ОС Windows).
• На защищенном от несанкционированного доступа устройстве
(например, смарт-карте или токене), подключаемым к компьютеру при
выполнении криптографических операций.
Доступ к контейнеру ключей из прикладной программы
Создание нового контейнера ключей (или открытие существующего) и
получение его дескриптора выполняются с помощью функции CryptoAPI
CryptAcquireContext, которая должна вызываться в программе до любой из
других функций CryptoAPI.
Версии CryptoAPI
• 1.0 – содержит базовый набор функций для выполнения всех
необходимых криптографических операций.
• 2.0 – содержит дополнительные функции для работы с сертификатами
и поддержки инфраструктуры открытых ключей (требуется
подключение библиотеки [Link]).
• CAPICOM – содержит набор многокомпонентных объектов для
выполнения криптографических операций в сценариях и апплетах
(требуется библиотека [Link]).
• Криптографические классы библиотеки Framework Class Library.
Примеры использования CryptoAPI
• Шифрующая файловая система Windows (EFS). Используются экспорт
и импорт случайного сеансового ключа шифрования файла.
• Пакет программ Microsoft Office. Используется генерация сеансового
ключа шифрования документа из парольной фразы.
3. Файловая система с шифрованием в ОС Windows.
CryptoAPI в EFS
• автоматическая генерация асимметрических ключей обмена и
сертификата открытого ключа при первом обращении пользователя к
услугам EFS (шифровании первой папки или файла);
• автоматическая генерация случайного сеансового ключа перед
шифрованием файла, указанного пользователем;
• автоматическое шифрование и расшифрование в прозрачном режиме
на уровне файла или папки (гарантируется, что для зашифрованного
файла все созданные на его основе временные файлы также будут
зашифрованы);
• возможность вызова функций шифрования и расшифрования с
помощью контекстного меню Проводника Windows и программы
командной строки cipher;
• доступ к закрытому ключу обмена пользователя со стороны
операционной системы возможен только во время сеанса его работы в
системе, т.к. он шифруется на системном ключе, выводимым из пароля
пользователя и его идентификатора безопасности (SID).
Архитектура EFS
Приложение
Диспетчер ввода-вывода
Драйвер EFS Сервис EFS CryptoAPI
Драйвер NTFS
Защищенный объект
Другие особенности EFS
• Перед передачей по сети файлы расшифровываются (в Windows
Vista/7/8 есть возможность передачи зашифрованных файлов).
• Возможен совместный доступ к зашифрованным файлам из числа
пользователей, имеющих сертификаты открытых ключей EFS на
данном компьютере (начиная с Windows XP).
• Для восстановления зашифрованных файлов возможно включение
политики агента восстановления (в домене).
Шифрование файла в EFS
1. Генерация случайного сеансового ключа FEK (File Encryption Key).
2. С его помощью зашифровывается файл.
3. Экспортируется из криптопровайдера сеансовый ключ в блобе,
зашифрованном с помощью открытого ключа обмена пользователя.