Спонсор: Microsoft
Опубликован: 25.06.2010 | Доступ: свободный | Студентов: 1539 / 239 | Оценка: 4.32 / 4.18 | Длительность: 25:57:00
Лекция 6:

Криптопровайдеры. API для работы с криптосервисами Windows

Аннотация: В данной лекции рассматривается эволюция криптографических сервисов в составе ОС Windows
Ключевые слова: CryptoAPI, CNG, криптопровайдер, DPAPI, электронная коммерция, шифрование, конфиденциальная информация, эволюция, криптографический сервис, windows 2000, windows xp, интерфейс, cryptography, CAPI, Windows Vista, API шифрования, generation, криптография, криптографическая инфраструктура, Secure Sockets Layer, Transport layer, security, SSL, TLS, IPsec, S/MIME, EFS, server, ключ, инсталляция, шифрование данных, операционная система, центр авторизации, доступ, data protection, защита данных, система команд, PKCS, инфраструктуры открытых ключей, infrastructure, web-based, non-functional, сокрытие данных, конфиденциальность, RSA, программный продукт, архитектура, функциональная группа, хеширование, инициализация, генерация ключей, кодирование, декодирование, ASN.1, abstract, syntax notation, компонент, certificate, центр сертификации, Active Directory, Visual Basic, JavaScript, vbscript, среда разработки, delphi, Windows Server, .NET Framework, криптографические операции, модульность, алгоритмы шифрования, сертификация, контроль, совместная работа, suite, алгоритм, SHA-256, эллиптические кривые, ECC, архив, PKI, удостоверяющий центр, интегрированность, подмножество, генерация случайных чисел, ключ шифрования, механизмы, аппаратные средства, смарт-карта, заголовочный файл, DLL, исключение, маршрутизатор, представление, smart card, cryptographic, CSP, инфраструктура, storage, KSPS, программное обеспечение, провайдер, модуль, поддержка, авторизация, электронный документ, контроль целостности, целостность, цифровая подпись, эксплуатация, безопасная система, структура организации, контейнер, информация, ЭЦП, enhanced, длина ключа, AES, DSS, проверка ЭЦП, hashing algorithm, SHA-1, digital signature standard, FIPS, симметричное шифрование, RC4, signature, целое число, значение, идентифицирующая, пользователь, значимость, net, Windows, API, приложение, очередь, открытый текст, remote procedure call, RPC, доверенность, authorize, LSA, выключение компьютера, конечные, private, расшифрование, контекст безопасности, защита данных пользователя, мандат, парольная аутентификация, знание, энтропия, secondary, entropy, доступ к данным, мастер-ключ, пароль, derivation, идентификатор, файл, функции безопасности, связь
Презентацию к лекции Вы можете скачать здесь.

Цель лекции

  • Рассмотреть круг задач, на решение которых ориентирован CryptoAPI
  • Изучить архитектуру CryptoAPI и CNG API
  • Рассмотреть различные типы криптопровайдеров
  • Изучить функции и механизм работы DPAPI

Текст лекции

Взрывное развитие электронной коммерции резко усилило потребность в надежных алгоритмах шифрования для защиты конфиденциальной информации. Продолжающаяся эволюция средств защиты способствует появлению новых криптографических сервисов. Современные операционные системы Microsoft содержат множество криптографических подсистем различного назначения как прикладного уровня, так и уровня ядра. Ключевую роль в Windows 2000, Windows XP, Windows ME играет интерфейс CryptoAPI ( Cryptography API, CAPI ). В основе шифрования Windows Vista и Server 2008 лежит новый API шифрования, называемый CNG API ( Cryptography Next Generation - новое поколение криптографии) [9.1]. Первый выпуск CNG в рамках криптографической инфраструктуры предоставляет интерфейсы API и среду, позволяющие добавлять в Windows новые алгоритмы для использования с протоколами Secure Sockets Layer / Transport Layer Security ( SSL / TLS ) и IPSec ; в будущем планируется реализовать поддержку других возможностей, например S / MIME и EFS. В конечном итоге Microsoft будет использовать этот новый API вместо текущего CryptoAPI, но в Vista и Server 2008 старый и новый API сосуществуют (в основном для совместимости со старыми приложениями).

В данном разделе мы рассмотрим CryptoAPI, после чего перейдем к обзору функциональности CNG. Кроме того, мы уделим внимание интерфейсу DPAPI. Windows, начиная с версии 2000, поддерживает встроенный механизм для хранения и защиты секретов. Этот механизм использует машинный ключ, сгенерированный при инсталляции системы специально для шифрования данных. Только локальная операционная система (локальный системный центр авторизации) имеет доступ к машинному ключу. Машинный ключ уникален для каждой инсталляции. Windows поддерживает программный интерфейс Data Protection API для защиты данных этим ключом. Использование этого API не дает прямого доступа к этому ключу, а позволяет отдавать системе команды зашифровать/расшифровать некоторую информацию с использованием этого ключа. Другим вариантом является использование ключа, сгенерированного для текущего пользователя.

Cryptographic Application Programming Interface (CryptoAPI)

Интерфейс Microsoft CryptoAPl 2.0 содержит как функции, осуществляющие базовые криптографические преобразования, так и функции, реализующие преобразования более высокого уровня - работу с сертификатами Х.509, работу с криптографическими сообщениями PKCS#7 [9.4, 9.5] и другие функции, поддерживающие так называемую инфраструктуру открытых ключей ( Public Key Infrastructure ). Набор функций из CryptoAPI 2.0, реализующих базовые криптографические преобразования ( base cryptography functions ), называют также CryptoAPI 1.0 [9.2]. Функции высокого уровня, предназначенные для реализации криптографических преобразований, вызывают именно функции CryptoAPI 1.0. Таким образом, именно интерфейс CryptoAPI 1.0 является криптографическим ядром прикладного уровня современных операционных систем Microsoft.

Круг задач, на решение которых ориентирован CryptoAPI [9.3]:

  • надежное сокрытие данных;
  • возможность передачи сокрытых данных третьим лицам;
  • надежная система проверки достоверности пришедшей от третьих лиц информации;
  • расшифровывание полученных конфиденциальных данных;
  • работа с "идентификационными удостоверениями" третьих лиц;
  • обеспечение работы с признанными криптографическими стандартами;
  • возможность расширения и работы с пока еще неизвестными алгоритмами.

Реализация всех алгоритмов полностью выведена из состава CryptoAPI и реализуется в независимых динамических библиотеках - " криптопровайдерах " (см. раздел " Криптопровайдеры "). CryptoAPI предоставляет конечному пользователю унифицированный интерфейс работы с функциями криптопровайдера.

CryptoAPI достаточно полно поддерживает набор стандартов "PKCS" [9.6], предложенный компанией RSA Security, и позволяет формировать криптографические приложения, которые могут быть обработаны в дальнейшем любыми программными продуктами. В подсистемах уровня ядра базовые криптографические преобразования происходят непосредственно в драйверах, реализующих эти подсистемы. Функции CryptoAPI в таких случаях используются для вспомогательных операций на прикладном уровне.

Общая архитектура CryptoAPI состоит из пяти основных функциональных групп (см. рис. 9.1):

  1. Базовые криптографические функции:
    • функции шифрования/расшифровывания данных;
    • функции хеширования и получения цифровой подписи данных;
    • функции инициализации криптопровайдера и работы с полученным контекстом;
    • функции генерации ключей;
    • функции обмена ключами.
  2. Функции кодирования/декодирования. Под кодированием в данном случае подразумевается получение на выходе информации, кодированной в формате ASN.1 ( Abstract Syntax Notation One ).
  3. Функции работы с сертификатами.
  4. Высокоуровневые функции обработки криптографических сообщений.
  5. Низкоуровневые функции обработки криптографических сообщений.
Архитектура CrypotAPI

Рис. 9.1. Архитектура CrypotAPI

Для доступа к CryptoAPI можно использовать CAPICOM. CAPICOM предоставляет COM интерфейс, использующий основные функции CryptoAPI. Этот компонент является добавлением к COM -интерфейсу Certificate Enrollment Control ( xenroll ), который реализуют клиентские функции генерации ключей, запросов на сертификаты и обмена с центром сертификации. Данный компонент позволяет получать доступ к функциям формирования и проверки электронной цифровой подписи, построения и проверки цепочек сертификатов, взаимодействия с различными справочниками сертификатов (включая Active Directory ) с использованием Visual Basic, C++, JavaScript, VBScript и среды разработки Delphi. CAPICOM доступен в операционных системах Windows Server 2008, Vista, Windows XP, Windows Me, Windows 2000 и Windows 98. В последующих версиях в него могут быть внесены изменения; также неисключено, что Microsoft совсем откажется от использования этого компонента. В связи с этим для реализации криптографической функциональности рекомендуется использовать средства .NET Framework.

Cryptography Next Generation API (CNG)

Служба CNG предоставляет набор интерфейсов API для выполнения основных криптографических операций и благодаря своей модульной архитектуре позволяет создавать, обновлять и использовать собственные алгоритмы шифрования в таких приложениях и технологиях, как служба сертификации Active Directory, технологии SSL и IPsec. Разработчики получают больший контроль над выполнением криптографических операций и совместной работой алгоритмов.

CNG поддерживает все алгоритмы, предлагаемые CryptoAPI, а также новые алгоритмы, включая алгоритмы шифрования, цифровых подписей, обмена ключами и хеширования, перечисленные в своде правил Suite B Агентства национальной безопасности США [9.7] - например, такие алгоритмы, как алгоритм хеширования SHA-256 и алгоритмы шифрования на основе эллиптических кривых ( ECC ). Алгоритмы Suite B используются в службах Certificate Services, чтобы генерировать сертификаты и защитить архив частных ключей в базе данных СА. Чтобы издавать сертификаты с алгоритмами Suite B, в инфраструктуре PKI Windows Vista и Server 2008 расширены свойства шаблона сертификата. Шаблоны сертификата - заготовки сертификатов различных типов, которые может выпускать удостоверяющий центр, интегрированный со службой Active Directory (удостоверяющим центром предприятия).

На рис. 9.2 [9.1] приведена общая схема CNG. BCrypt ('B' - сокр. от 'base', базовый) - это подмножество CNG, которое предоставляет такие примитивы криптографии, как средства генерации случайных чисел, функции хеширования, подписи и ключи шифрования. NCrypt ('N' - сокр. от 'new', новый) обеспечивает механизмы сохранения асимметричных ключей и поддержки аппаратных средств, таких как смарт-карты. BCrypt и NCrypt - имена заголовочных файлов и DLL, предоставляющих базовые сервисы для CNG и высокоуровневую функциональность для хранения ключей соответственно.

Архитектура CNG

Рис. 9.2. Архитектура CNG

В версиях Windows, предшествующих Vista, криптографические технологии, такие как CryptoAPI, работали только в пользовательском режиме, в то время как режим ядра требовал применения совсем других API -интерфейсов. CNG содержит универсальный набор API -интерфейсов, которые впервые предоставляют общую инфраструктуру шифрования для приложений как пользовательского режима, так и режима ядра. Исключение составляют механизмы хранения ключей, предоставляемые NCrypt: они доступны только приложениям пользовательского режима.

Существует два основных подхода к примитивам криптографии, обеспечиваемых CNG [9.1]. В первом подходе они рассматриваются как набор логических объектов, предоставляющих методы, которые можно вызывать, и свойства, которые можно запрашивать и иногда изменять. К этим объектам относятся поставщики алгоритмов, функции хеширования, ключи и секретные соглашения. При другом подходе CNG рассматривается как программный маршрутизатор, или посредник для операций криптографии. Интерфейс API CNG строится на основе набора логических интерфейсов криптографии. В качестве примера можно использовать интерфейс хеширования, в котором нет жестко закодированной реализации конкретного алгоритма хеширования. В большинстве интерфейсов API криптографии используется подход, основанный на алгоритмах, в то время как в CNG используется подход, основанный на интерфейсах. Такой подход обеспечивает большую гибкость как для разработчика, так и для администратора, которым может потребоваться заменить алгоритм, используемый приложением, но оказавшийся ошибочным после выпуска приложения. На рис. 9.3 [9.1] приведено представление CNG на основе интерфейсов.

CNG позволяет разработчикам запрашивать алгоритмы, не указывая поставщиков алгоритмов. Это позволяет администраторам перенастраивать приложения с целью использования других реализаций (подробнее см. раздел "Шаблоны использования криптографических функций в корпоративных приложениях").

Интерфейсы CNG

Рис. 9.3. Интерфейсы CNG

Windows Vista и Server 2008 располагают новым общим провайдером услуг шифрования для подсистем смарт-карт различных поставщиков ( Base Smart Card Cryptographic Service Provider, Base CSP ). Кроме того, новая инфраструктура CNG включает провайдеры хранилищ ключей ( Key Storage Provider, KSP ) для смарт-карт. Благодаря новому общему провайдеру Base CSP поставщики смарт-карт могут быстро и без труда интегрировать свое программное обеспечение с операционной системой Windows без необходимости разработки сложных собственных провайдеров - достаточно небольших модулей, которые встраиваются в архитектуру смарт-карт Windows. Модуль, написанный поставщиком смарт-карт для интеграции своего криптопровайдера, позволит интегрировать и хранилище ключей (см. рис. 9.4 [9.8]).

Инфраструктура Base CSP

Рис. 9.4. Инфраструктура Base CSP

Другое изменение Windows Vista и Server 2008, относящееся к смарт-картам и удобное для пользователей и администраторов, - расширенная поддержка приложений. Например, в файловой системе EFS смарт-карты могут применяться для надежного хранения частного ключа EFS пользователя.

Мария Архипова
Мария Архипова
Роман Попов
Роман Попов

После прохождения курса Стандарты инфрмационной безопасности мне предложено получение Удостоверения о повышении квалификации от НИУ ВШЭ по программе Менеджмент информационной безопасности. Программа включает в себя ряд курсов которые я уже ранее проходил. Какой порядок действий в данном случае? Как прозводится перезачет результатов? И какие экщамены мне надо еще доздать чтобы получить удостоверение?

Сергей Гутько
Сергей Гутько
Россия, ВИУ, 2003