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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline zhe  
#1 Оставлено : 8 августа 2011 г. 21:22:07(UTC)
zhe

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

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

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

Пытаясь использовать КриптоПро JCP совместно с WS-Security (wss4j) натолкнулся на проблемы сериализации ключей.

В данном посте говорится о том, что GostPrivateKey не может быть сериализован, что вполне понятно. При этом GostPublicKey сериализуется успешно, что тоже понятно, а вот GostSecretKey уже несериализуем. В это же время в Java во время шифрования во всех известных реализациях WS-Security активно используется метод SecretKey.getEncoded().

Скажите, есть ли возможность сделать SecretKey сериализуемым?
Offline mka  
#2 Оставлено : 8 августа 2011 г. 22:23:13(UTC)
mka

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

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

Нет такой возможности. Наши закрытые ключи несериализуемые и их методы getEncoded возвращают null.
А какая стоит задача?
Offline zhe  
#3 Оставлено : 8 августа 2011 г. 22:46:06(UTC)
zhe

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

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

Необходимо организовать взаимодействие Java-приложения с .NET веб-сервисом (WCF), в котором используется WS-Security совместно с КриптоПро Sharpei и ГОСТ-овскими алгоритмами шифрования и подписи.
Offline zhe  
#4 Оставлено : 9 августа 2011 г. 21:43:54(UTC)
zhe

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

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

Немного изучив проблему, выяснилось, что сериализованные ключи нужны в основном для того, чтобы можно было посчитать хэш от них.
Подскажите, нарушит ли безопасность добавление метода getDigest() в классы ключей?
Например,

Код:
GostSecretKey key = getGostSecretKey();
byte[] sha1Digest = key.getDigest("SHA1");
byte[] md5Digest = key.getDigest("MD5");


Еще подскажите, плиз, планируется ли добавить в КриптоПро JCP поддержку алгоритмов
urn:ietf:params:xml:ns:cpxmlsec:algorithms:kw-cp и urn:ietf:params:xml:ns:cpxmlsec:algorithms:hmac-gostr3411?
Offline mka  
#5 Оставлено : 12 августа 2011 г. 21:42:54(UTC)
mka

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

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

Алгоритмы реализованы. Как выработать сеансовый ключ, можно посмотреть в примере CMS_Samples\CMSSignAndEncrypt
Offline zhe  
#6 Оставлено : 15 августа 2011 г. 15:03:13(UTC)
zhe

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

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

Спасибо за наводку! Поскажите еще по такому вопросу, можно ли использовать urn:ietf:params:xml:ns:cpxmlsec:algorithms:hmac-gostr3411 с xml-security?
Из примера отсюда, SignatureMethod может выглядеть так

Код:
<dsig:SignatureMethod dsig:Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:hmac-gostr3411">
  <cpxmlsec:ParametersR3411>urn:oid:1.2.643.2.2.30.1</cpxmlsec:ParametersR3411>
</dsig:SignatureMethod>


Если попытаться в примере xmlSign\XMLSignDoc заменить алгоритм подписи на urn:ietf:params:xml:ns:cpxmlsec:algorithms:hmac-gostr3411, то имеем

Код:
org.apache.xml.security.signature.XMLSignatureException: The requested algorithm urn:ietf:params:xml:ns:cpxmlsec:algorithms:hmac-gostr3411 does not exist. Original Message was: null
Original Exception was java.lang.NullPointerException
	at org.apache.xml.security.algorithms.SignatureAlgorithm.buildSigner(Unknown Source)
	at org.apache.xml.security.algorithms.SignatureAlgorithm.getInstanceForSigning(Unknown Source)
	at org.apache.xml.security.algorithms.SignatureAlgorithm.initializeAlgorithm(Unknown Source)
	at org.apache.xml.security.algorithms.SignatureAlgorithm.initSign(Unknown Source)
	at org.apache.xml.security.signature.XMLSignature.sign(Unknown Source)
Offline nick_stan  
#7 Оставлено : 21 декабря 2011 г. 22:40:40(UTC)
nick_stan

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

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

Возвращаюсь к теме - а с подписью как быть?

WSS4J требует секретного ключа в чистом виде...

SSecSignature sign = new WSSecSignature();
sign.setDigestAlgo(ru.CryptoPro.JCPxml.Consts.URN_GOST_DIGEST);
sign.setSignatureAlgorithm(ru.CryptoPro.JCPxml.Consts.URN_GOST_SIGN);
sign.setX509Certificate((X509Certificate)cert);
sign.setSecretKey(privateKey.getEncoded());



Offline cross  
#8 Оставлено : 22 декабря 2011 г. 23:21:04(UTC)
Анатолий Беляев

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

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Насчет wss4j ответил в соседней ветке. По запросу на мою почту вышлю пример. (cross at cryptopro.ru)
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline cross  
#9 Оставлено : 27 декабря 2011 г. 18:51:06(UTC)
Анатолий Беляев

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

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
пример работы с wss4j для версии 1.5 и версии 1.6
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.