事例180

RSA暗号の実習にて

名古屋高校 中西渉先生

愛知県高等学校情報教育研究会研究協議会
愛知県高等学校情報教育研究会研究協議会

まず簡単に自己紹介をします。

 

平成元年から約32年、現勤務校におります。もともとは数学で、2000年に現職教員研修で情報科の免許を取得し、2004年から情報の授業をしています。

 

プログラミングが大好きで、趣味としても仕事としても使っています。学校でも私の書いたプログラムがいろいろと動いており、教材もいくつか作っています。私の個人サイトのアドレスも載せておきます。

 

https://watayan.net

 

勤務校は、1887年創立の歴史のあるキリスト教の併設型中高一貫校の男子校です。一学年12クラスという規模です。

 

 

RSA暗号を作って・使ってみる

 

早速RSA暗号の実習の流れを説明します。

 

RSA暗号は、受信者が暗号化するための鍵をまず作り、送信者にこの鍵(=公開鍵)を教えます。そして送信者は公開鍵で平文を暗号化したものを受信者に教える。受信者が秘密鍵で復号するというものです。生徒たちには、ここまでの流れだけを説明してあります。

 

[実習のサイト]

https://www.nagoya-gakuin.ed.jp/rsa/

 

 

以前に神奈川県の実践事例報告会でポスター発表した際、一人二役のこの画面では、誰がどの鍵を作るのかわかりづらかったという反省がありましたので、今回は受信者と送信者で画面を分けることにしました。

 

受信者は、この鍵を作って送信者に渡す。送信者は、教えてもらった鍵を入力して暗号化し、暗号文を返す。そのような役割がわかりやすくなるようにしました。

 

※クリックすると拡大します。

 

実習の詳細に入ります。

 

まず受信者が鍵を作らないと話が始まらない、ということを強調した上で、鍵を作る作業をしました。p(素数)とq(素数)とe(公開鍵)を適当に決め、鍵生成のボタンを押すと、公開鍵n(=p*q)が作れます。

 

この公開鍵nとeを送信者に教えます。この際に、画面を見てしまうといけないので、プリントにnとeを書く欄を作っておき、そのプリントを送信者に渡すという方法を取ります。

 

 

 

→ワークシートのダウンロードはこちらから

RSA暗号の実習プリント.pdf
PDFファイル 53.9 KB

 

これを受け取った送信者は、受け取ったnとeを入力してから、適当に考えた5文字までの平文の単語を入れて暗号化すると、暗号文が作られます。そしてこの暗号文を同様にプリントに書き込み、受信者に教えます。

 

平文はまずA~Zを1~26、イコールを0とする27進法で数値化したものをRSA暗号方式の計算で暗号化しています。それをまた27進法で文字に戻して表示しています。

 

 

受信者は、送信者から暗号文を受け取って先ほどのnと秘密鍵dを入力してこれを復号します。そして元の単語と比較して、一致していることを確認する、というところまで行います。

 

一通り終わったら、受信者と送信者の役割を交代して、再度やってみています。

 

 

盗聴者になって他の人の作った暗号を解読してみる

 

この間に、私は教員用のコンピュータで別の鍵を作って、適当な平文を入れて暗号化し、「隠す」ボタンを使って平文や鍵生成にかかわるp、qや秘密鍵を隠しておきます。

 

 

そして「君たちは今から盗聴者になってください」という新たな課題を出します。

 

盗聴しているので、公開鍵nとeを知っているし、暗号文も知っている。この状態で、平文を求めるという課題を出します。

 

すると、生徒たちからは「dがわからない」という声が上がります。pとqが隠されているから鍵生成したくてもできないというのです。しかし、nは70368691でn=p*qだとわかっているので、これを素因数分解したらpとqがわかり、そのpとq、eを入れて、鍵生成してdを作れば復号できるよねという話をします。

 

さて、それでは素因数分解してごらんとなりますが、8000いくつなので暗算では無理があり、そう簡単には見つからない。その辺の難しさがこのRSA暗号を解くことの難しさだという話をするうちに、「8237と8543です」と言ってくる生徒がいたりして、こうなるとたいへん面白くなってきます。

 

 

「暗算でやったの?」と聞くと「『素因数分解』でググりました」と言うのです。検索でこのカシオのサイトにたどり着き、nの70368691を入れて素因数分解したのだそうです。「コンピュータの使い方をよくわかっている!」と褒めるばかりでした。

 

 

「コンピュータを使うことでパフォーマンスを上げる」使い方を知るために

 

「ググる」ばかりでは困りますが、それさえしないのは困りものです。私は最初の授業のときに、正しいコンピュータの使い方として、「目の前にコンピュータがあるのだから、授業中に必要があればどんどん使いなさい」「コンピュータを使わない自分と使う自分と比べて、使う自分の方がパフォーマンスが高くなることを目指してこの授業をしたい」と話しています。

 

「わからない」と言うだけではなく、コンピュータを使うことで、何かきっとできるのではないかと探ったり、取りあえず調べたりしてみるのはとてもいいことだと思います。今回、実際に目の前のコンピュータを使うことが必要なときが訪れ、また必要なことに使ってくれたということで、私の言ったことが非常によく理解されていると感じました。

 

今、GIGAスクールの話題などで1人1台のコンピュータということが言われていますが、おそらくそのことが期待するのは、このように自分が調べたいことの道具として、自発的に当たり前に使える状態のことなのではないかと思います。

 

神奈川県高等学校教科研究会情報部会 情報科実践事例報告会2020オンライン 実践事例報告