web-dev-qa-db-ja.com

ハードウェアセキュリティモジュールでの証明書とキーの保管(ユースケースTLS)

公開鍵暗号の一般的なセキュリティ目標とそのさまざまな要素に興味があります。

ユースケースの概要:
私の使用例は組み込みデバイスで、TLSを使用してサーバーとクライアント(組み込みデバイス)間の安全な通信を確立します。さらに、TLSは相互認証ハンドシェイクで使用され、クライアント証明書も必要です。組み込みデバイスには、効率的な暗号化操作と安全なストレージのためのハードウェアセキュリティモジュール(HSM)が含まれています。

TLS通信を可能にするために、次の要素が組み込みデバイスに存在します。

  1. サーバーを認証するためのCAからのTLSルート証明書(公開鍵を含む)
  2. クライアントリーフ証明書(公開鍵を含む)
  3. クライアントリーフ証明書の秘密鍵

HSMのストレージスペースは、すべての要素1、2、3を同時に保持するのに十分な大きさであると想定できます。

私の質問は、HSM内に格納する必要がある要素は何ですか?

  1. ルート証明書:
    ルート証明書はPKIへの参加を希望するすべてのデバイスにインストールされるため、この情報は公開されているため、機密性は必要ありません。
    しかし整合性はどうですか?私は そのようなルート証明書が改ざんされている(または交換されている)場合のセキュリティ上の問題 にアクセスして、悪意のあるWebサイトからの信頼できないリーフ証明書を後で認証できるようにします。ルート証明書をHSM内に保存する利点はありますか、それとも、デバイスの通常のメモリに保存されている証明書を変更するためのソフトウェアのインターフェイスを提供しなくても十分ですか?
  2. クライアント証明書:
    また、相互認証TLSハンドシェイク中に証明書が暗号化されずにサーバーに送信されるため、ここでは機密性は必要ないと考えています。証明書全体を秘密鍵と一緒にHSMに入れる必要がありますか?証明書自体がHSM内に格納されている場合に軽減できる攻撃シナリオはありますか?
  3. クライアント証明書の秘密鍵:
    これは100%確信しています。セキュリティを向上させるには、秘密鍵をHSMに入力する必要があります。

1つの文ですべてを言い換える:

秘密鍵は、可能であればHSM内に保存する必要がありますが、証明書(公開鍵を含む)もHSM内に保存するメリットはありますか?

編集:
私の理解では、この使用例のHSMは、秘密鍵を格納するためのセキュリティ上の利点のみを提供します。ただし、HSM内に証明書を格納することについては、多くの例を読みました。このような記述が不適切な表現によるものなのか、実際に証明書をHSM内に保存することのメリットがあるのか​​はわかりません。例: [〜#〜] a [〜#〜][〜#〜] b [〜#〜][〜#〜] c [〜#〜]

3
oh.dae.su

違いを理解するための重要なことは、キーのセキュリティプロパティを直接気にする必要がないことを認識することです。これらは、キーの使用に由来する、気になるセキュリティプロパティを保証するための単なるツールです。

間接的な理由で資産を機密に保つ必要がある場合は、資産を特定の方法でのみ使用できるようにする高度なセキュリティ領域に資産を保持する利点があります。たとえば、秘密鍵がHSMにあり、コンピューターがこの鍵で署名または復号化できるが、コンピューターが鍵のコピーを抽出できないと仮定します。コンピューターが危険にさらされているがHSMはそうではない場合、攻撃者はキーを使用できますが、これらの使用はHSMログに記録されるため、侵害の結果に関するいくつかの情報が得られます。さらに、コンピューターの制御を取り戻すと、攻撃者はキーを使用できなくなることがわかります。これは通常、署名鍵にはあまり役に立ちませんが(HSMログで、鍵が使用されていないことが通知されない限り)、解読鍵には役立ちます。

間接的な理由で資産の完全性を保護する必要がある場合、それは別の話です。今回はHSMの公開鍵または証明書を使用して、コンピューターとHSMのセットアップを再度検討します。コンピューターのセキュリティが侵害された後、攻撃者はHSMの証明書のコピーを変更できなかったことがわかります。その証明書のコピーを含め、バックアップから多くのデータを復元する必要があったため、これは実際には役に立ちません。攻撃者はコンピュータにアクセスできますが、証明書がHSMにあるかどうかは問題ではありません。攻撃者がそのことに悩まされている場合、HSMにアクセスしないようにコンピューター上のコードを変更するだけです。

信頼できる場所を使用して、整合性が必要なデータのコピーを保存することは重要ですが、そのためのHSMは必要ありません。それがバックアップの目的です。データを操作するコードの整合性を保証できない場合、データの整合性をより適切に保護しても何も得られません。

したがって、あなたの場合、あなたは間違いなく秘密鍵をHSMに置くべきです(3)。通常の操作(1、2)のためにHSMに証明書を配置するメリットはありませんが、何らかの理由でデバイスの制御を回復できる場合は、違反後の回復に役立つ可能性があります。証明書だけでは十分ではありませんが、デバイスを信頼できる状態で起動するために必要なすべてのコードを含む、より大きな 信頼のルート の一部である可能性があります。

¹ 同じキーで両方を許可するべきではありません。

この質問はセキュリティとほとんど関係がありません。セキュリティの観点からは、HSMのパブリック証明書ストアはセキュリティを向上させません。パブリック証明書には機密情報が含まれておらず、それ自体がデジタル署名で保護されているためです。言い換えれば、HSMスペースが許せば、そこに公開証明書を格納できます。証明書のストレージのように考えてください。

ただし、セキュリティが強化されるわけではありません。

0
Crypt32