Forward secrecyforward secrecy(perfect forward secrecy、略してFSあるいはPFSとも呼ばれる[1]。日本語で前方秘匿性とも[2])は、長期的な鍵対からセッションキーを生成した際に、のちに長期鍵の安全性が破れたとしてもセッションキーの安全性が保たれるという、鍵交換プロトコルの持つ性質である。この特性を守るためには、データを暗号化するための鍵から別の鍵を生成してはならないし、そしてデータを暗号化する鍵の素材となる秘密は一度だけの使い捨てにしなければならない。そうすることで、1つの鍵が破れたとしても被害がほかの鍵に及ばないようになる。 概要インターネットへの盗聴が懸念される中、たとえ秘密鍵が判明したとしてもそれだけでは解読できないForward secrecyに注目が集まり[3]、2014年には実際に秘密鍵が漏洩しうるバグであるハートブリード(英語: Heartbleed)が発見された結果、その傾向がさらに強まっている[4]。ただし、適切でない設定により、かえって安全性を下げている事例も存在する(後述)。 歴史Forward secrecyは、Whitfield Diffie、Paul van Oorschot、Michael James Wienerによって作られた概念であり、Station-to-Station protocol (STS)の持つ性質を示すために使われたが、このSTSでは長期間保持される秘密は秘密鍵である[5]。 この語はまた、パスワード認証鍵共有が同様に持つ性質(ここでの長期的な秘密は共有したパスワード)を表すためにも使われた[6]。 IEEE 1363-2000のAnnex D.5.1では、各種の鍵共有プロトコルについて、forward secrecyの性質を議論している。 Perfect forward secrecyforward secrecyの中でも、以下の条件を満たすものはperfect forward secrecyと呼ばれる。[要出典]
これらの条件を満たす場合、1つのメッセージが危殆化したとしてもそれが他に及ぶことはなく、また、これ1つで複数のメッセージを解読可能な秘密情報も存在しない。 「perfect」と付いているが、これはワンタイムパッドのような完全暗号とは別の概念である。 攻撃法forward secrecyは秘密鍵の危殆化からセッションキーを守ることはできるが、セッションキーを使わずに1つのメッセージへ暗号解読を行う試みに対しては無力である。また、実装によっては計算負荷を軽減するためにセッションキーの再利用が行われており、不適切な設定ではforward secrecyの安全性が脅かされることとなる[7]。また、2013年に行われた調査では、DHEによりSSL上でのforward secrecyを実装していたサーバのうち実に82.9%で、DHのパラメータ長がRSAの鍵長より小さくなっていた、すなわち総当たり攻撃への耐性を大きく下げるような設定となっていたことが判明している[8]。 適用可能なプロトコルSSL/TLSにおけるforward secrecySSL 3.0時点でも、仕様上forward secrecyを実現可能な暗号スイートは存在したのだが、実装がなされていない、あるいは暗号化強度が弱すぎるなどの問題を抱えていた[9]。 SSLでforward secrecyを実現可能なアルゴリズムとして、ディフィー・ヘルマン鍵共有(DHE[* 1])と、それを楕円曲線暗号で実現した楕円曲線ディフィー・ヘルマン鍵共有(ECDHE[* 1])が存在する[7]。この2つのアルゴリズムについては、以下のような特徴・実装上の特性を持つ。
実運用も徐々にではあるが普及しており、Googleでは、GmailやGoogle+などの自社サービスに対して、2011年11月22日以降forward secrecyを有効としている[21][18]ほか、Twitterでは2013年11月に導入している[22]。2014年7月1日から、ウィキメディア財団によって運営されるすべてのプロジェクトにおいてforward secrecyが有効となった[23]。2014年5月時点でSTARTTLSを有効にしているメールサーバのうち74%でforward secrecyが有効となっているという、facebook社による報告もある[24]。2016年6月時点で、最新のウェブブラウザとの組み合わせによってHTTPSのWebサイトのうち51.9%がforward secrecyを利用可能である[25]。 脚注注出典
参考文献
外部リンク
|