私はハードウェアセキュリティモジュール(HSM)を使用してクラウドベースのデジタル署名に取り組んでいます。 PKCS#11とMicrosoftCryptoAPIの実装が必要であることを私は知っています。プロセス全体をシミュレートしたいと思います。このため、Thales SimulatorはHSMに最適ですか?これをPKCS#11またはMicrosoft CryptoAPIに接続するにはどうすればよいですか?または、ハードウェアセキュリティモジュールを使用してクラウドベースのデジタル署名をシミュレートするためのより良いソリューションを提供できる人はいますか?
注:Windowsでシミュレートした方がよいでしょう。
あなたの質問は私には奇妙にわかりにくいように思われるので、混乱を減らし、答えまたは少なくともより明確な質問につながることを期待して、あなたが使用する用語の意味についていくつか説明します。
PKCS#11 は アプリケーションプログラミングインターフェイス :これは関数のセットであり、アプリケーションはを使用し、提供されます特定のデバイスまたはシステムによって。アプリケーションの観点から、「PKCS#11ドライバー」は、アプリケーションがロードできるDLLであり、DLLは、暗号化キーの作成と使用。アプリケーションは、キーがどのように作成、管理、使用されるかを認識していません。これが、標準化されたAPIを使用するための要点です。キーを管理するための物理デバイス(たとえば、 [〜# 〜] hsm [〜#〜] )は、HSMベンダーによって提供されるDLL、PKCS#11インターフェイスを実装するDLL 。そうすれば、PKCS#11 DLLをロードし、その中の関数を呼び出す方法を知っているアプリケーションは、そのようなDLLを提供するすべてのHSMと「即座に」互換性があります。
キー管理システムが「物理的」である必要はありません。アプリケーションはDLLを呼び出し、DLLは必要な処理を実行します。ファイルと単純なソフトウェアを使用して暗号化操作を実行します。リモートサーバーを呼び出して、ジョブを実行します。 else。アプリケーションは、定義上、DLLが何をするのかを知りません。
おそらく、シミュレートしたい場合は、PKCS#11 DLL純粋なソフトウェア。実際にHSMを購入する前にアプリケーションを開発してテストできます。これが理論です。PKCS#11は巨大なAPIであるため、実際にはうまく機能しません。PKCS#11は関数と引数を指定しますが、実際には機能しません。考えられるすべての動作を特定するわけではないため、PKCS#11の実装は、相互運用性に向けた1つのステップにすぎません。そういえば、すべてのHSMが互いに同等であるとは限らないため、1つのHSMでテストを行います。アプリケーションが市場に出回っているすべてのHSMで実行されるという意味ではありません。
簡単にするために、ベンダーXXXのHSMをシミュレーションする必要がある場合、最も忠実なシミュレーションは、おそらくXXX自体が提供するシミュレーターです。シミュレーター。 「最高」が自動的に「良い」を意味するわけではないことに注意してください。
CryptoAPI は、PKCS#11にいくぶん類似しているMicrosoft専用のAPIです。アプリケーションはCryptoAPIの関数を呼び出して、暗号化に関連するさまざまな操作(ドキュメントへの署名やX.509証明書の検証など)を実行します。これらの操作の一部は、キーの作成、管理、および使用に関するものです。 CryptoAPIは、これらをMicrosoftが呼び出すもの暗号化サービスプロバイダーに委任します。 CSPは実際にはDLL CryptoAPIがロードします。CSPはいくつかの標準化された機能を実装し、ジョブを実行するシステム(物理デバイスまたはソフトウェアデバイス)へのアクセスを処理します。CSPは概念がPKCSに似ています。 #11 DLL;違いは主に、CSPはWindowsにのみ存在するのに対し、PKCS#11は他のオペレーティングシステムでも機能することです。
したがって、Windows上のアプリケーションでは、CryptoAPIまたはPKCS#11のどちらを使用するかを選択できます。たとえば、Firefox Webブラウザは、暗号化ハードウェアデバイス(特にスマートカード)と通信する必要がある場合に、PKCS#11のみを使用します。同じ目的で、InternetExplorerはCryptoAPIに依存します。
一部のHSMベンダー(Thalesなど)は、PKCS#11 DLLと)の両方をHSMでCryptoAPIに提供しています。
「クラウドベース」とHSMは奇妙な組み合わせです。 「クラウド内」で行う場合は、データを送信してリモートのどこかに保存および処理するため、ユーザー側で何も変更せずにすべてを仮想化して移動できます。通常、HSMを正確に使用して、そのようなことが起こらないようにします。
おそらく、「共有HSM」があることを意味したいと思うかもしれません。HSMはネットワークに到達可能な場所に配置され、さまざまなクライアントシステムがHSM固有のプロトコル(おそらくプロトコル)を介してこのHSMに暗号化操作を委任します。それを安全にするのに十分な暗号化を備えています)。 Thales HSMでも、「 nShield Connect "」という製品があります。これはまさにそれを実行します。
ただし、このHSM共有を「クラウドベース」と呼ぶのはかなり紛らわしいステートメントです。