Статус: Участник
Группы: Участники
Зарегистрирован: 25.10.2013(UTC) Сообщений: 12 Сказал(а) «Спасибо»: 4 раз
|
Задача сформулирована в предыдущем посте: https://www.cryptopro.ru...aspx?g=posts&t=13494сформировать (временный) ключ подписи и экспортировать его (в зашифрованном виде). На принимающей стороне расшифровать. Есть прототип, работающий на внешнем криптодвижке (openssl): В openssl: O1. генерируется ключ+публичный ключ "приёмника". в CSP: CSP1. генерируется экспортируемый ключ 34.10, CSP2. генерируется эфемерный 34.10 для экспорта, импортируется публичный ключ из openssl (формируется KEK), CSP3. ключ из п.CSP1 экспортируется в зашифрованном виде (PRIVATEKEYBLOB) в OpenSSL: O2. импортируется публичная часть эфемерного ключа из CSP2 O3. выводится KEK. Для вывода KEK используется keyUnwrapCryptoPro (rfc4357, пп. 6.3-6.5), UKM берётся из контейнера PRIVATEKEYBLOB. O4. расшифровывается PRIVATEKEYBLOB. контрольная сумма под расшифрованным ключом сходится и публичный ключ соответствует тому, что можно экспортировать как PUBLICKEYBLOB в п. CSP1 Хотелось бы повторить тоже самое, но на принимающей стороне использовать КриптоПРО CSP. Проблема возникает при импорте блоба PRIVATEKEYBLOB: Принимающая сторона имеет контейнер с ключом AT_KEYEXCHANGE. При первом импорте ключ импортируется (проблемы с добычей значения ключа - в соседнем посте). и при этом записывается в контейнер на место AT_SIGNATURE. При попытке импорта другого PRIVATEKEYBLOB CryptImportKey возвращает NTE_EXISTS (0x8009000F). Вопросы: 1. Так и задумано? 2. Есть методы уничтожить ключ AT_SIGNATURE не уничтожая контейнер (AT_KEYEXCHANGE - важный долговременный ключ)?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 16.04.2008(UTC) Сообщений: 1,271
Сказал(а) «Спасибо»: 22 раз Поблагодарили: 446 раз в 325 постах
|
1. Да. 2. Нет. Импортируйте в другой контекст, открытый с флагом CRYPT_VERIFYCONTEXT, тогда закрытый ключ нигде не сохранится. |
|
1 пользователь поблагодарил Русев Андрей за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.10.2013(UTC) Сообщений: 12 Сказал(а) «Спасибо»: 4 раз
|
Есть некоторое недопонимание. есть ключ для расшифровки ключей в контейнере "key_decryptor", AT_KEYEXCHANGE. на его публичном ключе был зашифрован ключ. мне нужно открыть два контекста? CryptAcquireContext(&hDecrProv, "key_decryptor", .... ); CryptGetUserKey(hDecrProv, AT_KEYEXCHANGE, &hDecrKey); CryptAcquireContext(&hTempProv, NULL, ... CRYPT_VERIFYCONTEXT); и? в какой из контекстов импортировать публичный ключ к эфемерному ключу из п. CSP2? CryptImportKey(hTempProv, pbEphemPub, cbEphemPub, hDecrKey, 0, &hKEK); Так? возвращает NTE_KEYSET_NOT_DEF 0x80090019 по расшифровке PRIVATEKEYBLOB непосредственно на CSP можете подсказать? Отредактировано пользователем 7 марта 2018 г. 10:56:22(UTC)
| Причина: Не указана
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close