Рассказываем о причинах появления Roughtime и особенностях его работы.
![](https://habrastorage.org/webt/za/gy/9b/zagy9bleid60pxj8lasnqxj--i4.jpeg)
/ Unsplash / Djim Loic
Зачем нужен новый протокол
Работа сетей с переменной латентностью основана на протоколах, подобных NTP (Network Time Protocol). Он синхронизирует внутренние часы вычислительных систем. Но с работой NTP связан ряд проблем — последние версии протокола предусматривают возможность аутентификации запросов от сервера, но на практике эту функцию используют редко. Большинство компьютеров безоговорочно доверяет ответу сервера точного времени при настройке системных часов. В результате злоумышленник может провести MITM-атаку и контролировать часы жертвы, нарушив работу криптографических протоколов и получив возможность повлиять на «свежесть» ключей. Также NTP имеет ряд уязвимостей, которые злоумышленники используют для проведения DDoS-атак.
Инженеры из Бостонского университета совместно с коллегами из Google и Cloudflare представили иной подход для «сверки часов» — Roughtime — протокол с криптографической защитой на базе UDP. В основу технологии легла система установки временных меток для блокчейна, которую еще в 2011 году описал криптограф Бен Лори (Ben Laurie) — основатель Apache Software Foundation и ведущий разработчик OpenSSL. К слову, сам Бен также участвовал в проектировании Roughtime.
Как он устроен
Ответ сервера по протоколу Roughtime состоит из трех частей. Первая представляет собой метку времени с числом микросекунд, прошедших с «эпохи Unix». Вторая называется радиус — это погрешность передаваемого значения. Третьей компонентой ответа является одноразовый код (nonce) с цифровой подписью. Значение nonce генерирует клиент при запросе временной метки. Такой подход позволяет убедиться, что передаваемая информация актуальна.
![](https://habrastorage.org/webt/f5/z9/jx/f5z9jx-tp1-_uqzadku_xq0ylqy.png)
О других протоколах из нашего блога на Хабре:
Если по какой-то причине клиент не доверяет полученным данным, он может послать запрос другим серверам. Но в этом случае nonce генерируют путем хеширования ответа, полученного от предыдущего сервера. Так клиент запоминает последовательность, в которой поступают временные метки, и может убедиться в их правильности. При этом он получает возможность выявить скомпрометированные или неправильно настроенные машины — предоставленное ими значение времени будет серьезно отличаться.
Перспективы протокола
В марте прошлого года Инженерный совет интернета (IETF) представил черновик спецификации Roughtime. На этой неделе в сети появилась его обновленная версия. В перспективе Roughtime могут сделать полноценным интернет-стандартом и оформить в RFC. Но старший научный сотрудник и криптограф облачного провайдера Cloudflare Ник Салливан (Nick Sullivan) говорит, что Roughtime нельзя считать прямой заменой NTP. У него нет механизмов компенсации латентности в сети, что может создать проблемы при «сверке часов» между двумя удаленными узлами (погрешность будет очень высокой). Трудностей добавляет криптография — в частности, функция SHA512, на реализацию алгоритмов которой тратятся дополнительные вычислительные ресурсы.
![](https://habrastorage.org/webt/mm/rp/m7/mmrpm79zvngdhxg91xsf7l-bwzg.jpeg)
/ PD / Free-Photos
В связи с этим эксперты говорят, что одним из ключевых применений протокола будет проверка срока действия SSL-сертификатов в браузерах, поскольку для этой задачи не нужна высокая точность. Первую реализацию такого решения уже представил один из западных облачных провайдеров.
Также интерес к технологии выражает компания SpiderOak. Она разрабатывает одноименное программное обеспечение для резервного копирования данных. Roughtime планируют использовать для безопасной передачи сообщений в другом продукте компании — мессенджере Semaphor.
О чем мы пишем в корпоративном блоге VAS Experts: