会わずに秘密を共有する

一度も会ったことのない相手と、盗聴されている通信路を使って、 第三者には読めず、途中で書き換えられていれば分かる やりとりができる。しかもその手順は全部公開されていて、原理だけなら紙と鉛筆でも実行できる。 これは比喩ではなく、いま使っているブラウザが毎秒やっていることでもある。

この教材では、その仕組みを手で追える小さい数で組み立て直す。 鍵を渡せないという行き詰まりから始めて、ディフィー・ヘルマン鍵交換、RSA、ハッシュ関数、 デジタル署名、そして数学だけでは塞げない穴(中間者攻撃と証明書)まで辿る。 全8セクション・演習28問。回答はブラウザに保存されるので、途中でやめても続きから再開できる。

進捗 0 / 28 問(正解 0 問)

はじめに: 「破れない」とはどういうことか

暗号と聞くと、まず「秘密の手順」を思い浮かべる。文字を入れ替える、記号に置き換える、 自分たちだけが知っている変換をかける——歴史上の暗号はおおむねそうやって作られてきたし、 そのほとんどが破られてきた。

現代の暗号はここで発想を裏返す。手順は全部公開する。論文にも書くし、 実装のソースコードも読める。秘密にするのは鍵だけにして、 「手の内を全部見せた状態でも破れない」ことを目標にする。一見すると自分から不利な条件を選んでいるようだが、 結果としてこちらのほうが遥かに頑丈になる。

以下では、その頑丈さがどこから来ているのかを順に見ていく。出てくる数はすべて実際に計算できる大きさに してあるので、画面の中で手を動かしながら確かめてほしい。

1. 何を秘密にするのか — ケルクホフスの原理

暗号の強さは「手順を隠すこと」に置いてはならない。手順は全部公開したうえで、鍵だけを秘密にする。この一見不利な条件から始めることが、結果として最も頑丈な暗号を生む。

19世紀のオランダの言語学者アウグスト・ケルクホフスは、軍用暗号の条件をいくつか挙げた。 そのうち今日まで生き残ったのが「暗号方式は、敵の手に落ちても不都合がないようにせよ」という一条である。 つまり、装置や手順書が奪われても、鍵さえ替えれば通信を続けられなければならない。

理由は単純で、手順はいずれ漏れるからだ。実装を解析されたり、内部から持ち出されたり、 同じ方式を使う別の組織から流出したりする。一方、鍵は漏れたら取り替えられる。 取り替えのきかないものに安全性を預けるな、というのがこの原則の中身である。

では鍵だけを秘密にすれば安全かというと、そう単純でもない。次のシーザー暗号で確かめてみてほしい。 ずらす文字数が鍵だが、その候補は26通りしかない。

さわって確認シーザー暗号 — 鍵が26通りしかない暗号
暗号文DWWDFN DW GDZQ

総当たりを押すと、鍵を知らなくても26行のうちどれかに平文が現れる。手順を隠していたところで、 鍵の候補がこれだけしかなければ意味がない。安全性は「攻撃者が試さなければならない手間」で測る—— この見方が、以降ずっと効いてくる。

演習 1理解

「暗号のアルゴリズム(手順)は公開し、鍵だけを秘密にすべきである」という原則の、最も本質的な理由はどれか。

演習 2計算

アルファベットを3文字ずらすシーザー暗号で暗号文「DWWDFN」を受け取った。鍵(ずらす数)を知らない攻撃者が、総当たりで平文を見つけるのに最大何通り試せばよいか。

演習 3理解

「鍵の候補が多ければ多いほど安全」と言い切れない理由として、最も適切なものはどれか。

このセクション: 0 / 3 問正解

2. 鍵をどうやって渡すか — 共通鍵の限界

同じ鍵で暗号化と復号をする方式は、原理的には絶対に破れないものまで作れる。それでも実用にならない理由がひとつある。その鍵を、盗聴されている通信路でどうやって相手に届けるのか。

鍵の候補を増やせばよい、という方向で話を進めよう。暗号化と復号に同じ鍵を使う方式を 共通鍵暗号という。鍵を平文と同じ長さの完全な乱数にして、二度と使い回さないことにすると、 ワンタイムパッドと呼ばれる方式になる。これは「どんな計算能力を持ってしても解読できない」ことが 数学的に証明されている、正真正銘の完全な暗号である。

証明つきの完全な暗号があるのに、なぜ我々はそれを使っていないのか。理由は暗号の外側にある。

共通鍵は、渡す瞬間がいちばん危ない鍵と暗号文が同じ経路を通るなら、暗号がどれだけ強くても意味をなさないアリス送る人イブ通信路で聞いている人ボブ受け取る人① 共通鍵 K を送る② K で暗号化した本文を送るK をそのまま記録記録した K で本文を復号

鍵を相手に届けなければ始まらない。しかし届ける経路は、暗号文を流す経路と同じである。 盗聴者は両方を記録できるので、鍵を見た時点で暗号文も読めてしまう。 別の経路(郵送、直接手渡し)を使えば解決するように見えるが、それは 安全性の根拠を数学から物流へ移しただけで、しかも相手が増えるたびに繰り返さなければならない。

これが鍵配送問題である。1970年代半ばまで、暗号の教科書はここで行き止まりだった。 銀行や軍は、実際に人が鍵を運んでいた。

演習 4理解

平文と同じ長さの完全にランダムな鍵を使い、1回しか使わない(ワンタイムパッド)暗号は、理論上どんな計算能力でも解読できないことが証明されている。それでも日常の通信で使われないのはなぜか。

演習 5理解

共通鍵暗号で n 人が互いに(1対1で)秘密の通信をしたい。必要な鍵は全部で何本になるか。

演習 6攻撃者の視点

アリスがボブに共通鍵を郵送し、その鍵で暗号文を送った。盗聴者イブは通信路の全てを記録できるが、郵便物には触れられない。この場合の安全性の評価として正しいものはどれか。

このセクション: 0 / 3 問正解

3. 会わずに秘密を共有する — ディフィー・ヘルマン鍵交換

公開の場で数を送り合うだけで、二人だけが同じ数にたどり着く。しかもその数は、やりとりを全部聞いていた第三者には求められない。1976年に発表されたこの手品の種は、「戻すのが難しい計算」である。

1976年、ホイットフィールド・ディフィーとマーティン・ヘルマンが、この行き止まりを迂回する方法を発表した。 鍵を送らずに、公開の場でのやりとりだけで、二人が同じ秘密の数にたどり着く。まず絵の具で考えてみる。

混ぜるのは簡単、分けるのは難しい公開の色をやりとりするだけで、二人だけが同じ色にたどり着くアリス共通の色 g+秘密の色 a=公開値 AA を公開する(誰に見られてもよい)ボブ共通の色 g+秘密の色 b=公開値 BB を公開する(誰に見られてもよい)アリスボブのB+秘密 a=共有秘密ボブアリスのA+秘密 b=共有秘密どちらも「黄 + 赤 + 青」。混ぜる順番が違うだけなので、必ず同じ色になるイブこの3色は全部見える。それでも茶色は作れない

絵の具を混ぜるのは簡単だが、混ざった色から元の2色を正確に取り出すのは難しい。 この非対称性がそのまま使える。実際の計算では、絵の具の代わりに 「ある数を何乗かして、素数で割った余りを取る」という操作を使う。 計算するのは速いのに、逆に「何乗したのか」を求めるのは極端に遅い——これを 離散対数問題という。

さわって確認ディフィー・ヘルマン鍵交換 — 公開の場で秘密を作る

アリス

秘密 a
6
公開値 A = ga mod p
8
共有秘密 Ba mod p
2

通信路(イブが見ている)

素数 p
23
底 g
5
A
8
B
19

秘密 a・b と共有秘密は、一度もここを通らない

ボブ

秘密 b
15
公開値 B = gb mod p
19
共有秘密 Ab mod p
2

二人とも 2 にたどり着いた。どの秘密を選んでも必ず一致する

秘密の数をどう動かしても、二人は必ず同じ値にたどり着く。アリスは (gb)a を、 ボブは (ga)b を計算していて、どちらも gab だからである。 指数の掛け算の順序が入れ替わるだけなので、一致は偶然ではない。

そして「イブが総当たりする」を押すと、確かに秘密が割り出されてしまう。ここが肝心なところで、 この方式は原理的に解けないのではなく、解くのに時間がかかるだけである。 素数 p を大きくしていくと試行回数がどう増えるか、実際に切り替えて確かめてほしい。 実運用の p は10進で約617桁あり、そこまで行くと「時間がかかる」が「宇宙が終わるまでに終わらない」に変わる。

演習 7計算

p=23、g=5 で鍵交換をする。アリスの秘密の数が a=6 のとき、アリスが公開する値 A = 5^6 mod 23 はいくつか。

5^6 = 15625、15625 ÷ 23 = 679 あまり 8。

演習 8計算

同じ p=23、g=5 で、ボブの秘密が b=15、ボブの公開値が B = 5^15 mod 23 = 19 だった。アリス(秘密 a=6)が計算する共有秘密 B^a mod 23 と、ボブが計算する A^b mod 23(A=8)の関係はどうなるか。

演習 9攻撃者の視点

イブは p=23、g=5、A=8、B=19 を全て知っている。共有秘密 2 を求めるには何をすればよいか。

演習 10理解

ディフィー・ヘルマン鍵交換が成立するために、掛け算・冪乗が持っていなければならない性質はどれか。

このセクション: 0 / 4 問正解

4. 鍵を2つに分ける — 公開鍵暗号

暗号化する鍵と復号する鍵を別々にすると、暗号化する側の鍵は公開してしまってよくなる。誰でも施錠できて、開けられるのは1人だけ。RSA を手で追える桁で組み立てて、その仕掛けを確かめる。

鍵交換の翌年、ロン・リベスト、アディ・シャミア、レナード・エーデルマンの3人が別のアプローチを出した。 暗号化する鍵と復号する鍵を別々にするという発想である。頭文字を取って RSA と呼ばれる。

鍵が分かれていると何が嬉しいか。暗号化用の鍵は公開してしまってよくなる。 開いている南京錠を大量に配り歩くのに似ている。誰でも錠を掛けられるが、開けられるのは鍵を持つ本人だけ。 鍵を事前に共有する必要が消える。

仕掛けは2つの素数にある。掛け算は簡単だが、掛け算の結果から元の2つの素数を復元する (素因数分解する)のは難しい。下で実際に鍵を組み立ててみてほしい。

さわって確認RSA — 手で追える桁で鍵を作る

公開鍵(誰に渡してもよい)

n = 3233, e = 17

秘密鍵(本人だけが持つ)

d = 2753

鍵の材料(公開してはいけない)

p = 61, q = 53, φ(n) = 3120

文字コード m暗号文 c = me mod n復号 cd mod n
H72300072
E692869
L76272676
L76272676
O79130779

復号した結果:HELLO

公開するのは n と e だけで、素数 p・q と φ(n) は隠す。秘密鍵 d は 「φ(n) を法とした e の逆元」として作られるので、φ(n) が分かれば d も分かってしまうからである。 そして φ(n) を知るには n を素因数分解するしかない。

「n を素因数分解する」ボタンを押すと、この鍵ではあっさり破れる。61 × 53 = 3233 を分解するのに、 コンピュータは数十回の割り算しか要らない。実運用の n は617桁で、 同じやり方では終わらない——ここでも安全性を支えているのは数式ではなく桁数である。

なお、平文が n 以上だと復号しても元に戻らない。すべての計算が n を法とした剰余で行われるため、 n 以上の情報は最初の段階で潰れてしまう。RSA で長い文章をそのまま暗号化しないのは、この制約が理由の一つである。

演習 11理解

公開鍵暗号の「公開鍵」は、Web サイトで誰でもダウンロードできる状態に置いてよい。それでも安全といえるのはなぜか。

演習 12計算

p=61、q=53 から RSA の鍵を作る。公開する法 n と、鍵の計算に使う φ(n) = (p−1)(q−1) はそれぞれいくつか。

演習 13攻撃者の視点

攻撃者が公開鍵 (n=3233, e=17) を手に入れた。秘密鍵 d を求めるための最も直接的な道筋はどれか。

演習 14計算

同じ鍵 (n=3233, e=17, d=2753) で、平文 m=3000 を暗号化して復号すると元に戻る。では m=4000 ではどうなるか。

このセクション: 0 / 4 問正解

5. 内容の指紋 — ハッシュ関数

長さも中身もばらばらな文書から、決まった長さの短い値を作る。同じ文書からは必ず同じ値が出て、1文字違えば全く別の値になり、値から文書は戻せない。改竄検知はこの3つの性質の上に立つ。

ここまでは「読まれないこと」の話だった。ここからは「書き換えられていないこと」に移る。 その土台になるのがハッシュ関数である。

ハッシュ関数は、どんな長さの入力からも決まった長さの短い値を作る。求められる性質は3つ。 同じ入力からは必ず同じ値が出ること、値から入力を復元できないこと、 そして1文字違えば全く違う値になること。3つ目は雪崩効果と呼ばれる。

さわって確認ハッシュ関数 — 1文字変えると何が起きるか

教材用の16ビットハッシュ(実物より桁を落として、ビットの動きを見えるようにしたもの)

元の文0C640000110001100100
変えた文E7F81110011111111000

16ビット中 10 ビットが反転した。1文字の違いが、値の全体に散らばる

実物の SHA-256(256ビット = 16進64桁)

元の文計算中…
変えた文計算中…

こちらはブラウザが実際に計算した本物の値。長さが固定なのは16ビット版と同じで、違うのは桁数だけ。 同じハッシュ値になる別の文書を狙って作るには、およそ 2128 回の試行が要る。

振込先の数字を1つ変えただけで、16ビットのうち半分近くが反転する。 もし「似た入力から似た値が出る」なら、攻撃者は目標のハッシュ値に向かって入力を少しずつ近づけていける。 似ていないことが、その道を塞いでいる。

気をつけたいのは、ハッシュの長さが十分でなければならない理由である。 「特定の値と一致する入力を見つける」より「値がぶつかる2つの入力を見つける」ほうが遥かに簡単で、 16ビットなら約300個も試せば衝突が見つかる(誕生日のパラドックス)。 SHA-256 が256ビットもあるのは、この平方根のぶんを見込んでいるからである。

演習 15理解

ハッシュ関数に求められる性質として、当てはまらないものはどれか。

演習 16理解

「振込先は 1234-5678 です」と「振込先は 1234-5679 です」のハッシュ値を比べると、どうなることが望ましいか。

演習 17攻撃者の視点

ハッシュ値が16ビット(65536通り)の関数を使っている。同じハッシュ値になる2つの文書を見つけるには、平均しておよそ何個の文書を試せばよいか。

このセクション: 0 / 3 問正解

6. 誰が書いたか、変えられていないか — デジタル署名

暗号は「読まれないこと」を守る。署名が守るのは別のもので、「書いた人が本人であること」と「途中で変えられていないこと」を守る。使う鍵の向きが、暗号のときとちょうど逆になる。

公開鍵暗号では、受け取る人の公開鍵で施錠して、その人の秘密鍵で開けた。 鍵ペアの使う向きを逆にすると、別のことができるようになる。

同じ鍵ペアを、逆向きに使う違うのは2段目だけ。どちらの鍵を使うかで、絞られるものが変わる暗号化 — 読める人を1人に絞るアリスが本文を書くボブの公開鍵で施錠する鍵は公開されているので、誰にでもできるボブの秘密鍵でだけ開く本人以外は、自分が作った暗号文も開けないデジタル署名 — 作れる人を1人に絞るアリスが本文を書くアリスの秘密鍵で署名を作る鍵を持つ本人以外には作れないアリスの公開鍵で誰でも検証する第三者にも「本人が作った」と示せる

自分の秘密鍵で作った値は、対応する公開鍵で確かめられる。公開鍵は世界中の誰でも持っているので、 誰でも「これは本人が作った」と検証できる。しかも作れるのは秘密鍵を持つ本人だけなので、 本人が後から「私は書いていない」と言い逃れることもできない(否認防止)。

実際には文書そのものではなく、文書のハッシュ値に対して署名する。公開鍵の計算は重く、 しかも n 未満の値しか扱えないので、まず固定長の短い値に畳んでから署名するほうが現実的だからである。 ハッシュが衝突しにくいおかげで、短くしても改竄は見逃さない。

さわって確認デジタル署名 — 1文字変えると検証が落ちる

1. アリスが本文を書いて、自分の秘密鍵で署名する

2. 通信路 — ここで誰かが本文を書き換えられる(署名の値は変えられない)

署名(アリスの秘密鍵で作った値):65061

3. 受け取った側が、アリスの公開鍵で検証する

受け取った本文のハッシュD0D7
署名から取り出したハッシュD0D7

検証成功 — この本文はアリスが書いたもので、途中で変えられていない

使っている鍵は n = 67591, e = 3(公開), d = 44715(秘密)。 検証に必要なのは公開鍵だけなので、世界中の誰でも「アリスが書いた」ことを確かめられる。

「通信路で数字を1つ書き換える」を押すと、検証が落ちる。受け取った本文から計算したハッシュと、 署名から取り出したハッシュが食い違うためである。攻撃者が書き換えた本文に合う署名を作るには アリスの秘密鍵が要る——そして、それは持っていない。

暗号化と署名は守るものが違う。暗号化された文書は読めないが、書き換えられていないことの保証はない。 署名された文書は改竄を検知できるが、中身は誰でも読める。両方欲しければ両方を掛ける必要がある。 「暗号化しておけば改竄も防げる」は、実装の設計を誤らせる典型的な取り違えである。

演習 18理解

デジタル署名で、署名を作るときと検証するときに使う鍵の組み合わせとして正しいものはどれか。

演習 19理解

文書そのものではなく、文書のハッシュ値に署名するのはなぜか。最も適切な理由を選べ。

演習 20攻撃者の視点

攻撃者が、署名付きの文書を途中で書き換えて「振込先」だけ差し替えた。受取人が検証するとどうなるか。

演習 21理解

「暗号化」と「署名」がそれぞれ守るものの組み合わせとして正しいものはどれか。

このセクション: 0 / 4 問正解

7. その公開鍵は本物か — 中間者攻撃と証明書

ここまでの仕組みには、まだ穴がある。「公開鍵は誰でも手に入れてよい」という前提は、裏返せば「渡された公開鍵が誰のものか分からない」ということでもある。数学だけでは、この穴は塞がらない。

ここまでの仕組みは、ある前提の上に立っている。「相手の公開鍵を正しく手に入れられる」という前提である。 これが崩れると何が起きるかを見てみる。

暗号は破られていない。それでも読まれる渡された公開鍵が誰のものか確かめられないと、全ての手順が正しいまま中身が漏れるアリス送る人マロリー通信路を握っている人ボブ受け取る人① ボブの公開鍵をください② これがボブの鍵です(実はマロリーの鍵)③ その鍵で暗号化した本文⑤ ボブの本物の鍵で暗号化し直して転送④ 自分の秘密鍵で開いて読む⑥ 正常に復号できる

マロリーは、アリスに対してはボブのふりをし、ボブに対してはアリスのふりをする。両側で別々の鍵を使って 復号と再暗号化を繰り返せば、通信は正常に流れているように見える。 ここで注目すべきは、暗号が一箇所も破られていないことだ。 全ての計算は数学的に正しく実行されていて、それでも中身は読まれている。

塞ぐには、「この公開鍵は確かにボブのものだ」と言ってくれる誰かが要る。それが証明書である。

信頼はどこかで打ち切るしかない署名した鍵の正しさを遡り続けると、最後は「最初から入っている」という一点に行き着くルート証明書自分で自分に署名している(自己署名)ブラウザとOSに最初から入っている中間認証局の証明書ルートの秘密鍵で署名されているサーバ証明書「example.com の公開鍵はこれ」という主張中間認証局の秘密鍵で署名されている↓ は「上が下に署名する」

証明書の中身は「ドメイン名」と「公開鍵」の結びつきで、そこに認証局が自分の秘密鍵で署名している。 ブラウザは認証局の公開鍵でその署名を検証する——のだが、その認証局の公開鍵が本物かどうかは、 また別の署名で確かめることになる。この連鎖はどこかで打ち切らなければならず、 打ち切り方が「ブラウザとOSに最初から入れておく」である。

つまり、この仕組みの根元にあるのは数学ではない。「誰を信じるか」を誰かが決めているという、 運用と監査の話になる。だからこそ、社内PCに会社独自のルート証明書を入れれば、 暗号を1ミリも破らずに全社員の HTTPS 通信を読めるようになる。 バックドアの議論が「暗号を破る」ではなく「信頼の起点を握る」形で出てくるのは、これが理由である。

演習 22攻撃者の視点

アリスがボブの公開鍵を要求したところ、通信路にいるマロリーが自分の公開鍵をボブのものだと偽って返した。この後どうなるか。

演習 23理解

サーバ証明書が果たしている役割として、最も正確なものはどれか。

演習 24理解

認証局の公開鍵が本物であることは、どうやって確かめているか。

演習 25攻撃者の視点

企業のネットワークで、社内PCに会社独自のルート証明書をインストールする運用がある。この状態で社員が HTTPS のサイトを見るとどうなるか。

このセクション: 0 / 4 問正解

8. この説明で省いたこと — 実物との差

ここまで積み上げた説明は、仕組みを掴むには足りているが、実際に動いている HTTPS とは何箇所かはっきり違う。学んだ地図の縮尺を最後に確かめておく。

ここまでの説明は、仕組みを掴むには足りている。ただし実際に動いているものとは、いくつかはっきり違う。 最後にその差を示しておく。学んだ地図がどの縮尺だったかを知らないまま使うほうが、危ないからである。

1. HTTPS は「公開鍵で本文を暗号化」していない

公開鍵が守っているのは、本文ではなく鍵のほう本文を暗号化しているのは、その接続のためだけに作った共通鍵① 相手が本物かを確かめるサーバ証明書の署名を検証する公開鍵暗号(署名)② この接続だけの共通鍵を決める鍵交換をする(本文の鍵は通信路に流さない)接続を張り直すたびに新しい鍵になる公開鍵暗号(鍵交換)③ 本文をやりとりするHTMLも画像もフォームの入力も、ここで決めた共通鍵(AESなど)で暗号化する共通鍵暗号(AES)

公開鍵暗号は共通鍵暗号より桁違いに遅く、扱える長さにも制限がある。そこで実際には、 公開鍵の仕組みを「共通鍵を安全に決めること」と「相手が本物か確かめること」にだけ使い、 本文は毎回作り直す共通鍵(AES など)で暗号化する。ハイブリッド暗号と呼ばれる構成である。

「公開鍵暗号でウェブ通信が暗号化されている」という言い方は、この意味では正確ではない。 公開鍵が守っているのは本文ではなく、本文を守る鍵のほうだ。

2. 「署名とは秘密鍵で暗号化すること」は RSA でしか成り立たない

第6章で「鍵の向きが逆になる」と説明したが、それが素直に成り立つのは RSA だけである。 RSA では暗号化も署名も冪剰余という同じ形をしているので、そう言っても計算は合う。 しかし現在広く使われている ECDSA や Ed25519 には、 「秘密鍵で暗号化する」という操作そのものが存在しない

署名は最初から署名のために設計された独立した仕組みで、たまたま RSA でだけ暗号化と形が重なっている—— こちらが正しい理解になる。分かりやすさのために特殊なケースを一般化してしまう例として、 この教材自身も同じことをしている。

3. 「破れない」は「現実的な時間で破れない」の略

ワンタイムパッドを除けば、実用的な暗号はどれも計算量的安全性に立っている。 無限の計算能力があれば必ず破れるが、現実の計算能力では終わらない、という意味である。 この前提は固定されたものではなく、アルゴリズムの進歩や計算機の高速化で動きうる。 実際、量子計算機が実用規模になれば、素因数分解も離散対数も一気に解けることが分かっている (ショアのアルゴリズム)。そのための耐量子暗号への移行が、すでに始まっている。

4. 暗号が守るのは通信路だけ

暗号が完璧に働いていても、端末に侵入して入力前の平文を見る、鍵の保管場所を押さえる、 ルート証明書を握る、法的に鍵の提出を強制する、といった経路は全部残っている。 これらは暗号を破らずに中身へ到達する道で、いずれも暗号の外側にある。

「現代の暗号は国家権力でも破れない」という言い方は、 正面から鍵を割り出す計算が非現実的だという意味では正しい。 そしてまさに正面が無理だからこそ、議論は「バックドアを作れ」「鍵を預けろ」という 別の場所に移っている。暗号の強さと、通信の秘密が守られるかどうかは、同じことではない。

演習 26理解

実際の HTTPS 通信で、Web ページの本文(HTML や画像)はどの鍵で暗号化されているか。

演習 27理解

「デジタル署名とは、秘密鍵で暗号化することである」という説明の問題点はどれか。

演習 28理解

「現代の暗号は国家権力でも破れない」と言えるのは、どういう意味においてか。

このセクション: 0 / 3 問正解

本教材のシミュレータで使っている鍵はすべて教材用の小さい数であり、実運用の暗号強度は持ちません(実際の RSA は 2048 ビット以上、ディフィー・ヘルマンも 2048 ビット以上の素数を使います)。設問・数値例はすべて自作です。