暗号を利用したプロジェクトを研究しています。これは、SQLサーバーデータベースに格納されたキーを持つ.netアプリケーションです。暗号化の場合、プロジェクトでは ハードウェアセキュリティモジュール を使用します。リンクされているウィキペディアの記事で説明されているものと同様です。
.net BCLにあるような「標準実装」を使用して.netコードで暗号化/復号化/署名/検証およびキー生成を行う代わりにHSMデバイスを使用する利点を理解したいと思います。ここではRSA/DESについて話します。
キーがデバイス内に保存されているかどうかはわかりますが、キーが別の場所に保存されている場合のメリットを理解するのに苦労しています。確かに、暗号化アルゴリズムが改ざんされていないことを確認できますが、改ざんされている場合は、データが暗号化される前/解読された後に改ざんされる可能性のある他のコードがたくさんあることを恐れています。これは、私が思うほぼすべてのプロジェクトについて言えることです。
私が想像できる1つの考えられる理由は、アプリケーションが多くの暗号化を行う場合のパフォーマンスですが、これがプロジェクトに当てはまるかどうかはまだわかりません。では、他のメリットは何でしょうか?
多くのHSMでは、安全なストレージの容量はほとんどありません(たとえば、数キロバイト)。したがって、HSMが実際に内臓に格納するのは、いくつかのマスターキー[〜#〜] k [〜#〜](対称)です。アプリケーションが使用する鍵ペアは外部に保存されますが、[〜#〜] k [〜#〜];で暗号化されます。それらは復号化され、HSM内でのみ使用されます。このような設定では、キーはHSM内に「論理的に」格納され、「物理的に」外部に格納されます。これは、関心のあるシステムで発生する可能性があります。
HSMがセキュリティにどのように役立つかは興味深い質問です。キーを盗む唯一の方法はHSM全体を盗むことであり、その時点でキーはもう手に入らないため、HSMは基本的に、キーが盗まれた場合にそれを知っていることを保証します。これは、盗難の痕跡を残さずにコピーできるソフトウェアキーとは対照的です。
HSMが外部に格納されたキーで使用される場合、前述のようになし暗号化といくつかのマスターキーを使用すると、HSMは実際には単純なアクセラレータであり、セキュリティの向上ではなくパフォーマンス上の理由で使用されます。これは数十年前に人気がありましたが、基本的なPCによって提供されるパフォーマンスの向上との関連性をほとんど失いました。 HSMに変更を加えると、そのEAL 4+/FIPS 140-2認定が無効になるため、現在市場に出回っている多くのHSMデザインでASICは10年前に設計され、そのパフォーマンスは使用済みで非常に優れていますが、500 $サーバーが提供できるもの(1秒あたり数千の秘密鍵操作)に匹敵します。