Использование функций криптографического интерфейса windows для защиты информации

Криптографический интерфейс приложений ос 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, добавить средства защиты от несанкционированного доступа к файлу с учетными данными зарегистрированных пользователей.

Читайте также:  Acer es1 111 windows 10

Файл с учетными данными должен быть зашифрован при помощи функций криптографического интерфейса операционной системы 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.

Читайте также:  Alsa arch linux кнопки звука

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).

Читайте также:  Ikev2 vpn server linux

Рисунок 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?

Оцените статью