ディフィー・ヘルマン鍵共有
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/12/18 13:50 UTC 版)
公開鍵の選択
公開鍵は(何かしらの証明を付けた)静的なものであっても、一時的なもの(ephemeral、この場合特にDHEと略記される)であってもかまわない。一時的な鍵を使用した場合、鍵そのものには認証がないため、別な方法で認証を行うこととなる。もし認証がなければ、上述の通り中間者攻撃に対して脆弱となる。どちらか一方の鍵が静的なものであった場合、中間者攻撃を受けることはなくなるが、forward secrecyのような、その他の高度なセキュリティに与ることはできなくなる。静的な鍵を持つ側では、自身の秘密鍵漏洩を防ぐため、相手の公開鍵を確認して、安全な共通鍵生成関数を利用する必要がある。
共有した秘密をそのまま鍵として使うこともできなくはないが、ディフィー・ヘルマン鍵共有で生成したことによってできる弱いビットの影響を除去するため、秘密をハッシュに通すことが推奨される[3]。
問題点
処理負荷
ディフィー・ヘルマン鍵共有は負荷のかかる処理であり、SSL/TLSに適用した場合では、通常のRSA暗号による鍵交換の場合と比較して、サーバのスループットが6分の1程度まで落ち込むという実験結果も存在する[4]。
パラメータの設定ミス
これはディフィー・ヘルマン鍵共有のシステム自体に存在する問題ではないが、2013年の調査では、SSL/TLSでディフィー・ヘルマン鍵共有を有効としているサーバのうち、電子署名のビット数よりDHのビット数のほうが小さく、総当たり攻撃に対して弱くなってしまっているサーバが、実に80%以上の割合で存在していた[5]。
弱鍵の存在と Logjam 攻撃
原理上は解読がきわめて困難ではあるが、実装上の問題が存在する場合には解読が可能となる場合がある。
また原理上、使われている素数に対して十分な量の事前計算を行えば、その素数に対しては比較的短い時間で鍵を解読することができる (言い換えれば、その素数を弱鍵にすることができる)[6]。2015年、このことを元にした論文が発表された[7]。
この論文において、Alexaによるトップ100万HTTPSドメインの中で512ビット輸出版DHEを許可している 8.4% のうち 82% が、1024ビット非輸出版DHEでもトップドメイン全体の 17.9% がそれぞれ単一の素数を使い回しており、これらの素数に対して事前計算 (ある種の線形代数計算を含む) を行うことで多くのサーバーの通信に対して解読が行えることを指摘した。特に512ビットの素数に対して解読を実証し、数千コアと約8日の事前計算により、およそ70秒で解読ができることを示した[7]。
さらに、サーバーが用いる素数についての離散対数問題をリアルタイムで解ける攻撃者が存在した場合には、たとえクライアント側が弱いDHEを許可していなくても偽のサーバーに接続させる中間者攻撃が成立し、例えばサーバー側が512ビットの輸出版DHEを許している場合には、輸出版DHEを許可していない新しいクライアントであっても通信をダウングレードさせることが可能であることを示した (Logjam 攻撃)[7]。
同論文は1024ビットの非輸出版DHEについても、数億ドルのコストをかけて専用ハードウェアを構築した場合には、1つの素数に対して十分な線形代数計算を1年間で実行できる可能性があることを示唆している[7]。
- ^ RFC 5114(Additional Diffie-Hellman Groups for Use with IETF Standards、2008年8月)や RFC 7919(Negotiated Finite Field Diffie-Hellman Ephemeral Parameters for Transport Layer Security (TLS)、2016年8月)のように、広く公開されて用いられる (p,q,g) の組も存在する。
- ^ Dan, Boneh (1998), “The Decision Diflie-Hellman Problem”, Algorithmic Number Theory. ANTS 1998, LNCS 1423 2021年12月24日閲覧。
- ^ Law, Laurie; Menezes, Alfred; Qu, Minghua; Solinas, Jerry; Vanstone, Scott (August 28, 1998). An Efficient Protocol for Authenticated Key Agreement. Certicom 2012年1月19日閲覧。.
- ^ Symantec (2013)、pp.13-14。
- ^ Symantec (2013)、p.9。
- ^ Diffie, Whitfield; Oorschot, Paul C. Van; Wiener, Michael J. (1992-03-06), “Authentication and Authenticated Key Exchanges”, Designs, Codes and Cryptography 2017年12月24日閲覧。
- ^ a b c d Adrian, David; Bhargavan, Karthikeyan; Durumeric, Zakir; Gaudry, Pierrick; Green, Matthew; Halderman, J. Alex; Heninger, Nadia; Springall, Drew et al. (2015-10), Imperfect Forward Secrecy:How Diffie-Hellman Fails in Practice 2017年12月24日閲覧。
- ディフィー・ヘルマン鍵共有のページへのリンク