Meta запустила NTS: время, которое нельзя подделать
Протокол NTP работает с 1985 года и до сих пор без аутентификации. Клиент отправляет 48 байт, получает 48 байт обратно и верит ответу. Подписи нет, проверить отправителя нельзя.
При этом от часов зависит почти вся безопасность: проверка сертификатов, срок действия токенов, защита от повторов, порядок событий в логах. Если подменить время назад, просроченные сертификаты и отозванные токены снова станут действительными. Если вперёд, всё истечёт разом. Устройство, которое убедили, что сейчас 2037 год, теряет TLS, не может получить обновление и лечится только сбросом к заводским настройкам.
Раньше с этим можно было мириться. Но с марта 2029 года TLS-сертификаты будут жить 47 дней, продление станет ежемесячным и автоматическим. Хост с неправильными часами будет ломать его молча.
Meta включила NTS (RFC 8915) на
nts.meta.com. Ключи согласуются один раз через TLS 1.3, после этого каждый NTP-пакет аутентифицирован. Поддельный ответ отбрасывается. Серверы не хранят состояние: ключи шифрования cookie вычисляются из общего секрета и номера суток, ничего не реплицируется. Код открыт на
github.com/facebook/time.
Подключение в chrony занимает одну строку:
pool nts.meta.com nts iburst maxsources 5
Ограничения остаются. NTS не защищает от задержки пакетов и не исправляет сервер, который сам ошибается. Он гарантирует только одно: содержимое ответа никто не подменил.
Главная проблема в смартфонах. Android и iOS синхронизируют время без всякой аутентификации, и NTS там нет. Миллиарды устройств по-прежнему верят первому пришедшему UDP-пакету. Meta призывает Google и Apple это исправить.
https://engineering.fb.com/2026/10/06/production-engineering/nts-authenticated-time-at-meta/