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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline dguralnik  
#1 Оставлено : 18 июня 2009 г. 0:14:50(UTC)
dguralnik

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

Группы: Участники
Зарегистрирован: 19.12.2008(UTC)
Сообщений: 9
Откуда: SPB

Мне необходимо сформировать подпись согласно следующим условиям:

ЭЦП формируется согласно требованиям ГОСТ Р 34.10-2001 ("Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи.") и ГОСТ Р 34.11-94 ("Информационная технология. Криптографическая защита информации. Функция хэширования."). Программный продукт КриптоПро CSP 2.0 компании Крипто-Про удовлетворяет указанным условиям. ЭЦП представляет собой строку, закодированную в BASE64 (RFC3548).

-----------------
ЭЦП валидируется на платформе .Net. Наше приложение написано на Java. Для формирования подписи используется JCP1.0.42
Ключ и сертификат формируются следующими командами

%java_home%\bin\keytool -genkey -alias mcpjcp -keysize 512 -provider ru.CryptoPro.JCP.JCP -keypass xxx -keystore xxx.keystore -storepass xxx -keyalg GOST3410 -sigalg GOST3411withGOST3410EL -storetype HDImageStore -validity 10000

%java_home%\bin\keytool -export -alias mcpjcp -provider ru.CryptoPro.JCP.JCP -keypass xxx -storetype HDImageStore -keystore xxx.keystore -storepass xxx -sigalg GOST3411withGOST3410EL -file xxx.cer

Код на Java который формирует ЭЦП
MessageDigest digest = MessageDigest.getInstance("GOST3411");
digest.update(signParameters.getText().getBytes());
byte[] result = digest.digest();

PrivateKey privateKey = getPrivateKey(signParameters); //загрузка ключа
Signature signature = Signature.getInstance("CryptoProSignature");
signature.initSign(privateKey);
signature.update(result);
return SignUtil.encode(signEncodingType, signature.sign());

Проблема в том, что формируемая подпись не проходит валидацию. В чем может быть пролема?
(в принципе есть код создания подписи на C, который использовался для отладки валидации)
Offline Ольга  
#2 Оставлено : 18 июня 2009 г. 13:55:44(UTC)
Ольга

Статус: Активный участник

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

Поблагодарили: 3 раз в 3 постах
на подпись нужно подавать непосредственно данные. см. документацию и примеры.
Offline dguralnik  
#3 Оставлено : 18 июня 2009 г. 14:03:00(UTC)
dguralnik

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

Группы: Участники
Зарегистрирован: 19.12.2008(UTC)
Сообщений: 9
Откуда: SPB

Непосредственные данные?
То есть
MessageDigest digest = MessageDigest.getInstance("GOST3411");
digest.update(signParameters.getText().getBytes());
byte[] result = digest.digest();
не нужно?

Но без digest я тоже делал - ничего не получилось. Именно так и начинал, а уже потом добавил digest.
Offline Ольга  
#4 Оставлено : 18 июня 2009 г. 14:09:17(UTC)
Ольга

Статус: Активный участник

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

Поблагодарили: 3 раз в 3 постах
хеш не нужен.
samples/userSamples/SignAndVerify.java, документация (актуальная версия 1.0.44!)
Offline dguralnik  
#5 Оставлено : 18 июня 2009 г. 14:14:55(UTC)
dguralnik

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

Группы: Участники
Зарегистрирован: 19.12.2008(UTC)
Сообщений: 9
Откуда: SPB

Я так и делаю как в примере. Толко сам загружаю ключ из хранилища.

В версии 1.0.44 что то пофиксилось касательно данного вопроса?

Я где то встречал на форуме что при валидации в JCP подписии CPS надо преобразовывать последовательность байт. Может с этим как то связано?

У меня уже закончился триал, пока я пытался разобраться с этим вопросом. Как то его можно продлить?
Offline Ольга  
#6 Оставлено : 18 июня 2009 г. 14:22:49(UTC)
Ольга

Статус: Активный участник

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

Поблагодарили: 3 раз в 3 постах
В версии 1.0.44 обновлены упоминаемые мной примеры и документация.
Указание "CryptoProSignature" вызывает класс работающий с обратным порядком байт.
Насчет продления/покупки лицензии обращайтесь в коммерческий отдел.
Offline dguralnik  
#7 Оставлено : 18 июня 2009 г. 14:31:05(UTC)
dguralnik

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

Группы: Участники
Зарегистрирован: 19.12.2008(UTC)
Сообщений: 9
Откуда: SPB

Если предположить что Constants.SIGN_CP_ALG="CryptoProSignature", то код в примере аналогичен моему.

//* Создание подписи "CryptoProSignature" (совместимо с КриптоПро CSP)
final byte[] signCP = sign(Constants.SIGN_CP_ALG, keyPair.getPrivate(),
SAMPLE_TEXT.getBytes());
System.out.println("Value of signature (signCP) is:");
System.out.println(Constants.toHexString(signCP));

public static byte[] sign(String alghorithmName, PrivateKey privateKey,
byte[] data) throws Exception {
final Signature sig = Signature.getInstance(alghorithmName);
sig.initSign(privateKey);
sig.update(data);
return sig.sign();
}

Есть ли какойнибудь простой способ провалидировать подпиь через CPS?
Offline Русев Андрей  
#8 Оставлено : 18 июня 2009 г. 16:03:35(UTC)
Русев Андрей

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

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,272

Сказал(а) «Спасибо»: 22 раз
Поблагодарили: 446 раз в 325 постах
csptest -keyset -verify GOST -in data.bin -signature sign.bin -certificate cert.cer
Официальная техподдержка. Официальная база знаний.
Offline dguralnik  
#9 Оставлено : 18 июня 2009 г. 18:58:40(UTC)
dguralnik

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

Группы: Участники
Зарегистрирован: 19.12.2008(UTC)
Сообщений: 9
Откуда: SPB

Что нужно установить по-минимуму,чтобы получить csptest?
Offline dguralnik  
#10 Оставлено : 18 июня 2009 г. 20:35:34(UTC)
dguralnik

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

Группы: Участники
Зарегистрирован: 19.12.2008(UTC)
Сообщений: 9
Откуда: SPB

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