3.
ミルズの最も熱心な協力者は、ハーラン・ステン(Harlan Stenn)というプログラマーでした。1956年に生まれ、シカゴ郊外で育ったステンは、高校時代にコンピューターに夢中になりました。彼は言いました、「プログラミングをする際には、プログラムが正しく書けているか否かということが、イエスかノーで明確に分かります。そういうところが、私にはとても合っていたんだと思います。」と。彼は、NTPプロトコルの改善に1990年代初頭から貢献するようになりました。彼は、システム管理者がさまざまなデバイス間で時刻の同期ができやすくする改善提案をしました。ステンはその提案を苦心の末に実現させた後、ミルズから彼にバグレポート(bug report)のバックログを見るよう依頼されました。
1990年代半ばになると、ミルズはステンにプロトコルをバージョンアップする際のコーディングを任せるようになりました。ステンは、保険会社で働き始めたのですが、そこではシステム障害対応を主に担当していました。彼は勤務時間のほとんどを NTPのコードを書くことに費やすようになりました。しかし、それから10年後、2人はしばしば衝突するようになりつつありましたが、ステンはミルズの許可を得て、NTPのリファレンス実装(reference implementation)の全権を握ることになりました。2人は何十年も協力してきましたが、直接会ったことはありませんでした。その代わり、ステンはミルズが蓄積していた資料を調べたり、電話でコーディングについて話し合ったりすることに計り知れない時間を費やしました。ステンはNTPの複雑な機能を理解するのに苦労することが時々あったので、ミルズのことを「超天才」と思っていたそうです。振り返るとNTPプロトコルに対して多大な貢献をした者が数十人ほどいたわけですが、ほとんどの人が10数年で去っていきました。しかし、ステンは今でもNTPに携わっています。彼は、2010年にNetflix社で1つのプロジェクトを片付けた後、2年間のサバティカル(sabbatical :研究休暇)を取って、NTPのメンテナンスに専念しています。それ以来、フルタイムの仕事はしていません。
数十億ドル規模のテクノロジー企業でさえも、NTPを含むオープンソースコードに依存しています。重要なオープンソースコードのメンテナンスは、しばしば無給で働くこともある個人やグループによって担われているのです。オープンソースコードのメンテナンスの世界のことを記した著作「Working in Public(未邦訳)」の中で、作家のナディア・エグバール(Nadia Eghbal)は、「かつてないほど多くの人々がオープンソースコードを使用しているにもかかわらず、それを開発し維持している者たちは自分たちが創出した経済的価値の対価を受け取ることができていません。」と指摘しています。インターネットのテクノロジーは常に変化しているので、オープンソースコードは常に何か修正する必要があります。そのため、広く普及しているオープンソースコードのメンテナンスは、無給であるのに、止めることができないのです。ステンが私に言っていたのですが、NTPプロトコルに依存している企業からプロトコルの改善要望が来ることがあるそうです。そうした企業は、NTPに依存したシステムを使って顧客にサービスを提供して収益をあげているわけですが、決してステンに見返りとして報酬を支払うことはありません。ですので、ステンたちは常に資金確保に苦労しなければなりません。2011年に彼はネットワーク・タイム基金(Network Time Foundation)を設立しました。さまざまな時刻同期システムに取り組む人たちの組織化を目指したものでした。この基金に、主に寄付によって年間約30万ドルの資金が集まりました。その資金で、ステンは、パートタイム数人を雇い、インターネット利用料、電気代などを払っています。一部は彼の食費にもなっています。現在、彼は66歳ですが、退職後の貯蓄を使い果たしたと言っていました。
NTPを悩ませている問題はバグだけではありません。2011年には、アメリカ海事天文台のNTPサーバーに膨大なタイム要求(time request)が殺到し、9時間半にわたってサーバーがオフラインになる事態が発生しました(おそらく中国の諜報機関の仕業であると推測されています)。2014年には、NTPのコマンド機能を悪用する事例が頻発しました。いわゆるDDoS攻撃(Distributed Denial of Service:インターネット上のトラフィックを増大させ、通信を処理しているネットワーク回線やサーバーの機能を占有する帯域飽和型のサイバー攻撃)を仕掛けられ、多くのゲームプラットフォームがサービスを一時的に停止させるという事態が発生していました。NTPサーバは、このような攻撃をする際に悪用されることが多くなりました。NTPサーバを悪用したDDoS攻撃が、コンテンツ・デリバリ・ネットワークやインターネット・セキュリティサービスを提供するクラウドフレア(Cloudflare)社のクライアントに対して行われ、インターネット史上最大規模のDDoS攻撃の1つとなりました。このような出来事がきっかけとなり、NPTの競争相手が出現する事態となりました。NTPsecが、その1つです。これは、オープンソースコードで、それほど多くない人数でコーディングしているようです。現在、開発責任者はエリック・S・レイモンド(Eric S. Raymond)が務めています。コードの行数が少ないほど脆弱性が少ないという理由から、NTPのコードの大部分が大胆にカットされています。もう1つの競争相手は、クロニー(Chrony)です。コードをゼロから書いていて、少ないデータで時刻を素早く同期することを最優先しています。あまり使われないオペレーションモードは省かれました。このクロニーは、ステンが魔法使い(wizard)と評したチェコの開発者ミロスラフ・リフヴァル(Miroslav Lichvar)が現在もメンテナンスを続けています。
また、もっと本質的な懸念もあります。地球の自転速度は、地下深部の動き、隆起やマグマの生成などによる地殻の変動、海流の変動などさまざまな大気的・地質的要因によって影響を受けています。これらの影響力が合わさって、歴史的に見ると地球の自転速度は僅かに遅くなりつつあります。7000万年前には、1日(地球が自転する期間)は23.5時間で、1年(地球が太陽の周りを1周する期間)は372日でした。また、1日の長さは月ごとに、季節ごとに、年ごとに、ごくわずかながら変動しています。この不規則性は、20世紀初頭には認識されていたのですが、正確な時間を定める者たちの間で悩みの種となっていました。その後の数十年で、特定の原子の挙動が不変であることを利用した原子時計がマスタークロックとして使われるようになったのですが、さらなる問題が発生しました。1日の長さ(地球が自転する期間)が変動するので、正確に秒を刻む原子時計と差が出てしまい、これにより、原子によって伝えられる時間と天文学によって測られる時間との間に差が出てしまうのです。
この問題に対処するため、世界の主要な計時機関は1972年から、地球の自転速度が低下して原子時計が記録する時刻と1秒のずれが生じた場合に、1秒の「うるう秒(leap seconds)」を挿入し、天文学から測る時刻と電子時計を合わせる調整をするようになりました。これまで37回のうるう秒がありました。ミルズはNTPのコーディングをする際に、それに対応するため、特定の秒を2回カウントするようにしました。しかし、一部のプログラマーは、こうしたうるう秒というものが存在していることを知らなかったと思われるのですが、うるう秒をプロトコルに反映させることをしていませんでした。2005年にはグーグル社の技術者たちが、そうしたうるう秒対応の不首尾があると自社のシステムの一部が影響を受ける可能性があることに気づきました。グーグル社のセキュリティ担当の技術者の1人であるジェイミー・ウィルキンソン(Jamie Wilkinson)は言いました、「当社のセキュリティ担当の技術者の誰かが時間が逆戻りしたのに気付くでしょう。そうすると、プログラムをシャットダウンするしかありません。たとえ僅かでもユーザーのデータを破壊するリスクがあると感じられたら、プログラムがシャットダウンすることを選ばざるを得ないのです。」と。
グーグル社は自社でNTPのうるう秒の問題への対応に着手しました。グーグルの技術者は、独自のアプローチをとってしまいました。ミルズのように特定の秒を2回カウントするアプローチは取りませんでした。グーグル社のシステムでは一定の期間だけ秒の長さを変えるという対応をとったのです。つまり、その間は各秒に数ミリ秒をたして1秒の長さを長くしたのです。1秒時間を遅らせるために、その1秒を細かく分解して他の秒にまぶす形にしたのです。2008年にグーグル社はこの手法を初めて社内システムに導入しました。ちなみに、この手法はリープ・スミアリング(Leap smearing)と呼ばれています。2016年には、グーグル社はNTPサーバーを介して、自社外のインターネットにもリープ・スミアリングを導入しました。
グーグル社は、リープ・スミアリングを奇妙な問題を解決する便利で賢い解決策だと考えています。しかし、うるう秒の問題に対応するために2つの手法が同時に存在することは、混乱を招く可能性がないわけではありません。もし、1つのデバイスが時刻を同期しようとして2つの情報源を参照して、それぞれの示す時刻に違いがあると、どちらが正しい時間(トゥルーチャイマー:truechimer)で、どちらが誤った時間(ファルスティッカー:falseticker)かを識別するのが困難です。結果的に間違った時刻に同期されてしまう可能性もあります。けれども、AmazonやFacebookなどもグーグル社同様にリープ・スミアリングを導入し始めています。多くの利用者がいるわけですから、本当に問題が無いのかということをチェックして欲しいものです。
1969年からアメリカ国立標準技術研究所(NIST)に勤務する物理学者のジュダ・レヴァインは、それらのハイテク企業を批判しました。「彼らは全員、夕食抜きで寝床に行くべきだ。」と、言っていました。レヴァインは数十年にわたって、NIST独自の時刻同期プロトコルを管理しています。彼は数人の同僚と協力して、NISTのマスタークロックを協定世界時と照合する責任を負っています。常に10億分の1秒以内の誤差を保っています。もし、多くの企業がうるう秒を嫌うのであれば、うるう秒を廃止する権限を持つ国際的な機関を通じて変更を働きかけるべきだったとレヴァインは指摘しています。レヴァイン自身は、うるう秒のない世界を望んでいます。アメリカ政府は彼の協力を得て、コンピューターシステムのためにうるう秒を廃止することを提案しています。しかし、多くの天文学者や他の国々の政府からは異論が出ているようです。うるう秒に関する次の正式な議論の機会は2023年までありません。しかし、既に活発に議論されているそうです。レヴァインは言いました、「うるう秒を廃止するにしても、踏まなければならないプロセスがたくさんあるのです。それが気に入らないからといって、勝手に止めてしまって、他に影響が出ても知らないというわけにはいかないということです。」と。また、レヴァインは、時刻同期の仕組みに精通していて、ナノ秒よりさらに細かな単位で時間を観察する世界有数の物理学者ですが、時刻の同期が正しくできないということは、大きな問題に発展する可能性があると指摘しています。たしかに、メールやメッセージの送信時刻や株式売買注文の時刻が正しく認識できないとなれば、法的な問題に発展する可能性が無いとは言えません。
一方、地球の自転は、近年、遅くなるどころか、速くなっています。その原因は不明です。半世紀前に1日の長さを測り始めたのですが、今年は最も短い1日を観測しました。この状況が続けば、うるう秒を1秒増やす代わりに、1秒を削る必要が出てくるかもしれません。