メインコンテンツまでスキップ

6.3. 前方秘匿性 (Forward Secrecy)

前方秘匿性 (「完全前方秘匿性」または「PFS」とも呼ばれ、[RFC4949] で定義されている) は、セッションキーが通信当事者の長期キーでのみ暗号化されている暗号化された会話を記録する攻撃者に対する防御です。攻撃者が後でこれらの長期キーを取得できた場合、セッションキー、したがって会話全体を復号化できる可能性があります。TLSおよびDTLSのコンテキストでは、長期キーの侵害は完全にあり得ないわけではありません。例えば、以下のような理由で発生する可能性があります:

  • クライアントまたはサーバーが他の攻撃ベクトルによって攻撃され、秘密鍵が取得される。

  • 事前消去なしで販売またはその他の方法で廃棄されたデバイスから長期キーが取得される。

  • デバイス上でデフォルトキーとして使用されている長期キー [Heninger2012]。

  • CAなどの信頼できる第三者によって生成され、後に強要または侵害によってそこから取得されたキー [Soghoian2011]。

  • 暗号学的ブレークスルー、または不十分な長さの非対称キーの使用 [Kleinjung2010]。

  • システム管理者に対するソーシャルエンジニアリング攻撃。

  • 不十分に保護されたバックアップからの秘密鍵の収集。

前方秘匿性は、そのような場合において、攻撃者が会話の後のある時点で長期キーを取得したとしても、セッションキーを決定することが実行可能でないことを保証します。また、長期キーを所有しているが会話中は受動的なままである攻撃者からも保護します。

前方秘匿性は一般的に、Diffie-Hellmanスキームを使用してセッションキーを導出することによって達成されます。Diffie-Hellmanスキームでは、両当事者が秘密を維持し、特定の巡回群上のモジュラべき乗としてパラメータをネットワーク上で送信します。いわゆる離散対数問題 (DLP) の特性により、盗聴者がそれを行えないのに対して、当事者はセッションキーを導出できます。十分に大きなパラメータが選択されている場合、現在DLPに対する既知の攻撃はありません。Diffie-Hellmanスキームの変形は、元々提案されたモジュラ演算の代わりに楕円曲線を使用します。

残念ながら、前方秘匿性を特徴としない多くのTLS/DTLS暗号スイートが定義されました。例えば、TLS_RSA_WITH_AES_256_CBC_SHA256です。したがって、本文書は前方秘匿性専用暗号の厳格な使用を提唱しています。