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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline ipsus  
#1 Оставлено : 11 августа 2014 г. 18:13:56(UTC)
ipsus

Статус: Новичок

Группы: Участники
Зарегистрирован: 11.08.2014(UTC)
Сообщений: 8
Российская Федерация

Здравствуйте,

Возникла проблема с проверкой в серверном .NET коде валидности ЭЦП в PDF файле, сгенерированной на Android устройстве - выдается ошибка "Signer GOST3411WITH1.2.643.2.2.98 not recognised.".
Abode Acrobat Reader с плагином КриптоПро PDF говорит, что данный документ имеет валидную ЭЦП. Тот же серверный код прекрасно валидирует ЭЦП, сгенерированную с помощью iTextSharp.

На сервере стоит КриптоПро CSP 3.6 R4 для Windows + iTextSharp 5.4.0.0. Пробовали безрезультатно КриптоПро CSP 3.9 и 4.0, а также iTextSharp 5.5.2.0 (последний на сегодняшний день).
На Android стоит КриптоПро CSP для Google Android 2.0.37363 (последняя) + iText, взятый с вашего форума (http://www.cryptopro.ru/forum2/default.aspx?g=posts&t=4205#post23002). Пробовали также генерировать ЭЦП версией КриптоПро CSP для Google Android 2.0.37108.

Вопрос: какую часть этой конструкции нужно изменить, чтобы все заработало (чтобы ЭЦП отвалидировалась на сервере)?
Offline Евгений Афанасьев  
#2 Оставлено : 12 августа 2014 г. 9:22:58(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Здравствуйте.
Думаю, алгоритм подписи должен быть 1.2.643.2.2.9with1.2.643.2.2.98 или GOST3411withGOST3410EL.
Offline ipsus  
#3 Оставлено : 12 августа 2014 г. 11:44:04(UTC)
ipsus

Статус: Новичок

Группы: Участники
Зарегистрирован: 11.08.2014(UTC)
Сообщений: 8
Российская Федерация

Цитата:
Думаю, алгоритм подписи должен быть 1.2.643.2.2.9with1.2.643.2.2.98 или GOST3411withGOST3410EL.


Это похоже на правду - через веб клиента мы генерируем ЭЦП с помощью GOST3411withGOST3410EL. Но вот как его указать при использовании iText? Что должно быть изменено в этом коде, чтобы алгоритм был GOST3411withGOST3410EL:
Код:

	PdfSignatureAppearance sap = stp.getSignatureAppearance();
	sap.setProvider(JCSP.PROVIDER_NAME);				
	sap.setCrypto(pk, chain, null, PdfSignatureAppearance.CRYPTOPRO_SIGNED);
	sap.setReason("I'm the author");
	sap.setLocation("SPb");
	stp.close();

?

Отредактировано пользователем 12 августа 2014 г. 11:44:42(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#4 Оставлено : 12 августа 2014 г. 11:58:15(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Попробуйте, если возможно, проверить не в Android - подписать документ в windows/linux. Возможно, что-то не так в связке itextpdf+bc+jcp в android'е (мы еще не проверяли возможность создания подписи pdf-документа в этой системе).

Отредактировано пользователем 12 августа 2014 г. 11:59:08(UTC)  | Причина: Не указана

Offline ipsus  
#5 Оставлено : 13 августа 2014 г. 13:00:27(UTC)
ipsus

Статус: Новичок

Группы: Участники
Зарегистрирован: 11.08.2014(UTC)
Сообщений: 8
Российская Федерация

Проверили на Windows 7 64 с тем же пропатченным iText и КриптоПро JCP 1.0.46, 2.0.37538, результат получили идентичный тому, что имеем на Android - при валидации ЭЦП с помощью iTextSharp 5.4, 5.5.2 + КриптоПро 3.6 R4 получаем ошибку "Signer GOST3411WITH1.2.643.2.2.98 not recognised.".

Для подписывания строки на Android с использованием той же самой КриптоПро CSP для Google Android 2.0.37363 удалось сгенерировать ЭЦП нужным алгоритмом, который валидируется на стороне .NET. Возможно, все же есть способ явно указать криптопровайдеру или iText, какой алгоритм генерации ЭЦП использовать?
Offline Евгений Афанасьев  
#6 Оставлено : 13 августа 2014 г. 16:38:08(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Попробовал так:
windows 7 (x64)
jcp-2.0.37538
пропатченный itextpdf-1.5.3 (http://svn.code.sf.net/p/itext/code/tags/iText_5_1_3) + itextpdf-1.5.3-patch.patch (из itextpdf_1.5.3_gost.tar.gz) в idea 13.1.2
JDK 1.7.0_55
CSP 3.6 7777 (R4)
CryptoPro PDF 1.6.0298
С помощью примера успешно подписан pdf-документ и проверен с помощью CryptoPro PDF ("Подписано, все подписи действительны").
Может быть, itextsharp не распознает вторую часть алгоритма (...98 -> GOST3410EL)?

Отредактировано пользователем 13 августа 2014 г. 16:39:37(UTC)  | Причина: Не указана

Offline ipsus  
#7 Оставлено : 19 августа 2014 г. 17:08:47(UTC)
ipsus

Статус: Новичок

Группы: Участники
Зарегистрирован: 11.08.2014(UTC)
Сообщений: 8
Российская Федерация

После некоторых мучений выяснилось, что действительно, iTextSharp не понимает вторую часть алгоритма - 1.2.643.2.2.98. А iTextSharp использовал вот такой алгоритм при построении ЭП:
digestAlgorithmOid "1.2.643.2.2.9"
digestEncryptionAlgorithmOid "1.2.643.2.2.19"

Конечное решение, которое приводит к получению ЭП, валидируемой в iTextSharp и Acrobat Reader, состоит в ручном сборе CMS (модификация http://www.cryptopro.ru/forum2/default.aspx?g=posts&m=23241#post23241) + патченный iText 5.1.3 (http://www.cryptopro.ru/forum2/default.aspx?g=posts&t=4205#post23002)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.