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

Уведомление

Icon
Error

5 Страницы<12345>
Опции
К последнему сообщению К первому непрочитанному
Offline akor81  
#21 Оставлено : 26 сентября 2012 г. 14:44:37(UTC)
akor81

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

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

afev написал:
раз вы написали про CAdES-BES, то этот формат подписи подразумевает наличие подписанных атрибутов, с них и вычисляется хеш (в атрибуты входит и хеш данных)


Мне всё равно, это подпись CAdES-BES, или какая-то другая. Мне просто надо плагином создать подпись, а проверить её соответствие подписанным данным с помощью JCP. Просто, этот плагин, как я понял, всё-таки по факту умеет создавать только подпись CAdES, т.е. усовершенствованную. Которая в свою очередь может быть двух типов: CADES-BES или CADES_X_LONG_TYPE_1, которая ещё сложнее. И когда я на демо-странице плагина выбираю простой вариант подписи, генерируется CADES-BES, а когда усовершенствованный -то CADES_X_LONG_TYPE_1. Но на деле и та и та - это усовершенствованные подписи, так что писать что плагин может использоваться для создания простой подписи - это как-то неправильно...

Ну пускай будет усовершенствованная, это даже лучше, мне просто надо научиться её верифицировать на сервере.

afev написал:
Где будет происходить проверка подписи - на сервере? PrivateKey используется для подписи, createhashCMS - формирует подпись, а CMSVerify - проверяет. CMSVerify как раз и проверяет подпись и хеш:
Код:

// I. Проверяем соответствие хеша данных в подписанных атрибутах хешу переданных (вложенных) данных.
...
if (!Array.toHexString(dm).equals(Array.toHexString(md)))
            throw new Exception("message-digest attribute verify failed");
...
// II. Проверяем подпись.
signature.verify(sign);
...


Я это вижу. Но в этом примере подпись проверяется автономно, без всякого использования тех данных которые я подписал. Вы сами посмотрите этот ваш пример:
Код:

public static void CMSVerify(byte[] buffer, Certificate[] certs, byte[] data)
throws Exception {
//clear buffers fo logs
out = new StringBuffer("");
out1 = new StringBuffer("");
final Asn1BerDecodeBuffer asnBuf = new Asn1BerDecodeBuffer(buffer);
final ContentInfo all = new ContentInfo();
all.decode(asnBuf);
if (!new OID(CMStools.STR_CMS_OID_SIGNED).eq(all.contentType.value))
throw new Exception("Not supported");
final SignedData cms = (SignedData) all.content;
final byte[] text;
if (cms.encapContentInfo.eContent != null)
text = cms.encapContentInfo.eContent.value;
else if (data != null) text = data;
else throw new Exception("No content for verify");
...


Этот byte[] text дальше используется в качестве хэша, с которым сверяется подпись. Т.е. если cms.encapContentInfo.eContent != null (а это так), то в качестве хэша берётся это самое "cms.encapContentInfo.eContent", а оно было извлечено из самой же подписи. И дальше подписанные данные никак не используются. Если же пример модифицировать, и написать "text = data;" то такая проверка не проходит. Точно так же не проходит, если написать "text = CMStools.digestm(data, "GOST3411");". Получается, что при верификации подписи мы никак её не сопоставляем с теми данными, на которых она была сгенерирована. Когда я впервые высказал эту мысль, ваш коллега Андрей * нашёл её абсурдной:

Андрей * написал:

как без привязки... ? Зачем тогда ЭЦП, если я могу менять данные, а ЭЦП остается валидной!


И я с ним полностью согласен, я тоже этого не понимаю, однако ж, судя по примеру это так... Зачем тогда ЭЦП, если при её верификации внешние данные, которые ей соответствуют, никак не используются?!
Offline Андрей Писарев  
#22 Оставлено : 26 сентября 2012 г. 15:00:20(UTC)
Андрей *

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

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

Сказал «Спасибо»: 550 раз
Поблагодарили: 2212 раз в 1727 постах
на файл с ЭЦП взглянуть-то можно (и на те данные, что подписывались) ?
можно в РМ прислать ссылку или здесь прикрепить в виде файлов


P.s. вмешивать меня в столь интересный диалог - не советую...

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

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

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

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

Андрей * написал:
на файл с ЭЦП взглянуть-то можно (и на те данные, что подписывались) ?
можно в РМ прислать ссылку или здесь прикрепить в виде файлов


Конечно! Я не знаю, как прикрепить это в виде файлов, но укажу прямо здесь в текстовом виде (все данные заключены в кавычки):

---Стёрто---

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

Вложение(я):
signature__CADES_BES_DETACHED.txt (3kb) загружен 20 раз(а).
certificate1.cer (1kb) загружен 8 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline Андрей Писарев  
#24 Оставлено : 26 сентября 2012 г. 15:19:22(UTC)
Андрей *

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

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

Сказал «Спасибо»: 550 раз
Поблагодарили: 2212 раз в 1727 постах
Сотри, сотри это полностью!
и справа есть кнопка Attach - чтобы прикрепить к сообщению файлы....
и прикрепи не в base64, а оригиналы...
Техническую поддержку оказываем тут
Наша база знаний
Offline Евгений Афанасьев  
#25 Оставлено : 26 сентября 2012 г. 15:23:14(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Тогда используйте отделенную подпись - при ее верификации данные должны подаваться в функцию проверки.
Offline Андрей Писарев  
#26 Оставлено : 26 сентября 2012 г. 15:27:31(UTC)
Андрей *

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

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

Сказал «Спасибо»: 550 раз
Поблагодарили: 2212 раз в 1727 постах
afev написал:
Тогда используйте отделенную подпись - при ее верификации данные должны подаваться в функцию проверки.


То, что он выложил в base64 ЭЦП - это и есть отделенная ЭЦП...

и у меня пока не получилось выяснить, что конкретно он подписал...

up
ЭЦП прошла проверку

Подписанные данные "Message" = в hex:
4D 00 65 00 73 00 73 00 61 00 67 00 65 00

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

Вложение(я):
akor81.txt.sig (2kb) загружен 12 раз(а).
akor81.txt (1kb) загружен 20 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Техническую поддержку оказываем тут
Наша база знаний
Offline akor81  
#27 Оставлено : 26 сентября 2012 г. 15:36:34(UTC)
akor81

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

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

Андрей * написал:
Сотри, сотри это полностью!
и справа есть кнопка Attach - чтобы прикрепить к сообщению файлы....
и прикрепи не в base64, а оригиналы...


Андрей * написал:
Сотри, сотри это полностью!
и справа есть кнопка Attach - чтобы прикрепить к сообщению файлы....
и прикрепи не в base64, а оригиналы...


ок. Не знаю, в чём тут проблема, но стёр.

В общем, подписываемые данные, это слово Message

Файл с подписью, в том виде как я её получил (а как именно я её получал, я изложил в начале темы), я приаттачил.
И файл сертификата (в том виде, который получается если воспользоваться функцией "Экспорт") я приаттачил.
Offline Андрей Писарев  
#28 Оставлено : 26 сентября 2012 г. 15:39:54(UTC)
Андрей *

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

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

Сказал «Спасибо»: 550 раз
Поблагодарили: 2212 раз в 1727 постах
Подпись корректная, если я меняю в подписанных данных (у меня "Message" читается из файла) что-то - она не проходит проверку, все законы физики действуют

p.s.
использовал для проверки CryptoAPI и CSP

+ http://notary.cryptopro.ru/Detached.aspx - верна...

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

Техническую поддержку оказываем тут
Наша база знаний
Offline akor81  
#29 Оставлено : 26 сентября 2012 г. 16:03:23(UTC)
akor81

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

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

Андрей * написал:
Подпись корректная, если я меняю в подписанных данных (у меня "Message" читается из файла) что-то - она не проходит проверку, все законы физики действуют

p.s.
использовал для проверки CryptoAPI и CSP



Ок, спасибо за инфу. Я, в общем, и не сомневался что она корректная, и соответствует тексту "Message". Вопрос только в том, как мне её проверить средствами JCP ?

Видимо, правильный ответ, это - "выкинуть JCP и использовать для этого CSP". Этот ответ, конечно, не очень меня радует, но всё-таки это ответ.

Спасибо за потраченное на мои вопросы время!

Но, уважаемые консультанты, если вдруг всё-таки отыщется способ сделать это с помощью JCP - изложите его ниже в этой ветке, пожалуйста!
Offline Евгений Афанасьев  
#30 Оставлено : 26 сентября 2012 г. 16:08:40(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Я проверил подпись по данным, выложенным Андрей*.
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 (хеш данных не сходится, изменили данные)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (4)
5 Страницы<12345>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.