
こんにちは、Wanda(@aliswanda151)です。
みなさんは、夏というと何を思い浮かべるでしょうか?
スイカ、海、水着、おっp…。
これ以上思い浮かべると鼻血が出てきそうな気がするので書きませんが、色々思いつくと思います。
私は、夏と言われると「サマーウォーズ」を思い浮かべます。
この時期にテレビで放映していたりしますよね。
いつみても、わくわくします。
ですが、私はサマーウォーズで、ずっと疑問に思っていたことがあります。
それについて触れていこうと思います。
ここから先はサマーウォーズのネタバレも含まれますので、それでも大丈夫な方だけ見てください。
大丈夫でしょうか。
まずはサマーウォーズの簡単なあらすじから
主人公の健二君は数学がめちゃくちゃ得意な高校生です。数学オリンピックの代表候補にもなるくらい数学が得意です。そんな健二君に「Solve me」と書かれた一通の謎のメールが届きました。文面は2056桁の数字の羅列のみでした。その数字のメールをみた後、健二君は、おもむろに計算をし始めます。計算後、出てきた答えを返信しました。
この答えが世界を変えてしまうほどのものだったとは知らずに。
実はその答えというのは、巨大ネットサービスの管理者権限を奪うことができるものだったのです。
このあと、物語は大きく動いていきます。
(あらすじわかりにくいと思います。すみません。わからない方はもう一度映画を見てみてください笑)
みなさんは、サマーウォーズを見て不思議に思ったシーンありませんか?
私は、健二君が手計算をするシーンにいつもわくわくしますが、あれって何をしていたんでしょうか。
何かの問題を解いているのはわかります。ですが、数字の羅列のみで解いていますよね。
送られてきたメールの内容が、問題文になっていたり、=で表記されていたら、解けそうかなとも思うのですが、数字のみです。しかも2056桁の。何をどうすればいいのか、どう解釈すればいいのかもわかりません。
しかし、健二君は解いてしまいます。(後でわかると思いますがとんでもなくすごいことです)
では、健二君はどのようにして答えを導きだしたのか。長い間、私の中で謎だったのですが最近、その謎が解けました。
実はこれ、2056桁の暗号だったのです。
いや、暗号だってことは誰でも気づくかもしれませんね(笑)。もっと詳しく言うと、「RSA暗号(RSA129)」と呼ばれるものだったみたいです。
(これからの考察は厳密性に欠けるところがあります、ご了承ください)
まず、暗号とは何かですが、
「秘密を保つために、当事者間にのみ了解されるようにとり決められた特殊な記号・言葉」
広辞苑第6版
ということで、とにかく知られたくないことは暗号化すればいいわけです。
例えば、ラインの内容や、自分のALISのサイトを勝手に見られたり、使われるのは嫌ですよね。そこで暗号の技術が使われるのです。
ただし、暗号を解読するための方法(復号化)もなければいけません。
復号できなければ誰も何もわからないままですからね
よって、この復号のために「鍵」と呼ばれるものが必要になってくる暗号があります。
金庫の鍵に似ていますね。鍵さえあれば、金庫の中を自由に使うことができるのと似ています。
暗号化の方法はたくさんありますが、今回のサマーウォーズは「RSA暗号」が使われていたそうです。
「RSA暗号」の詳しい説明は省きますが、簡単に言うと「公開鍵」と「秘密鍵」の二つの鍵が必要な暗号です。この2つの鍵があれば暗号文を解読(復号)することができます。
送られてきたメールには暗号文と公開鍵がありました。
以下メールの内容です。
一部わからないところはeで表記してあります。
814381625757888867669235779923577997614666120182967212423625362561842935706935245733897830597123563958705058989075149759929002687954354162959592635382962929999373527393893015272028273730979383739039731352452762289782738269898221546122131360619421303021411333103461918121612113166613120121314764123131664436383883993965356373934846376383933154328878976238398563738365433423534644888463839384643839396476573748938457345564245126348446687582487268268599929226493922762658492645161381238929910492254753685216544526687633169497562621466262164751662165496216233621461156486215622262254897462256624662062148316547254564902302454621245456232245162312424565124345181640126512518124243216518454246124324649155489615622654043145149481612161465225465454643245189159164648464546424211515912121512512462155666156124173641635467148361593823787985896185613764728526928789895656425257381651935613893981991374836873823541837167837898784e765434576345637173823138479813768765238613741311236937264827654778277325473898928152422542515522536131313315113131436465191945461216494600604573790464767487277872182954748299792393745245635321521251762851642417215462185215216524128156631535133635135624373234146484945914624245144655937545243151552364728646254632586421653765268752146364216452966051582166316165298691556167867525411656512513466425667026216616514563466741256352312000214153442514256547456176523156416857441156514555136515571345216351461342355314575145551352534665275245434123524164512514854135513552515115617195661675681735681361373613725382416248275264278352381658327184562416554631567452166375415676516659156451553145235234613252553232516852127126451621572321315221367251321433642212341623226546564323221637261423214278263167424542351254254143654215461524423554259418149422453565065652624639606225635206461462565251661258214063232062267640333141325426372633225334823727365243212325634253834253324362370285630743325310023223052360452321456631647857143521514557163023223522423243624702260270285607962516432235723674724715613526215523165518237142314221623715637261634153471
長いですね(笑)
この中に暗号文と公開鍵が入っています。わかるでしょうか?
他の方のサイトの考察になりますが、この暗号は前半部分と後半部分に分けられるそうです。
考察した人すごい...。
http://win32programmer.seesaa.net/article/421790350.html
で、このとき、前半部分が暗号文、後半部分が公開鍵になります。(公開鍵の方が文字数が多くなるため)
暗号文
814381625757888867669235779923577997614666120182967212423625362561842935706935245733897830597123563958705058989075149759929002687954354162959592635382962929999373527393893015272028273730979383739039731352452762289782738269898221546122131360619421303021411333103461918121612113166613120121314764123131664436383883993965356373934846376383933154328878976238398563738365433423534644888463839384643839396476573748938457345564245126348446687582487268268599929226493922762658492645161381238929910492254753685216544526687633169497562621466262164751662165496216233621461156486215622262254897462256624662062148316547254564902302454621245456232245162312424565124345181640126512518124243216518454246124324649155489615622654043145149481612161465225465454643245189159164648464546424211515912121512512462155666156124173641635467148361593823787985896185613764728526928789895656425257381651935613893981991374836873823541837167837898784
公開鍵
765434576345637173823138479813768765238613741311236937264827654778277325473898928152422542515522536131313315113131436465191945461216494600604573790464767487277872182954748299792393745245635321521251762851642417215462185215216524128156631535133635135624373234146484945914624245144655937545243151552364728646254632586421653765268752146364216452966051582166316165298691556167867525411656512513466425667026216616514563466741256352312000214153442514256547456176523156416857441156514555136515571345216351461342355314575145551352534665275245434123524164512514854135513552515115617195661675681735681361373613725382416248275264278352381658327184562416554631567452166375415676516659156451553145235234613252553232516852127126451621572321315221367251321433642212341623226546564323221637261423214278263167424542351254254143654215461524423554259418149422453565065652624639606225635206461462565251661258214063232062267640333141325426372633225334823727365243212325634253834253324362370285630743325310023223052360452321456631647857143521514557163023223522423243624702260270285607962516432235723674724715613526215523165518237142314221623715637261634153471
上記のように暗号文と公開鍵が書かれていました。
秘密鍵はメールには書かれていません。
先ほども述べたように、秘密鍵と公開鍵があれば暗号文を解読することができます。
では、なぜ秘密鍵がわからないのに、健二君は暗号文を解読することが出来たのでしょうか。
健二君は手計算によって公開鍵を解析し、秘密鍵を導きました。
これ、難しいことのような気がしますが、やろうとしていることは実は、結構簡単です。(解くのは簡単ではないですよ)
掛け算と簡単な足し算さえできればこの記事を読んでいる皆さんにもRSA暗号解析ができますよ。
まず公開鍵を見てください。
この公開鍵を2つの掛け算である〇×〇の形で表すことができれば、「RSA暗号」の性質上すぐに秘密鍵を導き出すことができます。
ということで公開鍵を2つの掛け算にしてみましょう。
例えば公開鍵が35だとします。その場合、5×7という2つの掛け算で表せますね。
こんな感じで2つの掛け算で表せられるかチャレンジしてみてください。
どうですか?2つの掛け算の形に表すことができそうですか?
えっ、パソコンを使えばできそうですか?
いや、きっと、今お持ちのパソコンでも無理です。
なぜなら、家庭用パソコンを使っても
10000000000000000000000000000年かかると言われているからです。
実は、公開鍵を2つの掛け算で表すというのはとんでもなく難しいのです。健二君は一夜にしてこの問題を手計算で解いてしまいましたが(笑)
「RSA暗号の性質上」公開鍵は必ず2つの掛け算で表すことが出来るように作られているのですが、この数を導くにはパソコンを使っても途方もない時間がかかります。
公開鍵から秘密鍵が導きだせたら、解読されてしまいそうで不安ですが、公開鍵から秘密鍵を導き出すことは相当難易度が高いことなのです。
「RSA暗号」の解読の難しさを数学的な観点からみると、素因数分解の難しさや一意性の話、量子コンピュータなどの話になってくるので興味のある方はまた、調べてみてください。
とにかく、数字のみの2056桁の「RSA暗号」をパソコンを使用しても何千年、何万年とかかるのに、ましてや、人間が解くことはほぼ不可能なことだということはおわかりいただけたでしょうか。
ここから、いけない考えが出てくるのですが、
そんな難しいことを一夜で可能にしてしまう健二君であれば、この世のすべてを手に入れることが出来ると思いませんか。
私が解読できるんだったら、あんなことやこんなことをしたいですね。ジュルリ…
例えば、ウォレットに入っている仮想通貨を盗むというのはどうでしょうか。
マイイーサウォレット(MEW)を持っている方はわかると思いますが開設するときに秘密鍵と呼ばれるものが渡されますよね。
その秘密鍵から公開鍵が生成されます。
つまり、公開鍵から秘密鍵を解析すれば盗み出すことが出来るのではないかと思うのです。
(※公開鍵の手の入れ方はよくわかりませんでした。イーサリアムアドレスは公開鍵から生成されますが、アドレスから公開鍵を導くことはできないような気もするので、ここの議論は置いておいてください。すみません。)
では、試しにイーサリアムで考えてみましょう。
(公開鍵が手に入ったと仮定します)
このイーサリアムには楕円曲線暗号が使われているそうです。
楕円曲線暗号についてはyoshihiroさんが記事でわかりやすく解説されているので、こちらをぜひご覧ください。
yoshihiroさん
この楕円曲線暗号の特徴を簡単に説明すると、少ないデータ量で強度なセキュリティを持つことができる暗号になります。
またRSA暗号と楕円曲線暗号の比較もされています。
RSA暗号と楕円曲線暗号の強度比較基準を策定しました。また、楕円曲線暗号が従来よりも数千倍程度相対的に高い強度であると考えられることが分かりました。
楕円曲線暗号とRSA暗号の強度比較基準を策定 : 富士通 - Fujitsu
http://pr.fujitsu.com/jp/news/2010/01/18-1.html
このように、楕円曲線暗号の方がはるかに強度なセキュリティを誇ります。
ここからが本題です。本当に長らくお待たせしてしまいすみません
では、健二君は仮想通貨を盗み出すことが出来るのか。
ここまで引っ張ってきたのに本当にすみません。
何しろアニメのキャラクターですし、実際に健二君が楕円曲線暗号が解けるのかわかりません。
サマーウォーズでは健二君が「Shorの因数分解アルゴリズム」の論文を読んでいる描写があったり、モジュロ演算(曜日当て)をしている場面があります。これらはRSA暗号において非常に重要な考え方にもなってきます。だから、RSA暗号に特に強かったということもあるでしょう。
しかし、もしかしたら楕円曲線暗号解析の方が得意な場合もあり得ます。
そもそも、あのメールの暗号が解ける時点で健二君の計算能力はおかしいです(笑)
また、映画の後半部分で鼻血を出しながら「よろしくお願いしまぁーーす」というシーンがあります。
印象的なシーンですが、あそこに限って言えば、1分もかからずに暗算で解いています。
おそろしい男ですね。
鼻血が出るくらい頑張れば、RSA暗号を暗算でも解けるみたいなのでワンチャン、楕円曲線暗号も解けるのではないかと思ってしまいます。
楕円曲線暗号まで解かれてしまっては、健二君に隠し事はできませんね。
ということで、私の暗号なんちゃって考察いかがだったでしょうか。
数学の厳密性、正確性に欠けるところや、論理が破綻しているところ、そもそも考え方が違うなどあるかもしれません。もし何かお気づきでしたらツイッターまでご連絡いただけると幸いです。
おまけ
頭を極限まで回転させると鼻血って出てくのでしょうか?
私は中学校の授業中に、鼻血が出てしまったことがあります。
あれは何かをたくさん考えていたから鼻血が出たんでしょうか。
理由はいまだにわかりません。
その後、「むっつり」というあだ名がつきました。
その理由もいまだに、わかりません。
参考にしたサイト
高校数学の美しい物語
ぐだぐだプログラム日記
http://win32programmer.seesaa.net/article/421790350.html
人が右なら、私は左
https://reistenza.com/entame/summer-wars.html
Wanda
過去記事一覧
ツイッター
@aliswanda151










