PKCS#12 — это формат файла (часто называемый .p12 или .pfx), в котором вы можете хранить закрытый ключ и сертификаты. В основном он используется для преобразования/переноса ключей и сертификатов. Если вы экспортируете закрытый ключ + сертификат из своего браузера, он, скорее всего, будет в этом формате.
PKCS#11 — это интерфейс, обычно используемый для взаимодействия с аппаратными криптографическими токенами (часто со смарт-картами или USB-токенами, которые фактически представляют собой смарт-карты, встроенные в устройство чтения). Этот интерфейс имеет ряд операций для использования ключей и сертификатов. Некоторые токены могут подписываться с помощью содержащегося в них закрытого ключа, при этом ключ не может покинуть устройство. Смысл этого интерфейса состоит в том, чтобы рассматривать то, что обрабатывает ключи и сертификаты, как отдельный объект, без необходимости выполнять криптографические операции, предлагаемые PKCS#11 (точнее, те, которые связаны с закрытым ключом).
Когда вы используете PKCS#11 с NSS, вы фактически используете NSS как черный ящик, обернутый за слоем PKCS#11 (по сути, это поставщик программного обеспечения для того, чем может быть аппаратный токен PKCS#11). Существует небольшая разница в том, как Java использует NSS через PKCS#11, в том, что она не требует разделяемой библиотеки PKCS#11 (по сравнению с другими библиотеками PKCS#11), поэтому, строго говоря, это не PKCS#11, хотя очень похоже.
В Java вы можете получить экземпляр RSAPrivateKey
из хранилища PKCS#11, использовать его для подписи и расшифровки, не имея возможности получить что-либо из его модуля. Поставщик безопасности, обрабатывающий его, будет выполнять подписание/расшифровку через библиотеку (и, следовательно, через токен, если эта библиотека поддерживается аппаратным токеном).
Возвращаясь к KeyStore
в Java, это API, который позволяет загружать и использовать ключи и сертификаты из файлов (вы получаете различные форматы файлов, такие как JKS, PKCS#12, PEM, в зависимости от вашего поставщика безопасности) или из других базовых API-интерфейсы (такие как PKCS#11, более или менее объединенный с NSS в поставщике Sun, или KeychainStore, если вы работаете в OSX и хотите использовать KeyChain в качестве KeyStore).
person
Bruno
schedule
27.05.2011