Вопрос

Я просматривал MSDN, пытаясь понять критоапи.Ниже приведены некоторые вопросы и предположения относительно того, как все может работать.Буду очень признателен за любые ответы, подтверждения или опровержения моих предположений.

Согласно заметке, которую я нашел в http://msdn.microsoft.com/en-us/library/ms867086.aspx, CSP сохраняет пары открытых закрытых ключей между сеансами.

* Does that mean they are kept indefinitely? If so, whatever signature or exchange key pairs are extant when the CSP is closed remain. 
* Of what value are these containers and any key pairs they contain?  I guess they could be used to sign things without obtaining a handle to a key pair. 
* Is there any way to get a handle to one of the key pairs?

Мне кажется, что контейнер ключей может содержать:

* 1 signature key pair
* 1 key exchange key pair
* any number of PUBLIC keys of either signature or key_exchange type
* any number of session keys

Это верно?Уничтожаются ли непарные ключи при закрытии контейнера?

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

cryptsignhash указывает, что для подписи хэша будет использоваться либо подпись, либо закрытый ключ обмена ключами.Я предполагаю, что это означает, что cryptsignkey найдет закрытый ключ, созданный cryptkeygen, с соответствующим параметром Alg_id (значения CALG_RSA_KEYX или CALG_RSA_SIGN).

Если я экспортирую ключ, будет ли в нем содержаться информация о том, что это за ключ?

если я экспортирую PUBLICKEYBLOB и переношу его в другую среду.Нужно ли мне импортировать этот большой двоичный объект в новую среду, прежде чем я смогу использовать его для проверки подписи?cryptverifysignature требуется дескриптор ключа, поэтому похоже, что его необходимо сначала импортировать.Заменяет ли импорт PUBLICKEYBLOB открытый ключ любой существующей пары открытого/закрытого ключей?Я предполагаю, что НЕТ.

Это было полезно?

Решение

Это было много вопросов.Попробую на них ответить:

CSP сохраняет государственные пары ключей частной частности между сессиями.Означает ли это, что они хранятся бесконечно?

Да, пока они не будут явно удалены путем вызова CryptAcquireContext с флагом CRYPT_DELETEKEYSET.

Какую ценность представляют эти контейнеры и любые пары ключей, которые они содержат?

Это постоянные ключи, которые вы можете использовать повторно.Если вы получаете сертификат закрытого ключа, вы хотите сохранить закрытый ключ — и не хотите экспортировать закрытый ключ, если этого можно избежать:CSP потенциально может защитить ключ гораздо лучше, чем вы.

Есть ли способ получить дескриптор одной из пар ключей?

CryptAcquireContext, за которым следует CryptGetUserKey.

Мне кажется, что ключевой контейнер может содержать:1 пара ключей подписи, 1 пара ключей обмена ключами, любое количество ПУБЛИЧНЫХ ключей типа подписи или key_exchange, любое количество сеансовых ключей.Это верно?

Да и нет.Импортированные открытые ключи и ключи сеанса логически не находятся в каком-либо конкретном контейнере ключей.

Разрушены ли не парные ключи, когда контейнер закрыт?

Да.

Каков обычный метод создания/именования ключевых контейнеров?Как можно удержаться от топания в каком -то другом контейнере приложений?

Большинство приложений используют GUID.

Это означает, что Cryptsignkey найдет закрытый ключ, созданный Cryptkeygen с соответствующим Alg_id Parmeter (значения CALG_RSA_KEYX или CALG_RSA_SIGN).

Да.

Если я экспортирую ключ, содержит ли KeyBlob информацию, сообщающую, какой это ключ?

Это зависит от выбранного типа большого двоичного объекта, но большинство ключевых блоков начинаются с ЗАГОЛОВОК БЛОБА который содержит тип ключа.

Если я экспортирую PublicKeyBlob и перевожу его в какую -то другую среду.Должен ли я импортировать эту каплю в новой среде, прежде чем я смогу использовать его для проверки подписи?

Да.

Заменяет ли импорт publickeyblob публичный ключ любой существующей пары публичных/частных ключей?

Нет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top