細田守監督の映画「サマーウォーズ」。そこに出てくる数字の羅列の暗号を主人公・健二が何回も解読するシーンがあります。200桁に及ぶサマーウォーズの暗号にQuizKnockの須貝駿貴(東大物理学科博士号)と鶴崎修功(東大数学科博士課程)が挑みました!
実際にサマーウォーズの暗号は何をしているかも、どれくらい難しいのか分からないですよね。健二は暗算で説いていましたがそれが可能なのか? サマーウォーズの世界と比較しながら解説します。
h2 > a.entry-content,h2 > a {color:#fff;text-decoration: none}
QuizKnockきっての理系2人組がサマーウォーズの暗号に挑みました! ここでフォーカスしているサマーウォーズは簡単に説明すると数十桁にも及ぶ数字の羅列を主人公・健二が暗算して世界を救います。その暗号の解き方は説明されていません。
なのでふくらpが解き方を予想して2人に問題を出します。ざっくりした解き方に関しては中学数学を習っていればなんとなく理解出来ます!
h2 > a.entry-content,h2 > a {color:#fff;text-decoration: none}
問:01→A 02→B 26→Z 0101→AA 0102→AB 2626→ZZ のように変換する場合23011819は?
自分で解こうとすると少しのひらめきが必要ですが、答えは簡単です。答えはWARS。先に須貝さんが解きました。アルファベット順に数字がついているので23011819を2桁ずつで区切って考えましょう。
23→W、01→A、18→R、19→Sということです。ここで数字をアルファベットに出来るということを覚えておいて下さい。ちなみに鶴崎さんは素因数分解をしていました。
h2 > a.entry-content,h2 > a {color:#fff;text-decoration: none}
ここからめちゃくちゃ難しくなります。ネット通信で頻繁に使用されているRSA暗号解読です! 簡単にいうと3種類の数字で解くのですか、暗号化された文章をRSA暗号で解きます。暗号の最後は第1問を使用。
問:p=37、q=71、e=79としてRSA暗号を作成した。暗号が「904」であるとき、元の文章は? ただし条件は以下の通りとする。
pq=n、m(p-1)(q-1)≡-1(mod e)となるような最小の自然数mを用意するとd=(m(p-1)(q-1)+1)/e。暗号文Cについてcのd乗≡M(mod n)を計算することで、元の文章を数字に変換した文が表れます。
もう全然分からないです。筆者も解きましたが、mを求めるのに頭が割れそうでした。でも高校数学を一通り習っていれば解けると思います!
n=37×71=2627です。ただのかけ算ですが健二が手計算で解いているので2人も手計算で解きます(地獄)! mを求めるにはモジェロ演算を使用。鶴崎さんはフェルマーの小定理を使ってmを解こうとしました。かなり難しい定理なので説明は省略します。
割り算に時間がかかり、50分を経過したところでふくらpが電卓の使用を許可。さきに電卓を使って解いたのは鶴崎さんでした。
h2 > a.entry-content,h2 > a {color:#fff;text-decoration: none}
問:p×q=177773のなるとき自然数pとqを求める。
おさらいですがRSA暗号は3種類の数字を使用します。第2問は3種類の数字がわかっている状態でした。次は1つの暗号から2種類の数字を出す問題です。ここからはコンピューターでも難しくなります! なので今回は最初から電卓は使用可能です。
この問題の難しいところは1番効率が良いのがしらみ潰しというところです! 須貝さんは177773の中から可能性のある素数で小さい順から割っていきます。
鶴崎さんはエラトステネスノの篩を使用。400×400=160000なので399までにpがあるだろうと予想します。なんと須貝さんの方が答えるのは早かったです! 文明の利器の勝利ですね!
h2 > a.entry-content,h2 > a {color:#fff;text-decoration: none}
問:eは不明。eを求める。(下に問題文)
意味がわかりませんよね。2人も「なぞなぞ?」「ネイピア数?(eで表す数学定理の1つ)」とはてながいっぱいでした(笑)。
ふくらp「これは僕が思っている数字を言い当ててもらいます。無理なので諦めてください。」天才2人によるブーイングの嵐に笑いが止まりません!
第4問を解くのは不可能だと理解いただけたでしょうか。ですが健二はこの第4問を解いているのです!驚愕ですよね。 どれほどあり得ないことかといいますと、まずeを神のお告げで聞かなければいけません。
そこから500桁×500桁の素因数分解を解きます。(無量大数は69桁)コンピューターでも数年かかるそう(笑)。健二が解いたと知った時の2人の反応が面白かったのでまとめました!
・「ばかじゃないの!計算とかの問題じゃない!エスパーだよ!」
・「ラマヌジャン(天才数学家・神からお告げが来たと数学の式を生み出していった人)2回分必要だよ!」
・「頭に未来の量子コンピュータと未知のアルゴリズムが入っていたら可能」
・「鼻血だしても不可能」
理論上は解けなくはないそうです。eを順番に素数を代入していき、意味の通る文章になるまでやればできます。
簡単に言っていますが、つまりはe=1としたときに第3問を解き、そしてさらに第2問を解くことを何千通りも計算するということです。気が狂います!今回の問題でもサマーウォーズの世界の問題でも200桁以上あるので不可能に近い。
ちなみに健二が暗算で解いてしまったRSA暗号ですが、解いてしまうと非常に危険です。コンピュータにも解けない=安全性が高いということで、セキュリティに利用されています。それを解けるということは映画で起きたことに類することが起きそうですね。
h2 > a.entry-content,h2 > a {color:#fff;text-decoration: none}
非常に面白い検証で、サマーウォーズの暗号を解くのは不可能ということが数学がわからない人にもご理解いただけたようです!今回の動画を見てから例のシーンを見ると健二は何をしているの?という思いがあふれてきました。
いかに難しいかわかりますよね。
筆者もこの動画を見てからサマーウォーズの映画を見たら例のシーンで笑い止まりませんでした!
h2 > a.entry-content,h2 > a {color:#fff;text-decoration: none}
今回の検証動画で健二どれほどあり得ないことをしているのかわかりましたね! 色々調べていくうちにRSA暗号については量子コンピューターには多項式計算で解けることがわかりました。
ですが健二が解いた暗号は1種類から導き出しているので量子コンピューターにも無理です。今回の検証もかなり面白かったですね! 最後までご覧いただきありがとうございました。
サムネイルは以下より:
https://www.youtube.com/watch?v=kvC55N4k9ng
Source: AppBank
東大生がサマーウォーズの暗号に挑む! QuizKnockきっての東大博士課程2人は解けたのか⁉