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

Уведомление

Icon
Error

3 Страницы123>
Опции
К последнему сообщению К первому непрочитанному
Offline Малыгин Н.  
#1 Оставлено : 17 сентября 2018 г. 10:18:55(UTC)
Малыгин Н.

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

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

Сказал(а) «Спасибо»: 6 раз
Добрый день!
Реализую приложение с использованием JCP, в котором по сети необходимо передавать некий зашифрованный по ГОСТ 28147 текст.
Запустил тестовый пример из класса SessionEncrypt и возник следующий вопрос: формирование и передача шифрованного секретного ключа это единственный вариант реализации шифрования по данному алгоритму? Ведь в таком случае кроме собственно текста необходимо передавать от отправителя к получателю:
1) Синхропосылку
2) Вектор инициализации
3) Зашифрованный симметричный ключ
Есть ли возможность реализации данного алгоритма при условии наличия у обеих сторон секретного ключа в каком-то виде? Если есть, как в таком случае получить экземпляр SecretKey?
Offline Евгений Афанасьев  
#2 Оставлено : 17 сентября 2018 г. 11:46:35(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 688 раз в 649 постах
Здравствуйте.
Лучший вариант - это envaloped-data с шифрованием в адрес получателя. Этот функционал доступен с помощью библиотеки CAdES (архив samples, папка CADES/enveloped), а также более низкоуровневые примеры в пакете CMS_samples (*Transport.java).
Offline Малыгин Н.  
#3 Оставлено : 18 сентября 2018 г. 10:12:20(UTC)
Малыгин Н.

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

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

Сказал(а) «Спасибо»: 6 раз
Cades требует наличия библиотеки bouncycastle, наличие которой в проекте крайне нежелательно, но дело даже не в этом. Хотелось упростить задачу, обойтись без генерации ключей в момент шифрования, а предложенные варианты, на мой взгляд, ещё и усложняют подготовку к отправке. В общем, как я понял, без передачи зашифрованного ключа не обойтись.

Тогда может подскажете, как с помощью keytool сгенерировать необходимые для шифрования ключевые пары?
Пробую:
keytool -genkey -keystore NONE -providername JCP -storetype HDImageStore -alias myEncryptKey -keyalg GOST3410DHEL -keysize 128 -sigalg GOST3411withGOST3410EL
Но получаю в итоге ошибку:
keytool error: java.security.KeyStoreException: key is not GostPrivateKey or GostExchPrivateKey

Отредактировано пользователем 18 сентября 2018 г. 10:12:52(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#4 Оставлено : 18 сентября 2018 г. 10:40:49(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 688 раз в 649 постах
Тогда посмотрите примеры более низкоуровнего шифрования в samples-sources.jar/CMS_samples/PKCS7EnvEphTransport.
Примеры создания контейнеров с помощью keytool есть в "Руководстве программиста" в папке DOc дистрибутива:
Код:

"<JRE>\bin\keytool" -genkey -alias test_key -keysize 512 -provider ru.CryptoPro.JCP.JCP -keypass 11111111 -storetype HDImageStore -dname CN=myKey,O=CryptoPro,C=RU -keystore NONE -storepass 1 -keyalg GOST3410EL -sigalg GOST3411withGOST3410EL

Код:

"<JRE>\bin\keytool" -genkey -alias test_key_exch -keysize 512 -provider ru.CryptoPro.JCP.JCP -keypass 11111111 -storetype HDImageStore -dname CN=myKey,O=CryptoPro,C=RU -keystore NONE -storepass 1 -keyalg GOST3410DHEL -sigalg GOST3411withGOST3410EL
Offline Малыгин Н.  
#5 Оставлено : 18 сентября 2018 г. 11:26:16(UTC)
Малыгин Н.

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

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

Сказал(а) «Спасибо»: 6 раз
Разобрался. Ошибку
keytool error: java.security.KeyStoreException: key is not GostPrivateKey or GostExchPrivateKey
получал из-за установленного в контрольной панели алгоритма JCSP вместо JCP
Offline Малыгин Н.  
#6 Оставлено : 20 сентября 2018 г. 16:33:05(UTC)
Малыгин Н.

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

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

Сказал(а) «Спасибо»: 6 раз
Возникла другая проблема с шифрованием. Сгенерировал на принимающей стороне ключевую пару, сформировал запрос на сертификат, загрузил файл сертификата.
Импортирую сертификат на машине отправляющей стороны с помощью keytool
Код:
keytool -J-Dkeytool.compat=true -import -alias serverEncryptKey -provider ru.CryptoPro.JCP.JCP -storetype HDImageStore -keystore NONE -storepass 1 -file serverEncryptKey.cer

, импорт успешный.
Однако при попытке достать сертификат из KeyStore ("HDImageStore") по алиасу получаю null. Есть какой-то способ достать открытый ключ из хранилища, а не из файла сертификата, лежащего на диске?
Offline Евгений Афанасьев  
#7 Оставлено : 21 сентября 2018 г. 16:11:26(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 688 раз в 649 постах
Проверим.
Offline Евгений Афанасьев  
#8 Оставлено : 26 сентября 2018 г. 14:56:59(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 688 раз в 649 постах
Здравствуйте.
При установке сертификата получаю ошибку вида:
Код:

keytool error: java.lang.Exception: Failed to establish chain from reply

Вероятно, выполняется какая-то проверка в keytool, в результате требуется цепочка сертификатов, а не cer. Если попробовать p7b, то установка происходит успешно:
Код:

Top-level certificate in reply:

Owner: CN=CRYPTO-PRO Test Center 2, O=CRYPTO-PRO LLC, L=Moscow, C=RU, EMAILADDRESS=support@cryptopro.ru
Issuer: CN=CRYPTO-PRO Test Center 2, O=CRYPTO-PRO LLC, L=Moscow, C=RU, EMAILADDRESS=support@cryptopro.ru
Serial number: 2b6e3351fd6eb2ad48200203cb5ba141
Valid from: Tue Aug 05 17:44:24 MSK 2014 until: Mon Aug 05 16:54:03 MSK 2019
Certificate fingerprints:
         MD5:  9E:B2:CE:97:B7:96:3C:20:31:58:F1:E3:A6:B8:D3:CC
         SHA1: 04:62:55:29:0B:0E:B1:CD:D1:79:7D:9A:B8:C8:1F:69:9E:36:87:F3
         SHA256: 23:12:68:AB:8E:D4:FA:E9:70:B9:63:F7:99:89:77:56:F9:8B:8D:E5:FE:A8:78:8C:C4:C4:AA:52:06:78:A8:22
         Signature algorithm name: 1.2.643.2.2.3
         Version: 3

Extensions:

#1: ObjectId: 1.3.6.1.4.1.311.21.1 Criticality=false
0000: 02 01 00                                           ...


#2: ObjectId: 2.5.29.19 Criticality=true
BasicConstraints:[
  CA:true
  PathLen:2147483647
]

#3: ObjectId: 2.5.29.15 Criticality=false
KeyUsage [
  DigitalSignature
  Key_CertSign
  Crl_Sign
]

#4: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 15 31 7C B0 8D 1A DE 66   D7 15 9C 49 52 97 17 24  .1.....f...IR..$
0010: B9 01 7A 83                                        ..z.
]
]


... is not trusted. Install reply anyway? [no]:  yes
Certificate reply was installed in keystore

Далее в контейнер установлена цепочка сертификатов.
Offline Малыгин Н.  
#9 Оставлено : 26 сентября 2018 г. 18:38:53(UTC)
Малыгин Н.

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

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

Сказал(а) «Спасибо»: 6 раз
Когда я пытаюсь установить p7b, я получаю ошибку:

Код:
keytool error: java.lang.Exception: Input not an X.509 certificate


Это тот p7b, который я получил при отправке запроса на сертификат в тестовый УЦ

Уже не знаю, куда ещё копать
Offline Евгений Афанасьев  
#10 Оставлено : 26 сентября 2018 г. 19:08:00(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 688 раз в 649 постах
Можете его приложить? Двойным кликом открывается? Кодировка der (а не base64)?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
3 Страницы123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.