web-dev-qa-db-ja.com

HSMベースの証明書の秘密鍵はどのように見えますか?

キー自体がHSMに格納されている場合、証明書の秘密キーの構造を構成する要素を誰かが説明できますか?この例ではnShieldを使用していますが、HSM秘密鍵ポインターを使用して証明書を作成するHSMのプリンシパルは同じであると想定しています。

理解に苦労している2つの領域があり、そこには情報があまりない、または間違ったキーワードを検索しています。

  1. 証明書マネージャー(Windows)で証明書を開くと、証明書への秘密鍵があることが表示されます。これは単なるポインタであることに気づきましたが、それでもWindowsはデータを有効な秘密キーとして認識しますが、それはどのようにして可能ですか? Windowsをだまして、実際の秘密鍵であると思わせるにはどうすればよいですか。
  2. 証明書の秘密キーを使用しようとすると(つまり、何かに署名する場合)、秘密キーの操作がHSMにリダイレクトされます。私はCSPがこれを担当すると思いますが、証明書はどのCSPを使用するかをどのようにして知るのですか?

PKCS11やベンダーのAPIに依存する代わりに、ユーザーが証明書を暗号化操作に活用できるソフトウェアを作成できるように、理解を深めたいと思っています。

ありがとう!!

2
Brian Mitchell

理論的なレベルでは、これは可能です。これは、キーペアの公開キーと秘密キーが数学的にリンクされているためです。これは、特定の証明書の秘密鍵が含まれている場合、鍵ストレージプロバイダーにクエリを実行できることを意味します。 Windowsでは、はい、これを処理するのは暗号化サービスプロバイダー(CSP)です。 HSMベンダーは、Windows暗号化APIと統合するソフトウェアを提供しています。アーキテクチャに関する詳細は、このMSDNの記事に記載されています。 Key Storage and Retrieval

ソフトウェアを作成するために、Windows暗号化アーキテクチャの詳細を掘り下げる必要はありません。マイクロソフトは、この機能をアプリケーション開発者に公開するAPIを提供しています。 .NETフレームワークを使用している場合は、System.Security.CryptographyおよびSystem.Security.Cryptography.X509Certificates名前空間を調べることができます。

1
pgianna