Slide 1

Slide 1 text

IETFにおけるNTPv5の標準化と ossification NTP Meeting (4/7) 後藤ゆき @flano_yuki たすけて NTPのみんな 😭

Slide 2

Slide 2 text

今日の話し - NTPv5がインターネットで正しく 処理されない件について(ossification 問題) 2

Slide 3

Slide 3 text

自己紹介 - 後藤 ゆき (@flano_yuki) - 趣味でプロトコルの標準化に参加 - HTTP/QUIC - 時刻同期関連 - NTPv5 - Roughtime - NTS (over QUIC?) - NTP Chronos, NTP Over PTP 3

Slide 4

Slide 4 text

NTPv5について Network Time Protocol Version 5 - 2020年より、IETF NTP WGで議論が進められている - 著者はRedHad の Miroslav Lichvar氏 (chrony実装者) - PoC実装が公開されている (実装者募集中) 標準化タイムライン

Slide 5

Slide 5 text

[割愛] NTPv4(RFC5905)との主な違い (1/3) ● 基本的にタイムスタンプを送り合う仕組みは変わらず ● ClientモードとServer モードのみ ● パケットのフォーマットは互換性がない ● TIme Scale (UTC, UT1, TAI, Leap-smeared UTC) の追加 5

Slide 6

Slide 6 text

6 NTP v5 *VN, Modeは一緒 NTP v4

Slide 7

Slide 7 text

NTPv4(RFC5905)との主な違い (2/3) ● NTP のera 番号はプロトコルで交換され、クライアントの明 確な間隔が 136 年から約 35000 年に延長されます ● NTPv5 はインターリーブ モードを追加して より正確な送信タイムスタンプを提供 (* NTPv4の拡張仕様でもある) ● NTPv5 は、Reference IDのセットに対してブルームフィル タで複数ホストのループを検出 7

Slide 8

Slide 8 text

NTPv4(RFC5905)との主な違い (3/3) ● タイムスタンプは、Cookie として使用される値から明確に 分離された ● NTPv5 メッセージは、拡張フィールドでのみ拡張可 (MAC フィールドは拡張フィールド) ● 拡張フィールドは任意長 ● (NTPv4の拡張はそのまま使える) 8

Slide 9

Slide 9 text

(割愛) 定義されている拡張 - Draft Identification Extension Field - Padding Extension Field - MAC Extension Field - Reference IDs Request and Response Extension Fields - Server Information Extension Field - Correction Extension Field - Reference Timestamp Extension Field - Monotonic Receive Timestamp Extension Field - Secondary Receive Timestamp Extension Field

Slide 10

Slide 10 text

その他 NTPv5にかかる議論トピック ● 暗号化 ○ RFC 8915 NTP for NTSには基本対応 ○ デフォルトで暗号化したいという意見もある ■ QUIC使いたい話しも (by Salz, Rich) ● ダウングレード攻撃対策 / DDoS対策 ● より高解像度な時間の取り扱い ● タイムゾーン情報の付与

Slide 11

Slide 11 text

NTPv5がインターネットで正しく 処理されない件について

Slide 12

Slide 12 text

クイズ Q. 現在、NTPv5パケットを公開NTPサー バに送った場合、どうなりますか? *実際に試した(draft-01): https://asnokaze.hatenablog.com/entry/2020/12/29/020002

Slide 13

Slide 13 text

Q クイズ A. - ◯ 応答なし(タイムアウト) - △ NTPv4のパケットが返ってくる - 😭バージョンに5が指定されたNTPv4 パケットが返ってくる

Slide 14

Slide 14 text

ossification ossification:正しく実装されていない既存のサーバ、ファイアウォールによっ て新しいプロトコルがインターネットで阻害される現象 (TCPやTLSで問題になっている) - ただ通信が通らないだけでなく、奇妙な振る舞いをすること - 例: TCPの新機能を実利用したとき ハンドシェイクは完了して データ受信はできるがAckが通らない 事例など (appleの事例) https://archive.nanog.org/sites/default/files/Paasch_Network_Support.pdf

Slide 15

Slide 15 text

クイズ Q. 一旦NTPv4通信してNTPv5対応して るか聞きたいです そのためのNTPv4に新しい拡張をつけて サーバに送るとどうなりますか? *実際に試した(draft-01): https://asnokaze.hatenablog.com/entry/2020/12/29/020002

Slide 16

Slide 16 text

Q クイズ A. - ◎ 未知の拡張は無視される - 😭 タイムアウトする - 😭 拡張をそのまま送り返してくる

Slide 17

Slide 17 text

NTPにおけるossificationの例 - 実装上の問題 - バージョン番号を適切に扱われない - 対応してないはずのバージョンで応答してくる - v5のパケットが途中でドロップする - NTPv4で拡張フィールドが適切に扱われない - 未知(未対応)の拡張が来たときの振る舞いが不適切 - タイムアウトしたり、なぜかそのまま送り返してくる - 一部のタイムアウトはファイアフォールの影響 ?? - サーバがNTPv5対応してるっていうのに、通らない...!?

Slide 18

Slide 18 text

NTPv5におけるossificationの対策 - バージョン番号を適切に扱われない - クライアントが、サーバからの応答が本当にNTPv5か確認できる - Cookie をサーバから正しくお繰り返して来ることを確認する - NTPv4で拡張フィールドが適切に扱われない - NTPv4で、クライアントがNTPv5を対応していることを表明できる - Reference Timestampに0x4E5450354E545035 ("NTP5NTP5" の ASCII値)を入れる NTPv5ではココらへんのハンドリングを 仕様上明文化

Slide 19

Slide 19 text

ossification 問題、我々に出来ること NTPに関するOssificationについては、まだ未知数 調査が足らない... 各種クライアント実装は? ファイアウォールはどうなんだっけ? => 我々に出来ることは? => Best Current Practice RFCの編纂? => 将来のNTPv5に備え、今から課題を調査し、標準化にフィードバックした い

Slide 20

Slide 20 text

標準化の貢献方法 - IETFには誰でも参加できます - ML: https://mailarchive.ietf.org/arch/browse/ntp/ - 中間会議もやってるので、ふらっと参加できます! このスライド作っている間に仕様上の不明瞭を数点みつけたので、 まだまだやることはたくさんある(๑•̀ㅂ•́)و✧

Slide 21

Slide 21 text

懇親会で ディスカッションしたいです!! Any Comments Wellcome