ステップ 1: 公開情報
みんなが知っている数:
素数 p =
原始根 g =
※ これらは秘密にする必要はありません
↓
ステップ 2: 秘密の数を選ぶ
👩 Alice
秘密の数
a =
(Aliceだけが知っている)
👨 Bob
秘密の数
b =
(Bobだけが知っている)
↓
ステップ 3: 公開する数を計算
👩 Alice の計算
A = ga mod p
A =
👨 Bob の計算
B = gb mod p
B =
※ AとBは誰に見られても大丈夫です
⇅ 交換 ⇅
ステップ 4: 互いに数を送り合う
Alice → Bob:
A = を送る
Bob → Alice:
B = を送る
🔓 この通信は誰に見られても安全です
↓
ステップ 5: 共通の秘密鍵を計算
👩 Alice の計算
秘密鍵 = Ba mod p
=
👨 Bob の計算
秘密鍵 = Ab mod p
=
✨ 成功! ✨
AliceとBobは同じ秘密鍵を手に入れました:
誰にも通信内容を盗聴されずに、
共通の秘密を作ることができました!
🔒 なぜ安全なのか?
盗聴者は p、g、A、B を知っていますが、
a や b がわからないと秘密鍵を計算できません。
大きな数では、これを解くのに何千年もかかります
(これを「離散対数問題」と呼びます)