コンピュータの2038年問題による誤作動で核兵器が発射される!?
今、わたしたちの生活はコンピュータによって支えられています。
あらゆる情報が「0と1」のデジタルによって管理されているのです。
いわゆる「時刻」もその一つですが、実はこれが大きな問題を抱えています。
かつてあった2000年問題を覚えていますでしょうか?
「Y2K」とも呼ばれ、当時は広く話題になりましたが、2038年問題はそれ以上に大きな爆弾として、非常にゆっくりではありますが確実に近づいています。
2038年問題の原因について、理解を深めておきませんか?
スポンサーリンク
なぜ半端な年に起こるのか?
今現在、世界中のコンピュータでは、さまざまなプログラムが動作しています。プログラムを作成する場合「プログラム言語」が必要になるのですが、とりわけ「C言語」が広く使われています。
このC言語の仕様として、時間の計算は「符号付き32桁の2進数」で、「1970年1月1日0時0分0秒」から何秒経過したか、という計算方法が取られています。
例えば、2014年1月1日0時0分0秒であれば、1970年からみて44年後なので、うるう年も考慮すると「01010010110000110101101010000000」という2進数の数字で表すことができます。
これが、2038年1月19日3時14分頃には「10000000000000000000000000000000」となります。符号付き32桁の2進数の場合、32桁目の1は「マイナス」として扱います。
その結果、コンピュータは「現在時刻は1901年12月」という、実時間から大きく外れた判断をしてしまいます。まさにこの瞬間が2038年問題発生の瞬間であり、あらゆるトラブルの発生が予想されているのです。
なぜこのような計算方法が取られたのかは、たまたまそうなったというもののようです。
かつての2000年問題とは?
かつて世間を騒がせた「Y2K」とは、いろいろと似た性質があります。
コンピュータが開発された初期は、プログラムに使用できるメモリの容量が今ほど潤沢ではありませんでした。「1990」年と、4桁で管理するより「90」年とすることで、2桁分のメモリが自由になります。
当時のプログラマーとしては、このテクニックを使わない理由がありませんでした。2000年を迎えれば確実にトラブルが起こるとはわかっていましたが、それも数十年先の話です。それまでになんとかなると思われていました。
2000年当時は、すでにあらゆるインフラがコンピュータにより管理されていました。水道や電気、鉄道などの交通機関もそれに含まれていたため、大きな混乱が予想されていたのです。
実際には対策が十分であったため、小規模な混乱が起こる程度で済みました。しかしこの修正作業にかかった費用は大きく、中小企業などでは大きな痛手となったのは事実です。
スポンサーリンク
2038年問題が、もっと深刻である理由
2000年問題は、アプリケーションレベルでの問題であり、同様にアプリケーション側で解決できていました。しかし2038年問題は、そのアプリケーションが動作するプログラム言語側での問題です。
例えるならば、2000年問題は「家の柱が古くなった」状態であり、2038年問題は「地盤沈下により土台ごと家が崩れてきた」ような状態です。
その対策に関しても、C言語は広く使われていたプログラム言語です。最近のコンピュータであれば対策済みであるものの、大部分のコンピュータでは今も地雷を抱えている状態なのです。
また「符号付き32桁の2進数」で起こるトラブルというのは、さきほど上でも説明したとおり、Y2Kほど単純明快ではありません。Y2Kのように、大きな問題として注目されない可能性もあります。また、中途半端な時間に発生するのも問題といえます。
発生するかもしれないトラブル
もっとも大きなトラブルとして考えられているのは、Y2Kの時にも言われていた「核ミサイルの誤発射」です。
正確にはミサイル警報システムの誤作動です。某国からミサイルが発射され、こちらに向かっているという警報が鳴ったとすれば、すぐにでも反撃の核ミサイルを撃つでしょう。これにより核ミサイル発射の連鎖が起こりうる訳です。
銀行の預金残高が0になる可能性もあるかもしれません。銀行側のシステムからすれば、遠い将来の入出金履歴があるわけで、これらを不正とみなしデータを消してしまう恐れもあります。
世界中の流通システムは、今やコンピュータで管理されています。これら物流が停止し、しばらくは買い物一つできなくなるかもしれません。
問題の解決策とは?
時間の管理を32桁の2進数で行っていたのがそもそもの原因です。32桁では少ないので、これを増やせば良いのです。「場当たり的で解決になっていない」と思われるでしょうか?
32桁の倍である、64桁で管理した場合は、なんと西暦3000億年程度まで余裕ができます。人類の歴史が3000億年先まで続かない、と断言するのは少しさびしいですが、実際には太陽の寿命はもっとずっと短いため、十分な時間と言えます。
2038年は、確実に近づいています。私は専門技術をもっていないため解決に協力はできませんが、この記事を通じて少しでも多くの人にこの事実を知っていただければと思っています。
byヒビタカ
スポンサーリンク