2016-11-09 4 views
0

Я не могу понять, как сертификат осведомлен о связи с закрытым ключом. Например, под окнами, когда вы нажимаете на сертификат, который приходит со смарт-карты, он говорит: «У вас есть закрытый ключ, соответствующий этому сертификату». Как сертификат знает об этом? Я читал RFC5280, однако я не вижу поля в сертификате X509, который указывает, подключен ли сертификат к закрытому ключу или нет. Что мне не хватает?Как узнать сертификат x509 о привязке к закрытому ключу?

ответ

2

В общем, любой открытый ключ содержится в его закрытом ключе. Независимо от операционной системы, механизма хранения или библиотеки, учитывая только сертификат X.509 и закрытый ключ, значение открытого ключа можно извлечь из закрытого ключа и сравнить с значениями открытого ключа в сертификате. Если они совпадают, частный ключ принадлежит сертификату.

Например, закрытый ключ RSA состоит из

  1. PublicExponent
  2. Modulus
  3. Prime1
  4. Prime2
  5. Exponent1 [опционально]
  6. Exponent2 [опционально]
  7. Коэффициент [опционально]
  8. PrivateExponent [опционально]

Первые два, PublicExponent и Modulus составляют открытый ключ и сохраняются в сертификате X.509. (Вышеуказанные необязательные поля могут быть рассчитаны с первых 4, но обычно включаются в закрытый ключ, так как для их вычисления требуется много мощности ЦП)

Для вашего конкретного примера оснастка сертификата MMC запрашивает Crypto API (CAPI) для установленных сертификатов. CAPI использует модули Cryptographic Service Provider (CSP), которые могут обеспечить, помимо прочего, хранилища сертификатов. В рамках спецификации хранилища сертификатов CSP хранилище предоставляет атрибут «PP_Container» для каждого сохраненного сертификата. Этот атрибут сообщает CAPI имя контейнера CSP, который содержит соответствующий закрытый ключ (если есть). Это «разделение» позволяет хранить секретный ключ на смарт-карте или аппаратном модуле безопасности, а сертификат хранится в самой системе Windows.

+0

Очень хорошее объяснение, спасибо! –

1

Это зависит от операционной системы и/или крипто библиотеки. В случае Windows сертификат хранится в хранилище сертификатов. Хранилище сертификатов поддерживает свойства, привязанные к хранилищу, в которых может предоставляться информация о CSP и ключевом контейнере. Когда вы открываете сертификат в хранилище, MMC читает вложенные свойства сертификата и определяет, есть ли связанный закрытый ключ.

Смежные вопросы