Библиотека процедур криптографической защиты информации: Руководство программиста

Страницы работы

Содержание работы

Библиотека процедур криптографической защиты информации

версия 2.01

Описание применения.

Руководство программиста

редакция 2

Киев  2000

СОДЕРЖАНИЕ

1 ОписанИЕ ПРИМЕНЕНИЯ................................................................................................................. 4

1.1 НАЗНАЧЕНИЕ............................................................................................................................................ 4

1.2 СОСТАВ БИБЛИОТЕКИ........................................................................................................................... 4

1.3  КОМПЛЕКТ  ПОСТАВКИ....................................................................................................................... 7

1.4 ТЕХНОЛОГИЯ ИСПОЛЬЗОВАНИЯ ПРОЦЕДУР КРИПТОГРАФИЧЕСКОЙ ЗАЩИТЫ............ 7

1.4.1 Технология использования процедур криптографической защиты в системах электронной почты............................................................................................................................................................. 7

1.4.2 Технология использования процедур криптографической защиты в системе «Клиент-Банк».............................................................................................................................................................. 8

1.4.3 Технология использования процедур криптографической защиты в системах автоматизации электронного документооборота.............................................................................. 9

2 РУКОВОДСТВО ПРОГРАММИСТА.................................................................................................. 11

2.1 ОПИСАНИЕ ПРОЦЕДУР КРИПТОГРАФИЧЕСКОЙ ЗАЩИТЫ.................................................... 11

2.1.1 Процедуры инициализации/деинициализации средств криптографической защиты.......... 11

2.1.2 Процедуры защиты данных при их обработке внутри прикладной системы и передаче между прикладными системами............................................................................................................ 11

2.1.3 Процедуры управления доступом к данным при их обработке внутри  прикладной системы...................................................................................................................................................... 15

2.1.4 Процедуры управления криптографическими ключами............................................................ 17

2.1.5 Вспомогательные процедуры......................................................................................................... 19

ПРИЛОЖЕНИЕ  1........................................................................................................................................ 21

Прототипы Процедур криптографической защиты для  языка C.................................................... 21

Приложение 2......................................................................................................................................... 24

Прототипы Процедур криптографической защиты для  языка PASCAL....................................... 24

Приложение 3......................................................................................................................................... 27

Коды возврата Процедур криптографической защиты..................................................................... 27


1 ОписанИЕ ПРИМЕНЕНИЯ

1.1 НАЗНАЧЕНИЕ

Библиотека процедур криптографической защиты информации содержит процедуры, предназначенные для обеспечения защиты информации от угроз целостности, конфиденциальности, а также разграничения доступа к информации с использованием механизмов криптографической защиты (электронная цифровая подпись, шифрование, выработка кодов аутентификации сообщений, имитовставок) путем встраивания в конкретные прикладные системы, функционирующие на IBM- совместимых компьютерах в операционных системах (ОС) Windows95/98/NT/2000, UNIX- совместимые.

1.2 СОСТАВ БИБЛИОТЕКИ

Входящие в состав библиотеки процедуры криптографической защиты информации реализуют:

·  шифрование/расшифрование данных по алгоритму, установленному ГОСТ 28147-89;

·  выработку/проверку имитовставки по алгоритму, установленному  ГОСТ 28147-89;

·  выработку/проверку электронной цифровой подписи (ЭЦП), по алгоритму, установленному ГОСТ 34.310-95,  34.311-95;

·  управление списками доступа к обьектам данных в виде файлов или массивов в оперативной памяти;

·  выработку  ключей шифрования  по  схеме Диффи-Хеллмана  (используется открытое распределение ключей в соответствии с требованиями ISO 11166-94).

Процедуры, функционально разделены на пять групп (рисунок 1):

·  инициализации/деинициализации средств криптографической защиты:

-  процедура инициализации средств криптографической защиты;

-  процедура деинициализации средств криптографической защиты;

·  защиты данных при их обработке внутри прикладной системы и передаче между прикладными системами:

-  процедура выработки ЭЦП массива данных в оперативной памяти;

-  процедура проверки ЭЦП массива данных в оперативной памяти;

-  процедура выработки ЭЦП файла данных с помещением ЭЦП в файл;

-  процедура проверки ЭЦП файла данных, помещенной при выработке в файл;

-  процедура выработки ЭЦП файла данных с помещением ЭЦП в массив в оперативной памяти;

-  процедура проверки ЭЦП файла данных, помещенной в массив в оперативной памяти;

-  процедура зашифрования с выработкой имитовставки массива данных в оперативной памяти;

-  процедура расшифрования с проверкой имитовставки массива данных в оперативной памяти;

-  процедура зашифрования с выработкой имитовставки файла данных;

-  процедура расшифрования с проверкой имитовставки файла данных;

·  управления доступом к данным при их обработке внутри  прикладной системы:

-  процедура зашифрования обьекта данных в виде файла с инициализацией списка управления доступом к обьекту;

 



-  процедура проверки полномочий доступа пользователя к обьекту данных в виде файла с расшифрованием обьекта данных пользователем, занесенным в список управления доступом к обьекту;

-  процедура зашифрования обьекта данных в виде массива в оперативной памяти с инициализацией списка управления доступом к обьекту;

-  процедура проверки полномочий доступа пользователя к обьекту данных в виде массива в оперативной памяти с расшифрованием обьекта данных пользователем, занесенным в список управления доступом к обьекту;

-  процедура занесения пользователя в список управления доступом к обьекту данных;

-  процедура удаления пользователя из списка управления доступом к обьекту данных;

·  управления криптографическими ключами:

-  процедура генерации секретного ключа (СК) и открытого ключа (ОК) ЭЦП пользователя;

-  процедура занесения ОК из файла в базу данных (БД) ОК;

-  процедура формирования файла ОК для ОК, хранящегося в БД ОК;

-  процедура формирования дампа ОК для ОК, хранящегося в БД ОК;

-  процедура формирования дампа ОК для ОК, хранящегося в файле;

-  процедура формирования дампа файла ОК;

-  процедура удаления ОК, хранящегося в БД ОК;

·  вспомогательные процедуры:

-  процедура получения списка организаций, ОК пользователей которых зарегистрированны в БД ОК;

-  процедура получения списка ОК пользователей данной организаций, зарегистрированных в БД ОК;

-  процедура получения информации об ОК пользователя, хранящемся в БД ОК;

-  процедура проверки лицензии рабочего места.

Скоростные характеристики программных средств, реализующих алгоритмы криптографических преобразований (для ПЭВМ на базе PentiumMMX/200 МГц):

·  выработка ЭЦП – 0.02 сек ;

·  проверка ЭЦП   – 0.047 сек ;

·  шифрование      – 1.4 Mбайт/сек;

·  хэширование     – 480 Кбайт/сек.

Скоростные характеристики выработки/проверки ЭЦП замерялись путем усреднения по времени результата многократного выполнения данных операций (длина ключа - 512бит), характеристики шифрования/расшифрования замерялись путем усреднения по времени результата многократного выполнения данных операций  для шифруемого блока данных обьемом 1 Кбайт.

Исполняемые коды процедур (для ОС Windows’95, 98, 2000,NT ) находятся в файле PCRWAN32.DLL.

Исполняемые коды процедур для UNIX- совместимых ОС находятся в файле PCRWAN.SO.

Прототипы процедур для  языка C описаны в Приложении 1, прототипы для языка Pascal описаны в Приложении 2, коды возврата описаны  в  Приложении 3.

1.3 КОМПЛЕКТ  ПОСТАВКИ

В стандартный комплект поставки входит файл исполняемых кодов процедур криптографической защиты для соответствующей ОС, лицензионный файл PLICENCE.DAT, файл криптографических параметров PQA.CSP, а также файл PWAN_RP.DOC, содержащий описание применения и руководство программиста.

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

Технология использования процедур криптографической защиты зависит от технологии обработки информации, реализованной в конкретной прикладной системе. В данном документе приведены варианты использования процедур криптографической защиты для прикладных систем трех типов: систем электронной почты, систем электронных платежей «Клиент-Банк» и систем автоматизации электронного документооборота.

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

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

При формировании сообщения для передачи корреспонденту:

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

2)  для передаваемого сообщения выполняется формирование ЭЦП отправителя с использованием процедур  PUTSIGNS или PUTSIGNF (в зависимости от вида представления сообщения);

3)  сформированное сообщение зашифровывается с использованием процедуры ENCRYPTS или ENCRYPTF и передается корреспонденту;

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

При приеме сообщения от корреспондента:

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

2)  выполняется расшифрование принятого сообщения с использованием процедур DECRYPTS или DECRYPTF (в зависимости от вида представления сообщения);

3)  выполняется проверка ЭЦП отправителя сообщения с использованием процедур CHKSIGNS или CHKSIGNF (в зависимости от вида представления сообщения), после чего выполняется дальнейшая обработка сообщения;

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

1.4.2 Технология использования процедур криптографической защиты в системе «Клиент-Банк»

В состав системы «Клиент-Банк» входят автоматизированные рабочие места (АРМ) клиента, выполняющие операции формирования электронных платежных документов (ЭПД), их авторизации с использованием механизма ЭЦП и передачи в зашифрованном виде пакетов ЭПД в АРМ автоматизированной банковской системы (АБС), в котором выполняются операции приема и обработки пакетов ЭПД, а также формирования, авторизации и передачи клиенту пакетов ответных документов (выписок, квитанций), которые после приема обрабатываются в АРМ клиента. Технология использования процедур криптографической защиты при этом может быть следующей.

В АРМ клиента при формировании пакета ЭПД для передачи в банк:

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

2)  для сформированных ЭПД вырабатывается ЭЦП должностных лиц клиента с использованием процедуры PUTSIGNS;

3)  при необходимости выполняется проверка ЭЦП должностных лиц клиента на ЭПД с использованием процедуры CHKSIGNS;

4)  формируется файл- пакет ЭПД, для которого выполняется формирование ЭЦП должностного лица клиента, ответственного за взаимодействие с банком, с использованием процедуры  PUTSIGNF;

5)  сформированный пакет (файл) зашифровывается с использованием процедуры ENCRYPTF и передается в АБС;

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

В АРМ клиента при приеме пакета ответных документов из банка:

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

6)  выполняется расшифрование принятого пакета (файла) использованием процедуры DECRYPTF;

7)  выполняется проверка ЭЦП должностного лица банка на пакете с использованием процедуры CHKSIGNF, после чего выполняется обработка ответных документов в АРМ клиента;

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

В АБС при приеме пакета документов от клиента:

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

2)  выполняется расшифрование принятого пакета (файла) использованием процедуры DECRYPTF;

3)  выполняется проверка ЭЦП должностного лица клиента на пакете с использованием процедуры CHKSIGNF;

4)  выполняется проверка ЭЦП должностных лица клиента на входящих в соств пакета ЭПД с использованием процедуры CHKSIGNS, после чего выполняется обработка ЭПД в АБС;

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

В АБС при формировании пакета ответных документов для передачи клиенту:

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

10)  формируется файл- пакет ответных документов, для которого выполняется формирование ЭЦП должностного лица банка, ответственного за взаимодействие с клиентом, с использованием процедуры  PUTSIGNF;

11)  сформированный пакет (файл) зашифровывается с использованием процедуры ENCRYPTF и передается клиенту;

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

1.4.3 Технология использования процедур криптографической защиты в системах автоматизации электронного документооборота

В состав системы автоматизации электронного документооборота входят АРМ, выполняющие операции по формированию/модификации электронных документов (ЭД). Сформированные ЭД хранятся в документоориентированной БД, откуда извлекаются и поступают в соответствующий АРМ по запросу пользователя, имеющего полномочия по просмотру/модификации соответствующих документов. Технология использования процедур криптографической защиты в системах электронного документооборота может быть следующей.

При формировании ЭД и помещении его в БД:

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

2)  для сознанного ЭД вырабатывается ЭЦП исполнителя с использованием процедур PUTSIGNS или PUTSIGNFM (в зависимости от вида представления ЭД при его хранении в БД);

3)  исполнитель зашифровывает созданный ЭД и формирует для него список управления доступом с использованием процедур ENCRYPTSL или ENCRYPTFL (в зависимости от вида представления ЭД при его хранении в БД), после чего ЭД помещается в БД системы электронного документооборота;

4)  исполнитель заносит в список управления доступом к ЭД пользователей, уполномоченных выполнять операции по просмотру/редактированию ЭД, с использованием процедуры ADDUSERL или удаляет пользователей из списка с использованием процедуры DELUSERL, после чего список управления доступом помещается в БД системы электронного документооборота;

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

При доступе пользователя к ЭД для просмотра:

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

2)  выполняется проверка полномочий пользователя по доступу к ЭД с расшифрованием с использованием  процедур DECRYPTSL или DECRYPTFL (в зависимости от вида представления ЭД при его хранении в БД);

3)  выполняется проверка ЭЦП исполнителя ЭД с использованием процедур CHKSIGNS или CHKSIGNFM (в зависимости от вида представления ЭД при его хранении в БД), после чего выполняется просмотр ЭД;

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

При доступе пользователя к ЭД для модификации:

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

2)  выполняется проверка полномочий пользователя по доступу к ЭД с расшифрованием с использованием  процедур DECRYPTSL или DECRYPTFL (в зависимости от вида представления ЭД при его хранении в БД);

3)  выполняется проверка ЭЦП исполнителя ЭД с использованием процедур CHKSIGNS или CHKSIGNFM (в зависимости от вида представления ЭД при его хранении в БД), после чего выполняется модификация ЭД;

4)  для модифицированного ЭД вырабатывается ЭЦП выполнившего модификацию пользователя с использованием процедур PUTSIGNS или PUTSIGNFM (в зависимости от вида представления ЭД при его хранении в БД);

5)  выполнивший модификацию пользователь зашифровывает созданный ЭД и формирует для него список управления доступом с использованием процедур ENCRYPTSL или ENCRYPTFL (в зависимости от вида представления ЭД при его хранении в БД), после чего ЭД помещается в БД системы электронного документооборота;

6)  выполнивший модификацию пользователь заносит в список управления доступом к ЭД пользователей, уполномоченных выполнять операции по просмотру/редактированию ЭД, с использованием процедуры ADDUSERL или удаляет пользователей из списка с использованием процедуры DELUSERL, после чего список управления доступом помещается в БД системы электронного документооборота;

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


2 РУКОВОДСТВО ПРОГРАММИСТА

2.1 ОПИСАНИЕ ПРОЦЕДУР КРИПТОГРАФИЧЕСКОЙ ЗАЩИТЫ

2.1.1 Процедуры инициализации/деинициализации средств криптографической защиты

Процедура инициализации средств криптографической защиты:

INITPLIB(dbkDir, skeyDir, pin, info );

Вход:

dbkDir - каталог файлов БД открытых ключей (PKBASE0.DBK,   

PKBASE1.DBK, PKBASE2.DBK, PQA.CSP);

skeyDir - каталог файла секретного ключа (SKEY.SKF);

pin - Pin-код доступа к секретному ключу;

Выход:

info – структура с информацией о секретном ключе;

Возврат:

см. коды возврата.

Процедура деинициализации средств криптографической защиты:

DEINITPLIB;

Вход:

нет;

Выход:

нет;

Возврат:

см. коды возврата.

2.1.2 Процедуры защиты данных при их обработке внутри прикладной системы и передаче между прикладными системами

Процедура выработки ЭЦП массива данных в оперативной памяти:

PUTSIGNS(sign_data, data_len, signature, info);

Вход:

sign_data – массив подписываемых данных;

data_len – размер массива в байтах;

Выход:

signature – массив с данными подписи (82 байта);

info – структура с информацией о подписи;

Возврат:

см. коды возврата.

Процедура проверки ЭЦП массива данных в оперативной памяти:

CHKSIGNS(sign_data, data_len, signature, info);

Вход:

sign_data – массив подписываемых данных;

data_len – размер массива в байтах;

signature – массив с данными подписи (82 байта);

Выход:

info – структура с информацией о подписи;

Возврат:

см. коды возврата.

Процедура выработки ЭЦП файла данных с помещением ЭЦП в файл:

PUTSIGNF(f_handle, info);

Вход:

f_handle – дескриптор открытого файла;

Выход:

info – структура с информацией о подписи;

Возврат:

см. коды возврата.

Процедура проверки ЭЦП файла данных, помещенной при выработке в файл:

CHKSIGNF(f_handle, info);

Вход:

f_handle – дескриптор открытого файла;

Выход:

info – структура с информацией о подписи;

Возврат:

см. коды возврата.

Процедура выработки ЭЦП файла данных с помещением ЭЦП в массив в оперативной памяти:

PUTSIGNFM(f_handle,signature,info);

Вход:

f_handle – дескриптор открытого файла;

Выход:

signature – массив с данными подписи (82 байта);

info – структура с информацией о подписи;

Возврат:

см. коды возврата.

Процедура проверки ЭЦП файла данных, помещенной в массив в оперативной памяти:

CHKSIGNFM(f_handle,signature,info);

Вход:

f_handle – дескриптор открытого файла;

signature – массив с данными подписи (82 байта);

Выход:

info – структура с информацией о подписи;

Возврат:

см. коды возврата.

Процедура зашифрования с выработкой имитовставки массива данных в оперативной памяти:

ENCRYPTS(inp_data, inp_data_len, org_num, user_num,  out_data, out_data_len, cipher_block);

Вход:

inp_data – массив шифруемых данных;

inp_data_len – размер массива в байтах;

org_num – номер организации абонента- получателя данных;

user_num – номер абонента- получателя данных в его организации (-1 – для всех абонентов данной организации);

Выход:

out_data – массив зашифрованных данных;

out_data_len – размер массива в байтах;

cipher_block – массив с данными блока шифрования (346 байт);

Возврат:

см. коды возврата.

Процедура расшифрования с проверкой имитовставки массива данных в оперативной памяти:

DECRYPTS(inp_data, inp_data_len, cipher_block, out_data, out_data_len);

Вход:

inp_data – массив зашифрованных данных;

inp_data_len – размер массива в байтах;

cipher_block – массив с данными блока шифрования (346 байт);

Выход:

out_data – массив расшифрованных данных;

out_data_len – размер массива в байтах;

Возврат:

см. коды возврата.

Процедура зашифрования с выработкой имитовставки файла данных:

ENCRYPTF(i_handle, o_handle, org_num, user_num);

Вход:

i_handle – дескриптор открытого незашифрованного файла;

o_handle – дескриптор открытого зашифрованного файла;

org_num – номер организации абонента- получателя данных;

user_num – номер абонента- получателя данных в его организации (-1 – для всех абонентов данной организации);

Выход:

нет;

Возврат:

см. коды возврата.

Процедура расшифрования с проверкой имитовставки файла данных:

DECRYPTF(i_handle, o_handle);

Вход:

i_handle – дескриптор открытого зашифрованного файла;

o_handle – дескриптор открытого расшифрованного файла;

Выход:

нет;

Возврат:

см. коды возврата.

2.1.3 Процедуры управления доступом к данным при их обработке внутри  прикладной системы

Процедура зашифрования обьекта данных в виде файла с инициализацией списка управления доступом к обьекту:

ENCRYPTFL(i_handle, o_handle, acc_list_data);

Вход:

i_handle – дескриптор открытого незашифрованного файла;

o_handle – дескриптор открытого зашифрованного файла;

Выход:

acc_list_data – инициализированный список контроля доступа (3640 байт);

Возврат:

см. коды возврата.

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

DECRYPTFL(i_handle, o_handle, acc_list_data);

Вход:

i_handle – дескриптор открытого зашифрованного файла;

o_handle – дескриптор открытого расшифрованного файла;

acc_list_data – список управления доступом (3640 байт);

Выход:

нет;

Возврат:

см. коды возврата.

Процедура процедура зашифрования обьекта данных в виде массива в оперативной памяти с инициализацией списка управления доступом к обьекту:

ENCRYPTSL(inp_data, inp_data_len, acc_list_data, out_data, out_data_len);

Вход:

inp_data – массив шифруемых данных;

inp_data_len – размер массива в байтах;

Выход:

acc_list_data – инициализированный список управления доступом (3640 байт);

out_data – массив зашифрованных данных;

out_data_len – размер массива в байтах;

Возврат:

см. коды возврата.

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

DECRYPTSL(inp_data, inp_data_len, acc_list_data, out_data, out_data_len);

Вход:

inp_data – массив зашифрованных данных;

inp_data_len – размер массива в байтах;

acc_list_data –список управления доступом (3640 байт);

Выход:

out_data – массив расшифрованных данных;

out_data_len – размер массива в байтах;

Возврат:

см. коды возврата.

Процедура занесения пользователя в список управления доступом к обьекту данных:

ADDUSERL(acc_list_data, user_num, user_type)

Вход:

acc_list_data –список управления доступом (3640 байт);

user_num – номер пользователя;

user_type – тип пользователя (0-администратор, 1-технолог, 2-оператор)

Выход:

нет;

Возврат:

см. коды возврата.

Процедура удаления пользователя из списка управления доступом к обьекту данных:

DELUSERL(acc_list_data, user_num, user_type)

Вход:

acc_list_data –список управления доступом (3640 байт);

user_num – номер пользователя;

user_type – тип пользователя (0-администратор, 1-технолог, 2-оператор)

Выход:

нет;

Возврат:

см. коды возврата.

2.1.4 Процедуры управления криптографическими ключами

Процедура генерации СК и ОК ЭЦП пользователя:

GENKEYSB(dbkDir, skeyDir, pin, org_num, key_num,

key_type, end_date, user_name);

Вход:

dbkDir - каталог файлов БД ОК (PKBASE*.DBK, PQA.CSP);

skeyDir - каталог файла секретного ключа (SKEY.SKF);

pin - Pin-код доступа к секретному ключу;

org_num - номер организации;

key_num - номер пользователя;

key_type - тип пользователя (0-администратор, 1-технолог, 2-оператор);

end_date – дата окончания действия ключа в формате YYYYMMDD;

user_name- имя пользователя.

Выход:

нет;

Возврат:

см. коды возврата.

Процедура занесения ОК из файла в БД ОК:

PUTPKDBK(dbkDir, key_file_name);

Вход:

dbkDir - каталог файлов БД ОК (PKBASE*.DBK, PQA.CSP);

key_file_name - имя файла;

Выход:

нет;

Возврат:

см. коды возврата.

Процедура формирования файла ОК для ОК, хранящегося в БД ОК:

FRMPKEYF(org_num, key_num, key_type, dbkDir, pkeyDir );

Вход:

org_num - номер организации;

key_num - номер пользователя;

key_type - тип пользователя (0-администратор, 1-технолог, 2-оператор);

dbkDir - каталог файлов БД ОК (PKBASE*.DBK, PQA.CSP);

pkeyDir - каталог файла секретного ключа (SKEY.SKF);

Выход:

нет;

Возврат:

см. коды возврата.

Процедура формирования дампа ОК для ОК, хранящегося в БД ОК:

FRMPKEYS(org_num, key_num, key_type, dbkDir, key_dump );

Вход:

org_num - номер организации;

key_num - номер пользователя;

key_type - тип пользователя (0-администратор, 1-технолог, 2-оператор);

dbkDir - каталог файлов БД ОК (PKBASE*.DBK, PQA.CSP);

Выход:

key_dump – структура с дампом ОК;

Возврат:

см. коды возврата.

Процедура формирования дампа ОК для ОК, хранящегося в файле:

FRMPKEYSF(key_file_name , key_dump );

Вход:

key_file_name - имя файла ОК;

Выход:

key_dump – структура с дампом ОК;

Возврат:

см. коды возврата.

Процедура формирования дампа файла ОК:

FORMPKFN(org_num, key_num, key_type, file_name);

Вход:

org_num - номер организации;

key_num - номер пользователя;

key_type - тип пользователя (0-администратор, 1-технолог, 2-оператор);

Выход:

file_name - имя файла ОК;

Возврат:

см. коды возврата.

Процедура удаления ОК, хранящегося в БД ОК:

DELPKEYB(org_num, key_num, key_type, dbkDir);

Вход:

org_num - номер организации;

key_num - номер пользователя;

key_type - тип пользователя (0-администратор, 1-технолог, 2-оператор);

dbkDir - каталог файлов БД ОК (PKBASE*.DBK, PQA.CSP);

Выход:

нет;

Возврат:

см. коды возврата.

2.1.5 Вспомогательные процедуры

Процедура получения списка организаций, ОК пользователей которых зарегистрированны в БД ОК:

GETORGL(list, num)

Вход:

list – адрес массива для сохранения номеров организаций (NULL-не заполняется);

Выход:

num –количество зарегистрированных организаций;

Возврат:

см. коды возврата.

Процедура получения списка ОК пользователей данной организаций, зарегистрированных в БД ОК:

GETUSRL(org_num, user_type, list, num)

Вход:

list – адрес массива для сохранения номеров организаций (NULL-не заполняется);

org_num – номер организации;

user_type – тип пользователя (0-администратор, 1-технолог, 2-оператор);

Выход:

num –количество зарегистрированных ключей;

Возврат:

см. коды возврата.

Процедура получения информации об ОК пользователя, хранящемся в БД ОК:

GETPKINF(org_num,  user_num, user_type, info )

Вход:

org_num – номер организации;

user_num – номер пользователя;

user_type – тип пользователя (0-администратор, 1-технолог, 2-оператор)

Выход:

info – структура с информацией о секретном ключе;

Возврат:

см. коды возврата.

Процедура проверки лицензии рабочего места:

CHKLIC(lic_info);

Вход:

нет;

Выход:

lic_info - структура с данными лицензии;

Возврат:

см. коды возврата.


ПРИЛОЖЕНИЕ  1

Прототипы Процедур криптографической защиты для  языка C.

typedef struct

{

unsigned short int key_type;

unsigned short int key_num;

unsigned short int org_num;

char user_name[64];

char user_id[128];

} KeyInfoType, *LPKeyInfoType;

typedef struct

{

unsigned short int org_num;

unsigned short int key_type;

unsigned short int key_num;

unsigned long sig_date;

unsigned long sig_time;

char user_name[64];

} SignatureInfoType, *LPSignatureInfoType;

typedef struct

{

char key_type[1];

char org_num[4];

char key_num[3];

char end_date[8];

char user_name[52];

char pub_key[129];

} PublicKeyDumpType, *LPPublicKeyDumpType;

typedef struct

{

unsigned long org_num;

unsigned char org_name[128];

unsigned long end_date;

} LicenInfo, *LPLicenInfo;

int WINAPI INITPLIB(LPSTR dbkDir, LPSTR skeyDir, LPSTR pin, LPKeyInfoType info );

int WINAPI DEINITPLIB( void );

int WINAPI PUTSIGNS(LPVOID sign_data, DWORD data_len, LPVOID signature,

LPSignatureInfoType info );

int WINAPI CHKSIGNS(LPVOID sign_data, DWORD data_len, LPVOID signature,

LPSignatureInfoType info );

int WINAPI PUTSIGNF(DWORD f_handle, LPSignatureInfoType info );

int WINAPI CHKSIGNF(DWORD f_handle, LPSignatureInfoType info );

int WINAPI ENCRYPTS(LPVOID inp_data, DWORD inp_data_len, DWORD org_num, DWORD user_num,

LPVOID out_data, LPDWORD out_data_len, LPVOID cipher_block);

int WINAPI DECRYPTS(LPVOID inp_data, DWORD inp_data_len, LPVOID cipher_block,

LPVOID out_data, LPDWORD out_data_len );

int WINAPI ENCRYPTF(DWORD i_handle, DWORD o_handle, DWORD org_num, DWORD user_num);

int WINAPI DECRYPTF(DWORD i_handle, DWORD o_handle);

int WINAPI PUTSIGNFM(DWORD f_handle, LPVOID signature_data, LPSignatureInfoType info );

int WINAPI CHKSIGNFM(DWORD f_handle, LPVOID signature_data, LPSignatureInfoType info );

int WINAPI ENCRYPTFL(DWORD i_handle, DWORD o_handle, LPVOID acc_list_data);

int WINAPI DECRYPTFL(DWORD i_handle, DWORD o_handle, LPVOID acc_list_data);

int WINAPI ENCRYPTSL(LPVOID inp_data, DWORD inp_data_len, LPVOID acc_list_data,

LPVOID out_data, LPDWORD out_data_len);

int WINAPI DECRYPTSL(LPVOID inp_data, DWORD inp_data_len, LPVOID acc_list_data,

LPVOID out_data, LPDWORD out_data_len);

int WINAPI ADDUSERL(LPVOID acc_list_data, DWORD user_num, DWORD user_type);

int WINAPI DELUSERL(LPVOID acc_list_data, DWORD user_num, DWORD user_type);

 int WINAPI GETPKINF(WORD org_num,  WORD key_num, WORD key_type, LPKeyInfoType info );

int WINAPI GETORGL(LPWORD list, LPDWORD num);

int WINAPI GETUSRL(WORD org_num, WORD key_type, LPWORD list, LPDWORD num);

int WINAPI GENKEYSB( LPSTR dbkDir, LPSTR skeyDir, LPSTR pin, WORD org_num,

WORD key_num,WORD key_type, DWORD end_date, LPSTR user_name);

int WINAPI PUTPKDBK( LPSTR dbkDir,LPSTR key_file_name);

int WINAPI FRMPKEYF( WORD org_num, WORD key_num, WORD key_type, LPSTR dbkDir,

LPSTR pkeyDir );

int WINAPI FRMPKEYS( WORD org_num, WORD key_num, WORD key_type, LPSTR dbkDir,

LPPublicKeyDumpType key_dump );

int WINAPI FRMPKEYSF( LPSTR key_file_name, LPPublicKeyDumpType key_dump );

int WINAPI FORMPKFN( WORD org_num, WORD key_num, WORD key_type, LPSTR file_name);

int WINAPI DELPKEYB( WORD org_num, WORD key_num, WORD key_type, LPSTR dbkDir);

int WINAPI CHKLIC(LPLicenInfo lic_info);


Приложение 2

Прототипы Процедур криптографической защиты для  языка PASCAL.

function INITPLIB(dbkDir:Pchar; skeyDir:Pchar; pin:Pchar; info:Pointer):integer; stdcall;

external 'PCRWAN32.DLL' name '_INITPLIB';

function DEINITPLIB:integer;stdcall;external 'PCRWAN32.DLL' name '_DEINITPLIB';

function PUTSIGNS(sign_data:Pointer;data_len:DWORD; signature:Pointer;info:Pointer ):integer;

stdcall;external 'PCRWAN32.DLL' name '_PUTSIGNS';

function CHKSIGNS(sign_data:Pointer;data_len:DWORD; signature:Pointer;info:Pointer) :integer;

stdcall;external 'PCRWAN32.DLL' name '_CHKSIGNS';

function PUTSIGNF(f_handle:DWORD;info:Pointer): integer; stdcall;

external 'PCRWAN32.DLL' name '_PUTSIGNF';

function CHKSIGNF(f_handle:DWORD;info:Pointer): integer;stdcall;

external 'PCRWAN32.DLL' name '_CHKSIGNF';

function ENCRYPTS(inp_data:Pointer;inp_data_len:DWORD; org_num:DWORD;user_num:DWORD;

out_data:Pointer; out_data_len:Pointer; cipher_block:Pointer):integer;

stdcall;external 'PCRWAN32.DLL' name '_ENCRYPTS';

function DECRYPTS(inp_data:Pointer;inp_data_len:DWORD; cipher_block:Pointer; out_data:Pointer;            

out_data_len:Pointer):integer; stdcall;external 'PCRWAN32.DLL' name '_DECRYPTS';

function ENCRYPTF(i_handle:DWORD;o_handle:DWORD; org_num:DWORD;

user_num:DWORD) integer;stdcall; external 'PCRWAN32.DLL' name '_ENCRYPTF';

function DECRYPTF(i_handle:DWORD;o_handle:DWORD) integer;stdcall;

external 'PCRWAN32.DLL' name '_DECRYPTF';

function PUTSIGNFM(f_handle:DWORD; signature:Pointer; info:Pointer ) integer;stdcall;

external 'PCRWAN32.DLL' name '_PUTSIGNFM ';

function CHKSIGNFM(f_handle:DWORD; signature:Pointer; info:Pointer ) integer;stdcall;

external 'PCRWAN32.DLL' name '_CHKSIGNFM ';

function ENCRYPTFL(i_handle:DWORD; o_handle:DWORD; acc_list_data:Pointer) integer;stdcall;

external 'PCRWAN32.DLL' name '_ENCRYPTFL';

function DECRYPTFL(i_handle:DWORD; o_handle:DWORD; acc_list_data:Pointer) integer;stdcall;

external 'PCRWAN32.DLL' name '_DECRYPTFL';

function ENCRYPTSL(inp_data:Pointer; inp_data_len:DWORD; acc_list_data:Pointer; out_data:Pointer;

out_data_len:Pointer) integer;stdcall;

external 'PCRWAN32.DLL' name '_ENCRYPTSL ';

function DECRYPTSL(inp_data:Pointer; inp_data_len:DWORD; acc_list_data:Pointer; out_data:Pointer;

out_data_len:Pointer) integer;stdcall;

external 'PCRWAN32.DLL' name '_DECRYPTSL ';

function ADDUSERL(acc_list_data:Pointer; user_num:DWORD; user_type:DWORD) integer;stdcall;

external 'PCRWAN32.DLL' name '_ADDUSERL ';

function DELUSERL(acc_list_data:Pointer; user_num:DWORD; user_type:DWORD) integer;stdcall;

external 'PCRWAN32.DLL' name '_DELUSERL ';

function GETPKINF (org_num:WORD; key_num:WORD; key_type:WORD;info:Pointer) integer;stdcall;

external 'PCRWAN32.DLL' name '_GETPKINF ';

function GETORGL (list:Pointer; num:Pointer) integer;stdcall;

external 'PCRWAN32.DLL' name '_GETORGL ';

function GETUSRL (org_num:WORD; key_type:WORD; list:Pointer; num:Pointer) integer;stdcall;

external 'PCRWAN32.DLL' name '_GETUSRL ';

function GENKEYSB(dbkDir:Pchar; skeyDir:Pchar; pin:Pchar; org_num: WORD; key_num: WORD;

key_type: WORD; end_date: DWORD; user_name:Pchar) integer;stdcall;

external 'PCRWAN32.DLL' name '_GENKEYSB';

function PUTPKDBK( dbkDir:Pchar; key_file_name:Pchar) integer;stdcall;

external 'PCRWAN32.DLL' name '_PUTPKDBK ';

function FRMPKEYF( org_num: WORD; key_num: WORD; key_type: WORD; dbkDir:Pchar;

pkeyDir:Pchar ) integer;stdcall;

external 'PCRWAN32.DLL' name '_FRMPKEYF ';

function FRMPKEYS( org_num:WORD; key_num:WORD; key_type:WORD; dbkDir:Pchar;

key_dump:Pointer ) integer;stdcall;

external 'PCRWAN32.DLL' name '_FRMPKEYS ';

function FRMPKEYSF( key_file_name:Pchar; key_dump:Pointer ) integer;stdcall;

external 'PCRWAN32.DLL' name '_FRMPKEYSF ';

function FORMPKFN( org_num:WORD; key_num:WORD; key_type:WORD; file_name:Pchar) integer;stdcall;

external 'PCRWAN32.DLL' name '_FORMPKFN ';

function DELPKEYB( org_num:WORD; key_num:WORD; key_type:WORD; dbkDir:Pchar) integer;stdcall;

external 'PCRWAN32.DLL' name '_DELPKEYB ';

function CHKLIC( lic_info:Pointer) integer;stdcall;

external 'PCRWAN32.DLL' name '_CHKLIC ';


Приложение 3

Коды возврата Процедур криптографической защиты

0  -  нормальное завершение процедуры

-1     -  не найден файл секретного ключа

-2     -  ошибка чтения файла секретного ключа

-3     -  нарушена целостность файла секретного ключа

-4     -  задан неверный PIN-код

-9     -  ошибка инициализации БД открытых ключей (PKBASE0.DBK,

PKBASE1.DBK, PKBASE2.DBK)

-10   -  ошибка чтения открытого ключа

-11   -  ошибка записи файла секретного ключа

-12   -  ошибка записи открытого ключа

-13   -  нарушена целостность открытого ключа

-14   -  в БД открытых ключей отсутствует требуемый открытый ключ

-15   -  сгенерировано слишком много ключей

-16   -  используется недопустимый тип ключа

-17   -  используется ключ чужой организации

-18   -  отсутствует заданный каталог

-19   -  не найден файл параметров PQA.CSP

-20   -  нарушена целостность файла параметров PQA.CSP

-40   -  ошибка открытия файла

-41   -  ошибка чтения файла

-42   -  ошибка записи в файл

-43   -  ошибка при выработке ЭЦП

-44   -  ошибка в формате файла

-45   -  отсутствует ЭЦП (файл не был подписан)

-46   -  открытый ключ не зарегистрирован в базе данных

-47   -  неверная ЭЦП (не снята подпись)

-50   -  истек срок действия ключа

-60   -  нарушение лицензии

-100 -  ошибка задания типа ключа

-101 -  ошибка задания номера ключа

-102 -  нарушена целостность файла

-103 -  файл не зашифрован

-104 -  ошибка задания номера организации

-200 -  указанный пользователь отсутствует в списке доступа

-201 -  пользователь не является владельцем обьекта

-202 -  список доступа переполнен

-203 -  пользователь уже занесен в список доступа

Похожие материалы

Информация о работе