- Криптографический интерфейс приложений ос Windows.
- Лабораторная работа №3 Использование функций криптографического интерфейса Windows для защиты информации Содержание задания
- Использование функций криптографического интерфейса (CryptoAPI) операционной системы Windows 7 для защиты информации
- ПРАКТИЧЕСКАЯ РАБОТА № 8
Криптографический интерфейс приложений ос Windows.
Преимущества использования криптографических библиотек
Уменьшение риска создания уязвимостей в системах защиты информации за счет уменьшения вероятности внесения ошибок в программные реализации даже стойких криптографических алгоритмов.
Отсутствие необходимости внесения изменений в прикладные программы при замене одной криптографической библиотеки другой.
Криптографический интерфейс приложений ОС Windows (CryptoAPI)
Набор констант, типов данных и функций, предназначенных для выполнения операций шифрования, расшифрования, получения и проверки ЭЦП, генерации, хранения и распределения ключей шифрования.
Эти услуги для приложений предоставляют криптопровайдеры (Cryptographic Service Provider, CSP) – динамически компонуемые библиотеки (DLL), экспортирующие единый набор объектов, определяемый интерфейсом CryptoAPI.
Архитектура криптографической подсистемы Windows
Принципы взаимодействия между приложением и CSP
приложение не имеет прямого доступа к изготовлению и хранению ключей шифрования (нет риска их потери из-за ошибок);
приложение не определяет деталей выполнения операций, а лишь указывает на требуемые от CSP действия (например, зашифровать по заданному алгоритму данные и получить для них ЭЦП);
приложение не обрабатывает данных, по которым проводится аутентификация пользователя (владельца секретных ключей), а предоставляет это CSP.
Характеризуется своим присвоенным производителем именем (строкой символов) и типом (именованной целочисленной константой), определяющим поддерживаемые этим провайдером криптографические алгоритмы и их характеристики (атрибуты криптопровайдера).
Для установки криптопровайдера в системе необходима ЭЦП для этого программного модуля от корпорации Microsoft, которая будет проверяться ядром Windows).
Основные атрибуты CSP
обязательно поддерживаемый алгоритм ЭЦП (всегда единственный);
длина ключей ЭЦП;
форматы блобов, в которых открытый и закрытый ключи асимметричного шифрования экспортируются из CSP (с возможностью его последующего импорта в CSP);
поддерживаемые функции хеширования.
Дополнительные атрибуты CSP
поддерживаемый алгоритм обмена сеансовыми ключами (всегда единственный);
поддерживаемые алгоритмы симметричного шифрования;
схема генерации сеансового ключа из хеш-значения парольной фразы;
длины сеансовых ключей;
формат блоба сеансового ключа при его экспорте из CSP;
режимы симметричного шифрования, принятые по умолчанию (например, режим CBC).
Экспорт и импорт ключей
Закрытый ключ в блобе зашифрован симметричным алгоритмом на ключе, выводимым из парольной фразы.
Сеансовый ключ в блобе зашифрован асимметричным алгоритмом на открытом ключе получателя (владельца) зашифрованного этим сеансовым ключом сообщения (для расшифрования сеансового ключа потребуется доступ к закрытому ключу получателя или владельца).
Для каждого зарегистрированного у него пользователя или конкретного приложения CSP хранит контейнер ключей асимметричного шифрования, который может включать в себя две пары ключей – открытый и секретный ключи для обмена сеансовыми ключами, а также открытый и секретный ключи для ЭЦП.
Ключи симметричного шифрования (сеансовые ключи) не сохраняются CSP и об их сохранении (или правильной повторной генерации) должно позаботиться приложение.
Хранение контейнеров ключей
На жестком диске компьютера (например, в разделе реестра HKEY_CURRENT_USER, где хранят ключи криптопровайдеры, распространяемые вместе с ОС Windows).
На защищенном от несанкционированного доступа устройстве (например, смарт-карте или токене), подключаемым к компьютеру при выполнении криптографических операций.
Доступ к контейнеру ключей из прикладной программы
Создание нового контейнера ключей (или открытие существующего) и получение его дескриптора выполняются с помощью функции CryptoAPI CryptAcquireContext, которая должна вызываться в программе до любой из других функций CryptoAPI.
1.0 – содержит базовый набор функций для выполнения всех необходимых криптографических операций.
2.0 – содержит дополнительные функции для работы с сертификатами и поддержки инфраструктуры открытых ключей (требуется подключение библиотеки crypt32.dll).
CAPICOM – содержит набор многокомпонентных объектов для выполнения криптографических операций в сценариях и апплетах (требуется библиотека capicom.dll).
Криптографические классы библиотеки Framework Class Library.
Примеры использования CryptoAPI
Шифрующая файловая система Windows (EFS). Используются экспорт и импорт случайного сеансового ключа шифрования файла.
Пакет программ Microsoft Office. Используется генерация сеансового ключа шифрования документа из парольной фразы.
Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.
Лабораторная работа №3 Использование функций криптографического интерфейса Windows для защиты информации Содержание задания
В программу, разработанную при выполнении лабораторной работы № 1, добавить средства защиты от несанкционированного доступа к файлу с учетными данными зарегистрированных пользователей.
Файл с учетными данными должен быть зашифрован при помощи функций криптографического интерфейса операционной системы Windows (CryptoAPI) с использованием сеансового ключа, генерируемого на основе вводимой администратором (пользователем) парольной фразы.
При запуске программы файл с учетными данными должен расшифровываться во временный файл (или в файл в оперативной памяти), который после завершения работы программы должен быть снова зашифрован для отражения возможных изменений в учетных записях пользователей. «Старое» содержимое файла учетных записей при этом стирается.
После ввода парольной фразы при запуске программы, генерации ключа расшифрования и расшифрования файла с учетными данными зарегистрированных пользователей правильность введенной парольной фразы определяется по наличию в расшифрованном файле учетной записи администратора программы.
При вводе неправильной парольной фразы или отказе от ее ввода работа программы должна завершаться с выдачей соответствующего сообщения.
Временный файл на диске с расшифрованными учетными данными после завершения работы программы удаляется.
Варианты использования алгоритмов шифрования и хеширования выбираются в соответствии с выданным преподавателем заданием.
Использование функций криптографического интерфейса (CryptoAPI) операционной системы Windows 7 для защиты информации
ПРАКТИЧЕСКАЯ РАБОТА № 8
Тема: Использование функций криптографического интерфейса ( CryptoAPI ) операционной системы Windows 7 для защиты информации
Цель формирование умений использования функций криптографического интерфейса (CryptoAPI) операционной системы Windows 7 для защиты информации на примере Outlook Express
Оборудование: персональный компьютер, ОС Windows 7, приложение Outlook Express , Internet .
Время выполнения: 4 часа
Использование CryptoAPI в ОС Windows 7 преследует две главные цели:
Обеспечить прикладному уровню доступ к криптографическим функциям для генерации ключей, формирования/проверки электронной цифровой подписи, шифрования/расшифрования данных в условиях изолирования прикладного уровня от уровня реализаций криптографических функций. Приложениям и прикладным программистам не нужно детально вникать в особенности реализации того или иного алгоритма или изменять в зависимости от алгоритма прикладные программы.
Обеспечить одновременное использование разных алгоритмов и различных их реализаций как программных, так и аппаратных.
Общая архитектура криптографических функций показана на рисунке 4.
Рисунок 4 — Архитектура криптографических функций в ОС Windows
Общая архитектура CryptoAPI 2.0 представлена пятью основными функциональными группами:
Базовые криптографические функции
К базовым функциям относятся:
— функции инициализации (работы с контекстом).
Эти функции предоставляют приложению возможность выбрать определенный криптопровайдер по типу имени или по требуемой функциональности;
— функции генерации ключей.
Эти функции предназначены для формирования и хранения криптографических ключей различных типов;
— функции обмена ключами.
Эти функции предназначены для того, чтобы приложения могли обмениваться различными типами ключевой информации для обеспечения взаимодействия между собой;
Данные функции предназначены для преобразования (кодирования) из внутреннего представления объектов, используемых в CryptoAPI, во внешнее представление и обратно. В качестве внешнего представления объектов используется формат ASN.1 (Abstract Syntax Notation One), определенный серией рекомендаций X.680.
К этой же группе функций относится набор функций, позволяющих расширить функциональность CryptoAPI, путем реализации и регистрации собственных типов объектов.
Функции работы со справочниками сертификатов
Эта группа функций предназначена для хранения и обработки сертификатов в различных типах справочников. Причем в качестве справочника могут использоваться самые различные типы хранилищ: от простого файла до LDAP.
Высокоуровневые функции обработки криптографических сообщений
Эта группа функций (Simplified Message Functions) в первую очередь предназначена для использования в прикладном ПО. С помощью этих функций можно
Зашифровать/расшифровать сообщение от одного пользователя к другому.
Проверить подпись данных.
Эти функции (так же как и функции низкого уровня) оперируют сертификатами открытых ключей X.509 для адресации отправителя/получателя данных. В качестве формата данных, формируемых функциями, используется формат PKCS#7 (RFC 2315) или CMS (RFC 2630) в Windows 7
Низкоуровневые функции обработки криптографических сообщений
Данная группа функций (Low Level Message Functions) предназначена для аналогичных целей, что и группа высокоуровневых функций, но обладает большей функциональностью и требует от прикладного программиста более детальных знаний в области прикладной криптографии.
Порядок взаимодействия приложений с криптографическими модулями операционной системы регламентирует документ, который называется Microsoft Cryptographic Application Programming Interface (MS CryptoAPI). Одновременно в операционной системе можно установить несколько CSP. При первом обращении к CryptoAPI прикладная программа выбирает, с каким именно модулем CSP она будет работать в зависимости от того, какие криптографические алгоритмы ей необходимы ( рис. 5 ). Следует отметить, что система по организации похожа на ту, что используется в Java.
CryptoAPI позволяет шифровать данные, подписывать документы цифровой подписью и многое другое. Существуют и встроенные средства, например Microsoft Base Cryptographic Provider. Имеется возможность использовать CryptoAPI в таких программах разработки, как Visual Studio, то есть автоматически осуществляется поддержка таких языков, как Visual C++, Visual Basic, Visual FoxPro и др.
Примером функции генерации ключей может быть CryptGenKey(), а шифрования и дешифрования — CryptEncrypt() и CryptDecrypt() и т.д.
Рисунок 5 — Схема структуры
Программное обеспечение Outlook Express версии 5.0 и выше полностью поддерживает Инфраструктуру Открытых Ключей для обеспечения конфиденциальности, целостности, авторства почтовых сообщений, передаваемых по протоколам SMTP, IMAP, POP3. Для этих целей Outlook Express использует функции CryptoAPI 2.0 и сертификаты открытых ключей X.509. В качестве формата защищенных сообщений используется формат, описанный в рекомендациях Secure Multipurpose Internet Mail Extensions (S/MIME).
Приведенная ниже информация описывает действия по конфигурации в Outlook Express, необходимые для обеспечения защиты почтовых сообщений.
Выберите пункт меню Сервис, Настройка учетных записей… и нажмите на закладку Электронная почта. В отображаемом списке учетных записей выберите ту, которую необходимо настроить, и нажмите кнопку Свойства. В отображаемом диалоге выберите закладку Безопасность. Отображаемый диалог позволяет пользователю указать свои личные сертификаты, которые будут использоваться при выборе личных ключей пользователя для формирования электронной цифровой подписи и расшифрования входящих сообщений. Как уже было отмечено раннее, в диалоге выбора сертификата отображаются только сертификаты, имеющие совпадающий адрес электронной почты и разрешенные для защиты электронной почты (рис.6).
Рисунок 6 – Окно диалога выбора сертификата
Выберите пункт меню Сервис, Параметры… и нажмите на закладку Безопасность (рис.7).
Рисунок 7 – Окно вкладки «Безопасность»
В отображаемом диалоге можно включить режимы Шифровать содержимое и вложения исходящих сообщений и Включить цифровую подпись во все отправляемые сообщения для того, чтобы шифрование и электронная цифровая подпись выполнялись автоматически для каждого сообщения. Если эти режимы не включены, опции шифрования и подписи нужно будет включать для каждого отправляемого сообщения.
Нажмите кнопку Дополнительно. В отображаемом диалоге установите следующие режимы:
Шифровать при отправке шифрованной почты самому себе. Установка режима включения дает возможность отправителю расшифровывать отправленные им сообщения.
Добавлять мой сертификат при отправлении сообщений с подписью. Установка этого режима автоматически будет добавлять сертификат отправителя ко всем сообщениям. Этот режим позволяет производить обмен сертификатами с использованием подписанного сообщения, а затем использовать полученные сертификаты для последующего шифрования сообщений между адресатами.
Кодировать сообщения перед подписыванием (непрозрачная подпись). При включенном режиме сообщения и все вложения будут объединены в единое вложение с включенной в него цифровой подписью. Если режим выключен – подпись формируется в виде одного отдельного вложения для всех вложений.
Автоматически добавлять сертификат отправителя в адресную книгу. При включенном режиме сертификаты, передаваемые в составе подписанного сообщения, будут автоматически добавляться в адресную книгу (рис.8).
Рисунок 8 – Добавление сертификата
Проверять, не были ли отозваны сертификаты:
только при нахождении в сети – установка флага проверки приводит к тому, что каждая операция формирования или проверки электронной цифровой подписи будет сопровождаться проверкой на отзыв сертификата. Для проверки на отзыв используется список отозванных сертификатов (CRL), информация о нахождении которого, записывается в виде дополнения в сертификате каждого пользователя. По умолчанию данная опция не включена, и Outlook Express не отслеживает факта компрометации ключей пользователей.
никогда не проверять – проверка на отзыв не выполняется.
Отправка подписанных сообщений
Для создания и отправки подписанного сообщения нажмите кнопку Создать сообщение или выберите пункт меню Файл, Создать, Сообщение.
Выберите получателя сообщения (поле Кому) и введите тему сообщения. Если письмо будет содержать некоторые файлы, добавьте их в письмо, используя кнопку Вложить. Для отправки сообщения в подписанном виде проверьте состояние кнопки
Подписать. Она должна быть нажата и должен быть виден признак подписанного сообщения
в правой части экрана (рис.9).
Рисунок 9 – Окно сообщения
После того, как сообщение подготовлено к отправке, нажмите кнопку Отправить. Если в ответ появится следующее предупреждение, то это означает, что сертификат был отозван (рис.10).
Рисунок 10 – Предупреждение об отзыве сертификата
Получение сертификата открытого ключа абонента для шифрования сообщений
Для шифрования сообщений в адрес других пользователей необходимо предварительно произвести обмен сертификатами. Для этого обычно достаточно переслать подписанное сообщение в адрес требуемого абонента (сообщение посылается вместе с сертификатом отправителя). После получения сообщения и проверки электронной цифровой подписи производится автоматическое добавление адреса отправителя и его сертификата в адресную книгу.
Для контроля добавления выполните следующие действия. Откройте полученное подписанное письмо. Установите курсор на адрес отправителя и, нажав правую кнопку мыши, выберите пункт Добавить в адресную книгу (рис.11).
Рисунок 11 – Добавление в адресную книгу
Для того, чтобы проверить наличие сертификата абонента в адресной книге, нажмите на кнопку Адреса в основном меню и выберите запись с требуемым абонентом (рис.12). Если в записи абонента отсутствует сертификат или сертификат не обновился (у абонента был старый сертификат), удалите полностью запись абонента из адресной книги и получите от него подписанное сообщение еще раз. При этом должно произойти автоматическое создание записи с сертификатом.
Рисунок 12 – Проверка наличия сертификата абонента в адресной книге
Отправка шифрованных сообщений
Для создания и отправки подписанного сообщения нажмите кнопку Создать сообщение или выберите пункт меню Файл, Создать, Сообщение.
Выберите получателя сообщения (поле Кому) и введите тему сообщения. Если письмо будет содержать некоторые файлы, добавьте их в письмо, используя кнопку Вложить. Для отправки сообщения в зашифрованном виде проверьте состояние кнопки
Зашифровать. Она должна быть нажата и должен быть виден признак шифрованного сообщения
в правой части экрана. После того, как сообщение подготовлено к отправке, нажмите кнопку
Отправить.
При попытке зашифровать письмо на открытом ключе владельца отозванного сертификата, возникнет та же ситуация, что и при отправке сообщения, подписанного с помощью отозванного сертификата. А предупреждающее окно будет выглядеть так, как показано на рисунке 13:
Рисунок 13 – Предупреждение об ошибке
Проверка сертификата на отзыв
Периодичность издания списков отозванных сертификатов (СОС) определяется Удостоверяющим центром. Центр Сертификации издает СОС и публикует его в сетевом справочнике (при его наличии). Пользователи должны регулярно обновлять СОС, хранящийся в локальном справочнике сертификатов, с использованием доступных средств.
Для контроля проверки сертификатов на отзыв выполните следующие действия. Откройте полученное подписанное письмо. Нажмите кнопку – признак подписанного сообщения. Как уже было отмечено раннее, для автоматической проверки подписи на отзыв необходимо установить флаг Проверять, не были ли отозваны сертификаты: только при нахождении в сети. В противном случае, в открывшемся диалоге в закладке Безопасность увидите следующее (рис.14):
Рисунок 14 – Окно вкладки «Безопасность»
При установленном флаге проверки, если сертификат не отозван, в графе Состояние отзыва получите Сертификат не был отозван, или не удалось получить информацию об отзыве этого сертификата.
Если же сертификат отозвали, то при открытии письма появится предупреждение (рис.15) :
Рисунок 15 – Предупреждение системы безопасности
А при нажатии кнопки , в открывшемся окне во вкладке Безопасность будет значиться: Этот сертификат был отозван.
1. Что называется провайдером криптографического обслуживания?
2. На каких принципах строится взаимодействие прикладной программы и криптопровайдера?
3. Как обеспечиваются в операционной системе аутентичность и целостность криптопровайдера?
4. Что хранится в контейнере ключей пользователя при работе с криптопровайдером?
5. Как создаются в CryptoAPI сеансовые ключи шифрования?
6. Как может быть осуществлен обмен ключами шифрования в CryptoAPI?
7. Какие функции CryptoAPI предназначены для шифрования и расшифрования данных?
8. Что должно сохраняться вместе с зашифрованным файлом?
9. Как изменить режим шифрования при использовании функций CryptoAPI?
10. Какие функции CryptoAPI используются для получения и проверки электронной цифровой подписи?
11. Каков порядок вызова функций CryptoAPI при получении ЭЦП?
12. Как могут быть совмещены процессы шифрования (расшифрования) и хеширования при использовании CryptoAPI?