Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро ЭЦП (усовершенствованная ЭЦП)
»
Создание обычной (НЕ усовершенствованной) подписи с помощью КриптоПро ЭЦП Browser plug-in
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924  Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Цитата:Т.е. если cms.encapContentInfo.eContent != null (а это так), то в качестве хэша берётся это самое "cms.encapContentInfo.eContent", а оно было извлечено из самой же подписи. И дальше подписанные данные никак не используются. Если же пример модифицировать, и написать "text = data;" то такая проверка не проходит. Точно так же не проходит, если написать "text = CMStools.digestm(data, "GOST3411");". Получается, что при верификации подписи мы никак её не сопоставляем с теми данными, на которых она была сгенерирована. Когда я впервые высказал эту мысль, ваш коллега Андрей * нашёл её абсурдной: А давайте Вы сначала посмотрите RFC 5652, чтобы иметь представление, что вообще такое "это самое cms.encapContentInfo.eContent", а потом будете задавать вопросы про данные. Потому что в этом поле как раз подписанные данные и содержатся. И если оно пустое, значит подпись отделенная.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 20.09.2012(UTC) Сообщений: 19
|
Новожилова Елена написал:Цитата:Т.е. если cms.encapContentInfo.eContent != null (а это так), то в качестве хэша берётся это самое "cms.encapContentInfo.eContent", а оно было извлечено из самой же подписи. И дальше подписанные данные никак не используются. Если же пример модифицировать, и написать "text = data;" то такая проверка не проходит. Точно так же не проходит, если написать "text = CMStools.digestm(data, "GOST3411");". Получается, что при верификации подписи мы никак её не сопоставляем с теми данными, на которых она была сгенерирована. Когда я впервые высказал эту мысль, ваш коллега Андрей * нашёл её абсурдной: А давайте Вы сначала посмотрите RFC 5652, чтобы иметь представление, что вообще такое "это самое cms.encapContentInfo.eContent", а потом будете задавать вопросы про данные. Потому что в этом поле как раз подписанные данные и содержатся. И если оно пустое, значит подпись отделенная. Я же объясняю. В этом поле содержатся не данные из подписи, а что-то другое. Если бы там содержались данные (т.е. "Message".getBytes()), то всё было бы понятно. Но это не так. Там содержится непонятно что. Т.е. мне не удаётся установить связь между тем что там содержится, и моими изначальными данными, которые я и подписывал (текст "Message")
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 20.09.2012(UTC) Сообщений: 19
|
afev написал:Я проверил подпись по данным, выложенным Андрей*. 1) результат проверки: INFO: All signatures are valid: sign[0] - Valid signature on cert[1] (C=RU, ST=spb, L=spb, O=akor81, OU=akor81, CN=korovkin, EMAILADDRESS=akor81@yandex.ru) 2) изменил данные (вместо Message поставил Foo) - Exception: message-digest attribute verify failed (хеш данных не сходится, изменили данные) Отлично! А как Вы это проверяли? Средствами CSP ? Мне-то нужно задействовать JCP. Т.е. если JCP не способен верфицировать подписи, то придётся перейти на CSP, но это влечёт за собой много сложностей. Если Вы проверяли её валидность с помощью JCP - опишите, пожалуйста, как??
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,006  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Проверял JCP, пример CMSVerify, ф. CMSVerify Код:
byte[] sig = Array.readFile(".../akor81.txt.sig");
byte[] data = Array.readFile(".../akor81.txt");
CMSVerify.CMSVerify(sig, null, data);
Потом изменил содержимое файла с данными и снова проверил подпись. Отредактировано пользователем 26 сентября 2012 г. 16:26:53(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 20.09.2012(UTC) Сообщений: 19
|
afev написал:Проверял JCP, пример CMSVerify, ф. CMSVerify Код:
byte[] sig = Array.readFile(".../akor81.txt.sig");
byte[] data = Array.readFile(".../akor81.txt");
CMSVerify.CMSVerify(sig, null, data);
Потом изменил содержимое файла с данными и снова проверил подпись. А когда я это делаю, у меня вылетает: Exception in thread "main" com.objsys.asn1j.runtime.Asn1TagMatchFailedException: ASN.1 decode error @ offset 0: Tag match failed: expected [UNIVERSAL 16], parsed [APPLICATION 13] at com.objsys.asn1j.runtime.Asn1Type.matchTag(Asn1Type.java:449) at com.objsys.asn1j.runtime.Asn1Type.matchTag(Asn1Type.java:466) at ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax.ContentInfo.decode(ContentInfo.java:55) at com.objsys.asn1j.runtime.Asn1Type.decode(Asn1Type.java:218) at com.firstlinesoftware.test.cryptopro.CMSVerify.CMSVerify(CMSVerify.java:100) at com.firstlinesoftware.test.cryptopro.CMSVerify.main(CMSVerify.java:82) Кроме того, я не очень понимаю, почему у Вас на месте второго параметра - null. Сертификат разве не надо указывать? Ну может, его по самой подписи можно получить, конечно. Главная проблема - что у меня вот такой эксепшн вылетает.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924  Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Цитата:Я же объясняю. В этом поле содержатся не данные из подписи, а что-то другое. Если бы там содержались данные (т.е. "Message".getBytes()), то всё было бы понятно. Но это не так. Там содержится непонятно что. Т.е. мне не удаётся установить связь между тем что там содержится, и моими изначальными данными, которые я и подписывал (текст "Message") Это и есть подписанное вами слово Message в кодировке UCS2. Почему так и как сделать, чтобы было не так, на форуме подробно обсуждали. Отредактировано пользователем 26 сентября 2012 г. 16:33:42(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,006  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
1) файл с подписью в бинарном виде? скачайте файлы, которые приложил Андрей* 2) null, т.к. в подписи присутствуют сертификаты. Отредактировано пользователем 26 сентября 2012 г. 16:36:30(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 20.09.2012(UTC) Сообщений: 19
|
Новожилова Елена написал:Цитата:Я же объясняю. В этом поле содержатся не данные из подписи, а что-то другое. Если бы там содержались данные (т.е. "Message".getBytes()), то всё было бы понятно. Но это не так. Там содержится непонятно что. Т.е. мне не удаётся установить связь между тем что там содержится, и моими изначальными данными, которые я и подписывал (текст "Message") Это и есть подписанное вами слово Message в кодировке UCS2. Почему так и как сделать, чтобы было не так, на форуме подробно обсуждали. Йо!!! Спасибо большое! Видимо, в этом и было дело, я именно это и пытаюсь выяснить столько времени - что мне надо сделать с исходными данными, чтобы потом успешно проходила их верификация. Надо ли их преобразовать в другую кодировку, и т.д... По поводу того, что это подробно обсуждалось на форуме - я же не могу читать этот форум с момента его основания... Вы его читаете каждый день по многу часов, и Вам кажется, что если это когда-то обсуждалось, то все это знают. Но для меня это всё совершенно незнакомо. Ок, сейчас попробую их перед верификацией преобразовать в эту кодировку UCS2, надеюсь сейчас должно заработать!
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,518   Сказал «Спасибо»: 555 раз Поблагодарили: 2252 раз в 1757 постах
|
akor81 написал:Новожилова Елена написал:Цитата:Я же объясняю. В этом поле содержатся не данные из подписи, а что-то другое. Если бы там содержались данные (т.е. "Message".getBytes()), то всё было бы понятно. Но это не так. Там содержится непонятно что. Т.е. мне не удаётся установить связь между тем что там содержится, и моими изначальными данными, которые я и подписывал (текст "Message") Это и есть подписанное вами слово Message в кодировке UCS2. Почему так и как сделать, чтобы было не так, на форуме подробно обсуждали. Йо!!! Спасибо большое! Видимо, в этом и было дело, я именно это и пытаюсь выяснить столько времени - что мне надо сделать с исходными данными, чтобы потом успешно проходила их верификация. Надо ли их преобразовать в другую кодировку, и т.д... По поводу того, что это подробно обсуждалось на форуме - я же не могу читать этот форум с момента его основания... Вы его читаете каждый день по многу часов, и Вам кажется, что если это когда-то обсуждалось, то все это знают. Но для меня это всё совершенно незнакомо. Ок, сейчас попробую их перед верификацией преобразовать в эту кодировку UCS2, надеюсь сейчас должно заработать! http://www.cryptopro.ru/...etsya-v-kriptoarmcryptcpВисела ссылка очень долго на главной странице сайта - справа FAQ |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,518   Сказал «Спасибо»: 555 раз Поблагодарили: 2252 раз в 1757 постах
|
Цитата: Вы его читаете каждый день по многу часов, и Вам кажется, что если это когда-то обсуждалось, то все это знают. Но для меня это всё совершенно незнакомо. Для этого существует ресурс "Руководство разработчика" Находится ссылка так: главная страница сайта\Разработчикам\Руководства разработчика Библиотеки ООО «КРИПТО-ПРО» Руководство разработчика http://cpdn.cryptopro.ru/ Использование КриптоПро ЭЦП SDK http://cpdn.cryptopro.ru...es/content-encoding.htmlОсобенности работы с подписываемыми данными в КриптоПро ЭЦП browser plug-in Цитата: Особенности работы с локальными данными
При использовании КриптоПро ЭЦП browser plug-in данные, переданные при создании подписи, будут перекодированы в UCS-2 little endian и именно в таком виде данные будут подписаны
akor81, было бы хорошо выкладывать не только кусочки кода, но и исходных данных\получившихся ... в следующий раз... Отредактировано пользователем 26 сентября 2012 г. 18:16:54(UTC)
| Причина: Не указана |
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро ЭЦП (усовершенствованная ЭЦП)
»
Создание обычной (НЕ усовершенствованной) подписи с помощью КриптоПро ЭЦП Browser plug-in
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close