1 (2017-10-17 16:20:09 отредактировано badik)

Тема: Неверный тип сообщения в формате PKCS#7 (код: 0xE0700022)

Разработчики нашей организации сделали попытку соединить Java c Сигнатурой
посредством своей DLL (интерфейс вроде бы spki1) .
в Java выполняется код который возвращает  ЭП.

        System.load(dllPath);
        VCERT_Initialize("My",0);
....
            outString = VCERT_SignMem(xml);
            if(outString.length()==0){
                throw new Exception("Подписание прошло с ошибкой, подпись имеет нулевую длину");
            }

Полученные файлы не проходят проверку в АРМ КБР.
Ошибка:Неверный тип сообщения в формате PKCS#7   (код: 0xE0700022)
В АРМ КБР было выполнено преобразование файлов УФЭБС для АРМ РКС  Сигнатуры.
Проверка закончилась успешно

Отделенная ЭП в формате PKCS#7:
pkcs7-signedData cryptographic message:
Версия: 2 (0x1)
Алгоритмы Хэш-функции:
    Хэш ГОСТ Р 34.11-2012
Количество ЭП: 1
  Данные о Создателе ЭП:
    Издатель: CN=CA,OU=UBZI,O=CBR,ST=52,C=RU
    Серийный Номер: 40:50:14:C0:56:D5:50:FD:41:7B:78:AC:59:B6:26:F4
    Аутентифицируемые Атрибуты:
        Тип данных               :pkcs7-data
        Время создания ЭП        :16 Окт 2017 10:03:36 GMT
        Значение хэш-функции     :
        B3:EF:A5:56:3D:F2:9C:85:A2:F6:EF:CE:25:45:B1:A6:4C:F0:
        06:E6:CD:15:43:3C:1F:B0:02:DB:03:ED:FF:B5
    Алгоритм ЭП: Подпись ГОСТ Р 34.10-2012
        DA:56:C3:BF:43:BB:E5:AE:17:B2:C6:47:7F:E2:66:96:DC:F8:
        08:CE:AB:23:06:96:E2:1A:4E:C2:4B:47:28:16:0F:E9:B0:0F:
        84:38:4A:F8:7F:2C:F4:FD:22:35:E7:DF:A3:FE:9C:32:84:BE:
        58:96:BC:A8:3E:B3:B9:5D:3C:C9
Общий результат:
Результат проверки: Подпись верна.

при анализе подписи было выяснено что подпись на несколько байт длинее обычной (полученной spki1utl или PKI.VCERT)

MIIBaQYJKoZIhvcNAQcCoIIBWjCCAVYCAQExDjAMBggqhQMHAQECAgUAMBMGCSqG
SIb3DQEHAaAGBASAANUCMYIBKjCCASYCAQEwWDBEMQswCQYDVQQGEwJSVTELMAkG
A1UECBMCNTIxDDAKBgNVBAoTA0NCUjENMAsGA1UECxMEVUJaSTELMAkGA1UEAxMC
Q0ECEEBQFMBW1VD9QXt4rFm2JvQwDAYIKoUDBwEBAgIFAKBpMBgGCSqGSIb3DQEJ
AzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE3MTAxNjEwMDgyNlowLwYJ
KoZIhvcNAQkEMSIEIMH3444QED8ZNXNrXQZOHhfxj0PJ1dFN0xgrdex3kJ21MAwG
CCqFAwcBAQEBBQAEQEUU/73Bb1NHFGnYDNHwNlVd0rGV9WzzBT/37aFhiNPp8P3G
aK7NUeuUxZUPd2AY7ECwcX6CNXqBUQF5Vdyt5Oo=

Анализ ASN.1 показал что почему то заполнен SignedData/contentInfo/content
SignedData/contentInfo/contentType = 1.2.840.113549.1.7.1

Вопроса два:
1. Как он смог заполнится?
2. Почему АРМ РКС успешно проверил эту подпись?

2

Re: Неверный тип сообщения в формате PKCS#7 (код: 0xE0700022)

Добрый день!

А с какими параметрами выполняется вызов VCERT_SignMem? Какие флаги указываются в структуре sign_param_t?

3

Re: Неверный тип сообщения в формате PKCS#7 (код: 0xE0700022)

Со слов разработчиков, только отсоединеная и pkcs7
В протоколы АРМ РКС на правильную и эту подпись похожи.
Мне пришлось доказывать что ошибка в АРМ КБР возникла при подписании
Аналогичная ошибка была у пилотов в трех регионах.
Исходного кода промежуточной длл, где описаны прототипы у меня нет. Завтра спрошу у разработчиков.

4 (2017-10-18 12:01:07 отредактировано badik)

Re: Неверный тип сообщения в формате PKCS#7 (код: 0xE0700022)

Пример ПП с ЭП без персональных данных
файл УФЭБС с  ЗК  закодирован в base64, ошибка подписи в АРМ КБР

PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV0lORE9XUy0xMjUxIj8+CjxQYWNrZXRF
UEQgeG1sbnM9InVybjpjYnItcnU6ZWQ6djIuMCIgRURObz0iMSIgRUREYXRlPSIyMDE3LTEw
LTE2IiBFREF1dGhvcj0iNTIwOTAwMTAwMSIgRURRdWFudGl0eT0iMSIgU3VtPSIxMjM4NzU2
MzYiIFN5c3RlbUNvZGU9IjAxIj4KPEVEMTAxIEVETm89IjI5NjU5MyIgRUREYXRlPSIyMDE3
LTEwLTEyIiBFREF1dGhvcj0iNTIwOTAwMTAwMSIgU3VtPSIxMjM4NzU2MzYiIFRyYW5zS2lu
ZD0iMDEiIFByaW9yaXR5PSI1IiBTeXN0ZW1Db2RlPSIwMSIgUGF5bWVudElEPSIwIj4KICA8
ZHNpZzpTaWdWYWx1ZSB4bWxuczpkc2lnPSJ1cm46Y2JyLXJ1OmRzaWc6djEuMSI+TUlJQmFR
WUpLb1pJaHZjTkFRY0NvSUlCV2pDQ0FWWUNBUUV4RGpBTUJnZ3FoUU1IQVFFQ0FnVUFNQk1H
Q1NxRw0KU0liM0RRRUhBYUFHQkFSZzVib0NNWUlCS2pDQ0FTWUNBUUV3V0RCRU1Rc3dDUVlE
VlFRR0V3SlNWVEVMTUFrRw0KQTFVRUNCTUNOVEl4RERBS0JnTlZCQW9UQTBOQ1VqRU5NQXNH
QTFVRUN4TUVWVUphU1RFTE1Ba0dBMVVFQXhNQw0KUTBFQ0VFQlFGTUJXMVZEOVFYdDRyRm0y
SnZRd0RBWUlLb1VEQndFQkFnSUZBS0JwTUJnR0NTcUdTSWIzRFFFSg0KQXpFTEJna3Foa2lH
OXcwQkJ3RXdIQVlKS29aSWh2Y05BUWtGTVE4WERURTNNVEF4TmpFd01ETXpObG93THdZSg0K
S29aSWh2Y05BUWtFTVNJRUlCTDBzVW93Q2lldTkyRU55anlVZStkRXJib0t6MFh1RXRMd0ov
a0IzWjBVTUF3Rw0KQ0NxRkF3Y0JBUUVCQlFBRVFPTGJCS3Rpc0dKUTMrb1g0UzFzb0lNZGpL
c0dvVVBMdVY3dnl1SlZDdUx0UzZwaw0KUkszYWFRVzNZME5WdmMxUnRhSGZtb2RsNDhOY3pZ
TENJc3daa0U4PQ0KPC9kc2lnOlNpZ1ZhbHVlPgogICAgPEFjY0RvYyBBY2NEb2NObz0iMTgz
MzIwIiBBY2NEb2NEYXRlPSIyMDE3LTEwLTA0Ii8+CiAgICA8UGF5ZXIgUGVyc29uYWxBY2M9
IjQwMTA1ODEwNjAwMDAwMDEwNDgzIiBJTk49Ijc3MTA1MzgzNjQiIEtQUD0iNzcxMDAxMDAx
Ij4KICAgICAgPE5hbWU+0+/w4OLr5e3o5SDU5eTl8ODr/O3u4+4g6uDn7eD35enx8uLgIO/u
IM7s8eru6SDu4evg8fLoKNTFxMXQwMvczcDfINHL08bBwCDPziDS0NPE0yDIIMfAzd/SztHS
yCk8L05hbWU+CiAgICAgIDxCYW5rIEJJQz0iMDQ1MjA5MDAxIi8+CiAgICA8L1BheWVyPgog
ICAgPFBheWVlIFBlcnNvbmFsQWNjPSI0MDIwMTgxMDYwMDAwMDAxMDAwMiIgSU5OPSI1NTAz
MTA3MTI2IiBLUFA9IjU1MDMwMTAwMSI+CiAgICAgIDxOYW1lPtPUyiDv7iDO7PHq7ukg7uHr
4PHy6CjD08PRx80gzuzx6u7pIO7h6+Dx8ugg6/EwNDUyMjAwMDE2MCk8L05hbWU+CiAgICAg
IDxCYW5rIEJJQz0iMDQ1MjA5MDAxIi8+CiAgICA8L1BheWVlPgogICAgPFB1cnBvc2U+KDE1
MDEwMDMwNzEwNTUyOTAwNTMwOyAxNy0zODE7IOsv8SAxNDUyMTE1MDAxMCnP7uTq8OXv6+Xt
6OUg8ffl8uAguSA0MDIwMTsgytY6MTctMzgxLdHz4eLl7fbo6CDt4CDx7vbo4Ov87fvlIOL7
7+vg8vsg4eXn8ODh7vLt++wg4/Dg5uTg7eDsIOIg8e7u8uLl8vHy4ujoIPEgx+Dq7u3u7CDQ
7vHx6Onx6u7pINTl5OXw4Pbo6CDu8iAxOSDg7/Dl6/8gMTk5MSDj7uTgILk8L1B1cnBvc2U+
CiAgICA8RGVwYXJ0bWVudGFsSW5mbyBEcmF3ZXJTdGF0dXM9IjA4IiBDQkM9IjgwMzIwMjM1
MjkwMDIwMDAwMTUxIiBPS0FUTz0iNTIwMDAwMDAiIFBheXRSZWFzb249IjAiIFRheFBlcmlv
ZD0iMCIgRG9jTm89IjAiIERvY0RhdGU9IjAiIFRheFBheXRLaW5kPSIwIi8+CiAgPC9FRDEw
MT4KPC9QYWNrZXRFUEQ+

data  (ЗК UTF8) закодирована в base64

PG4xOkVEMTAxIHhtbG5zOm4xPSJ1cm46Y2JyLXJ1OmVkOnYyLjAiIEVEQXV0aG9yPSI1MjA5MDAxMDAxIiBFRERhdGU9IjIwMTctMTAtMTIiIEVETm89IjI5NjU5MyIgUGF5bWVudElEPSIwIiBQcmlvcml0eT0iNSIgU3VtPSIxMjM4NzU2MzYiIFN5c3RlbUNvZGU9IjAxIiBUcmFuc0tpbmQ9IjAxIj48bjE6QWNjRG9jIEFjY0RvY0RhdGU9IjIwMTctMTAtMDQiIEFjY0RvY05vPSIxODMzMjAiPjwvbjE6QWNjRG9jPjxuMTpQYXllciBJTk49Ijc3MTA1MzgzNjQiIEtQUD0iNzcxMDAxMDAxIiBQZXJzb25hbEFjYz0iNDAxMDU4MTA2MDAwMDAwMTA0ODMiPjxuMTpOYW1lPtCj0L/RgNCw0LLQu9C10L3QuNC1INCk0LXQtNC10YDQsNC70YzQvdC+0LPQviDQutCw0LfQvdCw0YfQtdC50YHRgtCy0LAg0L/QviDQntC80YHQutC+0Lkg0L7QsdC70LDRgdGC0Lgo0KTQldCU0JXQoNCQ0JvQrNCd0JDQryDQodCb0KPQltCR0JAg0J/QniDQotCg0KPQlNCjINCYINCX0JDQndCv0KLQntCh0KLQmCk8L24xOk5hbWU+PG4xOkJhbmsgQklDPSIwNDUyMDkwMDEiPjwvbjE6QmFuaz48L24xOlBheWVyPjxuMTpQYXllZSBJTk49IjU1MDMxMDcxMjYiIEtQUD0iNTUwMzAxMDAxIiBQZXJzb25hbEFjYz0iNDAyMDE4MTA2MDAwMDAwMTAwMDIiPjxuMTpOYW1lPtCj0KTQmiDQv9C+INCe0LzRgdC60L7QuSDQvtCx0LvQsNGB0YLQuCjQk9Cj0JPQodCX0J0g0J7QvNGB0LrQvtC5INC+0LHQu9Cw0YHRgtC4INC70YEwNDUyMjAwMDE2MCk8L24xOk5hbWU+PG4xOkJhbmsgQklDPSIwNDUyMDkwMDEiPjwvbjE6QmFuaz48L24xOlBheWVlPjxuMTpQdXJwb3NlPigxNTAxMDAzMDcxMDU1MjkwMDUzMDsgMTctMzgxOyDQuy/RgSAxNDUyMTE1MDAxMCnQn9C+0LTQutGA0LXQv9C70LXQvdC40LUg0YHRh9C10YLQsCDihJYgNDAyMDE7INCa0KY6MTctMzgxLdCh0YPQsdCy0LXQvdGG0LjQuCDQvdCwINGB0L7RhtC40LDQu9GM0L3Ri9C1INCy0YvQv9C70LDRgtGLINCx0LXQt9GA0LDQsdC+0YLQvdGL0Lwg0LPRgNCw0LbQtNCw0L3QsNC8INCyINGB0L7QvtGC0LLQtdGC0YHRgtCy0LjQuCDRgSDQl9Cw0LrQvtC90L7QvCDQoNC+0YHRgdC40LnRgdC60L7QuSDQpNC10LTQtdGA0LDRhtC40Lgg0L7RgiAxOSDQsNC/0YDQtdC70Y8gMTk5MSDQs9C+0LTQsCDihJY8L24xOlB1cnBvc2U+PG4xOkRlcGFydG1lbnRhbEluZm8gQ0JDPSI4MDMyMDIzNTI5MDAyMDAwMDE1MSIgRG9jRGF0ZT0iMCIgRG9jTm89IjAiIERyYXdlclN0YXR1cz0iMDgiIE9LQVRPPSI1MjAwMDAwMCIgUGF5dFJlYXNvbj0iMCIgVGF4UGF5dEtpbmQ9IjAiIFRheFBlcmlvZD0iMCI+PC9uMTpEZXBhcnRtZW50YWxJbmZvPjwvbjE6RUQxMDE+

ЭП закодирована в base64

MIIBaQYJKoZIhvcNAQcCoIIBWjCCAVYCAQExDjAMBggqhQMHAQECAgUAMBMGCSqGSIb3DQEHAaAGBARg5boCMYIBKjCCASYCAQEwWDBEMQswCQYDVQQGEwJSVTELMAkGA1UECBMCNTIxDDAKBgNVBAoTA0NCUjENMAsGA1UECxMEVUJaSTELMAkGA1UEAxMCQ0ECEEBQFMBW1VD9QXt4rFm2JvQwDAYIKoUDBwEBAgIFAKBpMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE3MTAxNjEwMDMzNlowLwYJKoZIhvcNAQkEMSIEIBL0sUowCieu92ENyjyUe+dErboKz0XuEtLwJ/kB3Z0UMAwGCCqFAwcBAQEBBQAEQOLbBKtisGJQ3+oX4S1soIMdjKsGoUPLuV7vyuJVCuLtS6pkRK3aaQW3Y0NVvc1RtaHfmodl48NczYLCIswZkE8=

лог АРМ РКЦ

Протокол проверки ЭП и сертификатов
------------------------------------
Общие сведения:
Имя файла: C:\8\I1609001.WZS.296593.zk.p7s.
Формат файла: Отделенная ЭП в формате PKCS#7.
Имя файла с данными: C:\8\I1609001.WZS.296593.
Дата и время формирования протокола: 18 октября 2017 г. 3:51:47 GMT.

Опции проверки:
проверять полную цепочку сертификатов
проверять криптографически подписи под сертификатами
проверять срок действия сертификатов
проверять сертификаты на отзыв
проверять криптографически подписи под списками отозванных сертификатов
проверять срок действия списка отозванных сертификатов
Не учитывать время ЭП при проверке сертификата на отзыв

Проверка ЭП № 1
Результат проверки ЭП: ОК
Результат проверки цепочки сертификатов: ОК.
Дата и время установки ЭП: 16 октября 2017 г. 10:03:36 GMT
Идентификация сертификата в ЭП:
Издатель сертификата: CN=CA,OU=UBZI,O=CBR,ST=52,C=RU
Серийный номер сертификата: 40:50:14:C0:56:D5:50:FD:41:7B:78:AC:59:B6:26:F4
Сертификат на котором выполнена ЭП:
Владелец: CN=CONTROL001,OU=5209000001,O=OK001,L=REGRNP,ST=52,C=RU
Издатель: CN=CA,OU=UBZI,O=CBR,ST=52,C=RU
Серийный номер: 40:50:14:C0:56:D5:50:FD:41:7B:78:AC:59:B6:26:F4
Алгоритм ключа проверки ЭП: Подпись ГОСТ Р 34.10-2012
Срок действия сертификата: c 11 сентября 2017 г. 6:02:31 GMT по 11 сентября 2022 г. 23:59:00 GMT
Срок действия ключа ЭП: с 11 сентября 2017 г. 6:02:31 GMT по 16 апреля 2018 г. 23:59:00 GMT
Результат проверки: Подпись верна.

Отделенная ЭП в формате PKCS#7:
pkcs7-signedData cryptographic message:
Версия: 2 (0x1)
Алгоритмы Хэш-функции:
    Хэш ГОСТ Р 34.11-2012
Количество ЭП: 1
  Данные о Создателе ЭП:
    Издатель: CN=CA,OU=UBZI,O=CBR,ST=52,C=RU
    Серийный Номер: 40:50:14:C0:56:D5:50:FD:41:7B:78:AC:59:B6:26:F4
    Аутентифицируемые Атрибуты:
        Тип данных               :pkcs7-data
        Время создания ЭП        :16 Окт 2017 10:03:36 GMT
        Значение хэш-функции     :
        12:F4:B1:4A:30:0A:27:AE:F7:61:0D:CA:3C:94:7B:E7:44:AD:
        BA:0A:CF:45:EE:12:D2:F0:27:F9:01:DD:9D:14
    Алгоритм ЭП: Подпись ГОСТ Р 34.10-2012
        E2:DB:04:AB:62:B0:62:50:DF:EA:17:E1:2D:6C:A0:83:1D:8C:
        AB:06:A1:43:CB:B9:5E:EF:CA:E2:55:0A:E2:ED:4B:AA:64:44:
        AD:DA:69:05:B7:63:43:55:BD:CD:51:B5:A1:DF:9A:87:65:E3:
        C3:5C:CD:82:C2:22:CC:19:90:4F
Общий результат:
Результат проверки: Подпись верна.

5

Re: Неверный тип сообщения в формате PKCS#7 (код: 0xE0700022)

Добрый день, в Вашей подписи присутствуют данные

    55|     6|      1|               CONTEXT SPECIFIC (0) :
    57|     4|      1|                  OCTET_STRING : '60E5BA02'

А в случае отсоединенной подписи, данных быть не должно.

6

Re: Неверный тип сообщения в формате PKCS#7 (код: 0xE0700022)

Хорошо. Свой механизм простановки подписи Разработчики исправили. АРМ КБР подписи проверяет.


Остался вопрос:
Механизмы проверки ЭП в АРМ КБР (-Н) и АРМ РКС должны быть одинаковыми.
Почему "АРМ Разбора Конфликтных Ситуаций Сигнатуры" считает эту не правильную подпись в отдельном файле корректной?

7

Re: Неверный тип сообщения в формате PKCS#7 (код: 0xE0700022)

АРМ РКС предназначен для криптографической проверки подписи и признак, выставленный в АРМ РКС (что подпись отсоединенная), имеет приоритет над признаком в файле.
Если Вам необходимо получить код возврата как в АРМ КБР используйте утилиту командной строки spki1utl.exe

8 (2017-10-27 14:37:19 отредактировано badik)

Re: Неверный тип сообщения в формате PKCS#7 (код: 0xE0700022)

В типовом договоре с ЦБ и в нашем тоже говорится об использовании в конфликтных ситуациях только АРМ РКС.

В АРМ РКС на проверку подаются ДВА файла "отдельной ЭП" и сами Данные. Первый файл ЭП содержит признак встроенной подписи. АРМ РКС игнорирует это не соответствие действительности, не отражает в протоколе
и продолжает  проверку дальше.

9

Re: Неверный тип сообщения в формате PKCS#7 (код: 0xE0700022)

АРМ РКС игнорирует данные в подписи, так как ему явно указывается что данных там нет.
Согласен с Вами, в протокол добавим добавим запись о наличии данных в отсоединенной подписи.