49484 (572351), страница 2
Текст из файла (страница 2)
В этом случае согласно закону, система является корпоративной системой ЭЦП и регулируется по Статье 17 закона "Об ЭЦП":
Статья 17.
2. Порядок использования электронных цифровых подписей в корпоративной информационной системе устанавливается решением владельца корпоративной информационной системы или соглашением участников этой системы.
Дополнительно в этом случае, согласно закону о лицензировании отдельных видов деятельности Вам необходимо получить:
-
Лицензию на право ведения деятельности, связанной с оказанием услуг, связанных с использованием ЭЦП.
-
Лицензию на деятельность УЦ.
Публичная система с использованием СКЗИ
По сравнению с предыдущим вариантом, накладывается дополнительное ограничение, связанное с необходимостью использовать только, сертифицированное программное обеспечение.
В случае использования внешнего УЦ, требование на получение лицензии на деятельность УЦ, снимается.
VI. Выводы
-
Единственной основой для регулирования порядка применения АСП остается Гражданский Кодекс РФ, содержащий отсылочные нормы, либо к действующему закону, регулирующему порядок применения АСП, либо к договору сторон.
-
Регулирование порядка применения одного из видов АСП - ЭЦП осуществляется законом "Об электронной цифровой подписи".
-
Регулирование порядка применения иных АСП, в том числе цифровой подписи - ЦП остается предметом договорного права, что непосредственно следует из текста ГК и закона об ЭЦП.
-
Большинство технологии цифровой подписи (ЦП) не являются технологией, регулирование которой предусмотрено законом об ЭЦП.
-
Регулирование порядка использования основных типов ЦП выглядит следующим образом.
| Система без использования сертификатов | |||||||
| Система без использования шифровальных средств | Система с использованием шифровальных средств | ||||||
| Корпоративная | Публичная | Корпоративная | Публичная | ||||
| I | I | I | I | ||||
| Нет | Нет | №1 | №1 | ||||
| Система с использованием сертификатов | |||||||
| Система без использования шифровальных средств | Система с использованием шифровальных средств | ||||||
| Корпоративная | Публичная | Корпоративная | Публичная | ||||
| I | I | II | II | ||||
| Нет | Нет | №1, №2 | №1. | ||||
I - регулирование на основе договорных отношений
II - регулирование на основе закона об ЭЦП
Лицензия №1 - лицензия на деятельность по оказанию услуг, связанных с использованием ЭЦП.
Лицензия №2 - лицензия на деятельность УЦ.
2. Пример практического применения механизма электронно-цифровой подписи
Для чего это нужно
Столкнувшись с проблемой обеспечения контроля подлинности документов хранимых в БД, я довольно долго искал способ ее решения. Та информация, что встречается, слабо полезна новичкам, ибо имеет уклон либо в теорию/математику асимметричных алгоритмов шифрования, либо в юриспруденцию (да да, те самые законы об электронно-цифровой подписи). Попытаюсь в меру своих сил исправить положение.
Пример реализован в среде Delphi 6, СУБД Interbase/Firebird, компоненты доступа InterBase Express (IBX), шифрование - LockBox . Для получения хеша используется алгоритм MD5, шифрование RSA.
В БД заведена таблица документов DOCUMENTS, подлинность которых нам и нужно контролировать, таблица DOCUMENT_SIGNS - подписи документов определенными пользователями из таблицы USERS.
Логика работы
Пользователю генерируются/назначаются два ключа - открытый (публичный) и закрытый (приватный). Первый доступен всем (будет использоваться для проверки подлинности подписи и документа), а второй только пользователю. Для подписания документа вычисляется его хеш (шифрование всего полумегабайтного документа довольно ресурсоемко), этот хеш шифруется закрытым ключом
(сделать это - т.е. сформировать собственно подпись может только владелец ключа и никто кроме него) и вносится в таблицу DOCUMENT_SIGNS, привязываясь конкретному пользователю и документу. Если кто-либо хочет проверить подписан ли документ пользователем, или пользователь хочет проконтролировать неизменность документа - он расшифровывает подпись открытым ключом и сравнивает с хешем документа - если они совпали - документ аутентичен
Хеш документа вычисляется на сервере (что б не гонять зря данные) с помощью UDF. Для этого реализованы две функции - хеширование блоба (md5_blob) и хеширование строки (md5_string). Если документ хранится как блоб то все просто, а если как набор полей, то можно считать хеш от строки, состоящей из конкатенированных полей ( select md5_string(d.doc_f2||d.doc_f1) from documents d). В последнем случае помним: поля, на основании которых вычисляется хеш не должны быть nullable - null+value=null, сумма длин всех полей не более максимальной длинны строки СУБД.
Расшифровка подписи выполняется в клиентском приложении, но никто не мешает вынести их в udf.
Хеширование - в идеале необратимое преобразование позволяющее для данных переменной длинны вернуть однозначно соответствующее им данные фиксированного размера(дайджест, хеш), обычно 128 бит.
Пример
Пример состоит из двух приложений - клиентского и административного. Для его работы нужно иметь установленный сервер СУБД.
Администраторский интерфейс.
Генерация пар ключей, назначение публичного ключа пользователю, сохранение приватного ключа в файл. Важен размер ключа, для клиентского приложения он "зашит" в код (1024).
Клиентский интерфейс.
Подписание выбранного документа определенным пользователем, проверить подпись, снять подпись с документа.
Практическое применение может быть довольно разнообразным: подписание ключевых элементов БД для последующего "разбора полетов" в случае конфликтных ситуаций, организация внутреннего безбумажного документооборота организации, авторизация в приложениях с помощью "ключевой" дискеты...
Список использованной литературы:
-
Copyright, 2003, Мариуполь, Николай Пономаренко Статья для Delphi Plus
-
ФЗ «Об Электронной цифровой подписи» № 1-ФЗ от 10.01.2002 г.
-
Гражданский Кодекс РФ
-
Internet















