Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Диплом.pdf
Скачиваний:
23
Добавлен:
23.03.2015
Размер:
1.25 Mб
Скачать

2ТЕХНИЧЕСКОЕ ОПИСАНИЕ ПРОЕКТА

2.1План разработки проекта

При разработке автоматизированного программно-аппаратного комплекса ограничения доступа к интернет-ресурсам из реестра запрещенных сайтов на оборудовании Mikrotik, необходимо выполнить следующее:

-выгрузить дамп реестра;

-разобрать полученную информацию;

-ограничить доступ согласно полученным данным.

2.2 Процесс выгрузки дампа реестров

Согласно памятке оператору связи, необходимо вначале получить дамп реестра. Для этого сначала нужно сгенерировать запрос в виде XML файла. Кодировка данного файла должна быть Windows-1251. Пример файла:

<?xml version="1.0" encoding="windows-1251"?> <request>

<requestTime>2013-12-24T15:30:30.000+06:00</requestTime> <operatorName><![CDATA[ООО фирма 'КЛОН']]></operatorName> <inn>7423001826</inn>

<ogrn>1027401354639</ogrn> <email>clon@clon.ru</email>

</request>

Переменные в файле:

-requestTime – дата и время формирования запроса с указанием временной зоны;

-operatorName – полное наименование оператора связи;

-inn – ИНН оператора связи;

-ogrn – ОГРН оператора связи;

11

- email – электронный адрес технического специалиста, ответственного за использование механизма получения выгрузки; может использоваться для оперативной обратной связи в случае возникновения технических вопросов или проблем.

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

DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffzzz");

Запись файла в кодировке Windows-1251 осуществляется следующим образом:

String Request = "Тело запроса…";

StreamWriter swRequest = new StreamWriter(@"C:\request.xml", false, Encoding.GetEncoding("Windows-1251"));

swRequest.Write(Request);

swRequest.Close();

После создания запроса его необходимо подписать. Для этого необходим OpenSSL и электронная цифровая подпись принадлежащая оператору связи. Для того чтобы OpenSSL мог работать с российскими криптоалгоритмами описанными в ГОСТ Р 34.10-2012 [3] S/MIME (PKCS#7, Cryptographic Message

Syntax) необходимо его соответственно настроить. Для этого в конфигурационном файле OpenSSL (openssl.cfg) вначале указываем на блок наших настроек:

openssl_conf = openssl_def

и в конце файла сами настройки:

[openssl_def] engines=engine_section [engine_section] gost=gost_section [gost_section] engine_id=gost

dynamic_path = X:/OpenSSL/bin/gost.dll default_algorithms=ALL

12

В настройках строка X:/OpenSSL/bin/gost.dll это путь до файла с российскими криптоалгоритмами входящий в состав пакета OpenSSL начиная с версии 1.0.0.

Так же необходимо создать переменную среды Windows – OPENSSL_CONF содержащую путь до файла конфигурации OpenSSL, а также добавить путь до папки bin пакета OpenSSL в переменную среды PATH для использования в консоли без указания полного пути.

После настройки OpenSSL необходимо подготовить ключ для использования. Ключ необходимо экспортировать в формате PKCS#12 (Personal Information Exchange Syntax Standard) из криптоконтейнера. Сделать это нужно с помощью утилиты P12FromGostCSP так как ключ, экспортированный через стандартный диалог просмотра сертификата не распознается OpenSSL. Для проверки экспортированного ключа, можно посмотреть на его содержимое командой:

openssl pkcs12 -in key.pfx -nodes

Файл PKCS#12 должен содержать сертификат и закрытый ключ как на рисунке 1.

После успешного экспортирования ключа в формат PKCS#12 необходимо его конвертировать в текстовый формат PEM командой OpenSSL:

openssl pkcs12 -in key.pfx -out key.pem -nodes –clcerts

C этого момента ключ можно хранить как текст в базе данных в кодировке UTF-8 без BOM (метка порядка байтов).

После получения ключа в PEM формате можно подписать запрос:

openssl smime -sign -in request.xml -out request.xml.sig -signer key.pem - outform DER

13

Рисунок 1

В результате мы получаем файл запроса в XML формате и файл открепленной электронной подписи в формате PKCS#7. Прежде чем использовать данные файлы, необходимо проверить их. Для этого можно воспользоваться OpenSSL, но для этого необходим сертификат издателя ключа, которым подписан файл. Для ООО «Фирма «КЛОН» издатель ключа – это CAMostinfo2 (Удостоверяющий центр, ООО "Мостинфо-Екатеринбург", Екатеринбург, ул. Мамина-Сибиряка дом 38, ca@most-info.ru). Сертификат издателя ключа извлекается из криптоконтейнера или берется с сайта уполномоченного федерального органа в области использования электронной подписи в DER формате. Для использования в OpenSSL его необходимо конвертировать в текстовый PEM формат:

openssl x509 -inform der -in CA-Mostinfo2.cer -out CA-Mostinfo2.pem

Файл сертификата в PEM формате имеет кодировку UTF-8 без BOM.

14

Теперь имея сертификат издателя ключа, которым был подписан запрос, можно проверить подпись:

openssl smime -verify -in request.xml.sig -content request.xml -CAfile CAMostinfo2.pem -inform DER -out valid.xml

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

Verification successful

Файл valid.xml в случае верной подписи будет идентичен файлу request.xml.

Другим способом проверить удачно подписанный запрос, является сервис на сайте госуслуг.

После подписи запроса, можно приступить к подачи запроса на выгрузку дампа реестров. Это можно выполнить в ручном или автоматическом режиме.

Вручном режиме нужно перейти в раздел «Информационная система взаимодействия Роскомнадзора с операторами связи» и выбрать «Ручной режим». Появится форма, как на рисунке 2, где нужно указать файлы запроса и подписи.

Вслучае верной подписи и принадлежность ее оператору связи, будет выдан идентификатор запроса, используя который через минут десять можно будет выгрузить дамп реестра в ZIP архиве. В архиве находится два файла: dump.xml и dump.xml.sig. Первый это сам дамп реестров, а второй открепленная электронная подпись в формате PKCS#7. Данную подпись можно проверить OpenSSL. Для этого нужен сертификат издателя ключа, которым подписан дамп реестров – это CA RTK (ОИБ ДФП РТК, ОАО Ростелеком, Москва, Сущевский вал 26, ca@rt.ru). Данный сертификат извлекается из криптоконтейнера или берется с сайта уполномоченного федерального органа в области использования электронной подписи в DER формате и конвертируется посредством OpenSSL в PEM формат командой:

openssl x509 -inform der -in CA-RTK.cer -out CA-RTK.pem

15