Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

5 Страницы«<2345>
Опции
К последнему сообщению К первому непрочитанному
Offline Новожилова Елена  
#31 Оставлено : 26 сентября 2012 г. 16:11:03(UTC)
Новожилова Елена

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 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", а потом будете задавать вопросы про данные. Потому что в этом поле как раз подписанные данные и содержатся. И если оно пустое, значит подпись отделенная.
Offline akor81  
#32 Оставлено : 26 сентября 2012 г. 16:15:53(UTC)
akor81

Статус: Участник

Группы: Участники
Зарегистрирован: 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")
Offline akor81  
#33 Оставлено : 26 сентября 2012 г. 16:18:22(UTC)
akor81

Статус: Участник

Группы: Участники
Зарегистрирован: 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 - опишите, пожалуйста, как??
Offline Евгений Афанасьев  
#34 Оставлено : 26 сентября 2012 г. 16:19:37(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 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)  | Причина: Не указана

Offline akor81  
#35 Оставлено : 26 сентября 2012 г. 16:31:30(UTC)
akor81

Статус: Участник

Группы: Участники
Зарегистрирован: 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. Сертификат разве не надо указывать? Ну может, его по самой подписи можно получить, конечно. Главная проблема - что у меня вот такой эксепшн вылетает.
Offline Новожилова Елена  
#36 Оставлено : 26 сентября 2012 г. 16:32:46(UTC)
Новожилова Елена

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах
Цитата:
Я же объясняю. В этом поле содержатся не данные из подписи, а что-то другое. Если бы там содержались данные (т.е. "Message".getBytes()), то всё было бы понятно. Но это не так. Там содержится непонятно что. Т.е. мне не удаётся установить связь между тем что там содержится, и моими изначальными данными, которые я и подписывал (текст "Message")


Это и есть подписанное вами слово Message в кодировке UCS2. Почему так и как сделать, чтобы было не так, на форуме подробно обсуждали.

Отредактировано пользователем 26 сентября 2012 г. 16:33:42(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#37 Оставлено : 26 сентября 2012 г. 16:35:49(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,006
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
1) файл с подписью в бинарном виде? скачайте файлы, которые приложил Андрей*
2) null, т.к. в подписи присутствуют сертификаты.

Отредактировано пользователем 26 сентября 2012 г. 16:36:30(UTC)  | Причина: Не указана

Offline akor81  
#38 Оставлено : 26 сентября 2012 г. 16:41:30(UTC)
akor81

Статус: Участник

Группы: Участники
Зарегистрирован: 20.09.2012(UTC)
Сообщений: 19

Новожилова Елена написал:
Цитата:
Я же объясняю. В этом поле содержатся не данные из подписи, а что-то другое. Если бы там содержались данные (т.е. "Message".getBytes()), то всё было бы понятно. Но это не так. Там содержится непонятно что. Т.е. мне не удаётся установить связь между тем что там содержится, и моими изначальными данными, которые я и подписывал (текст "Message")


Это и есть подписанное вами слово Message в кодировке UCS2. Почему так и как сделать, чтобы было не так, на форуме подробно обсуждали.



Йо!!!

Спасибо большое! Видимо, в этом и было дело, я именно это и пытаюсь выяснить столько времени - что мне надо сделать с исходными данными, чтобы потом успешно проходила их верификация. Надо ли их преобразовать в другую кодировку, и т.д...

По поводу того, что это подробно обсуждалось на форуме - я же не могу читать этот форум с момента его основания... Вы его читаете каждый день по многу часов, и Вам кажется, что если это когда-то обсуждалось, то все это знают. Но для меня это всё совершенно незнакомо.

Ок, сейчас попробую их перед верификацией преобразовать в эту кодировку UCS2, надеюсь сейчас должно заработать!
Offline Андрей Писарев  
#39 Оставлено : 26 сентября 2012 г. 16:44:25(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,518
Мужчина
Российская Федерация

Сказал «Спасибо»: 555 раз
Поблагодарили: 2252 раз в 1757 постах
akor81 написал:
Новожилова Елена написал:
Цитата:
Я же объясняю. В этом поле содержатся не данные из подписи, а что-то другое. Если бы там содержались данные (т.е. "Message".getBytes()), то всё было бы понятно. Но это не так. Там содержится непонятно что. Т.е. мне не удаётся установить связь между тем что там содержится, и моими изначальными данными, которые я и подписывал (текст "Message")


Это и есть подписанное вами слово Message в кодировке UCS2. Почему так и как сделать, чтобы было не так, на форуме подробно обсуждали.



Йо!!!

Спасибо большое! Видимо, в этом и было дело, я именно это и пытаюсь выяснить столько времени - что мне надо сделать с исходными данными, чтобы потом успешно проходила их верификация. Надо ли их преобразовать в другую кодировку, и т.д...

По поводу того, что это подробно обсуждалось на форуме - я же не могу читать этот форум с момента его основания... Вы его читаете каждый день по многу часов, и Вам кажется, что если это когда-то обсуждалось, то все это знают. Но для меня это всё совершенно незнакомо.

Ок, сейчас попробую их перед верификацией преобразовать в эту кодировку UCS2, надеюсь сейчас должно заработать!


http://www.cryptopro.ru/...etsya-v-kriptoarmcryptcp

Висела ссылка очень долго на главной странице сайта - справа FAQ

Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#40 Оставлено : 26 сентября 2012 г. 18:06:15(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 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)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
5 Страницы«<2345>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.