«Проблема» протокола NTP и что такое NTSКто ни разу не слышал про NTP, этот протокол описывает процесс синхронизации времени на хостах. Грубо говоря, у вас есть источник времени и есть одна машина или группа машин, на которых нужно установить время источника. Эта группа машин по протоколу NTP связывается с источником и устанавливает себе локально то время, которое он им передаст.
NTP — это базовая и простая технология, от корректной работы которой много чего зависит. Потому что если на вашем сервере установлено неправильное время, скорее всего, со многими функциями, которые должен выполнять ваш хост, появятся проблемы. Банально TLS-соединения перестанут устанавливаться, потому что у TLS-сертификатов есть даты начала и конца действия, а если ты владеешь неправильным временем, то и сертификаты, которые ты будешь создавать, будут недействительны.
Ну и вообще, о чем пост. Недавно на FOSDEM 2026
выступил сотрудник фонда Trifecta Tech Рубен Найвелд с докладом «Делаем время безопаснее с NTS». В нём он рассказал про три вещи: проблему NTP, что такое NTS, и про проблему уже NTS в виде реализации NTS-пулов. Давайте вкратце про все три пункта.
Первое — «проблема» NTP. Она заключается в том, что NTP передаёт данные по интернету в незашифрованном виде, и что их в целом легко перехватить и подменить. Цитата Рубена про NTP звучит так: «fundamentally a broken protocol. It is a protocol that is fundamentally insecure». На этом этапе в интернетах сразу подметили, что раз это так страшно и плохо, то почему за столько времени это не исправили? Может, это не так уж и страшно? Потому что на самом деле, когда вы обслуживаете какую-то сложную систему, то на её хостах скорее всег остоит что-то типа
chronyd, который умеет брать время сразу из
нескольких источников. Поэтому если у вас один из них начнёт отдавать какую-то дичь, стать для вашей системы проблемой это не должно.
Второе — что такое NTS. NTS — это протокол, который в стандартный процесс получения времени через NTP добавляет ещё и обмен ключами. При этом само время передаётся по сети всё так же в незашифрованном виде, но теперь к пакетам добавляются хедеры, которые позволяют убедиться в том, что время вам прислал именно тот источник, который вы указали, и трафик не был перехвачен и подменён по пути.
Стандарт был опубликован в 2020 году, и на данный момент его поддерживают NTPSec, Chrony и ntpd-rs.
Третье — проблема с пулами NTS. В NTP что удобно, это то, что ты можешь указать (например, в chronyd), что брать время тебя нужно из
pool.ntp.org, который выдаёт тебе N серверов из твоего региона. И ты, соответственно, дальше уже с этими серверами общаешься. В NTS с этим есть проблемы. В пуле
ntp.org сейчас +- 5 тысяч серверов. Если организовывать такой же пул с NTS-серверами, то на каждом из 5к серверов должен лежать единый сертификат для
pool.ntp.org. А если у вас на таком количестве неконтролируемых вами серверов лежит общий сертификат, то приватный ключ этого сертификата, скорее всего, утечёт, и смысла от NTS не будет. А выписывать отдельные сертификаты для каждого сервера нет варианта, потому что они все живут под одним доменом. Команда Рубена сейчас работает с двумя вариантами реализации пулов, оба они, на мой взгляд, такие себе, и расписывать я их тут не буду, так как уже много букв, если вам интересно, то Рубен рассказывает про них в конце своего
доклада.
Выглядит вся эта история прикольно, но, конечно, попахивает «решением, ищущим проблему»). За сотрудников фонда Trifecta можно только порадоваться, что им дают деньги всякими такими приколами заниматься.