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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline deneb  
#1 Оставлено : 10 августа 2009 г. 23:27:45(UTC)
deneb

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

Группы: Участники
Зарегистрирован: 10.08.2009(UTC)
Сообщений: 1
Откуда: Москва

Здравствуйте. Есть задача зашифровать некий набор данных (файл) так, чтобы его мог расшифровать любой человек из некоторого списка. В принципе, для этого достаточно знать только открытые ключи адресатов, после чего сформировать сессионный ключ, зашифровать его ими по отдельности, зашифровать файл сессионным ключом и передать всё это дело на хранение. Для расшифровки дстаточно восстановить одним из закрытых ключей сессионный ключ.
Это теория. На практике видится два варианта: использовать CryptEncryptMessage. Судя по всему эта функция как раз для этой задачи, но проблема в том, что на машине, где осуществляется шифрование нет сертификатов, а есть только сами паблик-ключи.
Для стандратного MS-провайдера срабатывает следующее (схематично, для одного адресата):
1.CryptAcquireContext(&hCryptProv, NULL, provider, provType, CRYPT_VERIFYCONTEXT);
2.CryptGenKey(hCryptProv, algEncrypt, CRYPT_EXPORTABLE, &hSKey);
3.CryptImportKey(hCryptProv, pubData, pubLen, 0, 0, &hAKey);
4.CryptExportKey(hSKey, hAKey, SIMPLEBLOB, 0, keyData, &sz);

Для CryptoPro аналогичный код на экспорте выдаёт ошибку NTE_BAD_KEY_STATE.
По документации срабатывает код со следующими изменениями: надо открыть контекст с private-ключом, потом CryptGetUserKey(hCryptProv, AT_KEYEXCHANGE, &hPKey); а потом этот hPKey - в качестве 4-го параметра в CryptImportKey. Вопрос: зачем он там нужен? Ведь в соответствии с этой же документацией при импорте PUBLIC_KEY_BLOB этот параметр ДОЛЖЕН быть 0?

Итак, финальный вопрос: как зашифровать сообщение для нескольких адресатов, не имея их сертификатов и не имея ни одного секретного ключа?
Offline Максим Коллегин  
#2 Оставлено : 11 августа 2009 г. 1:27:40(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,392
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 37 раз
Поблагодарили: 715 раз в 620 постах
Нужно использовать "эфемеральную" ключевую пару.
http://www.cryptopro.ru/....aspx?g=posts&t=1172
Так же смотрите в SDK - KeyCopy.c

Отредактировано пользователем 20 августа 2009 г. 19:44:31(UTC)  | Причина: Не указана

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