CurioBox

実験 03

配ってもいい鍵が、ある

インターネットは、途中の回線をだれかに見られているかもしれない道です。 それなのに、はじめて通信する相手と秘密の話ができます。 鍵を 2 本に分けると、なぜそれが成り立つのか。実際に計算を動かして確かめます。

登場人物

Aアリス 送る人

ボブに秘密のメッセージを届けたい。ボブとは今日はじめて通信する。

Bボブ 受け取る人

鍵を 2 本つくる。1 本は世界中に配り、もう 1 本は誰にも渡さない。

Eイヴ 盗み見る人

2 人のあいだの回線を、ぜんぶ見ることができる。配られた鍵ももちろん持っている。

① ボブが鍵を 2 本つくる

もとになるのは、2 つの素数です。かけ算はすぐできるのに、かけ算の答えから もとの 2 つに戻すのは急に難しくなる — この差が鍵になります。

🔓 公開鍵 — 誰に見られてもいい

ボブが世界中に配る。イヴも持っている。

🔑 秘密鍵 — ボブしか持っていない

誰にも渡さない。回線にも流さない。

② アリスが公開鍵でカギをかけて送る

24 文字まで。1 文字ずつ数字に直して計算します。

回線 ── ここを流れるものはイヴにも見えています

Bボブが秘密鍵で開ける

まだ届いていません

Eイヴが公開鍵で開けようとする

まだ届いていません

カギをかける鍵と開ける鍵が別なので、 かける方の鍵は配ってしまってかまいません。イヴは公開鍵も暗号文も持っていますが、 それだけでは中身に戻せません。

③ ただし、この鍵は小さすぎる

秘密鍵は n を素数 2 つに分解できれば計算で求まります。 このページの n は 7 桁しかないので、イヴのパソコンは一瞬で分解できます。

まだ試していません
7 この実験装置の n の桁数
617 実際に使われている n の桁数(2048 ビット)

桁がこれだけ増えると、いまのコンピュータを総動員しても分解し終わりません。 公開鍵暗号の安全は「解けない」ではなく「解くのに時間がかかりすぎる」で成り立っています。 なお本物の通信では、1 文字ずつ暗号にする方法は使いません (同じ文字がいつも同じ数字になり、手がかりを与えてしまうため)。 公開鍵は最初の鍵の受け渡しにだけ使い、本文はそこで共有した別の鍵で暗号化します。

手で確かめる

小さい数でやると、電卓でも追えます。素数を 5 と 11 にすると n = 55、公開鍵の数は 3、秘密鍵の数は 27 になります。

7
  1. アリスが公開鍵でカギをかける:
  2. 回線にはこの数字だけが流れる:
  3. ボブが秘密鍵で開ける:

3 乗して 55 で割った余りを取り、それをさらに 27 乗して 55 で割った余りを取ると、 もとの数にきちんと戻ります。3 × 27 = 81 が (5-1) × (11-1) = 40 で割ると余り 1 になる、という関係がこれを支えています。

つづけて動かす