情報Ⅰ 「暗号化」RSA暗号体験Excelシート
高校の数学は、山。高校の情報は、沼。数学の「難しい」問題は、概して発展とか応用の高いところにある。一方で、情報の難しさは、より基本とか、より原理を理解しようとしたときに顕れたりするわけです。インターネットの原理をしらなくても、デジタル表現分かってなくてもスマホは使える…といった具合に。
さて、「暗号化」の単元では次のような話がでてきます。
先生:共通鍵方式は、閉めた鍵と同じ鍵で開けることができる。だから、鍵がコピーされて流出すると困るんです。
で、公開鍵方式は、閉める専用の鍵と、それとペアの開ける専用の鍵を作る。
それで、閉めた鍵では開けられないから、開ける鍵さえ秘密にしておけば(秘密鍵)、閉める鍵はどれだけコピーされても(公開鍵)いい。
生徒:へぇなるほど。…でも、そんな鍵、どうやって作るんだろう。
その刹那、
先生:ところで、これはそう信じてほしいんやけども、秘密鍵で暗号化されたものは、必ず公開鍵で復号できてね。だから、デジタル署名が…
とかいい始めると、
生徒:置き去り あるいは
生徒:まああなたがそういうならそう思うことにしますはいはい、鵜吞み鵜呑み
という残念な感じになっていく。困ったものです。
で、だからこそそこで、敢えて教科書にはないんだけどRSA暗号を扱うことで、
①確かに、鍵を閉めた人は開けられない かつ
②確かに、秘密鍵でなら復号できる かつ
③確かに、開ける鍵(秘密鍵)で閉めたら、閉める鍵(公開鍵)で開けられる
あたりを体感できるかも。つまりは、発展的内容を扱うことで、原理の理解定着につながるのではないかと考えて、作ってみたのが、RSA暗号体験Excelシートです。
・こちらからダウンロード・
RSA暗号の体験.zip
・概要・
前提: 「ある数」を、7乗してmod33を計算する。 その計算結果を、3乗してmod33をとると、必ず「ある数」に戻る。この性質を用いて、(7,33)を公開鍵、(3,33)を秘密鍵とする。
・ストーリー・
①送信者から、受信者に向けての通信内容を、すべて「悪い人」が盗み見ています。
だから、暗号化したいのですが、例えば、(2,10):2乗してmod10で暗号化して、(3,10)3乗してmod10で復号を試みても、うまく復号できない(送信する数をあれこれ変えてみると、必ずしも元の数字に戻らないことがわかる。)
②そこで、秘密の関係を満たす、公開鍵(7,33)で暗号化、(3,33)で復号すると…
送信する数を色々変えても(オレンジ色のセルの値を変えても)、必ずもとに戻る(復号できる)ことがわかる。なるほど。確かに悪い人には情報は漏れない。いまは、Excelの制約で、小さい数(7とか3)を使っているけど、これが数百桁になると、公開鍵を知っていても復号できなさそう。
③送信側の7を3に、受信側の3を7に変えてみる。復号されるでしょうか。
→うまく復号されれば、逆に、秘密鍵で暗号化したものは、公開鍵で復号できることになる。
④この仕組みを使って、デジタル署名が考案されました。送信者本人が送っていると証明できます。
⑤おまけ (7,33)と(3,33)の関係と同じような関係がみられる数のペアを、探索できるマクロです。素数2つを入れて、自動考案ボタンを押してみましょう。
という感じです。何はともあれ、とりあえず触ってみてください。