Статус: Участник
Группы: Участники
Зарегистрирован: 30.07.2015(UTC) Сообщений: 16   Сказал «Спасибо»: 1 раз
|
Здравствуйте, У меня задача написать алгоритм шифрования через гост бинарного пакета размером около 5 мб. Реализация на RSA есть, думал перенести труда не составит. Ошибался. Посмотрел пример из gEncryptFileAgree из simple. В нем используется имя контейнера закрытого ключа.
Вопрос 1: Зачем нужен закрытый ключ если при шифровании с открытым ключом данные шифруются открытым ключом и расшифровываются закрытым.
У меня есть сервер и клиент. Клиент скачивается с сервера и обменивается архивами с сервером по почте. При этом в архиве должен лежать бинарный зашифрованный файл ( и еще кое какие файлы, но суть в нем). При скачивании с клиентом скачивается экспортированный сертификат с открытым ключом, чтобы клиент мог зашифровать передаваемые данные на сервер. Рядом с этими файлами он кладет свой экспортированный сертификат с открытым ключом, чтобы сервер мог ответить ему таким же образом через определенный промежуток времени. Закрытые ключи в обоих случаях не экспортируются.
Тогда как мне зашифровать данные не имея контейнера закрытого ключа получателя?
Вопрос 2: Каким образом получается agree ключ? Я так понимаю что он создается по определенному алгоритму из открытого ключа получателя?
По идее алгоритм шифрования с открытым ключом сертификата следующий: 1) Берем сертификат получателя и достаем из него открытый ключ. 2) Создаем симметричный ключ. 3) Шифруем симметричный ключ открытым ключом получателя. 4) Шифруем данные симметричным ключом. 5) Отправляем зашифрованные данные и зашифрованный симметричный ключ получателю. 6) Получателя расшифровывает симметричный ключ своим закрытым ключом и расшифровывает данные полученным ключом.
Или я что то непонимаю, или я ошибаюсь в алгоритме действий? Или может я не туда смотрел в примерах шифрования?
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,453  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 38 раз Поблагодарили: 748 раз в 643 постах
|
1) Для выработки ключа обмена нужен закрытый ключ отправителя, но он может быть и эфемеральным (временным) 2) Модифицированный алгоритм Диффи-Хеллмана: VKO - rfc 4357 Алгоритмы, используемые в ГОСТ не позволяют шифровать только на открытом ключе - это не RSA. |
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 30.07.2015(UTC) Сообщений: 16   Сказал «Спасибо»: 1 раз
|
Т.е. при создании ключа используется открытый ключ получателя и закрытый ключ отправителя. Т.е. нужно 2 сертификата с закрытым ключом.
По поводу кода, в примере есть такой фрагмент:
// Разбираем сертификат получателя X509Certificate2 cert = new X509Certificate2(certFileName); // Открытый ключ получателя. AsymmetricAlgorithm pk = cert.PublicKey.Key; Gost3410 alg = pk as Gost3410;
// Открываем ключ отправителя. CspParameters par = new CspParameters(75, null, SourceContainer); Gost3410CryptoServiceProvider srcContainer = new Gost3410CryptoServiceProvider(par); Gost3410Parameters srcPublicKeyParameters = srcContainer.ExportParameters(false);
// Создаем agree ключ GostSharedSecretAlgorithm agree = srcContainer.CreateAgree( alg.ExportParameters(false) );
Если я правильно понял, то тут достаются закрытый и открытый ключи отправителя и они содержится в Gost3410CryptoServiceProvider srcContainer, а потом при создании agree ключа метод берет закрытый ключ из srcContainer и полученный открытый ключ получателя?
Прошу прощения за нубские вопросы, просто люблю быть уверенным в том что делаю.
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,453  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 38 раз Поблагодарили: 748 раз в 643 постах
|
|
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 30.07.2015(UTC) Сообщений: 16   Сказал «Спасибо»: 1 раз
|
Еще вопрос по поводу подписи. Подпись производится закрытым ключом отправителя,а проверяется открытым или необходимо так же использовать закрытый ключ отправителя и открытый ключ получателя чтобы подписать и получить сигнатуру?
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,453  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 38 раз Поблагодарили: 748 раз в 643 постах
|
У подписи нет получателя. Только закрытый ключ подписывающего и открытый при проверке. |
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close