39

私はJava-NSSライブラリに興味があり、SunのP11ガイドを読んでいます。私は次のことに混乱しています:

PKCS12キーストアとPKCS11キーストアの使用の違いは何ですか?

キーストアは単なるキーストアですよね?違いはありますか?それらはどのような面でも交換可能に使用できますか?

4

2 に答える 2

56

PKCS#12 は、秘密鍵と証明書を格納できるファイル形式 (多くの場合、.p12 または .pfx と呼ばれます) です。主にキーと証明書の変換/転送に使用されます。ブラウザから秘密鍵 + 証明書をエクスポートすると、その形式になる可能性があります。

PKCS#11 は、通常、ハードウェア暗号化トークン (多くの場合、リーダーに埋め込まれたスマートカードであるスマートカードまたは USB トークン) と通信するために使用されるインターフェイスです。このインターフェイスには、鍵と証明書を利用するための多くの操作があります。一部のトークンは、含まれている秘密鍵を使用して署名できますが、鍵がデバイスから出ることはありません。このインターフェイスのポイントは、PKCS#11 が提供する暗号化操作 (より具体的には、秘密鍵に関連する操作) を実行する必要なく、キーと証明書を個別のエンティティとして処理することです。

NSS で PKCS#11 を使用すると、PKCS#11 レイヤーの背後にラップされたブラック ボックスとして NSS を効果的に使用することになります (実質的には、PKCS#11 ハードウェア トークンのソフトウェア プロバイダーです)。Java が PKCS#11 経由で NSS を使用する方法には、PKCS#11 共有ライブラリを必要としないという点で (他の PKCS#11 ライブラリと比較して) わずかな違いがあるため、厳密に言えば PKCS#11 ではありません。よく似ているのに。

Java ではRSAPrivateKey、PKCS#11 ストアからインスタンスを取得し、それを使用して署名と解読を行うことができますが、モジュラスから何も取得することはできません。それを処理するセキュリティ プロバイダーは、ライブラリを介して (したがって、そのライブラリがハードウェア トークンでサポートされている場合はトークンを介して) 署名/解読を行います。

Java の話に戻ると、KeyStoreファイル (セキュリティ プロバイダに応じて、JKS、PKCS#12、PEM などのさまざまなファイル形式を取得します) または他の基になる API からキーと証明書を読み込んで使用できるようにする API です。 (PKCS#11 など、多かれ少なかれ Sun プロバイダーの NSS とマージされます。OSX 上で KeyChain を KeyStore として使用する場合は KeychainStore)。

于 2011-05-27T21:10:50.617 に答える
4

Java のさまざまなタイプのキーストア - 概要から、PKCS12 と PKCS11 の違いは次のように説明できます。

PKCS12。これは、Java やその他の言語で使用できる標準のキーストア タイプです。このキーストアの実装は、sun.security.pkcs12.PKCS12KeyStore にあります。通常、拡張子は p12 または pfx です。このタイプには、秘密鍵、秘密鍵、および証明書を格納できます。JKS とは異なり、PKCS12 キーストアの秘密鍵は Java で抽出できます。この型は移植性があり、C、C++、C# などの他の言語で記述された他のライブラリで操作できます。

現在、Java のデフォルトのキーストア タイプは JKS です。つまり、keytool でキーストアを作成するときに -storetype を指定しない場合、キーストアの形式は JKS になります。ただし、JKS と比較して互換性が強化されているため、デフォルトのキーストア タイプは Java 9 で PKCS12 に変更されます。デフォルトのキーストア タイプは $JRE/lib/security/java.security ファイルで確認できます。

PKCS11、これはハードウェア キーストア タイプです。Java ライブラリが SafeNet の Luna、nCipher、スマート カードなどのハードウェア キーストア デバイスに接続するためのインターフェイスを提供します。この実装は、sun.security.pkcs11.P11KeyStore にあります。キーストアをロードするときに、特定の構成で特定のプロバイダーを作成する必要はありません。この鍵ストアには、秘密鍵、秘密鍵、および証明書を保管できます。キーストアをロードすると、エントリがキーストアから取得され、ソフトウェア エントリに変換されます。

于 2016-10-12T16:12:21.717 に答える