この記事について海外で公開された情報をもとにAIが要約・解説した記事です。原文の翻訳ではありません。正確な内容は記事末尾の出典元をご確認ください。
この記事の要点
  • nts.meta.comがNTS(RFC 8915)に対応し、パケット認証で時刻を検証可能にした
  • サーバはクライアント状態を持たず、クッキー鍵を日付から導出して複製を不要にした
  • プロトコル・サーバ・クライアントをGitHubで公開し、NTPクライアント側の対応も呼びかける

発表内容

Metaは公開時刻サービスにおいて、nts.meta.comでNTS(Network Time Security、RFC 8915)をサポートすると発表した。NTSはパケットを認証する仕組みで、端末は受け取った時刻がMetaから送られたものであり、途中で改変されていないことを確認できる。従来のNTPは認証を持たないため、応答が本物かどうかを検証できなかった。

Metaはプロトコル、サーバ、クライアントをオープンソース化し、MetaのTimeライブラリとしてGitHubで公開した。特にAndroidやiOSでNTPクライアントを保守する開発者に対し、NTS対応を有効にするよう呼びかけている。同社は以前からntpdからchronyへの移行や精度改善(10ミリ秒から100マイクロ秒へ)を進めており、今回の取り組みは精度ではなく検証可能性を高めるものだと位置づけている。

なぜ認証が必要か

NTPは1985年以来、認証を持たないプロトコルだ。しかし証明書、トークン、署名の検証はすべて現在時刻を基準に行われる。TLS証明書のnotBeforeとnotAfterの比較、トークンの有効期限、リプレイ判定の時間窓、ログの相関と順序付けは、いずれも正しい時計を前提とする。ここには循環があり、X.509証明書の有効期間を検証するには現在時刻が必要だが、その時刻自体が認証されていない。

回避策は2つあるが、どちらも良くないとMetaは説明する。時計が設定されるまで検証をスキップする方法は、端末が最も危険な瞬間に無防備になる。発行者がnotBeforeを数分遡り、検証側が許容幅を広げる方法は、互いのずれを推測しているにすぎない。証明書の有効期間が398日あった頃は限定的な問題だったが、CA/Browser ForumのBallot SC-081v3により、公開TLS証明書の上限は2026年3月に200日、2027年3月に100日、2029年3月に47日へと段階的に短縮される。ドメイン検証の再利用期間も同時点で10日まで下がる。

時刻を狙う攻撃の影響は大きい。中間者攻撃は暗号を破る必要がなく、本物のサーバより先に応答するだけで成立する。時計を巻き戻せば失効した証明書が再び有効になり、進めればすべてが一度に失効する。NTPは32ビットの秒フィールドが2036年2月に一周するため、2037年と誤認した端末では補正計算が誤った時代に入り、時計を直す仕組みがかえって遠ざける。保持する証明書はすべて失効してTLSが失敗し、更新サービスにも到達できなくなる。復旧には工場出荷状態へのリセットや修理が必要になる。

NTSの仕組み

NTSは2段階で動作する。第1段階の鍵確立(NTS-KE)はTCP/4460上のTLS 1.3で行い、ALPNとしてntske/1を使う。クライアントとサーバはAEADアルゴリズムを合意し、RFC 5705のエクスポーターでTLSセッションから方向別のセッション鍵(C2SとS2C)を導出する。サーバは8個のクッキーを発行し、サーバネゴシエーションレコードで実際に使うNTPサーバを伝えて接続を閉じる。この処理はパケットごとではなく1度だけ行われる。

第2段階は認証付きNTPで、UDP/123上のNTPv4にNTS拡張フィールドを付けて行う。リクエストは一意な識別子、クッキー、認証子を運び、認証子はそれより前のすべてを対象にするが暗号化はしない。サーバはクッキーを開いてセッション鍵を取り出し、認証子を検証したうえで、識別子を返し、自身の認証子を付けて応答する。この認証子には新しいクッキーが暗号化されて格納される。

偽造パケットは検証に失敗して破棄される。MetaはNTS NAKを送らないため、失敗はパケットロスと区別できず、クライアントに再鍵交換を強制する攻撃には使えない。応答の再生は識別子が一致せず、対応するリクエストが見つからない。交換されるクッキーは応答の認証子の中に入るため、傍受者からは毎回異なる不透明なデータに見え、クライアントをネットワーク間で追跡できない。

ステートレスなクッキー設計

クッキーはサーバの状態をクライアントに預ける仕組みで、セッション鍵をAES-SIVで封印して格納する。素直な実装は全サーバに複製した鍵リングだが、それでは時刻サービスが分散状態の問題になってしまう。Metaは鍵を複製しない方法を選んだ。

各サーバは共有マスタシークレットと現在の日から封印鍵を導出する。ここでの日はUnixエポックからの24時間単位の整数で、タイムゾーンや夏時間の影響を受けず、同じ瞬間ならどのホストでも同じ値になる。この整数はクッキーの鍵IDとして平文で運ばれ、見たことのないクッキーを受け取ったサーバでも鍵を再導出して開ける。ローテーション境界のずれを吸収するため、2日前から1日先までを受け入れる。結果として鍵リング、複製、セッションテーブルが不要になり、鍵交換サーバとNTPサーバは互いに何も交換しない。プレーンなNTP経路は変更されておらず、拡張フィールドが無い場合は従来と同じコードが同じコストで動く。

使い方はchronyなら設定1行だと説明されている。nts.meta.comは鍵交換のみを終端し、サーバネゴシエーションレコードでtime.meta.comを案内するため、設定したホストと実際に通信するホストは異なる。単一のserver行では単一障害点になるため、Metaはpoolの使用を勧める。maxsources個の独立した関連がそれぞれ独自のTLSセッションと鍵を持ち、5つのソースが約20分で立ち上がるという。

防げない攻撃と限界

NTSは遅延攻撃を防がない。RFC 8915にも明記されており、パケットを保持する攻撃者は導入した遅延の半分まで時計をずらせる。すべてのバイトが本物であるため、暗号技術では検出できない。認証が示すのは誰が書いたかであり、どれだけ飛んでいたかではない。対策は複数の独立したソース、健全性チェック、段階制限といった従来の方法になる。

起動時のブートストラップも未解決だ。NTS-KEはTLS上で動き、TLSは正しい時計を要求するため、先ほどの循環が再び現れる。RTCが死んでいる端末でも、最初のハンドシェイク前に概ね正しい時刻を得る必要がある。またNTSは経路を認証するのであって答えを認証するのではなく、正しく設定・認証されたサーバが単に間違っていれば、正しい署名付きの誤った時刻が返る。クォーラムや健全性チェック、監視は依然として必要だとしている。

単調性の問題もある。認証された時刻も壁時計であり、うるう秒や補正で巻き戻ることがある。Cloudflareの権威DNSは2016年末にこれを踏み、うるう秒をまたいで測ったリゾルバの往復時間が負になり、上流の選択に伝播してGoのrand.Int63n()がパニックした。何も偽造されておらず誤配信もなかったが、経過時間を測るコードでは単調時計を使うべきだとMetaは指摘する。

公開TLS証明書の有効期間上限の短縮予定
時期有効期間の上限
従来398日
2026年3月200日
2027年3月100日
2029年3月47日
原文からの引用
So the claim is narrow: An on-path attacker can still delay your packets and can still drop them. What they can no longer do is lie about the contents.

したがって主張は限定的だ。経路上の攻撃者は依然としてパケットを遅延させ、破棄することができる。できなくなったのは、その中身について嘘をつくことだ。

今後の見通し

NTSはRFC 8915として2020年9月にIETFのProposed Standardになっている。Metaはクライアント側の対応を呼びかけており、AndroidやiOSのNTPクライアントが対応すれば、端末の時刻検証が一般的になる可能性がある。判断材料になるのは、主要OSの標準クライアントがNTSを採用するかどうか、そしてnts.meta.comがどの地域から利用できるかだ。証明書の有効期間が2027年3月に100日、2029年3月に47日へ短縮されるにつれ、時刻の正確さだけでなく検証可能性を前提とした運用が求められるとみられる。

日本の開発者・IT企業にとっての意味

日本企業の開発チームにとって、まず影響が大きいのはTLS証明書の有効期間短縮だ。2026年3月に200日、2027年3月に100日、2029年3月に47日へ上限が下がり、更新は無人で回す前提になる。自動更新はホストの時計がずれると静かに失敗するため、時刻の取得経路が攻撃や設定ミスに耐えるかを見直す必要がある。NTSはパケットを認証して時刻の信頼性を高めるが、遅延攻撃や誤ったサーバは防げない。Metaはクライアント側の対応も呼びかけており、サーバ実装とクライアントライブラリはGitHubで公開されているため、自社環境で検証することも可能だ。

気になる点

nts.meta.comは日本からも利用できますか
Metaはnts.meta.comを公開の時刻サービスとして案内しており、原文に地域を限定する記載はない。ただし、どの地域から到達できるかやレイテンシがどの程度かは明記されていないため、実運用で使う場合は自社環境からの到達性を確認する必要がある。設定自体はchronyであれば1行で済むと説明されている。
既存のNTP環境から移行しなければなりませんか
必須ではない。MetaはプレーンなNTP経路を変更しておらず、拡張フィールドが無い場合は従来と同じコードが同じコストで動くと説明している。NTSを使う場合もchronyなら設定1行で、鍵交換の終端ホストと実際に通信するNTPサーバが異なる点に注意が必要だ。未対応のクライアントはそのまま従来のNTPを使い続けられる。
NTSを導入すれば時刻の攻撃は完全に防げますか
防げない範囲が原文に明示されている。遅延攻撃はRFC 8915でも防げないとされ、攻撃者は導入した遅延の半分まで時計をずらせる。認証は経路を示すもので答えの正しさを示さず、正しく認証されたサーバが誤った時刻を返す可能性もある。起動時のブートストラップや壁時計の巻き戻りも残る課題だ。

用語解説

NTS
Network Time Security。RFC 8915で標準化された、NTPのパケットを認証する仕組み。
NTS-KE
NTSの鍵確立フェーズ。TCP/4460上のTLS 1.3でセッション鍵とクッキーを交換する。
AEAD
暗号化と認証を同時に行う方式。NTSではパケットの改変検出に使われる。
AES-SIV
クッキーの封印やパケット認証に使われるAEAD。RFC 8915で実装必須とされる。
chrony
NTPの実装の一つ。Metaはntpdからchronyへ移行したと説明している。
ACME
証明書を自動で発行・更新するプロトコル。短命な証明書の無人更新で使われる。

出典

NTS: Authenticated Time at Meta

Meta / 2026年10月7日

https://engineering.fb.com/2026/10/06/production-engineering/nts-authenticated-time-at-meta

AI導入も顧問も、お任せください

何から手をつけるか、どこまでAIに任せるか。自社の業務に合わせて整理し、導入から運用まで伴走します。相談だけでも構いません。

AI導入について相談する