前方秘匿性(Forward Secrecy)
前方秘匿性(Forward Secrecy、略称FSまたはPFS)とは、鍵交換プロトコルにおける重要な性質の一つで、長期的な鍵ペアから生成されたセッションキーが、将来的に長期鍵が漏洩した場合でも安全性が保たれるというものです。この性質を確保するためには、データの
暗号化に使用する鍵から別の鍵を生成してはならず、鍵の素材となる秘密情報は一度限りの使い捨てにする必要があります。これにより、一つの鍵が破られても他の鍵への影響を最小限に抑えられます。
概要
インターネット上での
盗聴リスクが高まる中、秘密鍵が漏洩しても過去の通信内容が解読されない前方秘匿性への関心が高まっています。
2014年には、秘密鍵漏洩の可能性を示すバグ「
ハートブリード」が発見され、この傾向がさらに強まりました。ただし、設定が適切でないと逆にセキュリティを低下させる可能性があるため注意が必要です。
歴史
前方秘匿性の概念は、Whitfield Diffie、Paul van Oorschot、Michael James Wienerによって提唱され、当初はStation-to-Stationプロトコル(STS)の特性を示すために用いられました。STSでは、長期的に保持される秘密情報は秘密鍵です。この概念は、パスワード認証鍵共有における長期的な秘密情報(共有パスワード)の安全性を示すためにも利用されています。IEEE 1363-2000のAnnex D.5.1では、さまざまな鍵共有プロトコルにおける前方秘匿性の性質が議論されています。
Perfect Forward Secrecy
前方秘匿性の中でも、以下の条件を満たすものを特にPerfect Forward Secrecy(PFS)と呼びます。
鍵合意に公開可能なランダムな値を使用する。
鍵合意の過程で決定的なアルゴリズムを一切使用しない。
これらの条件を満たすことで、一つのメッセージが危殆化しても他のメッセージへの影響をなくし、複数のメッセージを解読できるような秘密情報を排除できます。「Perfect」と名付けられていますが、これはワンタイムパッドのような完全
暗号とは異なる概念です。
攻撃法
前方秘匿性は、秘密鍵の漏洩からセッションキーを守ることができますが、セッションキーを使わずに単一のメッセージを解読しようとする試みには無力です。また、実装によっては計算負荷を軽減するためにセッションキーが再利用されることがあり、不適切な設定は前方秘匿性の安全性を脅かす可能性があります。2013年の調査では、DHEを使用してSSL上で前方秘匿性を実装していたサーバーの82.9%で、DHパラメータの長さがRSA鍵長よりも短く、総当たり攻撃への耐性を大きく低下させる設定になっていたことが明らかになっています。
適用可能なプロトコル
前方秘匿性は、以下のプロトコルで利用できます。
IPsec(オプション、RFC 2412)
SSH
* SSL/TLS
SSL/TLSにおける前方秘匿性
SSL 3.0の時点で、前方秘匿性を実現できる
暗号スイートは仕様上存在しましたが、実際の実装や
暗号化強度の不足が課題でした。SSLで前方秘匿性を実現するアルゴリズムとして、
ディフィー・ヘルマン鍵共有(DHE)と、それを楕円曲線
暗号で実現した楕円曲線
ディフィー・ヘルマン鍵共有(ECDHE)があります。これらのアルゴリズムには、以下の特徴と実装上の特性があります。
DHE
DHEには、RSAで署名されたサーバ証明書と組み合わせたDHE-RSAと、DSAで署名された証明書と組み合わせたDHE-DSSがありますが、実運用ではDHE-RSAがほとんどで、DHE-DSSの使用は稀です。DHEは、DHEを用いない場合と比較して計算負荷が大きいです。
Internet Explorerでは、Windows 8.1を含むすべてのバージョンでDHE-DSSのみに対応しており、DHE-RSAは利用できませんでしたが、
2014年4月8日以降のパッチでDHE-RSAに対応しました。
ECDHE
ECDHEには、RSAで署名されたサーバ証明書と組み合わせたECDHE-RSAと、楕円曲線DSAで署名された証明書と組み合わせたECDHE-ECDSAがあります。DHEとは異なり、サーバ側ではどちらも実運用で使用されています。クライアント側では、Mozilla製品で使われている
Network Security Servicesでは2003年から、
Internet Explorerでは2007年からECDHEが実装されていましたが、サーバ側のTLS/SSLライブラリとしてシェアの大きいOpenSSLでは2010年から、
GnuTLSでは2011年からと比較的新しいです。ECDHE-RSAは通常のRSAと比較して負荷が15%程度増加しますが、ECDHE-ECDSAは前方秘匿性のないRSAよりも高速化できる場合があります。
実運用
前方秘匿性の実運用は徐々に普及しており、
Googleでは2011年11月以降、
Gmailや
Google+などのサービスで前方秘匿性を有効にしています。また、
Twitterでは2013年11月に導入しました。
2014年7月1日からは、
ウィキメディア財団のすべてのプロジェクトで前方秘匿性が有効になりました。
2014年5月時点で
STARTTLSを有効にしているメールサーバの74%で前方秘匿性が有効になっているという報告もあります。2016年6月時点では、最新のウェブブラウザと組み合わせることで、
HTTPSサイトの51.9%が前方秘匿性を利用可能です。