午前I問題
Diffie-Hellman鍵交換方式に関する記述として、適切なものはどれか。
ア)Diffie-Hellman鍵交換は、通信の両者が事前に共通鍵を安全な経路で共有しておく必要がある方式である。
イ)Diffie-Hellman鍵交換は、公開情報のやり取りのみから、安全でない通信路上でも両者が同じ共通鍵を導出できる方式であり、その安全性は離散対数問題の計算困難性に基づく。
ウ)Diffie-Hellman鍵交換は、通信内容そのものを暗号化する方式であり、RSA暗号の代替として平文の暗号化に直接利用される。
エ)Diffie-Hellman鍵交換は、公開鍵と秘密鍵のペアを生成し、デジタル署名を行うために設計されたアルゴリズムである。
午前I の解答・解説を見る
正解: イ
解説:
- ア)不正解。Diffie-Hellman(DH)鍵交換の本質は、事前共有なしに安全でない通信路上で共通鍵を導出できる点にある。事前共有が必要なら鍵交換方式として意味がない。
- イ)正解。DH鍵交換は各当事者が秘密の指数を持ち、それぞれ計算した公開値を交換することで、第三者には求められない共通の秘密(共通鍵の元)を導出する。その安全性は「離散対数問題(ある値から元の指数を逆算することが計算上困難)」に基づいている。
- ウ)不正解。DHは鍵交換(共通鍵の合意形成)のための方式であり、通信内容自体の暗号化は行わない。合意した共通鍵を用いてAES等の共通鍵暗号で通信内容を暗号化するのが一般的な使い方である。
- エ)不正解。デジタル署名を目的としたアルゴリズムはDSAやECDSA、RSA署名などであり、DHは鍵交換に特化した方式である(DHの派生であるDH署名方式も存在するが、標準的なDH鍵交換の目的ではない)。
午前II問題
2015年に報告されたLogjam攻撃に関する記述として、最も適切なものはどれか。
ア)Logjam攻撃は、TLSのダウングレード攻撃と、512bit程度の弱いDHパラメータに対する離散対数問題の事前計算を組み合わせることで、輸出グレードの弱い鍵に強制的に交渉させ、通信を解読可能にする攻撃である。
イ)Logjam攻撃は、RSA暗号における素因数分解を高速に行うアルゴリズムであり、2048bit RSA鍵を数分で解読可能にする攻撃である。
ウ)Logjam攻撃は、AESの共通鍵を推測するブルートフォース攻撃の一種であり、DH鍵交換とは無関係である。
エ)Logjam攻撃は、サーバ証明書の署名アルゴリズムとしてSHA-1が使われている場合にのみ成立する攻撃であり、DHパラメータの強度とは無関係である。
午前II の解答・解説を見る
正解: ア
解説:
- ア)正解。Logjam攻撃は、TLSハンドシェイクを中間者攻撃で操作し、輸出規制時代に由来する弱い512bit DHパラメータへとダウングレードさせた上で、あらかじめ計算しておいた離散対数問題の解を利用して短時間で鍵を解読する攻撃である。多くのサーバが少数の共通DHパラメータ(既知の素数)を使い回していたため、攻撃者が事前計算コストを一度負担するだけで多数のサーバへの攻撃が可能になった点が特徴。
- イ)不正解。Logjamは離散対数問題(DH鍵交換)に対する攻撃であり、素因数分解問題(RSA)への攻撃ではない。攻撃対象とする数学的問題が異なる。
- ウ)不正解。Logjam攻撃はAESの共通鍵に対するブルートフォースではなく、DH鍵交換で使われる弱いパラメータの離散対数問題を突く攻撃であり、DH鍵交換と密接に関係する。
- エ)不正解。Logjamの本質はDHパラメータのビット長の弱さ(512bit等)にあり、署名アルゴリズムのSHA-1使用有無とは別の問題である。SHA-1の危殆化は衝突攻撃に関する別の脆弱性である。
午後問題
H社は自社ECサイトのTLS設定について、外部セキュリティ診断を受けた。診断報告書には以下の指摘事項が記載されていた。
(指摘1)サーバがTLSハンドシェイクにおいて「DHE_EXPORT」を含む輸出グレードの暗号スイートをサポートしており、攻撃者によるダウングレード交渉が可能な状態になっている。
(指摘2)通常のDHE(Diffie-Hellman Ephemeral)暗号スイートで使用しているDHパラメータのビット長が1024bitであり、国家レベルの攻撃者による事前計算リソースを考慮すると将来的なリスクがある。
(指摘3)サーバの鍵交換方式が固定のDH(Diffie-Hellman、Ephemeralでない静的DH)になっているホストが一部存在し、前方秘匿性(Forward Secrecy)が確保されていない。
設問1
指摘1・指摘2について、Logjam攻撃の原理を踏まえた上で、H社が実施すべき対策を2つ挙げよ。
設問1の解答・解説を見る
正解例:
- サーバ設定から輸出グレードの弱い暗号スイート(DHE_EXPORT等、512bit級のDHパラメータを使う暗号スイート)を無効化し、ダウングレード交渉自体を不可能にする。
- DHEで使用するDHパラメータのビット長を2048bit以上に強化するか、離散対数問題の計算困難性がより高く事前計算攻撃にも強い楕円曲線Diffie-Hellman(ECDHE)への移行を行う。
解説: Logjam攻撃はダウングレード(弱い暗号スイートへの強制交渉)と弱いDHパラメータへの事前計算攻撃の組み合わせで成立する。したがって対策は「ダウングレードの入口を塞ぐ(弱い暗号スイートの無効化)」と「仮に強めのDHEを使う場合でもパラメータ強度を十分に確保する、またはより効率的で安全なECDHEに切り替える」の2方向が必要である。特にECDHEはRSA/DHと比べて短い鍵長で高い安全性を実現でき、TLS1.3では標準的な鍵交換方式として採用されている。
採点基準(14点):
- 「輸出グレード(DHE_EXPORT等)の弱い暗号スイートを無効化」(5点)
- 「DHパラメータを2048bit以上に強化」または「ECDHEへの移行」のいずれか(5点)
- 両方の観点(ダウングレード対策とパラメータ強化)を区別して説明できている(4点)
設問2
指摘3について、静的DH(Ephemeralでない固定DH)が前方秘匿性を確保できない理由を説明せよ。また、前方秘匿性を確保するための具体的な設定変更を1つ挙げよ。
設問2の解答・解説を見る
正解例(理由): 静的DHでは同一のDH秘密鍵をサーバが長期間使い回すため、その秘密鍵が将来何らかの方法で漏えいした場合、過去に記録・傍受された全ての暗号化通信を遡って復号できてしまう。前方秘匿性は、セッションごとに一時的な鍵ペアを使い捨てることで、鍵漏えい時の被害を当該セッションのみに限定する性質であり、鍵を使い回す静的DHではこれが成立しない。
正解例(設定変更): 鍵交換方式を静的DHからDHE(Diffie-Hellman Ephemeral)またはECDHE(楕円曲線Diffie-Hellman Ephemeral)に変更し、セッションごとに一時鍵ペアを生成する設定にする。
解説: 前方秘匿性(Forward Secrecy、PFS)はセッションごとに使い捨ての鍵ペアを用いることで実現される。「Ephemeral(一時的)」という語が示す通り、DHEやECDHEは鍵交換のたびに新しい鍵ペアを生成し、セッション終了後に破棄する。これにより、たとえ将来サーバの長期秘密鍵が漏えいしても、過去に傍受・記録された通信(passive collection、いわゆる「後から解読」攻撃)を復号することはできない。逆に静的DHやRSA鍵交換(TLS1.2以前の一部モード)は鍵交換に長期鍵をそのまま使うため、この性質を持たない。TLS1.3では前方秘匿性を持たない鍵交換方式(静的RSA等)は仕様上廃止されている。
採点基準(14点):
- 「静的DHは鍵を使い回す」(3点)
- 「鍵漏えい時に過去の通信も遡って復号されるリスク」(5点)
- 設定変更:「DHEまたはECDHEへの変更」+「セッションごとの一時鍵生成」(6点)
重要キーワード
| 用語 | 説明 |
|---|---|
| Diffie-Hellman鍵交換(DH) | 安全でない通信路上で公開情報のやり取りのみから共通鍵を導出する方式。離散対数問題の困難性が根拠 |
| 離散対数問題 | ある値からべき乗計算の指数を逆算することが計算上困難であるという数学的問題。DHの安全性の根拠 |
| Logjam攻撃 | ダウングレードと弱いDHパラメータへの事前計算を組み合わせ、TLS通信を解読可能にする攻撃 |
| DHE/ECDHE(Ephemeral DH) | セッションごとに一時鍵ペアを生成する鍵交換方式。前方秘匿性を実現する |
| 前方秘匿性(Forward Secrecy) | 長期鍵が漏えいしても過去のセッション鍵・通信内容が復号されない性質 |
| ECC(楕円曲線暗号) | 楕円曲線上の離散対数問題に基づく暗号。ECDHEの基盤technology |
まとめ
- 午前I視点: DH鍵交換は「事前共有なしに共通鍵を導出できる」点と「離散対数問題」が安全性の根拠である点を混同しないよう整理する
- 午前II視点: Logjam攻撃はダウングレード攻撃+弱いDHパラメータへの事前計算という2段構えの攻撃であり、RSAの素因数分解攻撃と混同しないこと
- 午後視点: 鍵交換の脆弱性対策は「弱い暗号スイートの無効化」「パラメータ強度の確保」「Ephemeral方式によるPFS確保」の3点セットで問われることが多い