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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Sagot86  
#1 Оставлено : 18 ноября 2019 г. 1:20:54(UTC)
Sagot86

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

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

Сказал(а) «Спасибо»: 2 раз
Добрый день. Стоит задача - на открытом ключе пользователя, полученном из сертификата с помощью CryptoPro JCP зашифровать сообщение, которое пользователь должен суметь расшифровать при помощи своего закрытого ключа (Шифрование по ГОСТ 28147).

Подскажите пожалуйста - какой из приложенных к CryptoPro JCP примеров реализации подходит для подобной задачи наилучшим образом?
Пример из cmsutil, который принимает на вход массив байтов для шифрования и сертификат пользователя выглядит как наиболее разумный выбор, но возможно есть варианты лучшей реализации?

Возможно ли после шифрования как-нибудь проверить его корректность в случае, если на руках имеется закрытый ключ пользователя в виде файла с расширением .key, не установленный в хранилище?
Заранее прошу прощения за возможно глупые вопросы, с реализацией шифрования имею дело впервые.
Offline Евгений Афанасьев  
#2 Оставлено : 18 ноября 2019 г. 9:42:25(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 22 раз
Поблагодарили: 751 раз в 708 постах
Здравствуйте.
Автор: Sagot86 Перейти к цитате

Подскажите пожалуйста - какой из приложенных к CryptoPro JCP примеров реализации подходит для подобной задачи наилучшим образом?

Рекомендуемый вариант - класс EnvelopedSignature из CAdES.jar, примеры есть в папке Enveloped в samples-sources.jar в дистрибутиве JCP, а также в CAdES-javadoc.jar (в папке javadoc дистрибутива) в описании класса EnvelopedSignature. Шифрование в адрес получателя ключом подписи (key_agreement-структура) или ключом шифрования (key_transport-структура).
Автор: Sagot86 Перейти к цитате

Пример из cmsutil, который принимает на вход массив байтов для шифрования и сертификат пользователя выглядит как наиболее разумный выбор, но возможно есть варианты лучшей реализации?

Да, его тоже можно использовать, хотя доработки в нем делаются реже.
Последний вариант - низкоуровневый пример PKCS7EnvEphTransport.
Автор: Sagot86 Перейти к цитате

Возможно ли после шифрования как-нибудь проверить его корректность в случае, если на руках имеется закрытый ключ пользователя в виде файла с расширением .key, не установленный в хранилище?

Нет, ключ должен быть установлен в место, из которого JCP умеет загружать ключи.

thanks 2 пользователей поблагодарили Евгений Афанасьев за этот пост.
Санчир Момолдаев оставлено 18.11.2019(UTC), Sagot86 оставлено 21.11.2019(UTC)
Offline Sagot86  
#3 Оставлено : 21 ноября 2019 г. 17:40:06(UTC)
Sagot86

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

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

Сказал(а) «Спасибо»: 2 раз
Спасибо за ответ. Еще уточню: получается, что для тестирования корректности шифрования не обязательно даже сохранять куда-то ключи и сертификаты пользователя. Достаточно сгенерировать ключевую пару, создать запрос на сертификат с ее использованием и сохранить результат. После же произвести шифрование с использованием этого сертификата, а затем расшифровку с использованием закрытого ключа из пары? Если это так, то возможно ли сгенерировать ключевую пару без участия пользователя (Биодатчика)? Не нашел как отключить опцию доинициализации в KeyPairGenerator.
Offline Евгений Афанасьев  
#4 Оставлено : 21 ноября 2019 г. 18:46:09(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 22 раз
Поблагодарили: 751 раз в 708 постах
Для тестов - да, можно так делать. Без ДСЧ не обойтись, но попробуйте эфемерные ключи использовать, в их алгоритме есть вставка EPH, имена алгоритмов есть в рук-ве разработчика.
Offline Sagot86  
#5 Оставлено : 21 ноября 2019 г. 19:10:38(UTC)
Sagot86

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

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

Сказал(а) «Спасибо»: 2 раз
Не могли бы Вы уточнить о каких эфемерных ключах идет речь и что такое ЕРН? Есть ли примеры с генерацией подобных ключей в сэмплах?
Offline Евгений Афанасьев  
#6 Оставлено : 21 ноября 2019 г. 19:55:47(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 22 раз
Поблагодарили: 751 раз в 708 постах
EPH - ephemeral, временные ключи, алгоритмы для эфемерных ключей те же, что и у долговременных ключей в примерах, только в названии присутствует EPH, например, JCP.GOST_EPH_DH_2012_256. В названии могу ошибаться, правильные названия в рук-ве программиста. Среди примеров должны быть с использованием эфемерных ключей, нужно поискать по EPH.

Отредактировано пользователем 21 ноября 2019 г. 19:56:21(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
Sagot86 оставлено 21.11.2019(UTC)
Offline Sagot86  
#7 Оставлено : 22 ноября 2019 г. 16:15:44(UTC)
Sagot86

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

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

Сказал(а) «Спасибо»: 2 раз
Спасибо за совет по временным ключам - помогло.

Отредактировано пользователем 22 ноября 2019 г. 17:54:55(UTC)  | Причина: Не указана

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