🔐鍵配送問題と鍵共有の進化:暗号2000年の難題を解決したDH法をまるっと解説!

もふねこ

もふねこだよ🐾 ネットで安全にお買い物する時、どうやって「自分と相手だけの秘密の鍵」を安全に作り出しているか知ってる?

実は「誰にも盗み見されずに鍵を渡す」というのは、暗号の2000年以上続く超・難問だったんだ!この記事ではその歴史と、世界を変えた数学の大発明について解説していくよ🐾

📝 この記事の目次

🐾 この記事の3秒まとめ

  • 2000年以上の難題:「秘密の鍵を安全に渡す」ことは、スパイ映画さながらの命がけの作業だった。
  • DH法の革命(1976年):盗聴されても大丈夫な公開回線上で、二人だけの秘密を数学的に生み出せる仕組みが誕生した。
  • 現代の標準:スマホ時代に合わせて軽量化された「ECDHE」がTLS 1.3の鍵共有方式の一つとして広く使われている。

インターネットを安全に使うために欠かせない「暗号技術」。その中でも極めて重要なテーマが「鍵の共有」です。

🌱 なぜ鍵のやりとりは難しいの?-鍵配送問題のジレンマ

読者
読者

そもそも“鍵のやりとり”がどうしてそんなに問題になるの?

もふねこ
もふねこ

相手と“安全に”鍵を共有するって、実は完全な「堂々巡り」になってしまうからなんだ。

共通鍵暗号では、送信者と受信者が同じ鍵を事前に共有している必要があります。これを学術的に「鍵配送問題(Key Distribution Problem)」と呼びます。

😱 鍵配送問題のジレンマ

  • 暗号化された通信をするには「秘密の鍵」を事前に共有する必要がある。
  • しかし「秘密の鍵」を安全に送るには、すでに安全な通信路が必要。
  • 安全な通信路があるなら、最初から暗号鍵など送る必要がない——!

📜 2000年間誰も解けなかった「歴史の苦労」

DH法が登場する前、人々は「鍵を安全に渡す」だけのために、スパイ映画のような命がけの苦労をしていました。

外交暗号書(コードブック)の運搬

第一次・第二次世界大戦時代まで、各国の外交官や軍は「コードブック」と呼ばれる暗号化記号集を使っていました。これを安全に配布するための苦労は壮大でした:

  • 外交ポーチ:外交官特権により荷物検査が禁止された外交用かばん(鎖で手首につながれる)でコードブックを運搬
  • 重りと沈没:船でのコードブック運搬時に「船が攻撃されたら必ず海に沈める」義務。1914年8月にドイツ巡洋艦「マクデブルク」がバルト海で座礁し、ロシア海軍が溺死したドイツ水兵の遺体からコードブックを回収、これをイギリスに共有しました。
  • コードブックの寿命:本が奪われると全ての暗号が解読されるため、数ヶ月ごとに全世界の拠点に新しいコードブックを配布——膨大なコストと危険が伴いました。

OTP(ワンタイムパッド):完全な秘匿性だが最悪の鍵配送問題

ワンタイムパッドは理論的に解読不可能です(1949年シャノンが証明)。ただし等量の乱数鍵を事前に安全に渡す必要があります——「送信するデータと同じ量の鍵を事前に物理的に配達する」という本末転倒な問題が生じます。

⚠️ OTPの大きな矛盾

100GBの機密映像を送りたい → 100GBの乱数鍵が必要 → その100GBを安全に相手に手渡しする必要がある → 「なら最初から100GBの映像の入ったハードディスクを手渡しすればよくない?」

冷戦時代、米ソの首脳間のホットライン(1963年設置)にはOTP(使い捨ての鍵テープを使うワンタイム方式)が使われていました。鍵のテープは物理的に運んで届ける必要がありました。

n人通信での鍵の爆発的増加

共通鍵暗号でn人が全員ペアで通信するには n(n-1)/2 個の鍵が必要です:

  • 2人なら:1つの鍵
  • 10人なら:45個の鍵
  • 100人なら:4,950個の鍵
  • 1億人(インターネット)なら:約5,000兆個の鍵 —— 管理不可能!

鍵配布センター(KDC)アプローチの限界

信頼できる第三者が全員の鍵を管理する「鍵配布センター」方式は軍や政府組織で試みられましたが、中央集権の限界にぶつかります。

  • KDCが全ての通信を復号できる(プライバシーなし)
  • KDCが攻撃されると全ての通信が危険に(単一障害点)
  • 「そもそもKDCを誰が管理するのか?」という信任問題
読者
読者

これじゃあ、初めて使うショッピングサイトやAmazonと通信するなんて、とても無理だね……。

もふねこ
もふねこ

そう!この2000年間誰も解けなかった「絶望的な状況」を、たった一発の数学のアイデアでひっくり返したのが、次のDH法なんだ🐾


🔁 1976年の大革命!Diffie-Hellman(DH)鍵共有法

1976年、ホイットフィールド・ディフィーとマーティン・ヘルマンが「公開された情報をやり取りするだけで、お互いに共通の秘密を生成できる」という魔法のような数学的トリックを発見しました。これが「Diffie-Hellman(DH)鍵共有法」です。

カラーミックス(色の混合)で理解するDH法

数式の代わりに「絵の具の色の混合」の比喩を使うと、その不思議な仕組みが直感的にわかります。

  1. アリスとボブが公開の場で「黄色」という共通ベース色に合意する(盗聴されてもOK)。
  2. アリスは自分の秘密色「青」を混ぜて「黄緑」を作り、ボブに送る。
  3. ボブは自分の秘密色「赤」を混ぜて「橙」を作り、アリスに送る。
  4. アリスは、受け取った「橙」に自分の秘密色「青」を混ぜる → 「黄+赤+青」の混合色が完成。
  5. ボブは、受け取った「黄緑」に自分の秘密色「赤」を混ぜる → 「黄+青+赤」の混合色が完成。
  6. 結果:アリスとボブの手元には、まったく同じ「秘密の混合色」が完成!盗聴者が回線上の「黄色」「黄緑」「橙」を全部集めても、秘密色を分離できないため同じ色は作れません。

実際の数学:離散対数問題

DH法の実際の安全性は「離散対数問題の困難性(巨大な累乗の余りを計算するのは簡単だが、逆算するのは現実的な時間では不可能)」に基づいています。

【公開値】 素数p=23, 原始根g=5

アリスの秘密鍵:a=6 → 公開値 A = 5^6 mod 23 = 8

ボブの秘密鍵:b=15 → 公開値 B = 5^15 mod 23 = 19

アリスの計算:19^6 mod 23 = 2(共通鍵)

ボブの計算:8^15 mod 23 = 2(共通鍵) ✅見事に一致!

※実際には素数pは2048ビット以上の巨大な数が使われます。ここでの例(p=23)は小さな数なので簡単に逆算できますが、実際の巨大な素数では、「8からa=6を逆算する」ような計算は現代のスーパーコンピュータでも現実的な時間では困難です。


🎭 DH法の課題と「RSA暗号」の誕生

画期的なDH法ですが、実は「中間者攻撃(Man-in-the-middle attack)」に弱いという課題がありました。

😈 中間者攻撃(MITM)の恐怖

アリスがボブに「黄緑」を送ったつもりが、途中で悪意ある第三者(イブ)が横取りし、イブが作った「偽の黄緑」をボブに送ります。DH法には「相手が本当にボブなのか?」を証明する『認証機能』が備わっていないため、アリスはイブと、ボブもイブと鍵を共有してしまい、全通信がイブに筒抜けになります。

「相手の身元をどう証明するか?」——この課題を残したDH法の論文(1976年)は世界中に衝撃を与え、多くの数学者を熱狂させました。

そして翌年の1977年、この論文に触発された3人の研究者(リベスト、シャミア、アドルマン)が、公開鍵暗号の構想を実際の方式にしたRSA暗号を発明し、暗号化だけでなく「身元の証明(デジタル署名)」にも使えることを示しました。

DH法が切り拓いた道が、現代インターネットの土台となるRSA暗号を生み出したのです。


🔸 現代の進化:ECDHとこれからの鍵共有

DH法とRSA暗号の登場から約半世紀。現在のインターネット(TLS 1.3など)では、古典的なDH法ではなく楕円曲線ディフィー・ヘルマン(ECDH)が広く使われています。

📱 なぜ「楕円曲線(ECDH)」が必要なのか?

古典的なDH法やRSA暗号は「巨大な数の計算」が必要で、非常に重い処理でした。現代はパソコンだけでなく、計算力の低いスマートフォンやIoT家電が常に暗号通信を行っています。バッテリーを無駄に消費せず、一瞬で安全に通信を確立するためには、軽くて鍵の短い「楕円曲線(ECDH)」の技術が有力な選択肢になったのです。

方式 鍵長(2024年安全水準) 計算量・速度 現在の立ち位置
古典DH(有限体) 2048〜4096ビット 計算が重い 徐々にレガシーシステムへ
ECDH(楕円曲線) 256〜384ビット 軽くて超高速 ✅ TLS 1.3など現代の標準
🔬 【上級編】PFS・TLS 1.3・Signal プロトコルの詳細▼ タップして開く

💡 もふねこのアドバイス🐾 ここから先は数学や技術が大好きな人向けの深掘り内容だよ!まずは上の基本編を読んでから戻ってくることをおすすめするね!

⚠️ 静的DHの落とし穴:長期に固定した秘密鍵が漏れるリスク

ECDHが普及した現代でも、初期のDH実装には重大な問題がありました。サーバーが長期間同じDHの秘密鍵(秘密の指数)を使い続ける静的DH(Static DH)がそれです。

ここで問題なのは、長期に固定した秘密鍵の扱いです。DHの公開パラメータ(素数pや底gなど、公開してよい値)を使い回すこと自体とは別の話です。標準化された公開グループを使い続けることは、TLSでは名前で選べる形で定められています(RFC 7919)。危ないのは、そのグループの上で毎回同じ秘密鍵を使い続け、その秘密鍵が将来漏れたときに、過去に記録された通信の共有秘密までまとめて計算されてしまうことです。

静的DHの危険性(Harvest Now, Decrypt Later)
暗号化された通信を長期間保存されると、あとで鍵が漏れたときに、過去の通信がまとめて読まれてしまう危険があります。静的DHは前方秘匿性を持たないため、この攻撃に対して弱い方式です。


🔸 前方秘匿性(PFS):今日の鍵漏洩から過去を守る

前方秘匿性(Perfect Forward Secrecy = PFS)とは、「長期の秘密鍵が将来漏洩しても、過去の通信セッションは解読できない」という性質です。

  • 接続ごとに使い捨てのDH秘密鍵を新たに生成
  • セッション終了後に一時鍵を即座に破棄
  • 長期証明書の秘密鍵が将来洩れても、破棄済みの一時鍵は手に入らない → 過去のセッションは解読不能
方式 前方秘匿性 TLS 1.2 TLS 1.3
静的RSA鍵交換 なし 使用可能 廃止
DHE(一時的有限体DH) あり 使用可能 可能(非主流)
ECDHE(一時的楕円曲線DH) あり 使用可能 主流方式

🔸 TLS 1.3のKey Schedule:ECDHEから複数の鍵を導出する仕組み

TLS 1.3で(EC)DHEを使う場合は、生成された共有秘密から、複数のセッション鍵をHKDFで導出します(流れを単純化した簡略図です):

ECDHE共有秘密
→ HKDF-Extract → ハンドシェイク鍵(ハンドシェイクの保護に使用)
→ HKDF-Expand → アプリケーション通信鍵(実データの暗号化)
→ HKDF-Expand → 再開鍵(セッション再接続の効率化)

TLS 1.3では静的RSAの暗号スイートが取り除かれました。鍵の確立方式として規定されているのは、(EC)DHE、PSK(事前共有鍵)のみ、PSK+(EC)DHEの3つです(RFC 8446 第1.2節・第2節)。PSKのみのモードは前方秘匿性を持ちません。このページでは、ふつうのWeb閲覧で想定する(EC)DHEの場合を説明しています。


🔸 Signalプロトコル:二重ラチェット(Double Ratchet)

WhatsApp・SignalのE2EEに使われているSignalプロトコルは、DH法をさらに発展させた二重ラチェットアルゴリズムを採用しています(LINEはECDHベースの独自プロトコル「Letter Sealing」を採用):

  • DHラチェット:やり取りの区切りごとに新しいDH鍵を生成して、共有している秘密の値を更新し続ける。ある時点で鍵が漏れても、その後の更新で将来の安全性を回復しやすくする
  • 対称鍵ラチェット(KDF Chain):メッセージごとに鍵を作り替え、ある時点の鍵が漏れても、それより前のメッセージは解読できない(前方秘匿性)
  • 結果:鍵が漏れたときの影響を限定し、一定の条件のもとで将来の通信の安全性を回復する二重の仕組み。ただし、端末が継続して侵害されている場合や、通信相手になりすます攻撃が続く場合などは守れません(Signal Double Ratchet 仕様 第8.2節)
mofuneko
もふねこ

1976年にDiffie-Hellmanが提案した「盗聴されても鍵が作れる」という数学のアイデアが、半世紀を経て、WhatsAppなどのメッセージを守る技術にも活かされているんだね。すごくない?🐾

📌 まとめ:DH法の誕生から現代の最前線まで

  • 鍵配送問題は、「安全に鍵を送るには安全な通信路が必要」という2000年以上続く絶望的なジレンマだった。
  • 1976年にDiffie-Hellman(DH)鍵共有法が登場し、「通信路が盗聴されていても安全に鍵を作り出せる」という数学のアイデアでこれを解決した。
  • DH論文が示した公開鍵暗号の構想を、翌年RSA暗号が実現した。
  • 現在は、スマホ時代に合わせてより短く高速なECDH(楕円曲線DH)が現代のインターネットで広く使われている。
  • 前方秘匿性(PFS):セッションごとに使い捨て鍵(ECDHE)を使い、将来の鍵漏洩から過去の通信を守る
  • TLS 1.3:鍵の確立方式として(EC)DHE、PSKのみ、PSK+(EC)DHEを規定。(EC)DHEの場合はHKDFで用途別の複数鍵を導出
  • Signalプロトコル(Double Ratchet):WhatsApp・Signalが採用するE2EEの代表例。鍵漏洩時の影響を限定し、一定条件で将来の安全性を回復する二重の仕組み

💡 DH法の先にあるもの:公開鍵暗号と電子署名

鍵配送問題を「数学だけ」で解決したDH法の論文は、公開鍵暗号という考え方を世に広め、その流れは電子署名の技術へとつながりました。電子署名は、メッセージが本人によるものかを確かめる仕組みとして、さまざまな場面で使われています(使われているのはDH法そのものではなく、RSAや楕円曲線を使った署名方式です)。

🔑 DH法を知ったあなたへ:次の2つのアクション

  • アクション1: ブラウザの開発者ツールのセキュリティ(Security)タブで、通信に使われている暗号スイートを見てみる。
  • アクション2: LINEの「Letter Sealing(ECDH)」やSignalのDouble Ratchetを思い出しながら、E2EEアプリを意識して選ぶ。

💡 もふねこのアドバイス🐾
ここから先は数学や技術が大好きな人向けの、さらに深い内容だよ!まずは上の基本編を読んでから、興味が出たら読んでみてね!

この記事に関連する、より高度な専門技術について解説した記事です。興味があればぜひ飛び込んでみてください🐾