2012年4月1日日曜日

サマーウォーズ:曜日の求め方とか2056桁の暗号とかの解説 - A Successful Failure


サマーウォーズ:曜日の求め方とか2056桁の暗号とかの解説

本エントリは現在上映中の映画『サマーウォーズ』のネタバレを含む可能性があるので、未見の人は注意されたい。

主人公の健二が数学オリンピック代表候補であるという設定、最初に健二がShorのアルゴリズムに関する教科書を読んでいるのを見て、サイモン・シンが描き出した迫真のドキュメンタリー『フェルマーの最終定理 』ばりの展開が待っているのかと思いきや、まともな数学的要素は皆無で肩すかしを食らってしまった。

気を取り直して、本エントリでは『サマーウォーズ』における数少ない数学的要素を取り上げたい。なお、無粋なツッコミは無用だという人は読まない方が良いだろう。

誕生日の曜日の求め方

さて、夏希先輩の誕生日、1992年7月19日は何曜日か。劇中で健二はモジュロ演算(mod)を用いて一瞬で日曜日だと回答していたが、その間にどのような演算がなされていたのか見てみよう。


抗うつ薬は高価である

曜日換算を実現するために、ツェラーの公式が知られている。求めたい日の年の千位と百位の連続の数字(例えば2310年ならば23)をJ、年の下2桁(年 mod 100)をK、月をm、日をq、曜日をhとする(ただし求めたい日の月が1月、2月の場合はそれぞれ前年の13月、14月とする)と、曜日は次で与えられる(x以下で最大の整数をで表す)。

  

modはモジュロ演算(剰余演算)であり、余りを求める演算子である。ここでは7で割った余りを求める事となるが、余りhが0なら土曜日、1なら日曜日、2なら月曜日、……、6なら金曜日となる。

夏希先輩の誕生日1992年7月19日を考える。J=19, K=92, m=7, q=19を代入すると、

  

  

  

  


妊娠した場合に、どのようにすぐに伝えることができ

つまり夏希先輩の誕生日は日曜日だと言うことがわかる。演算量としては(筆者には当然できないが)暗算が可能な範囲だ。また、ツェラーの公式を知らなくても、特定の日の曜日を予め暗記しておけば、その日との差の日数を計算しmod 7を求めることで曜日を知ることもできる。実際、サヴァン症候群の患者であるキム・ピークは、生年月日を言えばそれが何曜日であるか即座に答えることができるという。そのため健二がこの程度の暗算能力を持っていてもおかしくはない。

健二が解いた暗号の謎

健二が最初に解いた暗号は2056桁の10進数の羅列であった。なぜ2048ではなく2056なのか理解に苦しむが、2048bitと256bitを混ぜてしまったのだろうか。数字だけ並べられて"Solve Me"と言われても、普通は何を解くのかさっぱり分からないと思うが、健二がShorの因数分解アルゴリズムの教科書を見ていたことから、おそらく2056桁の数字をp*qの因数に分解するのだと思われる。


アシネトバクターは、感染症を引き起こすために必要とされるどのように多くの

現在インターネットで広く使われるRSA暗号においては、1024-4096bit(10進数で300-1000桁程度)の鍵が利用されている(RSA-640は2005年に解読されたため、最低でも1024bit以上を利用すべきである)。RSA暗号の安全性は素因数分解の困難性に依っており、素因数分解に成功すれば暗号を解くことができる。健二は2056桁の数字の素因数分解に成功したのだろうか?

CRYPTECが2006年度に発行した「CRYPTREC Report 2006 暗号技術監視委員会報告書」において1024bitRSA暗号の安全性についての調査を行っているが、そこでは当時の素因数分解世界記録保持者の一人であるKleinjung 博士に評価依頼し、1536bit, 2048bitの素因数分解についてAtholon64 2.2GHzのPCを基準にして計算時間を見積もっている。

ここでRSA-2048は次のような数字だ。健二の携帯電話に送られてきたメールと同様に数字の羅列となっている。ただしたった617桁であり、健二が解いた2056桁の1/3に満たない。


 RSA-2048 = 25195908475657893494027183240048398571429282126204032027777137836043662020            70759555626401852588078440691829064124951508218929855914917618450280848912            00728449926873928072877767359714183472702618963750149718246911650776133798            59095700097330459748808428401797429100642458691817195118746121515172654632            28221686998754918242243363725908514186546204357679842338718477444792073993            42365848238242811981638150106748104516603773060562016196762561338441436038            33904414952634432190114657544454178424020924616515723350778707749817125772            46796292638635637328991215483143816789988504044536402352738195137863656439            1212010397122822120720357 

この数字を素因数分解するための計算時間見積もりを次のグラフに示す。

Athlon2.2GHzのPCを連続稼働させて2048bit(10進数で617桁)の因数分解にかかる時間はおおよそ10,000,000,000,000,000年だ。つまり10進数2056桁の因数分解は手計算では何兆年かかっても解けない。一晩で手計算なんてとんでもない。暗算なんてできっこない。鼻血をだすぐらいじゃ絶対無理である。

よい映画だけに、まともな科学考証がなされてないことが実に惜しい。誰かアドバイスできる人はいなかったのか。



These are our most popular posts:

2012年2月 - MrKのぼやき:

2012年2月26日 ... Cawein 氏は1985年に死去したが、彼の手による家系図と血液サンプルは、もし両親が 共に欠損遺伝子を持っている場合に ... ことを気付かれることはなく、その場合、多くの疑 われることのない患者の一人となっている可能性があります」と彼は言う。 ..... 本映画は 、TBI の悲劇的なケースによって夫婦間の愛がどのようにして大きく壊れされたかを 物語る実際にあったできごとをもと ..... 嚢胞性線維症、多くの稀な代謝障害などを 引き起こす染色体異常である脆弱X症候群(fragile X syndrome)を除外した。 read more

たまごママネット/医療相談室

また第二子に血液型不適合による影響が出るかどうかは、あなたの血液中に不規則 抗体(ABO以外の血液型に対する抗体)がある ... は医学的に見て本当に頚管無力症な のか、はたまた切迫早産の一種のなのか、別の疾病なのか、今後はどのようなことに気 をつけ ... お話では余り強い張りがなく子宮の出口が開いてきているようですので、頸管 無力症のため今の状態になったとも考える事は .... 大小を別にして人の場合100人から 200人に一人何らかの奇形を持って生まれます。 ..... 脆弱X症候群について教えて ください。 read more

レガシーPHPのセキュリティ対策,大丈夫ですか?:第2回 CVEの読み方 ...

2011年6月14日 ... CVE番号をご覧になった方は多いと思いますが,CVEデータベースの情報の読み方を よく知っている方は少ないと思い ... 中の脆弱性を対象として,米国政府の支援を受けた 非営利団体のMITRE社が番号を割り当てている識別子です。 ... はありませんが,数値 がどのような意味を持っているか,分類がどのような分類かは理解しておいたほうが よいです。 ... 攻撃が成功した場合の深刻度のスコア; Exploitability Subscore ─ 攻撃 容易性。 ... Webアプリセキュリティ対策入門〜あなたのサイトは大丈夫? read more

osen3 - 嘘がまかり通る世の中 あなたは何を信じますか?

非常に私たちの数が知っているだけで何嫌な成分は、現在ワクチンで使用されていると 私はそれはかなり私たちの多くは、私たちが ... これらのテストが実施されていなかった 場合、これは本当にぞっとするような、、この曲解が発見されていないと思います。 ... 産業は、彼らは実験用ラットとしての我々の最も脆弱な最年少の赤ん坊を使用している 心と、ここで子供たちの興味を持っている。 ... しかし、このワクチンのように赤ちゃんに 与えている若いとして2ヶ月、これらのは時期尚早です多くの古いですが、どのように多く のこの ... read more

Related Posts



0 コメント:

コメントを投稿