Статус: Новичок
Группы: Участники
Зарегистрирован: 06.01.2019(UTC) Сообщений: 9
|
Полученная подпись со штампом проходит проверку через КриптоАрм. Но вот значение штампа почему то выводится в виде массива байт. Об этой проблеме как раз говорилось в https://www.cryptopro.ru...spx?g=posts&t=11317. Отображается в виде 30 82 05 56 02 01 01 30 82 01 58 30 82 01 48 31 18 30 16 06 05 2a 85 03 64 01 12 0d 31 30 33 37 37 30 30 30 38 35 34 34 34 31 1a 30 18 06 08 2a 85 03 03 81 03 01 01 12 0c 30 30 37 37 31 37 31 30 37 39 39 31 31 39 30 37 06 03 55 04 09 1e 30 04 43 04 3b 00 2e 00 20 04 21 04 43 04 49 04 51 04 32 04 41 04 3a 04 38 04 39 00 20 04 32 04 30 04 3b 00 2c 00 20 04 34 00 2e 00 20 00 31 00 38 31 21 30 1f 06 03 55 04 08 1e 18 00 37 00 37 00 20 04 33 00 2e 00 20 04 1c 04 3e 04 41 04 3a 04 32 04 30 31 15 30 13 06 03 55 04 07 1e 0c 04 1c 04 3e 04 41 04 3a 04 32 04 30 31 20 30 1e 06 09 2a 86 48 86 f7 0d 01 09 01 16 11 69 6e 66 6f 40 63 72 79 70 74 6f 70 72 6f 2e 72 75 31 0b 30 09 06 03 55 04 06 13 02 52 55 31 29 30 27 06 03 55 04 0a 1e 20 04 1e 04 1e 04 1e 00 20 00 22 04 1a 04 20 04 18 04 1f 04 22 04 1e 00 2d 04 1f 04 20 04 1e 00 22 31 41 .... Подскажите из-за чего это может быть? Особенности получения токена через BouncyCastle? Ожидал увидеть примерно следующий вид: Штамп времени на подпись Точность -1 Идентификатор политики 1.2.3.4.42 Статус Запрос успешно обработан Время 23.04.2019 15:19:00 UTC+06 Серийный номер 133258AEE60000000000128FCA Сертификат службы штампов времени Информация о сертификате Параметры сертификата: Версия: 3 Серийный номер: 01FDA2D300E5A9758543FED52AB5AF4834 Издатель: Тестовый подчиненный УЦ ООО "КРИПТО-ПРО" ГОСТ 2012 (УЦ 2.0), info@cryptopro.ru, 1037700085444, 007717107991, RU, 77 Москва, Москва, ул. Сущёвский вал д. 18, ООО "КРИПТО-ПРО" Действителен с: 30.01.2019 18:40:33 UTC+06 Действителен до: 30.01.2029 18:01:44 UTC+06 Владелец: Тестовый оператор TSP, 007717107991, 1037700085444, ООО "КРИПТО-ПРО", ул. Сущевский Вал, д. 18, Москва, 77 Москва, RU
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 393 раз в 366 постах
|
То есть фундаментально изменили по сравнению с первым сообщением копирование на Marshal.StructureToPtr? Автор: ___Алексей_Васильев___ Полученная подпись со штампом проходит проверку через КриптоАрм. Но вот значение штампа почему то выводится в виде массива байт. Об этой проблеме как раз говорилось в https://www.cryptopro.ru...aspx?g=posts&t=11317Подскажите из-за чего это может быть? Особенности получения токена через BouncyCastle? Полагаю, скопировался какой-то "вредный совет" из той темы, оид вероятно не тот или тип атрибута или надо немного обертку блоба срезать. Желательно выяснить вообще этот атрибут сейчас влияет на проверку подписи или нет? Например, если перевести время на тот момент когда сертификат закончится пройдет ли подпись проверку. Если нет, то атрибут ни на что по факту не влияет и он хоть и закодирован успешно, но неверный по смыслу. По оиду версию проверить проще всего: судя по прочитанным сегодня вполглаза по диагонали стандартам, оид с окончанием .1.4 попадался в протоколе TSP, а c окончанием .2.14 фигурируровал в стандарте cades. Полагаю логичнее использовать значение что в cades. Соответственно, может быть не срабатывает автоматический разбор значения атрибута из-за другого оида. Если не поможет, то надо вчитываться в стандарт или сравнивать с правильно разбираемым файлом.
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 06.01.2019(UTC) Сообщений: 9
|
Автор: two_oceans То есть фундаментально изменили по сравнению с первым сообщением копирование на Marshal.StructureToPtr? Автор: ___Алексей_Васильев___ Полученная подпись со штампом проходит проверку через КриптоАрм. Но вот значение штампа почему то выводится в виде массива байт. Об этой проблеме как раз говорилось в https://www.cryptopro.ru...aspx?g=posts&t=11317Подскажите из-за чего это может быть? Особенности получения токена через BouncyCastle? Полагаю, скопировался какой-то "вредный совет" из той темы, оид вероятно не тот или тип атрибута или надо немного обертку блоба срезать. Желательно выяснить вообще этот атрибут сейчас влияет на проверку подписи или нет? Например, если перевести время на тот момент когда сертификат закончится пройдет ли подпись проверку. Если нет, то атрибут ни на что по факту не влияет и он хоть и закодирован успешно, но неверный по смыслу. По оиду версию проверить проще всего: судя по прочитанным сегодня вполглаза по диагонали стандартам, оид с окончанием .1.4 попадался в протоколе TSP, а c окончанием .2.14 фигурируровал в стандарте cades. Полагаю логичнее использовать значение что в cades. Соответственно, может быть не срабатывает автоматический разбор значения атрибута из-за другого оида. Если не поможет, то надо вчитываться в стандарт или сравнивать с правильно разбираемым файлом. Да, действительно был указан неверный OID атрибута, из-за чего подпись воспринималась как Cades-Bes, а не Cades-T, которая мне нужна. Заменил Oid на 1.2.840.113549.1.9.16.2.14 (id-aa-signatureTimeStampToken) и заношу в атрибут значение токена как есть (вместо кодирования структуры SIGNER_INFO). При проверке на ресурсе https://www.justsign.me/verifyqca/Verify/ верно определяется тип подписи Cades-T и даже отображается значение "Время подписи полученное из штампа времени", но в результате получаю ошибку: "Не удалось проверить подпись CAdES-T. Ошибка: [Элемент не найден]. Код: [0x80070490].В сообщении не найден действительный штамп времени на подпись." Нашел похожу проблему https://www.cryptopro.ru...spx?g=posts&t=14482, но из ответа непонятно куда и какой сертификат нужно добавить и какой адрес нужно изменить на общедоступный?
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602 Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 393 раз в 366 постах
|
Цитата:Полученная подпись со штампом проходит проверку через КриптоАрм. Но вот значение штампа почему то выводится в виде массива байт. Автор: ___Алексей_Васильев___ Да, действительно был указан неверный OID атрибута, из-за чего подпись воспринималась как Cades-Bes, а не Cades-T, которая мне нужна. Заменил Oid на 1.2.840.113549.1.9.16.2.14 (id-aa-signatureTimeStampToken) и заношу в атрибут значение токена как есть (вместо кодирования структуры SIGNER_INFO). Что-то обстоятельства меняются быстро: и средство проверки изменилось и оид и кодирование. Если по порядку: 1) в КриптоАрм теперь проверка проходит и правильно выводится значение? Если проверка не проходит, нужно более подробно смотреть на каком шаге "спотыкается". 2) Что мотивировало отказаться от кодирования? 3) С какой-то верной подписью сравнивали? Цитата:При проверке на ресурсе https://www.justsign.me/verifyqca/Verify/ верно определяется тип подписи Cades-T и даже отображается значение "Время подписи полученное из штампа времени", но в результате получаю ошибку: "Не удалось проверить подпись CAdES-T. Ошибка: [Элемент не найден]. Код: [0x80070490].В сообщении не найден действительный штамп времени на подпись. Это сообщение можно толковать по-разному: 1) либо вообще никакой штамп времени не найден; 2) либо штамп времени найден, но штамп недействительный или не удалось проверить его действительность. Тема на которую приведена ссылка адресует второй случай. Речь, как я понимаю, идет о сертификате тестового УЦ, который выпустил сертификат подписавшего и сертификат сервера доверенного времени. Сертификат УЦ не был добавлен в Доверенные сертификаты на justsign и из-за этого не проходила проверка. Другими словами самостоятельно Вы тут ничего не добавите.
Про "необщедоступный" адрес имеется ввиду что многие ведомства (и тестовый УЦ) имеют специальный адрес для обращения к информации УЦ (точнее как минимум к сертификату УЦ, спискам отзыва или OCSP-ответчику) внутри корпоративной сети, который прописан на корпоративном сервере DNS и соответвенно из Интернета к нему доступа нет (либо блокируется межсетевым экраном либо нельзя разрешить DNS имя). При этом как правило есть и еще один адрес, доступный из интернет, обращения к которому разрешены ("общедоступный"). Если сервер штампов времени и УЦ, выпустивший сертификат подписавшего принадлежат одной копоративной сети проблем как правило не возникает, а вот если компании или сети разные возможны накладки из-за недоступных адресов.
У Вас же скорее всего сейчас немного другой случай, то есть штамп присутствует, но без кодирования в нем полагаю нет достаточной информации о подписавшем сервере времени. Соответственно, при проверке неизвестно как проверить действительность самого штампа времени.
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 06.01.2019(UTC) Сообщений: 9
|
Автор: two_oceans Цитата:Полученная подпись со штампом проходит проверку через КриптоАрм. Но вот значение штампа почему то выводится в виде массива байт. Автор: ___Алексей_Васильев___ Да, действительно был указан неверный OID атрибута, из-за чего подпись воспринималась как Cades-Bes, а не Cades-T, которая мне нужна. Заменил Oid на 1.2.840.113549.1.9.16.2.14 (id-aa-signatureTimeStampToken) и заношу в атрибут значение токена как есть (вместо кодирования структуры SIGNER_INFO). Что-то обстоятельства меняются быстро: и средство проверки изменилось и оид и кодирование. Если по порядку: 1) в КриптоАрм теперь проверка проходит и правильно выводится значение? Если проверка не проходит, нужно более подробно смотреть на каком шаге "спотыкается". 2) Что мотивировало отказаться от кодирования? 3) С какой-то верной подписью сравнивали? Цитата:При проверке на ресурсе https://www.justsign.me/verifyqca/Verify/ верно определяется тип подписи Cades-T и даже отображается значение "Время подписи полученное из штампа времени", но в результате получаю ошибку: "Не удалось проверить подпись CAdES-T. Ошибка: [Элемент не найден]. Код: [0x80070490].В сообщении не найден действительный штамп времени на подпись. Это сообщение можно толковать по-разному: 1) либо вообще никакой штамп времени не найден; 2) либо штамп времени найден, но штамп недействительный или не удалось проверить его действительность. Тема на которую приведена ссылка адресует второй случай. Речь, как я понимаю, идет о сертификате тестового УЦ, который выпустил сертификат подписавшего и сертификат сервера доверенного времени. Сертификат УЦ не был добавлен в Доверенные сертификаты на justsign и из-за этого не проходила проверка. Другими словами самостоятельно Вы тут ничего не добавите.
Про "необщедоступный" адрес имеется ввиду что многие ведомства (и тестовый УЦ) имеют специальный адрес для обращения к информации УЦ (точнее как минимум к сертификату УЦ, спискам отзыва или OCSP-ответчику) внутри корпоративной сети, который прописан на корпоративном сервере DNS и соответвенно из Интернета к нему доступа нет (либо блокируется межсетевым экраном либо нельзя разрешить DNS имя). При этом как правило есть и еще один адрес, доступный из интернет, обращения к которому разрешены ("общедоступный"). Если сервер штампов времени и УЦ, выпустивший сертификат подписавшего принадлежат одной копоративной сети проблем как правило не возникает, а вот если компании или сети разные возможны накладки из-за недоступных адресов.
У Вас же скорее всего сейчас немного другой случай, то есть штамп присутствует, но без кодирования в нем полагаю нет достаточной информации о подписавшем сервере времени. Соответственно, при проверке неизвестно как проверить действительность самого штампа времени. В качестве средств для проверки использую КриптоАрм и сервис https://www.justsign.me/verifyqca/Verify/. В случае КриптоАрма - проверка выполняется с результатом "Один или несколько штампов времени недействительны.". При этом сама подпись действительна, сертификат действителен, но на вкладке "Штамп времени" указано: "Штамп времени недействителен (или отсутствует лицензия)". При этом заполнены свойства штампа, а именно серийный номер, время в штампе, точность штампа и идентификатор политики (1.2.643.2.2.38.4). Так же указано что сертификат действителен. Касательно проверки через сервис https://www.justsign.me/verifyqca/Verify/. В разделе "Дополнительная информация о подписи", определяется формат подписи CADES-T, выводится время подписи полученное из штампа и время подписи. Так же выводится информация о сертификате. Однако результат проверки: "Подпись недействительна", Дополнительная информация: "Не удалось проверить подпись CAdES-T. Ошибка: [Элемент не найден]. Код: [0x80070490].В сообщении не найден действительный штамп времени на подпись.". От кодирования я не отказывался, токен полученный через GetEncoded уже имеет закодированный вид. Oid изменил т.к в спецификации CAdES-T (ETSI TS 101 733 «CMS Advanced Electronic Signatures (CadES)» сказано что для создания подписи CAdES-T необходимо добавить атрибут с oid 1.2.840.113549.1.9.16.2.14 (https://www.etsi.org/deliver/etsi_ts/101700_101799/101733/02.02.01_60/ts_101733v020201p.pdf 38 стр), соответственно в него требуется записывать полученный токен времени. Так же проверил ASN.1 структуру подписей, в двух из которых штамп времени определяется как действительный, сравнил с той что формирую я. Выяснил что одна из подписей с "валидным" штампом имеет формат CAdES-C т.к в ней присутствуют элементы со следующими oid-ами (1.2.840.113549.1.9.16.2.(21-24)), кроме наличия данных элементов разницы в секции описания штампа времени не обнаружил. Вторая подпись с "валидным" штампом, которую я взял из https://www.cryptopro.ru...aspx?g=posts&t=14482 имеет структуру штампа аналогичную моей + содержит два атрибута с oid-ами организации...
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close