web-dev-qa-db-ja.com

HSMが署名するものに制限はありますか?

暗号通貨アプリケーションの場合、私はHSMの主な機能はキーを生成/保存することだと考えています。それは主にそれに供給されるデータに署名するだけですか?しかし、それを制御するのは何ですか? pkc11/jce APIを介して要求されたものに署名するだけで喜ぶでしょうか?または、HSMが特定のものに署名し、他のものには署名しないことを許可するポリシーを適用できますか?

主に私は、HSMが共有データセンターなどのように、完全な物理制御を維持しないための一時的なギャップを提供できると想定していました。

したがって、たとえば、ブロック生成の署名を行うためにHSMを備えたビットコインマイナーを検討してみましょう。 OSの一部のアプリケーションが署名するためにHSMにビットコイントランザクションを送信できますか?たとえば、100bitcoinsを他のアドレスに転送しますか?

私のシナリオでは、HSMのセールスポイントとして私がいつも見ている「秘密キーがHSMを離れることはない」という事実は、実際には何もしません。

多分その場合はTPMを使用しますか? HSMの有無にかかわらずTPMに脆弱性はありませんか?

3
Optical Carrier

HSMが提供するのは、秘密鍵を保護することだけです。これは、秘密キーが盗まれて単純に気付かれない(したがって悪用される)ことができないことを意味するため、すでに強力な保護手段です。攻撃者が秘密キーを盗もうとする場合、HSMに物理的にアクセスする必要があるだけではありません(これはすでに強力な保護機能を備えていますが、HSMのクローンを作成できないため、すべてのトランザクションが対象です。

さらに、HSMは通常、シークレット(PIN、パスフレーズなど)によって保護されます。これは、構成に応じて、HSMの初期アクティベーション(つまり、プラグイン後、システムの再起動後)のすべてのトランザクションに対して1回提供する必要があります。 )または各トランザクション。後者はより安全ですが、すべての場合に実用的ではありません。つまり、HSMを認証局で使用して新しい証明書に署名する場合は実用的かもしれませんが、HSMを使用してWebサーバーの秘密鍵を保護する場合はおそらく実用的ではありません。

... OSの一部のアプリケーションがビットコイントランザクションをHSMに送信して署名されますか?.

HSM自体には、何が署名されているかがわかりません。最初に一部のデータに署名する必要がある場合(つまり、暗号通貨トランザクションが有効である場合)のインテリジェンスは、HSMのユーザーが提供する必要があります。ほとんどの場合、そのような機能を実装するロジックは非常に複雑で、HSM(またはスマートカード)はかなり小さいコンピューターに実装できません。そのような自動チェックを最初にどのように行うべきかが明らかな場合。

たとえば、HSMを使用して(PINは不要)暗号通貨トランザクションに自動的に署名し、バグまたは設定ミスが攻撃者へのアクセスを許可する可能性がある複雑なシステムで使用する場合は、おそらくシステムアーキテクチャを再考してください。署名する必要があるチェックのみを実装し、より複雑なシステムに最小限の安全なAPIを提供する個別の最小限のシステム内でHSMを使用する方が便利な場合があります。

多分その場合はTPMを使用しますか? HSMの有無にかかわらずTPMに脆弱性はありませんか?

TPMは、ほぼ同じ制限を持つ特別な種類のHSMです。 TPMには、HSMまたはスマートカードと同じくらいの脆弱性があります。しかし、これらはすべて非常に最小限のシステムであり、大規模なシステムよりも脆弱性の監査が容易です。これは バグが発生しないことを意味するわけではありません 、それは可能性がはるかに低いです。

3
Steffen Ullrich