Протокол передачи файлов декларации на сервер

advertisement
Протокол передачи файлов декларации на сервер
автоматизированной системы декларирования розничной продажи
алкогольной продукции на территории Пермского края
Обмен информацией между сервером декларирования лицензирующего органа
Министерства развития торговли и предпринимательства Пермского края (далее «сервер») и
программным обеспечением лицензиата (далее «клиент») осуществляется через глобальную
сеть «Интернет» по протоколу TCP.
Сервер находится по адресу «mintorg.dyndns.org». Для приема информации используется
порт 32444.
Соединение с сервером инициируется клиентом. Для этого клиент подключается к
серверу по указанному адресу и порту.
Передаваемая декларация должна представлять собой группу файлов, отправляемых
последовательно. Количество файлов может быть от одного до шести (в соответствии
Приказом Министерства развития торговли и предпринимательства Пермского края от
20.01.2009.№ СЭД-03.02-03-6 "Об утверждении формата декларации о розничной продаже
алкогольной продукции, представленной в электронном виде"). ИНН и даты в имени всех
файлов в группе должны совпадать. Шестой файл является файлом справочников, при
передаче его имя должно состоять из тех же ИНН и даты, тип равен 6. Формат имен файлов
выглядит как ХХХХХХХХХХYYYYMMDDT, где ХХХХХХХХХХ – ИНН организации (10
символов), YYYY – год (4 символа), MM – месяц (2 символа), DD – день (2 символа), T – тип
файла декларации (1 символ). Расшифровка типов файлов в таблице 3.
На каждое сообщение клиента сервер формирует ответ в виде одного байта,
содержащего код ошибки, в некоторых случаях, если код не равен 0 (нулю) – нет ошибки,
сервер закрывает соединение.
Защита передаваемой информации осуществляется средствами криптографической
защиты информации на базе программного обеспечения КриптоПро CSP (версии 2.0 и выше)
в соответствии с ГОСТ Р 34.10-2001 (полное название: «ГОСТ Р 34.10-2001. Информационная
технология. Криптографическая защита информации. Процессы формирования и проверки
электронной цифровой подписи») и ГОСТ 28147-89 (полное название: «ГОСТ 28147-89.
Системы обработки информации. Защита криптографическая. Алгоритм криптографического
преобразования».
Схема криптографической защиты: клиент подписывает электронно-цифровой
подписью файл декларации, затем шифрует подписанный файл при помощи пары ключей –
своего закрытого и открытого ключа получателя по следующей схеме:
1.Генерируется случайный сессионный ключ по ГОСТ 28147-89.
2.Генерируется вектор инициализации сессионного ключа.
3.Сессионным ключом шифруется файл декларации.
4.На основе открытого ключа получателя и секретного отправителя вырабатывается
ключ обмена.
5.Сессионный ключ шифруется ключом обмена.
6.В передаваемое сообщение включаются:
 Размер зашифрованного сессионного ключа (4 байта);
 Зашифрованный сессионный ключ;
 Размер вектора инициализации сессионного ключа (4 байта);
 Вектор инициализации сессионного ключа;
 Зашифрованный файл декларации.
1
Полученный зашифрованный файл сервер дешифрует при помощи своего закрытого
ключа и открытого ключа отправителя по следующей схеме:
1.С помощью секретного ключа получателя и переданного открытого ключа
отправителя формируется ключ обмена.
2.С помощью ключа обмена расшифровывается сессионный ключ.
3.Устанавливается вектор инициализации сессионного ключа.
4.С помощью сессионного ключа расшифровывается сообщение.
Подписанный файл сохраняется, а также обрабатывается, информация из файла
заносится в базу данных сервера.
При запросе клиентом уведомления об обработке, в случае, если обработка декларации
прошла без ошибок, сервер находит файл декларации клиента с его ЭЦП, прикрепляет к нему
свою подпись, шифрует при помощи своего закрытого ключа и открытого ключа клиента,
затем отправляет в виде уведомления об обработке декларации этот файл. Если в файле
декларации обнаружены ошибки, он не принимается и удаляется с сервера. В этом случае
сервер в виде уведомления отправляет отчет обработки файла в виде подписанного и
зашифрованного файла в текстовом формате или, если файл невозможно обработать, код
ошибки обработки файла.
Для обмена файлами декларации клиента с сервером с помощью средств
криптографической защиты информации на сервере необходимо наличие сертификата
открытого ключа криптозащиты клиента. Соответственно, у клиента необходимо наличие
сертификата открытого ключа криптозащиты сервера.
Протокол обмена информацией клиента и сервера представлен в таблице 1.
В таблицах 2, 4, 5, 6, 7, 8 содержатся коды ошибок, которые могут возникнуть во время
обмена информацией сервера с клиентом.
Обмен сертификатами открытого ключа выполняется в автоматическом режиме по
протоколу, представленному в таблице 9. Обмен необходимо выполнить при первичной
отправке декларации, либо для отправки или получения перевыпущенных сертификатов (в
случае окончания периода действия или компрометации ключей).
Полученный сервером сертификат открытого ключа клиента проходит проверку на
соответствие следующим параметрам:
 соответствие ГОСТ Р 34.10-2001;
 кодировка сертификата Base64;
 период использования данного сертификата уже наступил и еще не истек;
 сертификат не содержится в списке отозванных сертификатов;
 одно из полей субъекта или имя сертификата содержит ИНН организации.
В случае, если сертификат не удовлетворяет одному из условий, он не принимается
сервером, а клиенту возвращается соответствующий код ошибки указанный в таблице 12.
Прошедшие проверку сертификаты могут использоваться для сдачи деклараций в порядке,
установленном настоящим Регламентом.
Все события, происходящие при обмене информацией между сервером и
организациями-лицензиатами, фиксируются и сохраняются в базе данных на сервере с
указанием даты, времени, ИНН организации, IP адреса клиента и описания события.
2
Сервер
Ожидает соединение на порт 32444
Таблица 1
Протокол обмена информацией с сервером
Клиент
Выполняет подключение на порт 32444
0 (1 байт=0=00000000b=00h)
Первый ответ сервера, подтверждающий
соединение
INNХХХХХХХХХХ
Текстовая строка, передающая ИНН клиента, где
ХХХХХХХХХХ – ИНН организации
Х
Код ошибки (расшифровка в табл.2)
Цикл передачи файлов декларации на сервер
file+ХХХХХХХХХХYYYYMMDDT+SIZE
Текстовая строка, сообщающая о намерении
передать файл декларации, где:
ХХХХХХХХХХYYYYMMDDT – имя файла
(ХХХХХХХХХХ – ИНН организации, YYYY –
год, MM – месяц, DD – день, T – тип файла
декларации (см.табл.3));
SIZE – размер файла в байтах (текст)
Х
Код ошибки (расшифровка в табл.4)
поток с файлом декларации или справочника
Х
Код ошибки (расшифровка в табл.5)
Цикл передачи файлов допускается повторять от 0 (нуля) до 6 (шести) раз
(по всем типам файлов декларации: приход, расход, возврат поставщику, возврат от
покупателей, списание продукции и справочники)
Цикл запросов на получение отчетов обработки файлов декларации
report+ХХХХХХХХХХYYYYMMDDT
Текстовая строка, сообщающая о запросе
обработки файла декларации, где:
ХХХХХХХХХХYYYYMMDDT – имя файла
(ХХХХХХХХХХ – ИНН организации, YYYY –
год, MM – месяц, DD – день, T – тип файла
декларации)
Х+SIZE (5 байт)
Х – Код ошибки (расшифровка в табл.6);
SIZE – 4 байта. Размер файла отчета
обработки в байтах (в случае успешной
обработки) или
4 нулевых байта (в случае ошибок
обработки)
3
DDMMYYhhmmssNN
Текстовая строка, сообщающая дату и
время обработки файла декларации, а
также количество корректировок, где:
DD – день, MM – месяц, YY – год,
hh – часы, mm – минуты, ss – секунды,
NN – количество корректирующих
деклараций
Х
Код ошибки (расшифровка в табл.7)
В случае если есть информация об обработке файла (действительно был отправлен)
поток с файлом отчета обработки:
если без ошибок – подписанный сервером
файл декларации;
если с ошибками – лог обработки со
списком ошибок.
Х
Код ошибки (расшифровка в табл.8)
Цикл запросов на получение отчетов обработки допускается
повторять от 0 (нуля) до 10 (десяти) раз
Х (1 байт=255=1111111111b=FFh)
Сообщение клиента о завершении соединения
Завершение соединения с клиентом
4
Таблица 2
Расшифровка ошибок при подключении к серверу
Код
Расшифровка
ошибки
00000000 Ошибок не обнаружено. Разрешен обмен информацией
00000001 Ошибка. Запрещен обмен информацией для клиента с указанным ИНН.
Завершение соединения.
00000010 Ошибка. Клиент с указанным ИНН не найден в справочнике.
Запрещен обмен информацией. Завершение соединения.
00000011 Ошибка. Не найден сертификат открытого ключа шифрования клиента с
указанным ИНН. Запрещен обмен информацией.
Завершение соединения (кроме случаев обмена сертификатами открытого ключа).
00000100 Ошибка извлечения открытого ключа из сертификата клиента.
Запрещен обмен информацией. Завершение соединения.
00000101 Ошибка криптографии на сервере. Сервер не готов выполнять криптографические
функции. Запрещен обмен информацией. Завершение соединения.
Таблица 3
Типы файлов декларации
Тип файла
(Т)
1
2
3
4
5
6
Расшифровка типа
Файл прихода (закупок) алкогольной продукции
Файл расхода (реализации) алкогольной продукции
Файл возврата алкогольной продукции поставщику
Файл возврата алкогольной продукции от покупателей
Файл брака (списания) алкогольной продукции
Файл справочников
Таблица 4
Расшифровка ошибок при приеме информации о файле
Код
Расшифровка
ошибки
00000000 Ошибок не обнаружено. Разрешен обмен информацией. Ожидается прием файла
00000001 Ошибка. Некорректное имя файла. ИНН не совпадает с ИНН клиента.
Файл принят не будет. Завершение соединения.
00000010 Ошибка. Некорректное имя файла. Неправильный ИНН.
Файл принят не будет. Завершение соединения.
00000011 Ошибка. Некорректное имя файла. Неверная дата.
Файл принят не будет. Завершение соединения.
00000100 Ошибка. Некорректное имя файла. Неверный тип файла.
Файл принят не будет. Завершение соединения.
00000101 Ошибка. Некорректный размер файла.
Файл принят не будет. Завершение соединения.
00000110 Ошибка. Имя файла не совпадает с именами предыдущих файлов.
Файл принят не будет. Завершение соединения.
00000111 Ошибка. Длина строки сообщения о передаче файла декларации менее
26 символов. Файл принят не будет. Завершение соединения.
00001000 Ошибка. Количество файлов превышает максимально допустимое (более 6).
Файл принят не будет. Завершение соединения.
00001001 Внутренняя ошибка сервера. Файл принят не будет. Завершение соединения.
00001010 Ошибка. Файл с указанным именем уже был передан, но еще не обработан.
Завершение соединения.
5
Таблица 5
Расшифровка ошибок при передаче файлов декларации
Код
Расшифровка
ошибки
00000000 Ошибок не обнаружено. Файл успешно принят
00000001 Ошибка. Размер потока не совпадает с переданным размером файла.
Завершение соединения.
00000010 Ошибка. Не удается выполнить расшифровку файла открытым ключом клиента.
Возможно у одной из сторон неправильный сертификат открытого ключа другой
стороны. Завершение соединения.
00000011 Ошибка. Электронно-цифровая подпись в расшифрованном сообщении не
соответствует сертификату открытого ключа клиента. Завершение соединения.
00000100 Внутренняя ошибка сервера. Завершение соединения.
00000101 Ошибка. Не удается извлечь электронно-цифровую подпись сообщения.
Завершение соединения.
Код
ошибки
00000000
00000001
00000010
00000011
00000100
00000101
00000110
00000111
00001000
00001001
00001010
00001011
00001100
00001101
00001110
00001111
00010000
00010001
00010010
Таблица 6
Расшифровка ошибок при передаче отчетов обработки файлов декларации
Расшифровка
Ошибок не обнаружено. Выполняется передача файла декларации с ЭЦП сервера.
Ошибки в файле декларации. Выполняется передача отчета об обработке файла.
Ошибка обработки файла декларации. Неверное количество полей.
Ошибка обработки файла декларации. Неправильные имена полей.
Ошибка обработки файла декларации. Неправильный тип полей.
Ошибка обработки файла декларации. Неправильный размер полей.
Ошибка обработки файла декларации. Нулевое количество записей.
Ошибка обработки файла декларации. Ошибка в структуре файла.
Ошибка обработки файла декларации. Нераспознаваемая структура файла.
Ошибка. Некорректное имя файла. ИНН не совпадает с ИНН клиента.
Ошибка. Некорректное имя файла. Неправильный ИНН.
Ошибка. Некорректное имя файла. Неверная дата.
Ошибка. Некорректное имя файла. Неверный тип файла.
Ошибка. Отчет обработки файла с указанным именем не найден.
Внутренняя ошибка сервера. Завершение соединения.
Ошибка. Длина строки запроса отчета не равна 25 символам.
Ошибка. Количество запросов превышает максимально допустимое (более 10).
Ошибка криптографии при шифровании файла отчета обработки декларации.
Файл декларации еще не обработан. Отчет обработки файла не найден.
6
Таблица 7
Расшифровка ошибок при приеме отчетов обработки файлов декларации клиентом
Расшифровка
Код
ошибки
00000000 Клиент готов принять файл отчета обработки декларации / Сообщение об ошибке
принято (в случае кодов из таблицы 6 не равных «0» или «1»)
00000001 Ошибка. Некорректная дата или время обработки.
Отчет принят не будет. Завершение соединения.
00000010 Ошибка. Некорректное количество корректировок.
Отчет принят не будет. Завершение соединения.
00000011 Ошибка. Некорректный размер файла.
Отчет принят не будет. Завершение соединения.
00000100 Ошибка. Клиент не готов принять отчет обработки. Внутренняя ошибка.
Отчет принят не будет. Завершение соединения.
Таблица 8
Расшифровка ошибок при приеме файла отчета обработки декларации
Расшифровка
Код
ошибки
00000000 Файл отчета обработки декларации успешно принят
00000001 Ошибка. Размер потока не совпадает с переданным размером файла.
Завершение соединения.
00000010 Ошибка. Не удается выполнить расшифровку файла открытым ключом сервера.
Возможно у одной из сторон неправильный сертификат открытого ключа другой
стороны. Завершение соединения.
00000011 Ошибка. Электронно-цифровая подпись в расшифрованном сообщении не
соответствует сертификату открытого ключа сервера. Завершение соединения.
00000100 Внутренняя ошибка клиента. Завершение соединения.
00000101 Ошибка. Не удается извлечь электронно-цифровую подпись сообщения.
Завершение соединения.
00000110 Ошибка. Полученный в виде отчета файл декларации не идентичен
отправленному.
7
Сервер
Ожидает соединение на порт 32444
Таблица 9
Протокол обмена сертификатами открытого ключа
криптографической защиты информации с сервером
Клиент
Выполняет подключение на порт 32444
0 (1 байт=0=00000000b=00h)
Первый ответ сервера, подтверждающий
соединение
INNХХХХХХХХХХ
Текстовая строка, передающая ИНН клиента,
где ХХХХХХХХХХ – ИНН организации
Х
Код ошибки (расшифровка в табл.2)
cert
Текстовая строка, сообщающая о намерении
выполнить обмен сертификатами с сервером
Х+SIZE (5 байт)
Х – Код ошибки (расшифровка в табл.10);
SIZE – 4 байта. Размер файла сертификата в
байтах (4 нулевых байта в случае X>0)
Поток с файлом сертификата сервера
Х+SIZE (5 байт)
Х – Код ошибки (расшифровка в табл.11);
SIZE – 4 байта. Размер файла сертификата в
байтах (4 нулевых байта в случае X>0)
Поток с файлом сертификата клиента
Х
Код ошибки (расшифровка в табл.12)
Х (1 байт=255=1111111111b=FFh)
Сообщение клиента о завершении соединения
Завершение соединения с клиентом
8
Таблица 10
Расшифровка ошибок при отправке клиентом запроса на обмен
сертификатами открытого ключа криптографической защиты информации
Расшифровка
Код
ошибки
00000000 Сервер готов выполнить обмен сертификатами.
00000001 Ошибка криптографии на сервере. Сервер не готов выполнять криптографические
функции. Запрещен обмен информацией. Завершение соединения.
00000010 Внутренняя ошибка сервера. Завершение соединения.
Таблица 11
Расшифровка ошибок при приеме сертификата открытого ключа клиентом
Расшифровка
Код
ошибки
00000000 Файл сертификата сервера успешно принят
00000001 Ошибка. Размер потока не совпадает с переданным размером файла.
Завершение соединения.
00000010 Ошибка. Период использования данного сертификата еще не наступил и уже истек.
00000011 Ошибка. Сертификат находится в списке отозванных сертификатов.
00000100 Ошибка. В имени и субъекте сертификата нет полей, определяющих
принадлежность сертификата серверу.
00000101 Внутренняя ошибка клиента. Завершение соединения.
Таблица 12
Расшифровка ошибок при приеме сертификата открытого ключа сервером
Расшифровка
Код
ошибки
00000000 Файл сертификата клиента успешно принят
00000001 Ошибка. Размер потока не совпадает с переданным размером файла.
Завершение соединения.
00000010 Ошибка. Период использования данного сертификата еще не наступил и уже истек.
00000011 Ошибка. Сертификат находится в списке отозванных сертификатов.
00000100 Ошибка. В имени и субъекте сертификата нет полей, определяющих
принадлежность сертификата клиенту (содержащих ИНН клиента).
00000101 Внутренняя ошибка сервера. Завершение соединения.
9
Download