完全シロートがプログラミングに挑んでいます

プログラミングスクール RareTECH 学習の軌跡

笑わない数学 #9「暗号理論」まとめ 

RareTEC受講生のリュウです。

RareTECH(レアテック)| 希少型エンジニア育成スクール

私は最近、NHKの「笑わない数学」という番組を見ており、つくづく世界は数学でできていると思う。今週は第9回「暗号理論」についてまとめる。NHKとは仲良くないし法に触れたくないので写真はない。)

途中の計算を飛ばすのがイヤだったため自分でチャレンジしてみたら、やたら時間がかかってしまった。せっかくなのでその辺も読んでもらえたら嬉しい。

 

現代はPCやスマホなどでメッセージ、個人情報をやり取りする機会が多く、それには暗号が使われている。どうして安全にそれが出来ているのか?そしてどんな数学が利用されているのか?という謎にパンサー尾形が今回も挑んでくれた。

 

私が最近RareTECで学習しているセキュリティー基礎コースでも暗号について学んでおり、それを更に深めることが出来るかもしれないと思ったので特に興味深く見ることが出来た。

RareTECH(レアテック)| 希少型エンジニア育成スクール

暗号の原理は、元の情報を「暗号化の方法」によって暗号化された情報、とし、暗号化された情報を「もどす方法」によって元の情報にする、ということになる。

 

歴史上有名な暗号方式に「シーザー暗号」がある

これは、たとえばアルファベットを三文字ぶん後ろにずらして、A→D、B→E、C→F、とすれば意味の通じない文章を作ることができる、中でも13文字ずらす「ROT13」は丁度26文字のアルファベットを半分で折り返すメジャーなものとして知られている。

また番組では「エニグマ」をさらりと紹介したが、これは第二次世界大戦時のドイツ軍の暗号機の事で、連合軍はこれを解読するのに心血を注ぎ、終盤ドイツ軍の情報は連合軍にダダ洩れだったとか。

このように「暗号化の方法」をいくら複雑にしても「暗号化の方法そのものが知られてしまうと元の情報が第三者に知られてしまう」ことは避けられず、数学者達は長年苦悩してきたらしい。

 

1976年のアメリカで「暗号化の方法を守り抜くなんてもうやめよう」とマーティン・エドワード・ヘルマンさんとホイットフィールド・ディフィーさんが「暗号の新しい方向性」というタイトルで「公開鍵暗号」の理論を発表した。

さらにその後現れた3人、ロナルドさん、アディ―さん、レオナルドさんが着目した素因数分解の困難性」によってかのRSAが開発されたRSAは3人の頭文字Rivest、Shamir、Adlemanによる、番組の字幕ではAdlemanのつづりがAdelmanになっていた。どちらが正しいかお分かりの方はお教え下さい)

 

ここで実験①

4桁の2つの数を掛ける。その答えから元の2つの数にたどり着けるかどうか、という問題に東大生数人で挑んだ。しかし結果的には30分かけても元の2つの数にはたどり着けなかった。

 

パンサー尾形による実験②

素数11と19を掛けた「209」を公開鍵として公表する。

スタッフは尾形に送りたい数「21」を公開鍵で暗号化する。

スタッフは21を17乗し(なぜ17乗なのかは言及なし)、209で割る 21^17/209 のあまり「10」を尾形へ送る。

「10」を受け取った尾形は、{(11-1)×(19-1)×5+1}/17=53 を得る。

さらに、10の53乗 わる209のあまり「21」を得ることが出来た。めでたしめでたし。

 

しかし、である。

私がひっかかったのは、10^53/209のあまり を解く部分について。

尾形は自らペンを動かさず、いかにも数学が得意そうなスタッフ「はまちゃん」に丸投げする。

はまちゃんは電卓をペシペシ叩いて「21」という数を尾形へと渡すのだが…

 

なんで?

なんでそんなに簡単に出せるの?

それなら尾形にやらせてもいいんじゃないの?

という点。

 

(ああそうか、はまちゃんは関数電卓を使ったのか。ウチにはないもんな。)

そこで私は自分で解いてみようと思った。ハマるとも知らずに。

「10^53/29のあまり」を計算機でやろうとは普通思わない。

解法はいくつかあるだろうが、私は一つでクタクタ。

今回は合同式のmodにお世話になった。

modについてご存じない方に説明すると、2つの数があって、209で割ったあまりが同じだったらその2つの数は合同(≡)と考える。

たとえば、7で割った余りが同じ2である100と9は 100≡9(mod7) と表す。余りは2

また、12も5も7で割ると2足りないが、そういう時も 12≡5(mod7)と表す。余りはー2 

 

今回は10の53乗と合同とみなすことのできる数を探した。

10^53=(10^9)^5×10^8 、および 209を法とすると10^9≡-1 、10^8≡-21であるから

(-1)^5×(-21)=21

を得る。

10^9=1000000000 で、209で割ったあまりが208であるが、これは-1とも表すことができる。

modでは「1または-1との出会いを求める」のが基本となる。

同様に10^8=100000000で、209で割ったあまりが188であるが、これは-21と表すことができる。

これ以外の解法があったら是非教えて頂けると有難い。

 

最後に尾形から「メッセ―ジ ”96 ” を解いてみて欲しい」と言われるが、もうそんな気力は残っていないので

冪乗剰余演算 - 高精度計算サイト

に入力してサクッと計算してもらうと「39」サンキューが現れた。

今回は、尾形のサッカーにまつわる情報が全然出てこなかったので、尾形の決まり文句である「サンキュー」でお茶を濁したのだろう。

 

「公開鍵」は誰でも知ることが出来るものの「元に戻す方法は簡単に分からない」という特徴を持つ。この「公開鍵」を数学の力で発見したことで、暗号は飛躍的に発展した。

 

であるが…

最後にナレーターがさらりと「私たちのマイナンバーカードには、鍵の元であるpとqが含まれている。」と述べて、私はギョッとした。

そんな大事な情報を物理的に持ち歩くなんて本末転倒ではないかと。くれぐれもお気を付けいただきたい。

笑わない数学は全12回。残り3回となる。

次回は「abc理論」。全く知らない話なので予習なしで見てみようと思う。

寿司打9420円、ミス37回、進歩なし。

最後までご覧いただきありがとうございました。

RareTECH(レアテック)| 希少型エンジニア育成スクール