LoginSignup
11
4

More than 5 years have passed since last update.

Diffie-Hellman鍵共有を何となく理解する

Last updated at Posted at 2018-09-11

対象者

基本情報処理試験や情報セキュリティマネジメント試験の受験者くらいのレベルで数学はちょっと苦手な人向けです。

Diffie-Hellman鍵共有(交換)とは

公開鍵暗号方式のアイディアのベースとなったもので、盗聴の可能性があるインターネットを通して2人が共通の秘密を安全に交換するアルゴリズムです。
Diffie-Hellman鍵共有(以下、DH鍵共有)は1976年に発明されてから40年近く経ちますが、現在でもSSLなどで広く使われている方式となっています。

どんな利点があるの

鍵を交換する最も単純な方法は、二者の一方が鍵を作成し、それをもう片方に送付する事ですが、この方法だと途中(インターネット上)にいる盗聴者により鍵が盗まれてしまう可能性があります。

DH鍵共有の仕組みを利用すると鍵を受け渡ししなくても同じ鍵を共有することができます。

鍵生成の仕組みを味付けで表現してみるとこう

ここからは数学を一切使わずラーメンの味付けで表示してみます(!?)

1.プレーンのラーメンを用意する

秘密の味付けを共有したい「A」さんと「B」さんは味付けしていないプレーンのラーメンをお互い用意します。
この『プレーンのラーメン』は誰でも手に入れられる状態でOK。
→ネットワークを介して公に取り決めしても良い

2.「A」さんはラーメンに「塩」を入れる

「A」さんはプレーンのラーメンに塩を加えて『塩ラーメン』を作ります。

sio.png

3.「B」さんはラーメンに「味噌」を入れる

「B」さんはプレーンのラーメンに味噌を加えて『味噌ラーメン』を作ります。

miso.png

4.お互いのラーメンを交換します

「A」さんは『塩ラーメン』を、「B」さんは『味噌ラーメン』をお互い交換します。
これはネットワークを介するので途中で傍受される可能性があります。

5.「A」さんは味噌ラーメンに「塩」を入れる

「A」さんは「B」さんから受け取った『味噌ラーメン』に2で入れたのと同じ分量の塩を入れます。
これで『味噌塩ラーメン』が完成しました。

miso_sio.png

6.「B」さんは塩ラーメンに「味噌」を入れる

「B」さんは「A」さんから受け取った『塩ラーメン』に3で入れたのと同じ分量の味噌を入れます。
これで『味噌塩ラーメン』が完成しました。

sio_miso.png

7.結果

「A」さん「B」さん双方が同じ味の『味噌塩ラーメン』を作ることができました。

フロー

flow.png

解説

ここからが 味噌 じゃなかったミソです。

  • 「A」さん含む他の人(例:ネットワークを傍受しようとしている人)は味噌がどれほど入っているかは分からない
  • 「B」さん含む他の人は塩がどれほど入っているかは分からない
  • ネットワーク上から傍受できるのは『プレーンのラーメン』『塩ラーメン』『味噌ラーメン』の味付けのみ

上記の結果は一見するとうまく配合すれば『味噌塩ラーメン』を作れそうに見えますがそう簡単ではありません。
なぜなら、『塩ラーメン』と『味噌ラーメン』を単純に混ぜただけではお互いの味が薄まってしまって同じ味になりません。

どうにか同じ味を再現するには高度な成分分析器を使用して調味料の分量を特定しないといけません。
よく聞く「◯◯bit暗号」「暗号強度」と言われているものを調味料で表現すると、
1g単位で味付けするのと、1mg単位で味付けするのとどちらが解析困難かといったところでしょうか。

情報処理試験等で実際に暗号の計算問題が出ることは多分無いのでこのぐらいの認識があれば大丈夫でしょう(適当)

11
4
1

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
11
4