2015年11月23日月曜日

パソコンは、2036年までしか使えない?

https://gakumado.mynavi.jp/gmd/articles/23008 

ニュースや通販はもちろんのこと、病院の予約にも使われているインターネット。 
今では生活に欠かせない存在となっているが、2036年に崩壊するかもしれないのはご存じだろうか? 
コンピュータ内の「時計」はネットワーク経由で正しい時刻を知る仕組みになっているが、 
現在のシステムでは2036年までしか対応できず、これを過ぎると1900年に戻り不具合を起こす可能性が高い。 
この問題が解決されても、2年後にはソフトウェアの2038年問題が待ち構えているので、なにが起きてもフシギではないのだ。 

■インターネットの時計は「19世紀」仕様! 

パソコンやスマホの時計はNTP(ネットワーク・タイム・プロトコル)を利用するのが一般的で、これは自動で時刻を修正する「電波時計」と同じような仕組みで、 
 ・NTPサーバから「標準時刻」の情報をもらう 
 ・その情報をもとに、自分の時計を修正する 
が定期的におこなわれている。パソコン自体にもRTC(リアル・タイム・クロック)と呼ばれる時計機能を持っているので、 
かりに1ヶ月使わなくても日付は狂わない。ただし精度はイマイチなので、1日?1週間に1回ほどNTPを利用して 
自動修正している。Windowsでは「インターネット時刻」と表現されるのはこのためだ。大変便利な機能だが、 
NTPは2036年に「上限」を迎え、正常に機能しなくなる。現在の仕組みでは、パソコンやスマホの日付が1900年1月1日に戻ってしまうのだ。 

NTPをカンタンに説明すると、 
 ・1900年1月1日0時0分0秒が基準(=スタート時刻) 
 ・1秒ごとにカウンタが1加算される 
 ・カウンタは32ビット=4,294,967,295まで 
仕様になっている。つまり設計の段階から、 
 ・1900年1月1日0時0分0秒 + 4,294,967,295秒 = 2036年2月6日6時28分15秒 
までしか管理できない仕組みになっているのだ。 

カウンタが上限値を超えたらどうなるのか? 考えられるシナリオは、 
 ・カウンタが0に戻る 
・ケタが足りないのでエラーが起きる 
の2通りで、前者を逆手にとって、カウンタがゼロになったらスタート時刻を2036年2月6日6時28分16秒に変更し、 
そのまま継続して使える方法も試されている。ただし後者は深刻で、「存在しないケタ」に繰り上がろうとするのだから、 
どんなエラーが起きてもフシギではない。NTPを利用しているのはサーバやネットワーク機器も同じなので、 
通販やニュース・サイトだけでなく、インターネット・バンキングや電話交換システムが正常に作動しなくなる可能性もあるのだ。 

■ハードもソフトも全て交換が必要? 

2036年問題が解消されても、次に待っているのは2038年問題だ。これはソフトウェアに起因し、 
古い開発言語で作られたプログラムで起きる可能性がある。NTPと比較すると、 
 ・1970年1月1日0時0分0秒が基準(=スタート時刻) 
 ・1秒ごとにカウンタが1加算される 
 ・カウンタは実質31ビット=2,147,483,647まで 
のため、2038年1月19日午前3時14分8秒(世界標準時)で限界を迎える。ネットもパソコンも存在しない 
1900年を基準にするよりは現実的だが、団体が違っても規格は統一しませんか?と言いたい。 
3ヶ月も経つと新製品が登場するハードウェアとは異なり、ソフトウェアはライフサイクルが長く、 
細部を修正しながら10年以上も使われるケースが少なくない。去る2000年問題のように「大騒ぎにならなかった」で済めば良いが、 
個人で対処できる要素は「ほぼ」ないので、規格や対応にヌケがないことを祈ろう。 
■まとめ 
 ・現在の「インターネット時刻」のシステムは、2036年2月6日に限界を迎える 
 ・古いプログラムは、2038年1月19日以降にエラーが起きる可能性・大 

0 コメント:

コメントを投稿