Статус: Активный участник
Группы: Участники
Зарегистрирован: 28.08.2018(UTC) Сообщений: 32 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал(а) «Спасибо»: 6 раз
|
Добрый день! Реализую приложение с использованием JCP, в котором по сети необходимо передавать некий зашифрованный по ГОСТ 28147 текст. Запустил тестовый пример из класса SessionEncrypt и возник следующий вопрос: формирование и передача шифрованного секретного ключа это единственный вариант реализации шифрования по данному алгоритму? Ведь в таком случае кроме собственно текста необходимо передавать от отправителя к получателю: 1) Синхропосылку 2) Вектор инициализации 3) Зашифрованный симметричный ключ Есть ли возможность реализации данного алгоритма при условии наличия у обеих сторон секретного ключа в каком-то виде? Если есть, как в таком случае получить экземпляр SecretKey?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Здравствуйте. Лучший вариант - это envaloped-data с шифрованием в адрес получателя. Этот функционал доступен с помощью библиотеки CAdES (архив samples, папка CADES/enveloped), а также более низкоуровневые примеры в пакете CMS_samples (*Transport.java). |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 28.08.2018(UTC) Сообщений: 32 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал(а) «Спасибо»: 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)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Тогда посмотрите примеры более низкоуровнего шифрования в 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
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 28.08.2018(UTC) Сообщений: 32 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал(а) «Спасибо»: 6 раз
|
Разобрался. Ошибку keytool error: java.security.KeyStoreException: key is not GostPrivateKey or GostExchPrivateKey получал из-за установленного в контрольной панели алгоритма JCSP вместо JCP
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 28.08.2018(UTC) Сообщений: 32 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал(а) «Спасибо»: 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. Есть какой-то способ достать открытый ключ из хранилища, а не из файла сертификата, лежащего на диске?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Здравствуйте. При установке сертификата получаю ошибку вида: Код:
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
Далее в контейнер установлена цепочка сертификатов. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 28.08.2018(UTC) Сообщений: 32 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Сказал(а) «Спасибо»: 6 раз
|
Когда я пытаюсь установить p7b, я получаю ошибку: Код:keytool error: java.lang.Exception: Input not an X.509 certificate
Это тот p7b, который я получил при отправке запроса на сертификат в тестовый УЦ Уже не знаю, куда ещё копать
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Можете его приложить? Двойным кликом открывается? Кодировка der (а не base64)? |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close