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

Работа по теме: Лабораторная работа №4. Глава: Лабораторная работа №4 Использование функций криптографического интерфейса Windows для защиты информации Содержание задания. Предмет: Защита информации. ВУЗ: НИУ МЭИ.

Добавил:

Вуз:

Предмет:

Файл:

Скачиваний:

58

Добавлен:

28.06.2014

Размер:

143.87 Кб

Скачать

  1. В программу,
    разработанную при выполнении лабораторной
    работы № 1, добавить средства защиты
    от несанкционированного доступа к
    файлу с учетными данными зарегистрированных
    пользователей.

  2. Файл с учетными
    данными должен быть зашифрован при
    помощи функций криптографического
    интерфейса операционной системы Windows
    (CryptoAPI)
    с использованием сеансового ключа,
    генерируемого на основе вводимой
    администратором (пользователем)
    парольной фразы.

  3. При запуске
    программы файл с учетными данными
    должен расшифровываться во временный
    файл (или в файл в оперативной памяти),
    который после завершения работы
    программы должен быть снова зашифрован
    для отражения возможных изменений в
    учетных записях пользователей. «Старое»
    содержимое файла учетных записей при
    этом стирается.

  4. После ввода
    парольной фразы при запуске программы,
    генерации ключа расшифрования и
    расшифрования файла с учетными данными
    зарегистрированных пользователей
    правильность введенной парольной фразы
    определяется по наличию в расшифрованном
    файле учетной записи администратора
    программы.

  5. При вводе
    неправильной парольной фразы или отказе
    от ее ввода работа программы должна
    завершаться с выдачей соответствующего
    сообщения.

  6. Временный файл
    на диске с расшифрованными учетными
    данными после завершения работы
    программы удаляется.

  7. Варианты
    использования алгоритмов шифрования
    и хеширования выбираются в соответствии
    с выданным преподавателем заданием.

  8. Для доступа к
    функциям CryptoAPI
    из программ на Паскале следует
    использовать интерфейсный модуль
    wincrypt.pas
    с указанного преподавателем сетевого
    диска.

Индивидуальные варианты заданий

Тип
симметричного шифрования

Используемый
режим шифрования

Добавление
к ключу случайного значения

Используемый
алгоритм хеширования

1

2

3

4

5

1

Блочный

Электронная
кодовая книга

Да

MD2

2

Потоковый

Да

MD2

3

Блочный

Сцепление
блоков шифра

Да

MD2

4

Потоковый

Да

MD5

5

Блочный

Обратная
связь по шифротексту

Да

MD2

6

Потоковый

Да

SHA

7

Блочный

Электронная
кодовая книга

Да

MD4

1

2

3

4

5

8

Потоковый

Нет

MD2

9

Блочный

Сцепление
блоков шифра

Да

MD4

10

Потоковый

Нет

MD5

11

Блочный

Обратная
связь по шифротексту

Да

MD4

12

Потоковый

Нет

SHA

13

Блочный

Электронная
кодовая книга

Да

MD5

14

Блочный

Сцепление
блоков шифра

Да

MD5

15

Блочный

Обратная
связь по шифротексту

Да

MD5

16

Блочный

Электронная
кодовая книга

Да

SHA

17

Блочный

Сцепление
блоков шифра

Да

SHA

18

Блочный

Обратная
связь по шифротексту

Да

SHA

19

Блочный

Электронная
кодовая книга

Нет

MD2

20

Блочный

Сцепление
блоков шифра

Нет

MD2

21

Блочный

Обратная
связь по шифротексту

Нет

MD2

22

Блочный

Электронная
кодовая книга

Нет

MD4

23

Блочный

Сцепление
блоков шифра

Нет

MD4

24

Блочный

Обратная
связь по шифротексту

Нет

MD4

25

Блочный

Электронная
кодовая книга

Нет

MD5

26

Блочный

Сцепление
блоков шифра

Нет

MD5

27

Блочный

Обратная
связь по шифротексту

Нет

MD5

28

Блочный

Электронная
кодовая книга

Нет

SHA

29

Блочный

Сцепление
блоков шифра

Нет

SHA

30

Блочный

Обратная
связь по шифротексту

Нет

SHA

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ №11

Тема:          Использование
функций криптографического интерфейса (CryptoAPI) операционной системы Windows
для защиты информации

Цель:           сформировать
умения использования функций криптографического интерфейса (CryptoAPI)
операционной системы Windows для защиты информации на примере
Outlook Express

Оборудование: персональный
компьютер, ОС
Windows XP, приложение Outlook Express, Internet

Вид
работы:
групповой

Время
выполнения:

4 часа

Теоретические сведения

Использование CryptoAPI в ОС Windows преследует две
главные цели:

Обеспечить прикладному уровню доступ к
криптографическим функциям для генерации ключей, формирования/проверки
электронной цифровой подписи, шифрования/расшифрования данных в условиях
изолирования прикладного уровня от уровня реализаций криптографических функций.
Приложениям и прикладным программистам не нужно детально вникать в особенности
реализации того или иного алгоритма или изменять в зависимости от алгоритма
прикладные программы.

Обеспечить одновременное использование разных
алгоритмов и различных их реализаций как программных, так и аппаратных.

Общая архитектура криптографических функций показана
на рис. 1.

Рисунок 1 — Архитектура
криптографических функций в ОС 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 2000/ХР/2003.

Низкоуровневые функции обработки криптографических
сообщений

Данная группа функций (Low Level Message Functions)
предназначена для аналогичных целей, что и группа высокоуровневых функций, но
обладает большей функциональностью и требует от прикладного программиста более
детальных знаний в области прикладной криптографии.

Порядок взаимодействия приложений с криптографическими
модулями операционной системы регламентирует документ, который называется
Microsoft Cryptographic Application Programming Interface (MS CryptoAPI).
Функции, описанные в нем, поддерживаются Windows 9x и Windows NT/2000/XP.
В последних ОС функции CryptoAPI содержатся в модулях crypt32.dll и
advapi32.dll, но они не реализуют криптографических алгоритмов, а обращаются к
другим модулям, называемым Cryptographic Service Providers (CSP). Одновременно
в операционной системе можно установить несколько CSP. При первом обращении к
CryptoAPI прикладная программа выбирает, с каким именно модулем CSP она будет
работать в зависимости от того, какие криптографические алгоритмы ей необходимы
(рис. 2). Следует
отметить, что система по организации похожа на ту, что используется в Java.

CryptoAPI позволяет шифровать данные, подписывать
документы цифровой подписью и многое другое. Существуют и встроенные средства,
например Microsoft Base Cryptographic Provider. Имеется возможность
использовать CryptoAPI в таких программах разработки, как Visual Studio, то
есть автоматически осуществляется поддержка таких языков, как Visual C++,
Visual Basic, Visual FoxPro и др. С развитием компанией Microsoft языковой
платформы .NET большинство языков программирования, включая набирающий
популярность язык C#, поддерживают криптографические методы защиты.

Примером функции генерации ключей может быть
CryptGenKey(), а шифрования и дешифрования — CryptEncrypt() и CryptDecrypt() и
т.д.

Рисунок 2 – Схема архитектуры CryptoAPI

Задания к практической работе

Задание 1. Программное
обеспечение Outlook Express версии 5.0 и выше полностью поддерживает
Инфраструктуру Открытых Ключей для обеспечения конфиденциальности, целостности,
авторства почтовых сообщений, передаваемых по протоколам SMTP, IMAP, POP3. Для
этих целей Outlook Express использует функции CryptoAPI 2.0 и сертификаты
открытых ключей X.509. В качестве формата защищенных сообщений используется
формат, описанный в рекомендациях Secure Multipurpose Internet Mail Extensions
(S/MIME).

Приведенная ниже информация описывает действия по
конфигурации в Outlook Express, необходимые для обеспечения защиты почтовых
сообщений.

Выберите пункт меню Сервис, Учетные записи…
и нажмите на закладку Почта. В отображаемом списке учетных записей
выберите ту, которую необходимо настроить, и нажмите кнопку Свойства. В
отображаемом диалоге выберите закладку Безопасность. Отображаемый диалог
позволяет пользователю указать свои личные сертификаты, которые будут
использоваться при выборе личных ключей пользователя для формирования
электронной цифровой подписи и расшифрования входящих сообщений. Как уже было
отмечено раннее, в диалоге выбора сертификата отображаются только сертификаты,
имеющие совпадающий адрес электронной почты и разрешенные для защиты
электронной почты.

Выберите пункт меню Сервис, Параметры…
и нажмите на закладку Безопасность.

В отображаемом диалоге можно включить режимы Шифровать
содержимое и вложения исходящих сообщений и Включить цифровую подпись во
все отправляемые сообщения для того, чтобы шифрование и электронная цифровая
подпись выполнялись автоматически для каждого сообщения. Если эти режимы не
включены, опции шифрования и подписи нужно будет включать для каждого
отправляемого сообщения.

Нажмите кнопку Дополнительно. В отображаемом
диалоге установите следующие режимы:

Шифровать при отправке шифрованной почты
самому себе.

Установка режима включения дает возможность отправителю расшифровывать
отправленные им сообщения.

Добавлять мой сертификат при отправлении
сообщений с подписью.

Установка этого режима автоматически будет добавлять сертификат отправителя ко
всем сообщениям. Этот режим позволяет производить обмен сертификатами с
использованием подписанного сообщения, а затем использовать полученные
сертификаты для последующего шифрования сообщений между адресатами.

Кодировать сообщения перед подписыванием
(непрозрачная подпись).
При включенном режиме сообщения и все вложения будут
объединены в единое вложение с включенной в него цифровой подписью. Если режим
выключен – подпись формируется в виде одного отдельного вложения для всех
вложений.

Автоматически добавлять сертификат
отправителя в адресную книгу.
При включенном режиме сертификаты,
передаваемые в составе подписанного сообщения, будут автоматически добавляться
в адресную книгу.

Проверять, не были ли отозваны
сертификаты:

только при нахождении в сети – установка флага
проверки приводит к тому, что каждая операция формирования или проверки
электронной цифровой подписи будет сопровождаться проверкой на отзыв
сертификата. Для проверки на отзыв используется список отозванных сертификатов
(CRL), информация о нахождении которого, записывается в виде дополнения в
сертификате каждого пользователя. По умолчанию данная опция не включена, и
Outlook Express не отслеживает факта компрометации ключей пользователей.

никогда не проверять – проверка на
отзыв не выполняется.

Отправка подписанных сообщений

Для создания и отправки подписанного сообщения нажмите
кнопку  Создать
сообщение или выберите пункт меню Файл, Создать, Сообщение.

Выберите получателя сообщения (поле Кому) и введите
тему сообщения. Если письмо будет содержать некоторые файлы, добавьте их в
письмо, используя кнопку  Вложить. Для отправки сообщения в
подписанном виде проверьте состояние кнопки  Подписать. Она должна быть нажата
и должен быть виден признак подписанного сообщения  в правой части экрана.

После того, как сообщение подготовлено к отправке,
нажмите кнопку  Отправить. Если в ответ появится
следующее предупреждение, то это означает, что сертификат был отозван.

Получение сертификата открытого ключа абонента для
шифрования сообщений

Для шифрования сообщений в адрес других пользователей
необходимо предварительно произвести обмен сертификатами. Для этого обычно
достаточно переслать подписанное сообщение в адрес требуемого абонента
(сообщение посылается вместе с сертификатом отправителя). После получения
сообщения и проверки электронной цифровой подписи производится автоматическое
добавление адреса отправителя и его сертификата в адресную книгу.

Для контроля добавления выполните следующие действия.
Откройте полученное подписанное письмо. Установите курсор на адрес отправителя
и, нажав правую кнопку мыши, выберите пункт Добавить в адресную книгу.

Для того, чтобы проверить наличие сертификата абонента
в адресной книге, нажмите на кнопку  Адреса в основном меню и выберите
запись с требуемым абонентом (см. Рисунок 2). Если в записи абонента
отсутствует сертификат или сертификат не обновился (у абонента был старый
сертификат), удалите полностью запись абонента из адресной книги и получите от
него подписанное сообщение еще раз. При этом должно произойти автоматическое
создание записи с сертификатом.

Рисунок 2. Адресная книга

Отправка шифрованных сообщений

Для создания и отправки подписанного сообщения нажмите
кнопку  Создать
сообщение или выберите пункт меню Файл, Создать, Сообщение.

Выберите получателя сообщения (поле Кому) и введите
тему сообщения. Если письмо будет содержать некоторые файлы, добавьте их в
письмо, используя кнопку  Вложить. Для отправки сообщения в
зашифрованном виде проверьте состояние кнопки  Зашифровать. Она должна быть
нажата и должен быть виден признак шифрованного сообщения  в правой части экрана.
После того, как сообщение подготовлено к отправке, нажмите кнопку  Отправить.

При попытке зашифровать письмо на открытом ключе
владельца отозванного сертификата, возникнет та же ситуация, что и при отправке
сообщения, подписанного с помощью отозванного сертификата. А предупреждающее
окно будет выглядеть так:

Проверка сертификата на отзыв

Периодичность издания списков отозванных сертификатов
(СОС) определяется Удостоверяющим центром. Центр Сертификации издает СОС и
публикует его в сетевом справочнике (при его наличии). Пользователи должны
регулярно обновлять СОС, хранящийся в локальном справочнике сертификатов, с
использованием доступных средств.

Для контроля проверки сертификатов на отзыв выполните
следующие действия. Откройте полученное подписанное письмо. Нажмите
кнопку  –
признак подписанного сообщения. Как уже было отмечено раннее, для
автоматической проверки подписи на отзыв необходимо установить флаг Проверять,
не были ли отозваны сертификаты: только при нахождении в сети. В
противном случае, в открывшемся диалоге в закладке Безопасность увидите
следующее:

При установленном флаге проверки, если сертификат не
отозван, в графе Состояние отзыва получите Сертификат не был отозван,
или не удалось получить информацию об отзыве этого сертификата.

Если же сертификат отозвали, то при открытии письма
появится предупреждение:

А при нажатии кнопки , в открывшемся окне во
вкладке Безопасность будет значиться: Этот сертификат был отозван.

Задание 2. Использование
средств криптографической защиты в Outlook 2007 во многом совпадает с
использованием в Outlook ранних версий. Однако стоит отметить следующие особенности:

1.    
Почтовая программа Outlook 2007 поддерживается только
криптопровайдером КриптоПро CSP версии 3.0 (с установленным пакетом обновления
SP2) и выше.

2.    
Криптопровайдер КриптоПро CSP поддерживает только формат S/MIME
защищенных почтовых сообщений, и поэтому в настройках сервера Exchange должна
стоять опция использования формата MIME и разрешения маршрутизации защищенных
сообщений S/MIME.

3.    
Криптопровайдер КриптоПро CSP не поддерживает работу KMS сервера
Exchange и хранения сертификатов открытых ключей в глобальной адресной книге.
Поэтому для создания сертификатов открытых ключей должен использоваться внешний
центр сертификации.

4.    
Для хранения сертификатов открытых ключей абонентов используйте
локальную или общую (корпоративную) папку Контакты.

Конфигурация Outlook 2007

Выберите пункт меню Сервис,
Центр управления безопасностью
и нажмите на закладку Защита электронной
почты
. Нажмите кнопку Параметры.

Выберите личные сертификаты,
соответствующие ключам подписи и шифрования, используя кнопку Выбрать.
Отображаемый диалог позволяет пользователю указать свои личные сертификаты,
которые будут использоваться при выборе личных ключей пользователя для
формирования электронной цифровой подписи и расшифрования входящих сообщений.
Как уже было отмечено ранее, в диалоге выбора сертификата отображаются только
сертификаты, имеющие совпадающий адрес электронной почты и разрешенные для
защиты электронной почты.

Выберите пункт меню Сервис,
Центр управления безопасностью
и нажмите на закладку Защита электронной
почты
.

В отображаемом диалоге можно
включить режимы Шифровать содержимое и вложения исходящих сообщений и Добавлять
цифровую подпись к исходящим сообщениям
для того, чтобы шифрование и
электронная цифровая подпись выполнялись автоматически для каждого сообщения.
Если эти режимы не включены, опции шифрования и подписи нужно будет включать
для каждого отправляемого сообщения. В этом же диалоге дополнительно можно
установить опцию Отправлять подписанные сообщения открытым текстом. При
включенном режиме подпись формируется в виде одного отдельного вложения для
всех вложений. Если режим выключен — сообщения и все вложения будут объединены
в единое вложение с включенной в него цифровой подписью.

Отправка подписанных сообщений

Для создания и отправки
подписанного сообщения нажмите кнопку  Создать или выберите пункт меню Файл,
Создать, Сообщение
.

Выберите получателя сообщения
(поле Кому) и введите тему сообщения. Если письмо будет содержать
некоторые файлы, добавьте их в письмо, используя кнопку  Вложить файл. Для
отправки сообщения в подписанном виде нажмите кнопку .

После того, как сообщение
подготовлено к отправке, нажмите кнопку  Отправить.

Если сертификат, с помощью
которого подписано сообщение, был отозван, то появится следующее
предупреждение, а само сообщение не будет отправлено.

Получение сертификата открытого ключа абонента для шифрования
сообщений

Для шифрования сообщений в
адрес других пользователей необходимо предварительно произвести обмен
сертификатами. Для этого обычно достаточно переслать подписанное сообщение в
адрес требуемого абонента (сообщение посылается вместе с сертификатом
отправителя). После получения сообщения и проверки электронной цифровой подписи
производится автоматическое добавление адреса отправителя и его сертификата в
адресную книгу.

Для контроля добавления
выполните следующие действия. Откройте полученное подписанное письмо.
Установите курсор на адрес отправителя и, нажав правую кнопку мыши, выберите
пункт Добавить в контакты Outlook. В отображаемом диалоге нажмите на
закладку  Сертификаты
и убедитесь в наличии сертификата отправителя.

После этого нажмите на кнопку  Сохранить
и закрыть
. Если абонент с таким адресом уже существует, программа
предложит, либо добавить новый контакт, либо обновить сведения о
выделенном контакте
. Выберите второй пункт. При этом в существующий контакт
будет добавлен полученный сертификат. Если контакт до этого содержал
сертификат, новый сертификат станет использоваться по умолчанию.

Отправка шифрованных сообщений

Для создания и отправки
шифрованного сообщения нажмите кнопку Создать  или выберите пункт меню Файл,
Создать, Сообщение
.

Выберите получателя сообщения
(поле Кому) и введите тему сообщения. Если письмо будет содержать
некоторые файлы, добавьте их в письмо, используя кнопку  Вложить файл. Для
отправки сообщения в подписанном виде нажмите кнопку .

После того, как сообщение
подготовлено к отправке, нажмите кнопку  Отправить.

При попытке зашифровать письмо
на открытом ключе владельца отозванного сертификата, появится следующее
предупреждение.

Проверка сертификата на отзыв

Для контроля проверки
сертификатов на отзыв выполните следующие действия. Откройте полученное
подписанное письмо. Нажмите кнопку  – признак подписанного сообщения.

Нажмите кнопку Сведения.
Если сертификат действительный и не был отозван, то откроется окно, подобное
этому:

А если открывшееся окно
подобно следующему, то СОС не установлен, либо срок его действия истек.
Обновите СОС, хранящийся в локальном справочнике сертификатов, с использованием
доступных средств.

Если же СОС обновлен, а письмо
подписано отозванным сертификатом, то при нажатии кнопки  появится следующее
предупреждение:

Нажмите кнопку Сведения
для просмотра сведений о сертификате:

Контрольные
вопросы

1.     Что называется
провайдером криптографического обслуживания?

2.     На каких принципах
строится взаимодействие прикладной программы и криптопровайдера?

3.     Как обеспечиваются
в операционной системе аутентичность и целостность криптопровайдера?

4.     Что хранится в
контейнере ключей пользователя при работе с криптопровайдером?

5.     Как создаются в
CryptoAPI сеансовые ключи шифрования?

6.     Как может быть осуществлен
обмен ключами шифрования в CryptoAPI?

7.     Какие функции
CryptoAPI предназначены для шифрования и расшифрования данных?

8.     Что должно
сохраняться вместе с зашифрованным файлом?

9.     Как изменить режим
шифрования при использовании функций CryptoAPI?

10. Какие функции CryptoAPI
используются для получения и проверки электронной цифровой подписи?

11.
Каков
порядок вызова функций CryptoAPI при получении ЭЦП?

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

Скачано с www.znanio.ru


Подборка по базе: Белобородов Курсовая работа.docx, курсовая работа.docx, Лабораторная работа.docx, кр работа по психологии.docx, контрольная работа.docx, Практическая работа по МДК 04.docx, Налоги и налогообложение практическая работа.docx, Лабораторная работа № 3.docx, Свердлова Е. гр. ПСХбвд-1902д, курсовая работа.docx, Лабораторная работа № 2.docx


Лабораторная работа №3

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

Содержание задания

  1. В программу, разработанную при выполнении лабораторной работы № 1, добавить средства защиты от несанкционированного доступа к файлу с учетными данными зарегистрированных пользователей.
  2. Файл с учетными данными должен быть зашифрован при помощи функций криптографического интерфейса операционной системы Windows (CryptoAPI) с использованием сеансового ключа, генерируемого на основе вводимой администратором (пользователем) парольной фразы.
  3. При запуске программы файл с учетными данными должен расшифровываться во временный файл (или в файл в оперативной памяти), который после завершения работы программы должен быть снова зашифрован для отражения возможных изменений в учетных записях пользователей. «Старое» содержимое файла учетных записей при этом стирается.
  4. После ввода парольной фразы при запуске программы, генерации ключа расшифрования и расшифрования файла с учетными данными зарегистрированных пользователей правильность введенной парольной фразы определяется по наличию в расшифрованном файле учетной записи администратора программы.
  5. При вводе неправильной парольной фразы или отказе от ее ввода работа программы должна завершаться с выдачей соответствующего сообщения.
  6. Временный файл на диске с расшифрованными учетными данными после завершения работы программы удаляется.
  7. Варианты использования алгоритмов шифрования и хеширования выбираются в соответствии с выданным преподавателем заданием.
  8. Для доступа к функциям CryptoAPI из программ на Паскале следует использовать интерфейсный модуль wincrypt.pas с указанного преподавателем сетевого диска.

Индивидуальные варианты заданий

Тип симметричного шифрования

Используемый режим шифрования

Добавление к ключу случайного значения Используемый алгоритм хеширования
1 2 3 4 5
1 Блочный Электронная кодовая книга Да MD2
2 Потоковый Да MD2
3 Блочный Сцепление блоков шифра Да MD2
4 Потоковый Да MD5
5 Блочный Обратная связь по шифротексту Да MD2
6 Потоковый Да SHA
7 Блочный Электронная кодовая книга Да MD4
1 2 3 4 5
8 Потоковый Нет MD2
9 Блочный Сцепление блоков шифра Да MD4
10 Потоковый Нет MD5
11 Блочный Обратная связь по шифротексту Да MD4
12 Потоковый Нет SHA
13 Блочный Электронная кодовая книга Да MD5
14 Блочный Сцепление блоков шифра Да MD5
15 Блочный Обратная связь по шифротексту Да MD5
16 Блочный Электронная кодовая книга Да SHA
17 Блочный Сцепление блоков шифра Да SHA
18 Блочный Обратная связь по шифротексту Да SHA
19 Блочный Электронная кодовая книга Нет MD2
20 Блочный Сцепление блоков шифра Нет MD2
21 Блочный Обратная связь по шифротексту Нет MD2
22 Блочный Электронная кодовая книга Нет MD4
23 Блочный Сцепление блоков шифра Нет MD4
24 Блочный Обратная связь по шифротексту Нет MD4
25 Блочный Электронная кодовая книга Нет MD5
26 Блочный Сцепление блоков шифра Нет MD5
27 Блочный Обратная связь по шифротексту Нет MD5
28 Блочный Электронная кодовая книга Нет SHA
29 Блочный Сцепление блоков шифра Нет SHA
30 Блочный Обратная связь по шифротексту Нет SHA

Возможный вид дополнительной диалоговой формы программы

Окно запроса парольной фразы для расшифровки файла с учетными данными

Может быть создано на основе шаблона Password Dialog, выбираемого с помощью команды File | New | Dialogs систем программирования Borland Delphi или Borland C++ Builder. Для повышения безопасности эта форма должна быть исключена из списка автоматически создаваемых форм проекта (команда Project | Options | Forms) и создаваться (уничтожаться) в программе явным образом. В указаниях по выполнению лабораторных работ эта форма имеет имя Form6.

Рекомендуемые для разработки программы средства языка Object Pascal

  1. Нетипизированный файл для операций шифрования (расшифрования) файла учетных записей:

Var Имя_файловой_переменной:File;

Для повышения безопасности расшифрованный файл учетных записей может временно сохраняться в объекте класса TMemoryStream

  1. Работа с нетипизированным файлом:

procedure AssignFile(var F: File; FileName: string); { «связывание» файловой переменной F с файлом под именем FileName }

procedure Reset(var F : File; RecSize: Word ); { открытие существующего файла F с длиной записи RecSize (рекомендуется 1) }

procedure Rewrite(var F: File ; RecSize: Word); { создание нового файла F с длиной записи RecSize (рекомендуется 1) }

procedure BlockRead(var F: File; var Buf; Count: Integer; var AmtTransferred: Integer); { чтение Count записей из файла F в переменную Buf (в переменную AmtTransferred помещается фактическое количество прочитанных записей) }

procedure BlockWrite(var f: File; var Buf; Count: Integer ); { запись Count записей из переменной Buf в файл F }

function DeleteFile(const FileName: string): Boolean; { удаление файла с именем FileName }

procedure CloseFile(var F: File); // закрытие файла

function Eof(var F: File): Boolean; // проверка достижения конца файла

  1. Работа с файлом в оперативной памяти (свойства и методы класса TMemoryStream):

Position:Integer // смещение текущей позиции в байтах

Size:Integer // размер в байтах

function Read(Buffer:Pointer; Count:Integer):Integer; { чтение Count байт в буфер Buffer (результат – фактическое количество прочитанных байт) }

function Write(const Buffer: Pointer; Count: Integer):Integer; { запись Count байт из буфера Buffer }

function Seek(Offset:Integer; Origin: Word):Integer; { смещение текущей позиции на Offset байт относительно Origin: начала потока soFromBeginning, текущей позиции soFromCurrent, конца потока soFromEnd }

  1. Шифрование (расшифрование) файла:

THandle – тип данных для дескрипторов криптопровайдера, криптографического ключа, хеш-объекта

ALG_ID – тип данных для кодов криптографических алгоритмов

function CryptAcquireContext(var hProv: THandle; pszContainer, pszProvider: PChar;

dwProvType, dwFlags: Longint): Longbool; { инициализация криптопровайдера (в hProv записывается его дескриптор, pszContainer=Nil, pszProvider=Nil, dwProvType= PROV_RSA_FULL, dwFlags=0) или (когда при первом запуске программы CryptAcquireContext возвращает false) регистрация нового пользователя в криптопровайдере (dwFlags= CRYPT_NEWKEYSET) }

function CryptCreateHash(hProv: THandle; Algid: ALG_ID; hKey: THandle; dwFlags: Longint; var hHash: THandle): Longbool; { создание пустого хеш-объекта (Algid – код алгоритма хеширования, hKey=0, dwFlags=0, в hHash записывается дескриптор хеш-объекта) }

function CryptHashData(hHash: THandle; pbData: Pointer; dwDataLen, dwFlags: Longint): Longbool; { хеширование парольной фразы (или произвольных данных) pbData длины dwDataLen (dwFlags=0) }

function CryptDestroyHash(hHash: THandle): Longbool; // разрушение хеш-объекта

function CryptDeriveKey(hProv: THandle; Algid: ALG_ID; hBaseData: THandle; dwFlags: Longint; var hKey: THandle): Longbool; { создание ключа шифрования из хеш-объекта с парольной фразой hBaseData (Algid – код алгоритма шифрования, dwFlags= CRYPT_EXPORTABLE с возможным объединением через or с признаком добавления к ключу случайного значения CRYPT_CREATE_SALT, в hKey записывается дескриптор ключа) }

function CryptDestroyKey(hKey: THandle): Longbool; { разрушение ключа шифрования }

function CryptReleaseContext(hProv: THandle; dwFlags: Longint):Longbool; { освобождение криптопровайдера }

function CryptEncrypt(hKey, hHash: THandle; Final: Longbool; dwFlags: Longint; pbData: Pointer; var dwDataLen: Longint; dwBufLen: Longint):Longbool; { шифрование порции данных из буфера pbData длины dwBufLen, которая для блочных шифров должна быть кратной 8 (dwDataLen – длина порции данных, после выполнения функции в эту переменную записывается фактическая длина зашифрованных данных; hHash=0, dwFlags=0, Final – признак последней порции данных) }

function CryptDecrypt(hKey, hHash: THandle; Final: Longbool; dwFlags: Longint;

pbData: Pointer; var dwDataLen: Longint):Longbool; { расшифрование порции данных из буфера pbData (dwDataLen – длина порции данных, после выполнения функции в эту переменную записывается фактическая длина расшифрованных данных; hHash=0, dwFlags=0, Final – признак последней порции данных) }

function CryptSetKeyParam(hKey: THandle; dwParam: Longint; pbData: Pointer; dwFlags: Longint): Longbool; { установка режима шифрования для ключа hKey (dwParam= KP_MODE, pbData указывает на переменную типа Longint, в которой записан код устанавливаемого режима, dwFlags=0) }

Рекомендуемые для разработки программы средства языка Си++

  1. Класс fstream для операций шифрования (расшифрования) файла учетных записей пользователей:

fstream имя_файловой_переменной;

Для повышения безопасности расшифрованный файл учетных записей может временно сохраняться в объекте класса TMemoryStream (система Borland C++ Builder) или CMemFile (система Microsoft Visual C++).

  1. Работа с файлом:

void open(const char *FileName, ios::in | ios::binary); /* открытие существующего файла под именем FileName для чтения */

void open(const char *FileName,ios::out|ios::binary); /* создание нового файла с именем FileName */

istream& read(char *buf, int n); // чтение данных в буфер buf длины n

int gcount(); /* количество байт, фактически прочитанных во время последней операции */

ostream& write(const char *buf,int n); // запись данных из буфера buf длины n

void close(); // закрытие файла

bool eof(); // проверка достижения конца файла

int remove(const char *filename); // удаление файла с именем filename

  1. Работа с файлом в оперативной памяти:

Свойства и методы класса TMemoryStream

int Position // смещение текущей позиции в байтах

int Size // размер в байтах

int Read(void *Buffer, int Count); /* чтение Count байт в буфер Buffer (результат – фактическое количество прочитанных байт) */

int Write(const void *Buffer, int Count); // запись Count байт из буфера Buffer

int Seek(int Offset, Word Origin); /* смещение текущей позиции на Offset байт относительно Origin: начала потока soFromBeginning, текущей позиции soFromCurrent, конца потока soFromEnd */

Методы класса CMemFile

UINT Read(void *lpBuf,UINT nCount); /* чтение nCount байт в буфер lpBuf (результат – фактическое количество прочитанных байт) */

void Write(const void *lpBuf,UINT nCount); // запись nCount байт из буфера lpBuf

LONG Seek(Long lOff,UINT nFrom); /* смещение текущей позиции на lOff байт относительно nFrom: начала файла CFile::begin, текущей позиции CFile::current, конца файла CFile::end */

DWORD GetLength(); // длина файла в байтах

DWORD GetPosition(); // текущая позиция файла

  1. Шифрование (расшифрование) файла:

HCRYPTPROV, HCRYPTKEY, HCRYPTHASH – типы данных для дескрипторов криптопровайдера, криптографического ключа, хеш-объекта

ALG_ID – тип данных для кодов криптографических алгоритмов

BOOL CryptAcquireContext(HCRYPTPROV *phProv, LPCSTR pszContainer,

LPCSTR pszProvider, DWORD dwProvType, DWORD dwFlags); /* инициализация криптопровайдера (в *phProv записывается его дескриптор, pszContainer=NULL, pszProvider=NULL, dwProvType= PROV_RSA_FULL, dwFlags=0) или (когда при первом запуске программы CryptAcquireContext возвращает FALSE) регистрация нового пользователя в криптопровайдере (dwFlags= CRYPT_NEWKEYSET) */

BOOL CryptCreateHash(HCRYPTPROV hProv, ALG_ID Algid, HCRYPTKEY hKey,

DWORD dwFlags, HCRYPTHASH *phHash); /* создание пустого хеш-объекта (Algid – код алгоритма хеширования, hKey=0, dwFlags=0, в *phHash записывается дескриптор хеш-объекта) */

BOOL CryptHashData(HCRYPTHASH hHash, CONST BYTE *pbData, DWORD dwDataLen, DWORD dwFlags); /* хеширование парольной фразы (или любых других данных) pbData длины dwDataLen (dwFlags=0) */

BOOL CryptDestroyHash(HCRYPTHASH hHash); // разрушение хеш-объекта

BOOL CryptDeriveKey(HCRYPTPROV hProv, ALG_ID Algid, HCRYPTHASH hBaseData, DWORD dwFlags, HCRYPTKEY *phKey); /* создание ключа шифрования из хеш-объекта с парольной фразой hBaseData (Algid – код алгоритма шифрования, dwFlags=CRYPT_EXPORTABLE с возможным объединением через or с признаком добавления к ключу случайного значения CRYPT_CREATE_SALT, в *phKey записывается дескриптор ключа) */

BOOL CryptDestroyKey(HCRYPTKEY hKey); // разрушение ключа шифрования

BOOL CryptReleaseContext(HCRYPTPROV hProv, DWORD dwFlags); /* освобождение криптопровайдера */

BOOL CryptEncrypt(HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final,

DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen, DWORD dwBufLen); /* шифрование порции данных из буфера pbData длины dwBufLen, которая для блочных шифров должна быть кратной 8 (dwDataLen – длина порции данных, после выполнения функции в эту переменную записывается фактическая длина зашифрованных данных; hHash=0, dwFlags=0, Final – признак последней порции данных) */

BOOL CryptDecrypt(HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final,

DWORD dwFlags,BYTE *pbData,DWORD *pdwDataLen); /* расшифрование порции данных из буфера pbData (dwDataLen – длина порции данных, после выполнения функции в эту переменную записывается фактическая длина расшифрованных данных; hHash=0, dwFlags=0, Final – признак последней порции данных) */

BOOL CryptSetKeyParam(HCRYPTKEY hKey,DWORD dwParam,BYTE *pbData,

DWORD dwFlags); /* установка режима шифрования для ключа hKey (dwParam= KP_MODE, pbData указывает на переменную типа unsigned long, в которой записан код устанавливаемого режима, dwFlags=0) */

MicrosoftVisualC++.

Требуется подключение файла wincrypt.h (например, в автоматически создаваемом файле stdafx.h при использовании конструктора приложений AppWizard).

Криптографические многокомпонентные объекты библиотеки CAPICOM (для использования в языках интерпретируемого типа)

Для использования объектов CAPICOM на компьютере должна быть установлена библиотека CAPICOM.dll, а COM-объекты из этой библиотеке должны быть зарегистрированы в системном реестре Windows. Библиотека CAPICOM.dll поставляется вместе с операционной системой Windows, начиная с версии Windows XP. Для использования этой библиотеки с другими версиями Windows она может быть загружена с Web-сайта корпорации Microsoft (URL http://www.microsoft.com/msdownload/ platformsdk/sdkupdate/psdkredist.htm).

После загрузки библиотеки CAPICOM.dll находящиеся в ней COM-объекты необходимо зарегистрировать в реестре, введя в командной строке следующую команду (после изменения текущего каталога на тот, в котором записан файл CAPICOM.dll):

regsvr32 CAPICOM.dll

Если библиотека объектов CAPICOM установлена на компьютере и успешно загружена, то перед использованием в программе (сценарии) любого из объектов этой библиотеки необходимо получить ссылку на объект. Для этого потребуется определить соответствующую переменную и вызвать функцию для задания этой переменной нужного значения, например:

´ языксценариев Visual Basic Scripting Edition,

´ язык программирования VisualBasic

´ определение переменной

dim hash

´ получение ссылки на объект

set hash=CreateObject(«CAPICOM.HashedData.1»)

// язык сценариев JavaScript

// определение переменной и получение ссылки на объект

var MyStore = new ActiveXObject(«CAPICOM.Store»);

При получении ссылки на объект указываются (разделенные точкой) имя приложения или библиотеки, поставляющей этот объект (CAPICOM), имя объекта (в примерах HashedData и Store) и, возможно, номер версии библиотеки CAPICOM.

Объект EncryptedData предназначен для шифрования и расшифрования данных на сеансовом ключе, генерируемом из секретной парольной фразы или других секретных данных. Этот объект имеет методы SetSecret (установка секретной парольной фразы), Encrypt (шифрование и кодирование данных) и Decrypt (декодирование и расшифрование данных), а также свойства Content (строка с шифруемым открытым текстом) и Algorithm (ссылка на объект с характеристиками используемого алгоритма симметричного шифрования).

Метод SetSecret может принимать до двух параметров – строку с секретными данными, которые будут использоваться для генерации сеансового ключа, и код вида устанавливаемого секрета (по умолчанию 0, т.е. секретом является парольная фраза). Этот метод должен вызываться как перед шифрованием, так и перед расшифрованием, чтобы установить один и тот же секрет.

Метод Encrypt создает сеансовый ключ из ранее установленного секрета, зашифровывает с помощью этого ключа содержимое свойства Content и возвращает строку с закодированным шифротекстом. Единственным параметром этого метода может быть тип кодировки шифротекста (по умолчанию используется значение 0, т.е. CRYPT_STRING_BASE64, а другим возможным значением является 1, при котором шифротекст сохраняется в двоичном виде).

Метод Decrypt имеет единственный параметр – строку с шифротекстом – и после своего успешного выполнения записывает в свойство Content строку с расшифрованными данными. Для расшифрования используется сеансовый ключ, генерируемый из ранее установленного секрета. Объект Algorithm, ссылка на который может быть получена с помощью одноименного свойства объекта EncryptedData, имеет свойства KeyLength (код длины ключа симметричного шифрования: 0 – максимально возможная для данного алгоритма, 1 – 40 бит, 2 – 56 бит, 3 – 128 бит, 4 – 192 бита, 5 – 256 бит) и Name (код алгоритма шифрования: 0 – RC2, 1 – RC4, 2 – DES, 3 – 3-DES, 4 – AES). Для алгоритмов DES и 3-DES длина ключа является стандартной и не может быть изменена. При изменении значения свойства Name состояние объекта Algorithm сбрасывается.

Криптографические классы библиотеки Framework Class Library для использования в приложениях на платформе .Net

Класс System.Security.Cryptography.RC2CryptoServiceProvider – реализация алгоритма симметричного шифрования RC2.

Свойство CipherMode Mode – режим шифрования.

Свойство unsigned char Key – криптографический ключ.

Свойство int KeySize – длина ключа в битах.

Свойство unsigned char IV – начальный вектор.

Метод ICryptoTransform* CreateEncryptor(unsigned char

rgbKey [], unsigned char rgbIV []) – создание объекта для шифрования с ключом rgbKey и начальным вектором rgbIV.

Метод ICryptoTransform* CreateDecryptor(unsigned char rgbKey [], unsigned char rgbIV []) − создание объекта для расшифрования с ключом rgbKey и начальным вектором rgbIV.

Класс.System.Security.Cryptography.CryptoStream – поток данных для шифрования и расшифрования.

Конструктор CryptoStream(Stream* stream, ICryptoTransform* transform, CryptoStreamMode mode) – создание криптографического потока для потока streamи криптографического объекта transform в режиме чтения (mode=CryptoStreamMode::Read) или записи (mode=CryptoStreamMode::Write).

Метод void Write(unsigned char buffer [], int offset, int count) – запись данных длиной count из буфера bufferсо смещением offset.

Метод int Read(unsigned char buffer [], int offset, int count) – чтение данных в буфер bufferмаксимальной длины count со смещением offset.

Классы System.Security.Cryptography.MD5CryptoServiceProvider и System.Security.Cryptography.SHA1CryptoServiceProvider – реализации функций хеширования MD5 и SHA1.

Свойство int HashSize – длина хеш-значения в битах.

Метод unsigned char ComputeHash(unsigned char buffer []) [] – хеширование данных из буфера buffer.

Класс System.Random – генератор псевдослучайных чисел.

Конструктор Random() – инициализация генератора случайным значением

Метод void NextBytes(array

^ buffer) – получение случайного числа в буфере buffer.КлассSystem.Security.Cryptography.RNGCryptoServiceProvider – генератор псевдослучайных чисел, реализованный в криптопровайдере.

Метод void GetBytes(array

^ data) – получение случайного числа в буфере data.Класс FileStream – поток байт, связанный с файлом

Конструктор FileStream(String* path, FileMode mode) – создание потока, связанного с файлом path, открывающемся в режиме mode (Append, Create, Open или OpenOrCreate).

Свойство __int64 Length – длина потока в байтах.

Свойство __int64 Position – текущая позиция потока.

Метод int Read(unsigned char array [], int offset, int count) – чтение данных из потока.

Метод void Write(unsigned char array [], int offset, int count) запись данных в поток.

Метод __int64 Seek(__int64 offset, SeekOrigin origin) – перемещение текущей позиции потока на offset байт относительно origin (Begin, Current, End).

Метод void Close() – закрытие файла, связанного с потоком.

Класс System.IO.MemoryStream – поток байт, связанный с оперативной памятью.

Свойство long long Length – длина потока в байтах.

Свойство long long Position – текущая позиция потока.

Метод int Read(array

^ array, int offset, int count) – чтение данных из потока.

Метод void Write(array

^ array, int offset, int count) запись данных в поток.

Метод long long Seek(long long offset, SeekOrigin origin) – перемещение текущей позиции потока на offset байт относительно origin (Begin, Current, End).

Метод void Close() – закрытие потока и освобождение его ресурсов.

Класс System.Security.Cryptography.Rfc2898DeriveBytes – криптографический ключ, основанный на парольной фразе, хешируемой по алгоритму SHA1.

Конструктор Rfc2898DeriveBytes(String^ password, array

^ salt) – создание экземпляра класса на основе парольной фразы password и случайного значения (примеси) salt длиной 8 байт или более.

Конструктор Rfc2898DeriveBytes(String^ password, int saltSize) − создание экземпляра класса на основе парольной фразы password и задаваемой длины примеси saltSize.

Свойство array

^ Salt – значение примеси.

Метод array

^ GetBytes(int cb) – получение ключа длиной cb байт.Класс System.Security.Cryptography.PasswordDeriveBytesкриптографический ключ, основанный на парольной фразе.

Конструктор PasswordDeriveBytes(String^ strPassword, array

^ rgbSalt) − создание экземпляра класса на основе парольной фразы strPassword и случайного значения (примеси) rgbSalt.

Конструктор PasswordDeriveBytes(String^ strPassword, array

^ rgbSalt, String^ strHashName, int iterations) − создание экземпляра класса на основе парольной фразы strPassword и случайного значения (примеси) rgbSalt с использованием функции хеширования strHashName и количества итераций iterations.

Свойство String^ HashName – имя функции хеширования.

Свойство array

^ Salt – значение примеси.

Метод array

^ CryptDeriveKey(String^ algname, String^ alghashname, int keySize, array^ rgbIV) – получение ключа длиной keySize бит (если указан 0, то используется длина ключа по умолчанию для заданного алгоритма) для алгоритма algname с помощью функции хеширования alghashname и начального вектора rgbIV.

Метод array

^ GetBytes(int cb) – получение ключа длиной cb байт.

3. Клейнрок Л. Вычислительные системы с очередями: Пер. с англ. /Под ред. Б. С. Цыбакова. — М.: Мир, 1979. — 600 с.

4. Рыжиков Ю. И. Имитационное моделирование. Теория и технологии. — СПб.: КОРОНАпринт;М.:Альтекс-А. 2004. — 384с.

5. Задорожный В. Н. Статистическое моделирование: Учеб. пособие. — Омск: Изд-во ОмГТУ, 1996. — 92с.

6. Вишневский В.М., Пороцкий С.М. Моделирование ведомственных систем электронной почты//АиТ. 1996.№ 12.С. 48-57.

7. Кутузов О. И., Задорожный В. Н. Аналитико-статисти-ческий метод для расчета высоконадежных систем связи // Техника средств связи. Техника проводной связи. — 1990.-Вып. 1:С. 121-130.

8. Rubinstein R. У. Sensitivity analysis of computer simulation models via the efficient score // Oper. Res. 1989, V. 37. P. 72-81

9. Johnson M. E., Jackson J. Infinitesimal Perturbation Analysis: a Tool for Simulation. //J. of the Operational Res. Soc. — 1989. -v. 40. no. 3. — P. 134-160.

10. Sun R, Zazanis M. Perturbation Analysis Gives Strongly Consistent Sensitivity Estimates for the M|G|l Queue. // Mgmt Science. — 1988. — v. 34. — P. 39-64.

11. Коваленко И. H., Кузнецов Н. Ю. Методы расчета высоконадежных систем. — М.: Радио и связь, 1988,- 176 с.

12. Иглхарт Д. Л., Шедлер Д. С. Регенеративное моделирование сетей массового обслуживания: Пер. с англ. /Под ред. В.В. Калашникова. — М.: Радио и связь, 1984,- 136 с.

13. Кле йнен Дж. Статистические методы в имитационном моделировании: Пер. с англ /Под ред. Ю. П. Адлера и В. Н. Варыгина. — М.:Статистика, 1978 — Вып. 1.-221с., Вып. 2 — 335с.

14. Учебное пособие по GPSS World. /Переводе английского. — Казань: Изд-во «Мастер Дайн», 2002. — 272 с.

15. Руководство пользователя по GPSS World. /Перевод с английского. — Казань: Иэд-во «Мастер Лайн», 2002. — 384 с.

16. Задорожный В Н., Мызнмкова Т. А. Рекурсивный анализ чувствительности для метода Байцера. //Деп. в ВИНИТИ, N»5490 — В88. — 1988. — 29 с

17. Пуртов А. М. Анализ производительности сстей ЭВМ на графах и имитационных моделях.: Автореф. дисс на соиск. учен, степени канд. техн. наук (05.13.16)./ Науч рук. В. А. Шап-цев — Омск: ИИТПМ СО РАН, 1995. — 17с.

ЗАДОРОЖНЫЙ Владимир Николаевич, кандидат техн. наук, доцент.

ЕРШОВ Евгений Сергеевич, аспирант.

КАНЕВА Ольга Николаевна, кандидат физ.-мат. наук,

ст. преподаватель.

Дата поступления статьи в редакцию: 01.09.2006 г. © Задорожный В.Н., Ершов Е.С., Канева О.Н.

.В. нопин,

В.Г. ШАХОВ

Омский государственный технический университет. Омский государственный университет путей сообщения

уда Э1У.6В

ИСПОЛЬЗОВАНИЕ

КРИПТОГРАФИЧЕСКИХ ИНТЕРФЕЙСОВ ОПЕРАЦИОННОЙ СИСТЕМЫ WINDOWS ПРИ РАЗРАБОТКЕ СИСТЕМ IP-ТЕЛЕФОНИИ, ЗАЩИЩЕННЫХ ОТ НЕСАНКЦИОНИРОВАННОГО ДОСТУПА

В статье рассматриваются возможности использования криптографических интерфейсов встроенных в операционную систему (ОС) Windows при разработке систем защиты информации от несанкционированного доступа (НСД).

С развитием современных информационных и телекоммуникационных технологий все большее распространение получают компьютерные сети. Увеличение производительности стандартных персональных компьютеров позволяет эффективно обрабатывать потоки аудио информации реальном масштабе времени, а пропускная способность сетей становится достаточной для передачи больших объемов данных с высокой скоростью. Стремительный рост масштабов сетей, как локальных, так и глобальных, по пропускной способности и по числу пользователей приводит к

большому росту интереса к подобного рода услугам. По мнению аналитиков западной консалтинговой компании IDC [7], государства Европы вступают в эру IP-телефонии, Анализ состояния этого сегмента телекоммуникационного рынка свидетельствуют о более чем пятикратном увеличении измеренного в минутах VoIP-трафика в 2005 году по сравнению с предыдущим. Ожидается, что в 2006 году трафик возрастет еще в три раза. Возможность потенциальной экономии делает IP-телефонию более привлекательной как для крупных компаний, так и для частных домохозяйств. По прогнозам

Омгйчлядо 1гД| rfw нвл^яможко хю mewriw 14 pu л»»п»ря>ивчм1а«Е>ЕИг’С(Ш|- IMC

DI/5^FO[Sr;EOJBEUDIJ£i.ED.EDn E5

Рис. 1. Главное окно программы CrlptoProjecl

исследовательской фирмы Forrester Research |6] пол.-ный переход отрасли связи европейских стран на технологию IP займет 14-15 лет и завершится примерно в 2020 г. Использование открытых IP-сетей для передачи конфиденциальных данных предъявляет особые требования для защиты этой информации.

Современные IBM-совместимые компьютеры, как правило, обладают аппаратной возможностью вводить-выводить звук с помощью стандартной звуковой карты [3]. Во всех версиях ОС Windows (начиная с Windows NT4.0) присутствует специальный интерфейс, предназначенный для работы со звуком DirectSound, который является составной частью пакета DirectX. Интерфейс позволяет воспроизводить, записывать звук, создавать трехмерные эффекты при воспроизведении звуковых данных. Кроме DirectSound во всех версиях ОС Windows (начиная с Windows 95) присутствует специальный интерфейс, предназначенный для преобразования форматов звуковых данных. Он называется (ACM) Audio Compression Manager (диспетчер сжатия звука) [2]. Интерфейс позволяет изменять частоту, разрядность, количество каналов, а также тип сжатия звуковых данных (format tag). ACM включает в себя набор кодеков, выполняющих необходимые преобразования. Кодеки, компрессоры/декомпрессоры, представляют собой исполняемые файлы с расширением ‘.аст. Они находятся в системной папке C:Windowssystem. При достаточной мощности процессора преобразование может выполняться в реальном времени и использоваться для построения систем IP телефонии на основе ОС Windows [4].

Современные операционные системы Microsoft (Windows 2000, Windows 2003, Windows XP, Windows ME) содержат множество криптографических под-

систем различного назначения как прикладного уровня, так и уровня ядра, и ключевую роль в реализации этих подсистем играет интерфейс Microsoft Cryptographic Application Programming Interface (CryptoAPI) [5]. На уровне ядра системы базовые криптографические преобразования (шифрование, хеширование, цифровая подпись и несимметричный обмен ключами) происходят непосредственно в драйверах, реализующих основные подсистемы ОС Windows. Такие драйверы называются криптопро-вай-дерами. Криптопровайдеры имеют стандартный набор функций, который состоит из 23 обязательных и 2 необязательных процедур. Функции CryptoAPI в таких случаях используются для вспомогательных операций на прикладном уровне. Набор базовых криптографических функций называют также интерфейсом CryptoAPI версии 1.0. Кроме стандартных (входящих в поставку ОС Windows) крип-топровайдеров система позволяет установить дополнительные криптопровайдеры (разработанные сторонними разработчиками), что придает ей гибкость. В качестве примера можно привести криптоп-ровайдёр Signal-COM CSP (Сертификат ФСБ России СФ/1 14-0868 от 23.04.2006 г.) компании «Сигнал-КОМ», который реализует сертифицированные российские криптографические алгоритмы и обеспечивает к ним доступ из пользовательских приложений через стандартный криптографический интерфейс компании Microsoft — CryptoAPI.

Оцифровка звука, компрессия / декомпрессия, базовые криптографические функции, реализация сетевых протоколов TCP/IP, UDP и воспроизведение звука на уровне функций и процедур управляются с помощью средств application programming interface (API) ОС Windows. Современные среды программирования С+ -(-Builder, Delphi, Visual С + +, и др. обладают возможностью использования интерфейса API, DirectSound, ACM, CriptoAPI [1,2,4,5] и, соответственно, могут применяться для создания программ ввода, компрессии/декомпрессии, воспроизведения звука, криптографического преобразования и передачи потока сжатой зашифрованной речи по IP сети.

Целью исследования явился анализ возможностей применения интерфейсов CriptoAPI ОС Windows для шифрации/дешифрации и цифрового подписывания информации при разработке программного обеспечения для передачи речи в защищенном режиме через IP сети.

Криптографические средства криптопровайдера Microsoft Enhanced RSA and AES Cryptographic Provider

Таблица 1

Имя провайдера: Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)

Версия провайдера; 2.0

Тип провайдера: 24

Идентификатор Тип криптоалгоритма Длина ключа (бит) Имя криптоалгоритма

Текущая Мах Min

6602h Шифрование 128 128 40 RSA Data Security’s RC2

6801 h Шифрование 128 128 40 RSA Data Security’s RC4

6601 h Шифрование 56 56 56 Data Encryption Standard (DES)

6609h Шифрование 112 112 112 Two Key Triple DES

6603h Шифрование 168 168 168 Three Key Triple DES

8004h Хэш 160 160 160 Secure Hash Algorithm (SHA-1)

8001 h Хэш 128 128 128 Message Digest 2 (MD2)

8002h Хэш 128 128 128 Message Digest 4 (MD4)

8003h Хэш 128 128 128 Message Digest 5 (MD5)

8008h Хэш 288 288 288 SSL3 SHAMD5

8005h Хэш 0 0 0 Message Authentication Code

2400h Подпись 1024 16384 384 RSA Signature

a400h Обмен 1024 16384 384 RSA Key Exchange

8009h Хэш 0 0 0 Hugo’s MAC (HMAC)

Таблица 2

Криптопровайдеры ОС Windows

Имя провайдера: Тип провайдера: Количество поддерживаемых крипто-алгоритмов

Gemplus GemSAFE Card CSP v 1.0 RSA Full (Signature and Key Exchange) 14

Infineon SICRYPT Base Smart Card CSP RSA Full (Signature and Key Exchange) 14

Megasoft Co., Ltd. GOST with Diffie-Hellman Cryptographic Service Provider PROVFORTEZZA 3

Microsoft Base Cryptographic Provider vl 0 RSA Full (Signature and Key Exchange) 12

Microsoft Base DSS and Diffie-Hellman Cryptographic Provider DSS Signature with Diffie-Helman Key Exchange 9

Microsoft Base DSS Cryptographic Provider DSS Signature 3

Microsoft DH SChannel Cryptographic Provider Diffie-Hellman SChannel 16

Microsoft Enhanced Cryptographic Provider vl .0 RSA Full (Signature and Key Exchange) 14

Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider DSS Signature with Diffie-Helman Key Exchange 1 1

Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype) 24 17

Microsoft RSA SChannel Cryptographic Provider RSA SChannel 19

Microsoft Strong Cryptographic Provider RSA Full (Signature and Key Exchange) j 14

Schlumberger Cryptographic Service Provider RSA Full (Signature and Key Exchange) | 12

Для исследования возможностей интерфейсов С rip to API ОС Windows в среде С++ Builder 6.0(1,5] разработана программа CriptoProject (рис. 1).

Она функционирует следующим образом. Через интерфейсы CryptoAPI 1.0 содержащиеся в системной библиотеке Windowssystem32advapi32.dll программа последовательно вызывает все установленные в системе криптопровайдеры непосредственно выполняющих криптографические преобразования. У каждого крип-топро-вайдера запрашивается подробная информация о криптографических стандартах, которые он реализует. Полученные данные выводятся в текстовый редактор и могут быть сохранены в файл. Далее может быть выбран интересующий нас криптопровайдер и криптографический алгоритм криптопровайдера. После нажатия клавиш «Шифрация (тестовая)» указанным выше криптоалгоритмом выбранного криптопровайдера тестовое сообщение «Test» зашифровывается. Результат преобразования выводится на экран. Аналогично возможно обратное преобразование.

Исследование управления криптосистемами ОС Windows для использования при разработке систем IP-телефонии проводилось в следующем порядке:

На двух компьютерах с установленными ОС Windows ХР и Windows 2003 были запущены и протестированы копии указанных выше программ. Полученные результаты приведены в таблице 1 (для одного криптопровайдера). Общий обобщенный перечень криптопровайдеров и их возможностей приведен в таблице 2.

Анализ полученных данных о криптоалгоритмах встроенных в криптопровайдеры установленных в операционных системах Windows ХР и Windows 2003 показывает, что возможно их применение для разработки систем защищенных от несанкционированного доступа (в том числе систем IP-телефонии) с защитой информации на уровне интерфейсов прикладных программ семиуровневой модели OSI/ISO. Использование стандартных интерфейсов CriptoAPI и сертифицированных криптоалгоритмов и библиотек позволяет уже на уровне начального проектирования упростить общую разработку, тестирование и отладку криптосистем. На уровне эксплуатации упрощается обновление криптосистем и повышается надежность их работы за счет использования модульной структуры криптопровайдеров.

Апробация разработанной программы CriptoProject показала эффективность применения технологии CriptoAPI в управлении криптопровайдерами при криптопреобразованиях пакетов информации.

Результаты экспериментов показывают, что криптографические интерфейсы Microsoft и криптомодули установленные в ОС Windows могут успешно применяться на практике, как частными, так и корпоративными пользователями локальных сетей и отдельных рабочих станций. Сертифицированные ФСБ РФ криптомодули могут применятся в силовых ведомствах, в органах власти и управления.

Таким образом, разработанная программа CriptoProject, исходные коды к ней, технологии Microsoft CriptoAPI для криптопреобразований пакетов информации могут быть использованы при компьютерном моделировании защищенной от НСД передаче речевой информации по IP-каналам связи. С помощью программы можно исследовать эффективность реализации различных криптографических алгоритмов в составе различных криптопровайдеров. На практике технология Microsoft CriptoAPI, используемые алгоритмы управления криптопровайдерами могут применяться при разработке программного обеспечения для дуплексной передачи речи по 1Р-ка-налам связи в защищенном от НДС режиме.

Библиографический список

1. Архангельский, А.Я. С+ + Builder 6. Справочное пособие. Книга 1, Язык С+ + / А.Я. Архангельский — М,: Бином-Пресс, 2002. — 544 с.

2. Нопин, С,В. Использование возможностей операционной системы (ОС) Windows при разработке систем 1Р-телефо-нии / С.В. Нопин // Микроэлектроника и информатика — 2006. 13-я Всероссийская межвузовская научно-техническая конференция студентов и аспирантов: Тезисы докладов. М.: МИЭТ, 2006.404 с. — с.287.

3. Щербаков, А.Ю. Прикладная криптография. Использование и синтез криптографических интерфейсов /А.Ю. Щербаков, А.В. Домашев — М: Русская Редакциям, 2003. — 416 с.: ил.

4. RSA Laboratories. PKCS #5: Password-Based Cryptography Standard, Version 2.0, March 1999.

5. http://www.megasoft.ru

6. http://www.signal-com.nj

ШАХОВ Владимир Григорьевич, канд. техн. наук, профессор, Омский государственный университет путей сообщения.

НОПИН Сергей Владимирович, аспирант ОмГТУ.

Дата поступления статьи в редакцию: 08.06.2006 г. © Шахов В.Г., Нопин C.B.

Понравилась статья? Поделить с друзьями:
  • Использование флешки в качестве оперативной памяти windows 10
  • Использование флешки в качестве жесткого диска с windows
  • Использование физического диска в virtualbox windows
  • Использование удаленного рабочего стола для подключения к компьютеру с windows 10
  • Использование удаленного рабочего стола windows 10 домашняя