ニンジャスレイヤーと2038年問題
ニンジャスレイヤー第3部最終章の予告が行われました。 それまでのエピソードからも日付を示唆する文言が度々含まれていましたが、最終章が 2038年1月18日 という日付になることが明言されました。
アガメムノンは2038年1月18日深夜に月面メガトリイ基地でアルゴス・システムのリブートを行う。インターネット再定義のためにアルゴスのタイピング速度が一時的に減じるこの夜だけが、ハッキングで攻撃しうる唯一のチャンスである。アマクダリが再定義を完了させれば、Y2K規模の災厄が再び地表を覆うだろう。その後、アマクダリが全てを支配するのだ。
2038年1月18日深夜にY2Kと同等の災厄が起きる とあります。
これは、「Y2K(2000年問題)」と「2038年問題」という、現実に起こりうる2つの年問題が元ネタになっています。
2000年問題
西暦の下2桁を使って年月を判定するシステムを組んでいると、1999年から2000年になった瞬間に、コンピュータは2000年を1900年を勘違いしてしまい、誤動作してしまうのではないか?という問題です。Y2Kとも呼ばれます。
実際の年月 | データ | コンピュータの認識 |
---|---|---|
1999年11月 | 9911 | 1999年11月 |
1999年12月 | 9912 | 1999年12月 |
2000年1月 | 0001 | 1900年01月 |
くわしくは:2000年問題 - Wikipedia
ニンジャスレイヤーにおける2000年問題
「Y2K……遠い昔の話だな。学校で教わったよ。西暦二千年を迎えた瞬間、世界中でUNIXが多数爆発し、優秀なUNIX技術者が大勢死んだ…」トウメはそう返すのが精一杯だった。「何が起こったのかすら解らないまま、人類はIP資源枯渇に陥り、電子戦争へと突き進んだのよ」ナンシーが返す。 7
— NINJA SLAYER (@NJSLYR) 2013年7月6日
(ニンジャスレイヤー第3部「ダークサイド・オブ・ザ・ムーン」より)
かつて、化石資源枯渇に先立って旧世紀の世界を襲ったのは、Y2Kとそれに伴うIP枯渇問題であった。それから暫くして、限られたIPと違法プロキシサーバ基地を巡り、暗黒メガコーポ群主導による論理物理両面での電子戦争が勃発した。彼女が飛翔している電子領域はいわば、旧世紀の残骸なのだ。 3
— NINJA SLAYER (@NJSLYR) 2012年7月21日
限られたIPと違法プロキシサーバ基地を巡り、暗黒メガコーポ群主導による論理物理両面での電子戦争が勃発した
(ニンジャスレイヤー第2部「キョート・ヘル・オン・アース」より)
ニンジャスレイヤーは近未来の日本を舞台としており、Y2Kは過去の出来事として語られます。 しかし、現実の世界とは異なる点があります。
- ニンジャスレイヤーの世界では、2000年時点でIPv4枯渇問題が解決されていないようで、 固定IPを持つプロキシサーバ等は貴重な資源である
- ニンジャスレイヤーにおけるコンピュータは、バッファオーバーフロー等の不具合が起きると 物理的に爆発する
そのため、以下のように現実世界における2000年問題とは大きく異なる結末を迎えます。
この戦争の影響で日本は電子的に鎖国、独自の発展を遂げることになります。
何度読んでもこの設定を考えた作者は天才だと思います。
2038年問題
2000年問題と似たような問題なのですが、エンジニア以外には理解しづらく、影響範囲が大きいのが、この2038年問題です。
UNIXでは、UNIXTIMEというデータが広く使われています。 UNIXTIMEとは 1970年1月1日からの経過秒数で時刻を表したもの です。
たとえば、2016年6月14日23時30分10秒のUNIXTIMEは、「1465914610」となります。
$ ruby -e 'require "time";puts Time.parse("2016-06-14 23:30:10").to_i' 1465914610
現代のコンピュータは性能が良いので、とても大きな値を取り扱うことができます。 しかし過去のコンピュータでは、このUNIXTIMEを 符号付き32bit整数 で取り扱っていました。
この「符号付き32bit整数」というのは、約21億5千万が最大値となります。 21億5千万というのは大きな数字に見えますが、21億5千万秒は 約68年 です。
そのため、1970年1月1日から約21億5千万秒後、 2038年1月19日3時14分8秒以降、コンピュータが時刻を正しく扱うことができなくなる というのが、2038年問題です。
実際に、先ほどのUNIXTIMEを31桁2進数(符号付き32bit整数の仮数部)で表すと、以下のようになります。
$ ruby -e 'require "time";puts sprintf("%31b", Time.parse("2016-06-14 23:30:10").to_i)' 1010111011000000001010011110010 $ ruby -e 'require "time";puts sprintf("%31b", Time.parse("2038-01-19 12:14:06").to_i)' 1111111111111111111111111111110 $ ruby -e 'require "time";puts sprintf("%31b", Time.parse("2038-01-19 12:14:07").to_i)' 1111111111111111111111111111111 $ ruby -e 'require "time";puts sprintf("%31b", Time.parse("2038-01-19 12:14:08").to_i)' 10000000000000000000000000000000 $ ruby -e 'require "time";puts sprintf("%31b", Time.parse("2038-01-19 12:14:09").to_i)' 10000000000000000000000000000001 $ ruby -e 'require "time";puts sprintf("%31b", Time.parse("2038-01-19 12:14:10").to_i)' 10000000000000000000000000000010
12時14分8秒に桁があふれたのがわかると思います。 (グリニッジ標準時で午前3時14分8秒なので、日本時間では12時となる)
2038年問題自体は、現実世界でも待ち受けている、私たちが立ち向かわなければならない問題です。
くわしくは:2038年問題 - Wikipedia
ニンジャスレイヤーにおける2038年問題
「今から約3ヶ月後。2038年1月18日から19日にかけて。深夜、ウシミツアワー。満月。オールドオーボンの夜」エシオは声の平静を保ち、語った。「鷲の翼が開かれ、地球全土を覆います。その時、世界中のUNIXはオーバーフローを起こし、Y2Kにも比肩する爆発と災厄を引き起こすはずです」
— NINJA SLAYER (@NJSLYR) 2016年5月27日
(ニンジャスレイヤー第3部「スルー・ザ・ゴールデン・レーン」より)
すでに 2038年問題の起きるまさにそのタイミングで、Y2K規模の爆発が起こる であろう事が劇中で指摘されています。
しかしこれが2038年問題による脆弱性なのか、敵組織による何らかの策略により故意に引き起こされる物であるのかはハッキリしていません。
確実なのは UNIXが爆発する ということです。
ルートDNSサーバ
2038年問題について語られると同時に、以下の様なセリフも見られます。
ハッカー達の伝説によれば、ヒエラルキー最上位に位置する神秘的なUNIXサーバがかつて地球全土に13個存在し、幾つかが滅びたという。その残されたひとつがジグラットなのだ。「鷲の翼とアルゴスでインターネットを再統合し、再定義し、支配するのが彼らの狙いです。いかなる犠牲を払おうとも」
— NINJA SLAYER (@NJSLYR) 2016年5月27日
ヒエラルキー最上位に位置する神秘的なUNIXサーバがかつて地球全土に13個存在し、幾つかが滅びたという。その残されたひとつがジグラットなのだ
(ニンジャスレイヤー第3部「スルー・ザ・ゴールデン・レーン」より)
この「ヒエラルキー最上位に位置する神秘的なUNIXサーバ」とは、現実における ルートDNSサーバ が元ネタと思われます。 (ジグラットとはカスミガセキ・ジグラットのこと。ネオサイタマ市役所等を取り込んだ巨大建造物)
実際にルートDNSサーバというのは世界に13個のみ存在し、それを構成するうちのひとつは霞ヶ関から数kmの地点である東京大学にあるそうです。(※実際には地理冗長されているので、サーバ13個=13箇所ではないそうです)
ニンジャスレイヤー第3部の敵組織は、世界中のインターネットを支配するカギを握る何らかのサーバを持っており、2038年問題のタイミングを狙ってなんかするようです。
備えよう。