0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DH鍵共有のシンプルな具体例

Last updated at Posted at 2025-01-05

アリスとボブが秘密の暗号鍵を共有したい!でも、誰かに盗み見られる可能性のある通信路しかない...

そんな時に使えるのが、DH鍵共有です。

まず、アリスとボブは2つの数字pとgを決めます。これは公開情報なので、誰でも見ることができます。(ただし、pは大きな素数、gは g^x mod p が生成する値が十分に多い必要があります)

次に、アリスとボブはそれぞれ秘密の数字を選びます:

  • アリスは数字a(これは誰にも教えません)
  • ボブは数字b(これも誰にも教えません)

そして、それぞれが計算をします:
アリス:A = g^a mod p (この結果だけを公開します)
ボブ:B = g^b mod p (この結果だけを公開します)

アリスは受け取ったBを使って:K = B^a mod p を計算
ボブは受け取ったAを使って:K = A^b mod p を計算

すると、なんと!二人とも同じ数字K = g^(ab) mod p を手に入れることができます。

この数字Kこそが、二人だけが知っている共有の秘密鍵になるのです。

でも、なぜこれは安全なのでしょうか?

その秘密は「離散対数問題」という数学的な特徴にあります:

  1. g^xという計算は簡単にできます(コンピュータでも高速に計算可能)
  2. でも、g^xの結果からxを求めるのは、途方もなく難しいのです
    (現代のスーパーコンピュータを使っても、非現実的な時間がかかります)

つまり、通信を盗み見た人は:

  • 公開値p, g
  • アリスの計算結果A = g^a mod p
  • ボブの計算結果B = g^b mod p
    これらすべてを見ることができますが、それでも共有鍵K = g^(ab) mod pを求めることはできないのです!

この方法により、アリスとボブは誰かに盗み見られる可能性のある通信路でも、安全に秘密の鍵を共有することができます。現代のインターネットセキュリティの重要な基盤となっているのです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?