| 国際標準 | RFC 5905 |
|---|---|
| 開発者 | デビッド・L・ミルズ、ハーラン・ステン、ネットワークタイム財団 |
| 紹介された | 1985年 |
ネットワーク タイム プロトコル( NTP ) は、パケット交換型の可変遅延データ ネットワーク上のコンピュータ システム間のクロック同期のためのネットワーク プロトコルです。1985 年より前から運用されている NTP は、現在使用されている最も古いインターネット プロトコルの 1 つです。NTP は、デラウェア大学のDavid L. Millsによって設計されました。
NTP は、参加しているコンピュータを協定世界時(UTC)から数ミリ秒以内に同期することを目的としています。 [1] : 3 これは、正確なタイムサーバーを選択するために、 Marzullo のアルゴリズムの修正版である交差アルゴリズムを使用し、変動するネットワーク遅延の影響を軽減するように設計されています。NTP は通常、パブリックインターネット上で数十ミリ秒以内に時間を維持でき、理想的な条件下ではローカルエリアネットワークで 1 ミリ秒以上の精度を達成できます。非対称ルートとネットワークの輻輳により、100 ミリ秒以上の誤差が発生する可能性があります。[2] [3]
このプロトコルは通常、クライアント・サーバー・モデルの観点から説明されますが、両方のピアが相手を潜在的な時間ソースと見なすピアツーピア関係でも簡単に使用できます。 [1] : 20 実装は、ポート番号123でユーザーデータグラムプロトコル(UDP)を使用してタイムスタンプを送受信します。 [4] [5] : 16 また、ブロードキャストまたはマルチキャストを使用することもできます。この場合、クライアントは、最初の往復の調整交換の後、受動的に時間の更新をリッスンします。[3] NTP は、迫っているうるう秒調整の警告を提供しますが、ローカルタイムゾーンや夏時間に関する情報は送信されません。[2] [3]
現在のプロトコルはバージョン4(NTPv4)[5]であり、バージョン3と下位互換性があります。[6]
NTPパケットヘッダー形式
- LI (リープインジケーター): 2 ビット
- うるう秒の挿入または削除に関する警告:
- 0 = 警告なし
- 1 = 最後の1分は61秒です
- 2 = 最後の1分は59秒
- 3 = 不明(クロックが同期されていない)
- VN (バージョン番号): 3 ビット
- NTP バージョン番号。通常は 4。
- モード: 3 ビット
- 関連付けモード:
- 0 = 予約済み
- 1 = 対称アクティブ
- 2 = 対称パッシブ
- 3 = クライアント
- 4 = サーバー
- 5 = 放送
- 6 = コントロール
- 7 = プライベート
- 階層: 8 ビット
- 基準クロックからの距離を示します。
- 0 = 無効
- 1 = プライマリサーバー
- 2~15 = 二次
- 16 = 同期されていない
- 投票: 8 ビット
- 連続メッセージ間の最大間隔(log₂(秒)単位)。通常の範囲は 6 ~ 10 です。
- 精度: 8 ビット
- システムクロックの精度の符号付きlog₂(秒) (例: –18 ≈ 1 マイクロ秒)。
- ルート遅延: 32 ビット
- 参照クロックまでの合計往復遅延(NTP 短縮形式)。
- ルート分散: 32 ビット
- 参照クロックまでの総分散(NTP 短縮形式)。
- 参照ID: 32ビット
- 特定のサーバーまたは参照クロックを識別します。解釈は Stratum によって異なります。
- 参照タイムスタンプ: 64 ビット
- システム クロックが最後に設定または修正された時刻 (NTP タイムスタンプ形式)。
- オリジンタイムスタンプ (org): 64 ビット
- リクエストが送信されたときのクライアント側の時刻(NTP タイムスタンプ形式)。
- 受信タイムスタンプ (rec): 64 ビット
- リクエストが到着したサーバーの時刻(NTP タイムスタンプ形式)。
- 送信タイムスタンプ (xmt): 64 ビット
- 応答が送信されたときのサーバーの時刻(NTP タイムスタンプ形式)。
- 拡張フィールド: 変数
- NTP拡張のためのオプションフィールド([5]、セクション7.5を参照)。
- キー識別子: 32 ビット
- クライアントとサーバーが共有する MD5 キーを指定する符号なし整数。
- メッセージダイジェスト(MD5):128ビット
- 認証に使用される、パケット ヘッダーと拡張フィールドをカバーする MD5 ハッシュ。
歴史

1979年、ニューヨークで開催された全米コンピュータ会議で、大西洋を横断する衛星ネットワーク上で稼働するインターネットサービスのおそらく最初の公開デモンストレーションで、ネットワーク時刻同期テクノロジが使用されました。このテクノロジは後に1981年のインターネット エンジニアリング ノート (IEN) 173 [18]で説明され、そこから公開プロトコルが開発され、RFC 778 に文書化されました。このテクノロジは、Hello ルーティング プロトコルの一部として最初にローカル エリア ネットワークに導入され、ネットワーク プロトタイピングで使用される実験的なオペレーティング システムであるFuzzball ルーターに実装され、長年にわたって稼働しました。
関連するネットワークツールは当時も今も利用可能である。イベントの時刻を記録するためのDaytimeプロトコルとTimeプロトコル、 ICMP タイムスタンプメッセージ、IP タイムスタンプオプション ( RFC 781) などがある。NTP のデータ分析とクロック規律アルゴリズムはないものの、より完全な同期システムには、選出アルゴリズムを使用してすべてのクライアントにサーバーを割り当てる Unix デーモンtimedがある。 [19]と、 NTP ストラタムモデルに似たサーバーの階層を使用するDigital Time Synchronization Service (DTSS) がある。
1985 年に、NTP バージョン 0 (NTPv0) が Fuzzball と Unix の両方に実装され、NTP パケット ヘッダーと往復遅延およびオフセットの計算 (NTPv4 にも引き継がれています) がRFC 958 に文書化されました。当時利用可能なコンピュータとネットワークは比較的低速でしたが、大西洋をまたぐリンクでは通常 100ミリ秒を超える精度が得られ、イーサネットネットワークでは数十ミリ秒の精度が得られました。
1988年、NTPv1プロトコルのより完全な仕様と関連アルゴリズムがRFC 1059で公開されました。これは、 RFC 956 に記載されている実験結果とクロックフィルタアルゴリズムに基づいており、クライアントサーバーモードとピアツーピアモードを説明した最初のバージョンでした。1991年、NTPv1のアーキテクチャ、プロトコル、アルゴリズムは、 IEEE Transactions on CommunicationsにDavid L. Millsが論文を発表したことで、より広いエンジニアリングコミュニティの注目を集めました。[20]
1989年にRFC 1119が発行され、NTPv2を状態マシン で定義し、その動作を記述する疑似コードが付属しました。このRFCでは管理プロトコルと暗号化認証方式が導入され、これらはアルゴリズムの大部分とともにNTPv4にも引き継がれました。しかし、NTPv2の設計はDTSSコミュニティから形式的な正確さに欠けると批判され、クロック選択手順はNTPv3以降ではMarzulloのアルゴリズムを組み込むように変更されました。[21]
1992 年、RFC 1305 で NTPv3 が定義されました。RFC には、参照クロックから最終クライアントまでのすべてのエラー ソースの分析が含まれており、複数の候補が一致しないように見える場合に、最適なサーバーを選択するのに役立つメトリックの計算が可能になりました。ブロードキャスト モードが導入されました。
その後、新機能が追加され、アルゴリズムの改良が行われたため、新しいプロトコルバージョンが必要であることが明らかになりました。[22] 2010年に、 NTPv4の仕様案を含むRFC 5905が公開されました。 [23]ミルズがデラウェア大学を退職した後、リファレンス実装は現在、ハーラン・ステンが率いるオープンソースプロジェクトとして維持されています。 [24] [25] IANA側では、ntp(ネットワークタイムプロトコル)作業グループが提案されたドラフトのレビューを担当しています。[26]
このプロトコルはNTPv4から大幅に進歩しました。[23] 2022年現在[update]、プロトコルの更新を説明する3つのRFC文書が公開されています。[15] [16] [17]ただし、ネットワークタイムセキュリティなどの多数の周辺標準[26]は除きます。 [27]ミルズは自分のページで「NTPv5」の計画について言及していましたが、公開されることはありませんでした。[23] chronyのM. Lichvarによって「NTPv5」と呼ばれる無関係なドラフトが2020年に開始され、セキュリティ、精度、スケーリングの変更が含まれています。[28]
SNTP
NTP が古いタイムプロトコルの使用に取って代わったにもかかわらず、一部のユースケースでは完全なプロトコルが複雑すぎると感じられました。1992 年に、このニッチを埋めるためにシンプルネットワークタイムプロトコル( SNTP ) が定義されました。SNTPv3 標準では、長期間の状態の保存が不要な NTPv3 の使用方法が説明されています。トポロジは基本的にタイムプロトコルと同じになり、サーバーは 1 つだけ使用されます。 [10] 1996 年に、SNTP は当時開発中だった NTPv4 の一部の機能を備えたSNTPv4 [12]に更新されました。SNTPv4 の現在のバージョンは、2010 年にメインの NTPv4 標準に統合されました。 [5] SNTP は新しいプロトコルを定義していないため、NTP と完全に相互運用可能です。[29] : §14 ただし、単純なアルゴリズムでは時間の精度が低下するため、SNTP ソースから時間を同期することはお勧めできません。[13]
時計層


NTP は、階層的で半階層化されたタイム ソース システムを使用します。この階層の各レベルはストラタムと呼ばれ、最上位の参照クロックに対して 0 から始まる番号が割り当てられます。ストラタムnサーバーに同期されたサーバーは、ストラタムn + 1 で実行されます。この番号は参照クロックからの距離を表し、階層内での循環的な依存関係を防ぐために使用されます。ストラタムは必ずしも品質や信頼性を示すものではありません。ストラタム 3 のタイム ソースが他のストラタム 2 のタイム ソースよりも高品質であることはよくあります。[a]ストラタム 0、1、2、3 の簡単な説明を次に示します。
- 階層0
- これらは、原子時計、GNSS(GPSを含む)やその他の電波時計、またはPTP同期時計などの高精度の計時デバイスです。 [30]これらは、接続されたコンピュータで割り込みとタイムスタンプをトリガーする非常に正確な毎秒パルス信号を生成します。ストラタム0デバイスは、リファレンスクロックとも呼ばれます。NTPサーバーは、ストラタム0として自分自身をアドバタイズすることはできません。NTPパケットでストラタムフィールドが0に設定されている場合は、未指定のストラタムを示します。[5] : 21
- 層 1
- これらは、接続されたストラタム0デバイスと数マイクロ秒以内にシステム時刻が同期されているコンピュータです。ストラタム1サーバーは、健全性チェックとバックアップのために他のストラタム1サーバーとピアリングする場合があります。[31]これらはプライマリタイムサーバーとも呼ばれます。[2] [3]
- 層2
- これらは、ネットワーク経由で Stratum 1 サーバーに同期されるコンピューターです。多くの場合、Stratum 2 コンピューターは複数の Stratum 1 サーバーにクエリを実行します。Stratum 2 コンピューターは、他の Stratum 2 コンピューターとピアリングして、ピア グループ内のすべてのデバイスに、より安定した堅牢な時間を提供することもできます。
- 層3
- これらは、Stratum 2 サーバーに同期されたコンピューターです。ピアリングとデータ サンプリングには Stratum 2 と同じアルゴリズムが採用されており、それ自体が Stratum 4 コンピューターのサーバーとして機能するなど、さまざまな機能を備えています。
ストラタムの上限は15です。ストラタム16はデバイスが同期されていないことを示すために使用されます。各コンピュータのNTPアルゴリズムは、ベルマンフォード最短パススパニングツリーを構築するために相互作用し、すべてのクライアントのストラタム1サーバーへの累積ラウンドトリップ遅延を最小限に抑えます。[1] :20
プロトコルは、stratum に加えて、参照識別子 (refid) に基づいて各サーバーの同期ソースを識別することができます。
ストラタム2以下のサーバーの場合、refidは上流タイムサーバーのIPアドレスをエンコードした形式です。IPv4の場合、これは単に32ビットのアドレスです。IPv6の場合、これはソースアドレスのMD5ハッシュの最初の32ビットになります。refidは、タイミングループを第一に検出して防止するために使用されます。[5]
キス・オ・デス(KoD)パケットの場合、refidフィールドにはステータスワードが入ります。これは、サーバーが休止できるようにクライアントにリクエストの送信を停止するように指示するものです。[5]例としては、INIT(初期化)、STEP(ステップ時間の変更)、RATE(クライアントのリクエストが速すぎる)などがあります。[33]プログラム出力では、パケットで送信されなかったコードを使用してエラーを示すこともあります。たとえば、ネットワークの切断を示すXFACなどです。[32]
IANAはrefidソース名とKoDコードのレジストリを管理しています。非公式の割り当てがまだ存在する可能性があります。[34]
タイムスタンプ
NTP が使用する64 ビットのバイナリ固定小数点タイムスタンプは、32 ビットの秒部分と 32 ビットの小数秒部分で構成されており、2 32秒 (136 年) ごとにロールオーバーする時間スケールと、2 −32秒 (233 ピコ秒)の理論的な解像度を提供します。NTP は 1900 年 1 月 1 日をエポックとして使用します。したがって、最初のロールオーバーは 2036 年 2 月 7 日に発生します。[35] [36]
NTPv4 では、128 ビットの日付形式が導入されています。64 ビットが秒、64 ビットが小数秒です。この形式の最も重要な 32 ビットは、ほとんどの場合にロールオーバーの曖昧さを解決する紀元番号です。[37]ミルズによると、「小数部の 64 ビット値は、光子が光速で電子を通過するのにかかる時間を解決するのに十分です。64 ビットの秒値は、宇宙が暗くなるまで明確な時間表現を提供するのに十分です。」[38] [b]
クロック同期アルゴリズム

典型的なNTPクライアントは、1つ以上のNTPサーバーを定期的にポーリングします。クライアントは、時間オフセットと往復遅延を計算する必要があります。時間オフセットθは、2つのクロック間の絶対時間の差が正または負(クライアント時間>サーバー時間)です。これは次のように定義されます。
そして 往復遅延δは
- t 0 はクライアントのリクエストパケット送信のタイムスタンプです。
- t 1はリクエストパケット受信時のサーバーのタイムスタンプです。
- t 2は、応答パケットの送信時のサーバーのタイムスタンプであり、
- t 3はクライアントの応答パケット受信のタイムスタンプである。[1] : 19
オフセットの式を導出するには、要求パケット と応答パケットについて、 θ を解くと時間オフセットの定義が得られることに注意してください。
θとδの値はフィルターに通され、統計分析(「緩和」)にかけられます。外れ値は破棄され、残りの 3 つの候補から時間オフセットの推定値が導出されます。次に、クロック周波数が調整され、オフセットが徐々に減少し(「規律」)、フィードバック ループが作成されます。[1] : 20
正確な同期は、クライアントとサーバー間の着信ルートと発信ルートの両方が対称的な公称遅延を持つ場合に達成されます。ルートに共通の公称遅延がない場合、前方と後方の移動時間の差の半分の系統的バイアスが存在します。非対称性を測定するためにいくつかのアプローチが提案されていますが[39]、実用的な実装の中ではchronyだけが1つを組み込んでいるようです。[40] [41]
ソフトウェア実装

ntpqのNTP 管理プロトコル ユーティリティは、Stratum 1 タイム サーバーの状態を照会し、クライアントの適切な動作を確認するために使用されます。リファレンス実装
NTPリファレンス実装は、プロトコルとともに 20 年以上にわたって継続的に開発されてきました。新機能が追加されても、下位互換性は維持されてきました。この実装には、特にクロックを規律するためのいくつかの繊細なアルゴリズムが含まれており、異なるアルゴリズムを使用するサーバーと同期すると誤動作する可能性があります。このソフトウェアは、パーソナル コンピューターを含むほぼすべてのコンピューティング プラットフォームに移植されています。Unixではntpdと呼ばれるデーモンとして、Windows ではサービスとして実行されます。リファレンス クロックがサポートされており、そのオフセットはリモート サーバーと同じ方法でフィルター処理および分析されますが、通常はより頻繁にポーリングされます。[1] : 15–19 この実装は 2017 年に監査され、14 件の潜在的なセキュリティ問題が見つかりました。[42]
ウィンドウズタイム
Windows 2000以降のすべてのMicrosoft Windowsバージョンには、コンピュータの時計をNTPサーバーに同期する機能を備えた Windowsタイムサービス(W32Time)[43]が含まれています。
W32TimeはもともとKerberosバージョン5認証プロトコルの目的で実装されました。このプロトコルでは、リプレイ攻撃を防ぐために正しい値から5分以内の時間を要求していました。Windows 2000 Server(およびWindows XP)のネットワークタイムサーバーはNTP規律同期を実装しておらず、NTP/SNTP補正によるローカル規律同期のみを実装しています。[44]
Windows Server 2003およびWindows Vista以降、W32TimeのNTPプロバイダーはNTPv3の重要なサブセットと互換性を持つようになりました。[45] Microsoftは、W32Timeは1秒の精度で時刻同期を確実に維持できないと述べています。[46]より高い精度が必要な場合は、Microsoftは新しいバージョンのWindowsまたは別のNTP実装を使用することを推奨しています。[47]
Windows 10バージョン1607およびWindows Server 2016以降では、W32Timeは特定の動作条件下で1秒、50ミリ秒、または1ミリ秒の時間精度に達するように構成できます。[48] [46] [49]
オープンNTPD
2004年、OpenBSDのHenning Brauerは、セキュリティを重視し、権限を分離した設計を取り入れたNTPv3/SNTPv4 [50]実装であるOpenNTPDを発表しました。これは、OpenBSDユーザーのよりシンプルで一般的なニーズに焦点を当てていますが、既存のNTPサーバーとの互換性を保ちながら、いくつかのプロトコルセキュリティの改善も含まれています。コードベースがシンプルになったことで、このユースケースでは不必要であると見なされた精度が犠牲になっています。[51]ポータブルバージョンは、Linuxパッケージリポジトリで入手できます。
NTPsec
NTPsec は、体系的にセキュリティが強化されたリファレンス実装のフォークです。フォークポイントは 2015 年 6 月で、2014 年の一連の侵害に対応して行われました。[52]最初の製品リリースは 2017 年 10 月に出荷されました。[53]安全でない機能の削除、旧式のハードウェアのサポートの削除、旧式の Unix バリアントのサポートの削除により、NTPsec は元のコードベースの 75% を削減することができ、残りの監査が容易になりました。[54] 2017 年のコード監査では、元のリファレンス実装には存在しなかった 2 つを含む 8 つのセキュリティ問題が見つかりました。ただし、NTPsec はリファレンス実装に残っていた他の 8 つの問題に悩まされることはありませんでした。[55]
クロニー

chrony は、主にRed Hatがスポンサーとなっている独立した NTP 実装で、同社のディストリビューションではデフォルトのタイム プログラムとして使用されています。[56]ゼロから作成された chrony は、よりシンプルなコードベースで、セキュリティが向上し、 [57]リソース消費が少なくなっています。[58]ただし、精度に妥協はなく、多くの状況でリファレンスの ntpd よりも高速かつ優れた同期を実現します。不安定でスリープ モードになったり、インターネットへの接続が断続的になる一般的なコンピューターにも十分対応できます。また、より不安定な環境である仮想マシン向けにも設計されています。[59]
chrony は、ほんの数件の事故しか発生していないことから、「信頼できる」と評価されています。[60]ネットワークアダプタのハードウェアタイムスタンプを使用することで、LAN 接続の精度を向上させることができます。 [40]ネットワークタイムセキュリティ (NTS) のサポートはバージョン 4.0 で追加されました。[61] chrony はGNU General Public License バージョン 2で利用可能で、1997 年に Richard Curnow によって作成され、現在は Miroslav Lichvar によって保守されています。[58]
ntpd-rs

ntpd-rs は、NTP プロトコルのセキュリティ重視の実装であり、メモリ安全なインターネット インフラストラクチャの作成を目的とした Prossimo イニシアチブの一環としてInternet Security Research Groupによって開発されました。ntpd-rs はRust プログラミング言語で実装されており、 NTP 実装に必要なリアルタイム コンピューティング機能に加えて、メモリの安全性保証も提供します。ntpd-rs は、 Lets Encrypt非営利認証局などのセキュリティに敏感な環境で使用されます。[62] NTS のサポートが利用可能です。[63] ntpd-rs は、 Precision Time Protocol実装「statime」も含まれる「Pendulum」プロジェクトの一部です。両方のプロジェクトは、 ApacheおよびMITソフトウェア ライセンスの下で利用可能です。
その他
- Ntimedは2014年にFreeBSDのPoul-Henning Kampによって開始され、2015年に放棄されました。 [64]実装はLinux Foundationによって後援されました。 [65]
- systemd-timesyncdは、 systemdに組み込まれているSNTPクライアントです。これは、バージョン「bookworm」 [66]以降のDebianと、下流のUbuntuで使用されています。
うるう秒
うるう秒イベント当日、ntpd は設定ファイル、接続された参照クロック、またはリモート サーバーから通知を受け取ります。イベント中は NTP クロックは実際には停止しますが、時間は厳密に増加しているように見える必要があるという要件のため、システム時間を照会するプロセスは、イベントの順序を維持しながら、わずかな量ずつ増加させます。負のうるう秒が必要になった場合は、23:59:59 をスキップして、23:59:58、00:00:00 のシーケンスで削除されます。[67]
代替の実装は、うるう秒をUTC時間の正午から正午までの24時間の間に段階的に導入するというもので、リープスミアリングと呼ばれます。この実装は、Google(社内およびパブリックNTPサーバーの両方)、Amazon AWS、[68]、Facebookで使用されています。[69] chronyは、 smoothtimeおよびleapsecmode構成でうるう秒をサポートしていますが、このような使用は、非標準であり、混在するとクライアントの計算が狂うため、パブリックNTPプールと混在して使用しないでください。[70]
セキュリティ上の懸念
システム時間の調整は一般的に特権操作であるため、NTP コードの一部またはすべてを何らかの権限で実行して、コア機能をサポートする必要があります。NTP コードベースのリファレンス実装では、他のセキュリティ上の問題がいくつか特定されていますが、2009 年に発生した問題[どれですか? ]は大きな懸念を引き起こしました。[71] [72]このプロトコルは、その歴史を通じて改訂とレビューが行われてきました。リファレンス実装のコードベースは、数年にわたって複数のソースからのセキュリティ監査を受けています。[73]
スタックバッファオーバーフローの脆弱性が発見され、2014年に修正されました。[74] Appleはこの脆弱性を非常に懸念し、初めて自動更新機能を使用しました。[75]ルートユーザーの資格情報で実行されているリファレンス実装を使用しているシステムでは、これにより無制限のアクセスが許可される可能性があります。OpenNTPDなどの他の実装は、コードベースが小さく、権限の分離などの他の緩和策を採用しているため、この欠陥の影響を受けません。[76]
Linux FoundationのCore Infrastructure Initiativeの委託により2017年に実施された3つのNTP実装のセキュリティ監査では、セキュリティの観点からNTP [77] [78]とNTPsec [79]は両方ともchrony [80]よりも問題があることが示唆されました。[81]
NTP サーバーは、認証のためにパケットが暗号署名されていない限り、中間者攻撃の影響を受けやすい。 [82]計算オーバーヘッドにより、特にサービス拒否攻撃の際には、混雑したサーバーではこれが非現実的になる可能性がある。[83]中間者攻撃によるNTP メッセージのなりすましは、クライアント コンピューターの時計を変更し、暗号キーの有効期限をバイパスすることに基づくさまざまな攻撃を可能にするために使用できる。 [84]特定されている偽の NTP メッセージの影響を受けるサービスには、 TLS、DNSSEC、さまざまなキャッシュ スキーム (DNS キャッシュなど)、Border Gateway Protocol (BGP)、Bitcoin [要出典]、およびいくつかの永続ログイン スキームがある。[85] [86]
NTPは分散型サービス拒否攻撃に使用されています。[87] [88] NTPサーバーに小さなクエリが送信され、返信IPアドレスがターゲットアドレスに偽装されます。DNS増幅攻撃と同様に、サーバーははるかに大きな応答で応答し、攻撃者はターゲットに送信されるデータの量を大幅に増やすことができます。攻撃への参加を回避するには、NTPサーバーソフトウェアをアップグレードするか、サーバーを外部クエリを無視するように構成することができます。[89]
安全な拡張機能
NTP 自体には、クライアントに対するサーバの認証のサポートが含まれています。NTPv3 は対称キーモードをサポートしていますが、これは MITM に対しては役に立ちません。IPSecから適応された NTPv4 の「autokey」と呼ばれる公開キーシステムは、便利な認証を提供しますが、[82]ビジー状態のサーバには実用的ではありません。 [83] Autokey は後にいくつかの設計上の欠陥があることも判明しましたが、[90]メッセージ認証コードの変更を除いて修正は公開されていません。[16] Autokey はもう使用しないでください。[91]
ネットワークタイムセキュリティ(NTS)は、 TLSとAEADを備えたNTPv4の安全なバージョンです。[92]以前の試みに対する主な改善点は、別の「鍵確立」サーバーが重い非対称暗号化を処理し、これを一度だけ実行する必要があることです。サーバーがダウンした場合でも、以前のユーザーはMITMを恐れることなく時間を取得できます。[27] NTSは、 CloudflareやNetnodを含むいくつかのNTPサーバーでサポートされています。[93] [94] chrony、NTPsec、ntpd-rsで有効にできます。[95]
マイクロソフトは、 WindowsドメインIDを使用してNTPv3/SNTPv4パケットを認証するアプローチも採用しており、MS-SNTPと呼ばれています。[96]このシステムは、ドメイン接続にsambaを使用して、リファレンスntpdとchronyに実装されています。 [97]
参照
- アラン分散 – クロックと発振器の周波数安定性の尺度
- クロックネットワーク – 同じ時間に同期したクロックのセット
- 国際原子時 – 原子時計に基づく時間基準
- IRIG タイムコード – 時間情報を転送するための標準フォーマット
- NITZ – モバイルデバイス上の時刻同期のメカニズム
- NTP プール – 時刻同期を提供するネットワーク コンピュータ
- Ntpdate – コンピュータの時間を同期するソフトウェア
- 高精度時間プロトコル – ネットワーク時間同期プロトコル
注記
参考文献
- ^ abcdef David L. Mills (2010 年 12 月 12 日)。コンピュータ ネットワークの時刻同期: ネットワーク タイム プロトコル。Taylor & Francis。pp. 12– 。ISBN 978-0-8493-5805-0. 2014年7月18日時点のオリジナルよりアーカイブ。2016年10月16日閲覧。
- ^ abc 「エグゼクティブ サマリー: コンピュータ ネットワークの時刻同期」。2011 年 11 月 2 日時点のオリジナルよりアーカイブ。2011年11 月 21 日閲覧。
- ^ abcd 「NTP FAQ」。NTP プロジェクト。2011 年 9 月 6 日時点のオリジナルよりアーカイブ。2011年8 月 27 日閲覧。
- ^ 「ポート番号」。インターネット割り当て番号機関 (IANA)。2001 年 6 月 4 日時点のオリジナルよりアーカイブ。2011年1 月 19 日閲覧。
- ^ abcdefghi D. Mills ; J. Burbank; W. Kasch (2010 年 8 月). J. Martin (編). ネットワーク タイム プロトコル バージョン 4: プロトコルおよびアルゴリズムの仕様.インターネット エンジニアリング タスク フォース. doi : 10.17487/RFC5905 . ISSN 2070-1721. RFC 5905. 提案された標準。RFC 1305、4330 は 廃止されました。RFC 7822、8573、9109 によって更新されました。
- ^ ab David L. Mills (1992 年 3 月). ネットワーク タイム プロトコル (バージョン 3) - 仕様、実装、および分析。ネットワーク ワーキング グループ。doi : 10.17487 / RFC1305。RFC 1305 。 廃止。RFC 5905 により廃止。RFC 958、1059、1119 より廃止。
- ^ D. Mills (1985 年 9 月). ネットワーク タイム プロトコル (NTP). ネットワーク ワーキング グループ. doi : 10.17487/RFC0958 . RFC 958. 廃止。RFC 1059、1119、1305 によって廃止されました。
- ^ D. Mills (1988 年 7 月). ネットワーク タイム プロトコル (バージョン 1) の仕様と実装. ネットワーク ワーキング グループ. doi : 10.17487/RFC1059 . RFC 1059. 廃止。RFC 1119 および 1305 によって廃止されました。
- ^ D. Mills (1989 年 9 月). ネットワーク タイム プロトコル (バージョン 2) の仕様と実装. ネットワーク ワーキング グループ. doi : 10.17487/RFC1119 . RFC 1119. 廃止。RFC 1305 により廃止。RFC 958 および 1059 より廃止。
- ^ ab D. Mills (1992 年 8 月). インターネット プロトコル スイートのサービスの種類。ネットワーク ワーキング グループ。doi : 10.17487 / RFC1361。RFC 1361 。 廃止。RFC 1769 により廃止されました。
- ^ D. Mills (1995 年 3 月). シンプル ネットワーク タイム プロトコル (SNTP). ネットワーク ワーキング グループ. doi : 10.17487/RFC1769 . RFC 1769. 廃止。RFC 2030 により廃止。RFC 1361 より廃止。
- ^ ab D. Mills (1996 年 10 月). IPv4、IPv6、OSI 向け Simple Network Time Protocol (SNTP) バージョン 4. ネットワーク ワーキング グループ. doi : 10.17487/RFC2030 . RFC 2030. 廃止。RFC 4330 によって廃止。RFC 1769 を廃止。
- ^ ab D. Mills (2006 年 1 月). IPv4、IPv6、OSI 向け Simple Network Time Protocol (SNTP) バージョン 4. ネットワーク ワーキング グループ. doi : 10.17487/RFC4330 . RFC 4330. 廃止。RFC 2030 および 1769 は 廃止。RFC 5905 によって廃止。
- ^ DL Mills (1981 年 4 月). DCNET インターネット クロック サービス. IETF . doi : 10.17487/RFC0778 . RFC 778. 歴史的。
- ^ ab T. Mizrahi; D. Mayer (2016 年 3 月). ネットワーク タイム プロトコル バージョン 4 (NTPv4) 拡張フィールド.インターネット エンジニアリング タスク フォース. doi : 10.17487/RFC7822 . ISSN 2070-1721. RFC 7822. 情報提供。RFC 5905 を 更新します。
- ^ abc A. Malhotra; S. Goldberg (2019 年 6 月). ネットワークタイムプロトコルのメッセージ認証コード。インターネットエンジニアリングタスクフォース。doi : 10.17487 / RFC8573。ISSN 2070-1721。RFC 8573。 提案された標準。RFC 5905 を更新します。
- ^ ab F. Gont; G. Gont; M. Lichvar (2021 年 8 月). ネットワーク タイム プロトコル バージョン 4: ポートのランダム化。インターネットエンジニアリングタスク フォース。doi : 10.17487/ RFC9109。ISSN 2070-1721。RFC 9109 。 提案された標準。RFC 5905 を更新します。
- ^ DL Mills (1981年2月25日)、DCNETホストの時刻同期、1996年12月30日時点のオリジナルよりアーカイブ
- ^ 「TIMED(8)」、UNIXシステム管理者マニュアル、2011年7月22日時点のオリジナルよりアーカイブ、 2017年9月12日閲覧。
- ^ David L. Mills (1991年10月). 「インターネット時刻同期: ネットワーク時刻プロトコル」(PDF) . IEEE Transactions on Communications . 39 (10): 1482– 1493. Bibcode :1991ITCom..39.1482M. doi :10.1109/26.103043. 2016年6月10日時点のオリジナルよりアーカイブ(PDF) . 2017年11月6日閲覧。
- ^ David L. Mills (1992 年 3 月). ネットワーク タイム プロトコル (バージョン 3) - 仕様、実装、および分析。ネットワーク ワーキング グループ。doi : 10.17487 / RFC1305。RFC 1305 。 廃止されました。
クロック選択手順は、2 つのソート/破棄手順のうち最初の手順を削除し、Marzullo によって最初に提案され、後に Digital Time Service に組み込まれたアルゴリズムに置き換えるように変更されました。これらの変更は、NTP のさまざまなバージョンの通常の動作や互換性に大きな影響を与えませんが、正当性の正式な表明の根拠となります。
- ^ David L. Mills (2010 年 11 月 15 日)。コンピュータ ネットワーク タイム同期: 地球と宇宙におけるネットワーク タイム プロトコル、第 2 版。CRC Press。p. 377。ISBN 978-1-4398-1464-2。
- ^ abc 「将来の計画」、ネットワーク時刻同期研究プロジェクト、2014年12月23日時点のオリジナルよりアーカイブ、2014年12月24日閲覧
- ^ 「NTP には資金が必要: 財団がその答えか?」InformationWeek 2015 年 3 月 23 日。2015 年 4 月 10 日時点のオリジナルよりアーカイブ。2015年4 月 4 日閲覧。
- ^ 「NTP の運命は「Father Time」にかかっている」InformationWeek 2015 年 3 月 11 日。2015 年 4 月 10 日時点のオリジナルよりアーカイブ。2015年4 月 4 日閲覧。
- ^ ab 「ネットワークタイムプロトコル(ntp):ドキュメント」。datatracker.ietf.org 。2022年12月27日閲覧。
- ^ ab D. Franke; D. Sibold; K. Teichel ; M. Dansarie; R. Sundblad (2020 年 9 月). ネットワーク タイム プロトコルのネットワーク タイム セキュリティ。インターネット エンジニアリング タスク フォース。doi : 10.17487 / RFC8915。ISSN 2070-1721。RFC 8915 。 提案された標準。
- ^ Lichvar, Miroslav (2022年12月6日). 「ネットワークタイムプロトコルバージョン5」. www.ietf.org .
- ^ D. Mills ; J. Burbank; W. Kasch (2010 年 8 月). J. Martin (編). ネットワーク タイム プロトコル バージョン 4: プロトコルおよびアルゴリズムの仕様.インターネット エンジニアリング タスク フォース. doi : 10.17487/RFC5905 . ISSN 2070-1721. RFC 5905. 提案された標準。NTP
のサブセットである Simple Network Time Protocol (SNTPv4) に準拠するプライマリ サーバーとクライアントは、緩和アルゴリズムを実装する必要はありません。完全に開発された NTPv4 実装は、複数の上流サーバーと複数の下流サーバーを備えたサーバーを対象としています。これらの考慮事項を除けば、NTP および SNTP サーバーとクライアントは完全に相互運用可能であり、混在させることができます。
- ^ 「PTP と NTP を組み合わせて両方の長所を活かす」www.redhat.com linuxptp
パッケージのプログラムは、NTP デーモンと組み合わせて使用できます。NIC 上の PTP クロックは ptp4l によって同期され、chronyd または ntpd によってシステム クロックの同期の参照クロックとして使用されます。
- ^ 「ネットワーク タイム プロトコル: ベスト プラクティス ホワイト ペーパー」。2013 年 10 月 1 日時点のオリジナルよりアーカイブ。2013年10 月 15 日閲覧。
- ^ ab "'ntpq -p' 出力". NLUG.ML1.co.uk . 2018年11月12日時点のオリジナルよりアーカイブ。2018年11月12日閲覧。
- ^ 「イベント メッセージとステータス ワード」。docs.ntpsec.org。Refidコードは、kiss-o'-death (KoD) パケット、ntpq および ntpmon ビルボード表示およびログ メッセージの
参照識別子フィールドで使用されます。
- ^ 「ネットワーク タイム プロトコル (NTP) パラメータ」。www.iana.org。
- ^ David L. Mills (2012年5月12日). 「NTPの時代と時代番号」。2016年10月26日時点のオリジナルよりアーカイブ。2016年9月24日閲覧。
- ^ W. Richard Stevens、Bill Fenner、Andrew M. Rudoff (2004)。UNIX ネットワークプログラミング。Addison-Wesley Professional。pp. 582– 。ISBN 978-0-13-141155-5. 2019年3月30日時点のオリジナルよりアーカイブ。2016年10月16日閲覧。
- ^ 「2036年/2038年問題とさまざまなシステムの時間証明性について」 2017年3月14日。2018年7月21日時点のオリジナルよりアーカイブ。 2018年7月20日閲覧。
- ^ デラウェア大学デジタルシステムセミナー、デビッド・ミルズによるプレゼンテーション、2006-04-26
- ^ 後藤 孝文; 今村 健一; 金子 明生 (2002)。「非対称ネットワークにおけるダブルパケット方式による NTP 時刻オフセットの改善」。精密電磁気測定に関する会議ダイジェスト。精密電磁気測定に関する会議。pp. 448– 449。doi : 10.1109 / CPEM.2002.1034915。ISBN 0-7803-7242-5。
- ^ ab Lichvar, Miroslav (2018年9月18日). "chrony – chrony.conf(5)". Chronyプロジェクト. 2020年8月2日閲覧。
このディレクティブは、指定されたネットワークインターフェースとの間で送受信されるNTPパケットのハードウェアタイムスタンプを有効にします。
- ^ "sourcestats.c、関数estimate_asymmetry()". git.tuxfamily.org (chrony) .
- ^ 「Pentest-Report NTP 01.2017」(PDF)。Cure53。2017年。2018年12月1日時点のオリジナルよりアーカイブ(PDF) 。2019年7月3日閲覧。
- ^ 「Windows Time Service テクニカル リファレンス」。technet.microsoft.com。2011 年 8 月 17 日。2011 年 9 月 6 日時点のオリジナルよりアーカイブ。2011 年9 月 19 日に取得。
- ^ 「NTP.org の Windows Time Service ページ」。Support.NTP.org。2008年 2 月 25 日。2017 年 5 月 14 日時点のオリジナルよりアーカイブ。2017年5 月 1 日に閲覧。
- ^ 「Windows タイム サービスのしくみ」。technet.microsoft.com。2010 年 3 月 12 日。2011 年 9 月 24 日時点のオリジナルよりアーカイブ。2011 年9 月 19 日に取得。
- ^ ab 「高精度環境向けに Windows Time サービスを構成するためのサポート境界」。Microsoft。2011年 10 月 19 日。2009 年 1 月 12 日時点のオリジナルよりアーカイブ。2008年12 月 10 日に取得。
- ^ Ned Pyle (2007 年 10 月 23 日)。「高精度の W32time 要件」。Microsoft。2012年10 月 17 日時点のオリジナルよりアーカイブ。2012年8 月 26 日閲覧。
- ^ 「Windows Server 2016 Accurate Time」。technet.microsoft.com。2016年 12 月 2 日時点のオリジナルよりアーカイブ。2016 年12 月 7 日に閲覧。
- ^ dahavey. 「高精度時間のサポート境界」. docs.microsoft.com . 2021 年7 月 24 日閲覧。
- ^ "ntpd(8) - OpenBSD マニュアルページ". man.openbsd.org .
RFC 5905 で説明されている Simple Network Time Protocol バージョン 4 と、RFC 1305 で説明されている Network Time Protocol バージョン 3 を実装しています。
- ^ OpenBSDプロジェクト (2006年8月21日). 「FAQ 6.12.1: 「しかし、OpenNTPDはntp.orgデーモンほど正確ではありません!」」OpenBSDプロジェクト。 2016年2月5日時点のオリジナルよりアーカイブ。 2020年5月14日閲覧。
- ^ Raymond, Eric S. (2017年3月30日). 「NTPsec: 安全で強化されたNTP実装 | Linux Journal」. Linux Journal . 2024年1月26日時点のオリジナルよりアーカイブ。 2024年1月26日閲覧。
- ^ 「セキュアネットワークタイムプロトコル(NTPsec)配布」。2019年1月13日時点のオリジナルよりアーカイブ。2019年1月12日閲覧。
- ^ アラン、リスカ (2016 年 12 月 10 日)。 NTP セキュリティ: クイック スタート ガイド。アプレス。 80ページ–。ISBN 978-1-4842-2412-0。
- ^ 「Pentest-Report NTPsec 01.2017」(PDF)。Cure53。2017年。2019年7月4日時点のオリジナルよりアーカイブ(PDF) 。2019年7月3日閲覧。
- ^ Lichvar, Miroslav (2016 年 7 月 20 日)。「PTP と NTP を組み合わせて両方の長所を活かす」。Red Hat Enterprise Linux ブログ。Red Hat。2016年 7 月 30 日時点のオリジナルからアーカイブ。2017年11 月 19 日閲覧。Red
Hat Enterprise Linux 7.0 以降 (現在は Red Hat Enterprise Linux 6.8) では、より汎用性の高い NTP 実装も chrony パッケージ経由で提供されています。
- ^ 「ネットワーク時間の保護」。Core Infrastructure Initiative、Linux Foundation 共同プロジェクト。Core Infrastructure Initiative。2017 年 9 月 27 日。2017 年 10 月 28 日時点のオリジナルからアーカイブ。2017年11 月 19 日閲覧。
まとめると、Chrony NTP ソフトウェアは堅牢であり、信頼できると言えます。
- ^ ab "chrony introduction". TuxFamily、非営利団体。chrony。2009年12月9日時点のオリジナルよりアーカイブ。 2017年11月19日閲覧。
このソフトウェアは、Linux、FreeBSD、NetBSD、macOS、およびSolarisでサポートされています。
- ^ 両者、David。「Chrony で NTP を管理する」。Opensource.com。2019年 6 月 29 日時点のオリジナルよりアーカイブ。2019 年6 月 29 日閲覧。
- ^ Heiderich, Mario (2017 年 8 月). 「Pentest-Report Chrony 08.2017」(PDF) . Cure53.de チーム. wiki.mozilla.org、別名 MozillaWiki または WikiMO。2017年 10 月 5 日時点のオリジナル(PDF)からアーカイブ。2017年11 月 19 日閲覧。2017
年 8 月に 11 日間のリモート テストに耐えたということは、Chrony が堅牢で強力であり、セキュリティを考慮して開発されていることを意味します。
- ^ 「chrony/chrony.git - Chrony プロジェクトの公式 Git リポジトリ」。git.tuxfamily.org。2021年7月 31 日閲覧。
- ^ Aas, Josh. 「Let's Encrypt のメモリ安全性の強化: ntpd-rs の導入」。Let 's Encrypt。Let 's Encrypt。2024年12 月 18 日閲覧。
- ^ 「ネットワークタイムセキュリティ - ntpd-rs ドキュメント」。docs.ntpd-rs.pendulum -project.org。 2025年1月13日閲覧。
- ^ Poul-Henning, Kamp. 「20140926 – Playing with time again」. PHK's Bikeshed . 2019年12月20日時点のオリジナルよりアーカイブ。 2015年6月4日閲覧。
- ^ Poul-Henning, Kamp. 「ネットワーク時間同期ソフトウェア、NTPD の代替」。ntimed git リポジトリ README ファイル。Github。2015 年 8 月 2 日時点のオリジナルよりアーカイブ。2015年6 月 4 日閲覧。
- ^ 「OpenNTPd から Chrony への切り替え - anarcat」。anarc.at。
つまり、bookworm では systemd-timesyncd が Debian のデフォルトの NTP デーモンになったわけですが、これは少々意外なことです。
- ^ David Mills. 「NTP タイムスケールとうるう秒」。2013 年 9 月 7 日時点のオリジナルよりアーカイブ。2013年10 月 15 日閲覧。
- ^ “Google Developers Leap Smear”. 2019年4月4日時点のオリジナルよりアーカイブ。2019年4月4日閲覧。
- ^ Obleukhov, Oleg (2020年3月18日). 「Facebook規模でより正確な時刻サービスを構築する」。Metaのエンジニアリング。
- ^ 「chrony – よくある質問」. chrony.tuxfamily.org .
- ^ 「セキュリティに関するお知らせ」Support.NTP.org 2009 年 12 月 10 日2011 年1 月 12 日閲覧。[永久リンク切れ ]
- ^ 「Cisco IOSソフトウェアネットワークタイムプロトコルパケットの脆弱性」。シスコシステムズ。2009年9月23日。2020年6月11日時点のオリジナルよりアーカイブ。2020年6月11日閲覧。
- ^ 「コード監査」Support.NTP.org 2009 年 6 月 13 日2011 年1 月 12 日閲覧。
- ^ 「ネットワーク タイム プロトコルの脆弱性 (更新 C) | ICS-CERT」。Ics-cert.us-cert.gov。2014 年 12 月 20 日時点のオリジナルよりアーカイブ。2015年4 月 15 日閲覧。
- ^ Cunningham, Andrew (2014 年 12 月 23 日). 「Apple が Mac に自動パッチを適用し、重大な NTP セキュリティ欠陥を修正」. arstechnica. 2015 年 4 月 15 日時点のオリジナルよりアーカイブ。2015年4 月 29 日閲覧。
- ^ Fairhead, Harry (2014 年 12 月 23 日). 「NTP 最新のオープン ソース セキュリティ問題」. I Programmer. 2014 年 12 月 24 日時点のオリジナルよりアーカイブ。2014年12 月 24 日閲覧。
- ^ NTP SecurityNotice ページは 2014-02-19 にWayback Machineにアーカイブされています
- ^ NVD NIST 製品検索 NTP
- ^ NVD NIST 製品検索 NTPsec 2020-06-26 にWayback Machineにアーカイブ
- ^ NVD NIST 製品検索 Chrony 2020-06-26 にWayback Machineでアーカイブ
- ^ 「CII 監査が最も安全な NTP 実装を特定」。Linux Foundation。2017 年 9 月 28 日。2018 年 2 月 3 日時点のオリジナルよりアーカイブ。2019年7 月 3 日閲覧。
- ^ ab ネットワークタイムプロトコルバージョン4:Autokey仕様。IETF。2010年6月。doi:10.17487 / RFC5906。RFC 5906 。
- ^ ab 「NTP Security Analysis」。2013年9月7日時点のオリジナルよりアーカイブ。2013年10月11日閲覧。
- ^ Jose Selvi (2014 年 10 月 16 日). 「HTTP Strict Transport Security のバイパス」(PDF)。2014 年 10 月 18 日時点のオリジナル(PDF)からアーカイブ。2014年10 月 16 日閲覧。
- ^ Aanchal Malhotra、Isaac E. Cohen、Erik Brakke、Sharon Goldberg (2015 年 10 月 20 日)。「ネットワーク タイム プロトコルへの攻撃」(PDF)。NDSS。2015年 10 月 22 日時点のオリジナル(PDF)からアーカイブ。2015 年10 月 27日閲覧。
- ^ 「ネットワークタイムプロトコルへの攻撃」www.cs.bu.edu。2015年10月24日時点のオリジナルよりアーカイブ。2015年10月27日閲覧。
- ^ Goodin, Dan (2014 年 1 月 13 日). 「ゲーム サイトをダウンさせる新たな DoS 攻撃により、100Gbps のフラッドが発生」Ars Technica。2014 年 1 月 24 日時点のオリジナルよりアーカイブ。2014年1 月 25 日閲覧。
- ^ Lee, Dave (2014年2月11日). 「大規模なハッキングはインターネット脅威の未来の醜い兆候」 BBC. 2014年2月11日時点のオリジナルよりアーカイブ。 2014年2月12日閲覧。
- ^ 「ntpdc monlist コマンドを使用した DRDoS/増幅攻撃」。support.NTP.org。2010年 4 月 24 日。2014 年 3 月 30 日時点のオリジナルよりアーカイブ。2014年4 月 13 日閲覧。
- ^ ディーター・シボルド;スティーブン・レトガー (2012)。 NTP の Autokey プロトコルの分析(PDF)。 IETF83。
- ^ H. Stenn; D. Sibold (2019 年 7 月). D. Reilly (編). ネットワーク タイム プロトコルの現在のベスト プラクティス。インターネット エンジニアリング タスク フォース。doi : 10.17487 / RFC8633。ISSN 2070-1721。BCP 223。RFC 8633。 現在のベストプラクティス 223現在のベストプラクティス。第4.2項。
- ^ “nts.time.nl ホームページ”. nts.time.nl . 2021年8月19日閲覧。
- ^ Langer, Martin (2019 年 12 月 5 日). 「NTPsec を使用した NTS で保護された NTP の設定」. Weberblog.net . 2021 年8 月 19 日閲覧。
- ^ 「NTSの使い方 | Netnod」。Netnod 。 2021年8月19日閲覧。
- ^ 「ネットワークタイムセキュリティ · Cloudflare Time Services ドキュメント」。developers.cloudflare.com。2024年8月13日。 2025年1月12日閲覧。
- ^ 「[MS-SNTP]: ネットワーク タイム プロトコル (NTP) 認証拡張機能」。2021 年 6 月 24 日。
- ^ 「NTP実装の比較」。chrony.tuxfamily.org 。 2019年10月8日閲覧。
さらに読む
- ネットワーク タイム プロトコル バージョン 4 ( NTPv4) の管理オブジェクトの定義。doi : 10.17487/ RFC5907。RFC 5907 。
- DHCPv6 のネットワークタイムプロトコル (NTP) サーバー オプション。doi : 10.17487/ RFC5908。RFC 5908 。
外部リンク
- 公式サイト
- 公式 Stratum ワンタイム サーバー リスト
- IETF NTPワーキンググループ
- Microsoft Windows の正確な時間ガイドなど
- 時間とNTPの論文
- NTP 調査 2005
- ntpd と互換性のある現在の NIST うるう秒ファイル
- David L. Mills、「NTP 時間の簡潔な歴史: インターネット タイムキーパーの告白」(PDF) 、 2021 年2 月 7 日取得
