3

RSAPrivateKey を HSM にラップして、キーのアーカイブのために Microsoft CA に送信できるようにする必要がありますが、どのようなアプローチを取るべきかわかりません。

問題は、Microsoft RSA キー形式が独自のものであり、pkcs11 または私の会社が使用する nCipher HSM でサポートされていないように見えることです。

http://msdn.microsoft.com/en-us/library/cc250013.aspx

これが単なる RSAPrivateKey である場合、HSM でキー ペアを生成し、HSM にラッピング キーをロードし、RSAPrivateKey をラップして、ラップされたキー バイトを抽出するのは簡単です。明らかに、このキー BLOB 形式はサポートされていないため、別のアプローチを取る必要があります。

私が最初に考えたのは、RSAPrivateKey を拡張し、getEncoded() メソッドをオーバーライドして、この独自のキー形式を返すことでした。Java で高レベル API を pkcs11 に提供する IAIK pkcs11 ラッパーを使用しており、ベンダー定義のキー タイプの作成がサポートされています。ただし、ベンダー定義のキーのインターフェイスは、クライアント コードで組み込みのキー タイプを拡張するための利便性としてのみ存在するようであり、実際には HSM 内のキー エンコーディングを変更することはできません。

2 番目のアイデアは、pkcs11 データ オブジェクトを使用し、単純にそれをキー blob として扱い、それをラッピング キーで暗号化することでした。ここでの同じ問題は、秘密鍵のバイトをデータ オブジェクトにコピーするために、秘密鍵のバイトをアプリケーション コードに抽出し、そこからデータ オブジェクトを作成する必要があるように思われることです。 HSM のキー。

これらのアプローチに代わるものを探していますか、それとも pkcs11 に見落としていた機能があり、これが可能になるのでしょうか? 任意の洞察をいただければ幸いです。

4

3 に答える 3

2

これは、nShield HSMでサポートされていないデータ形式のように見えることに同意します(ただし、サポートチームに確認する価値があるかもしれません)。

これが事実であると仮定すると、これを安全に行う方法は1つだけです。秘密鍵をロードしてHSM内で実行されている特注のコードに渡すためにはるかに低レベルのAPIを使用する必要があります(CodeSafeテクノロジーを利用) 、キーマテリアルを公開し、それを必要な形式に変換して、ラッピングキーでラップします。

他のアプローチでは、ホスト上で重要な露出が発生します。さらに、適切な(デフォルトの)権限でキーを生成した場合、管理者カードセットを利用する特注のコードを記述せずにキーを公開することはできません。

この問題については、サポートチームに連絡することをお勧めします。あなたはこれを手伝ってくれるフレンドリーなコンサルタント、咳をすることさえできるかもしれません。

于 2013-02-12T08:25:06.017 に答える
0

これがサポートされていない独自の形式である場合は、これを実現するために HSM 内で独自のコードを実行する必要がある場合があります。多くの HSM では独自のコードを実行できますが、最初にコードをロードできるようにするには、HSM プロバイダーからのサポートが必要です。さらに、HSM で独自のコードを実行すると、セキュリティ認証 (FIPS または Common Criteria) に違反する可能性があります。

そうしないと、HSM から秘密鍵を取得し、安全な環境内で正しい形式に変換し、HSM の通常の暗号化機能を使用してラップする必要があります。もちろん、これにより秘密鍵が HSM の外部に公開されます。

Microsoft に優先ソリューションがあるかどうかを尋ねることもできます。

于 2013-05-09T11:04:47.160 に答える