#c #c #time #ntp #trusted-timestamp
#c #c #время #ntp #trusted-временная метка
Вопрос:
Моему приложению необходимо будет периодически обращаться к надежному источнику времени, поэтому оно не может полагаться на системное время, поскольку оно может быть легко изменено пользователем или сбоем батареи и т. Д. Моя первая идея — статически связать с libntp (из ntp.org ) и использовать его функции, это хорошая идея?
Libntp выглядит немного сложной структурой, есть ли какая-нибудь более простая клиентская реализация (предпочтительно ANSI C, поскольку приложение должно быть для разных платформ… хотя может быть и Cpp, если его можно скомпилировать с помощью gcc / MS VS)?
Есть ли какая-то другая альтернатива ntp?
Спасибо!!
Редактировать: просто чтобы добавить еще немного информации … важно, чтобы значения сервера доверенного времени не могли быть изменены (допустим, злоумышленник изменяет ответ сервера доверенного времени, и приложение принимает поддельное время). Я начал смотреть на ntp и вижу, что он решает эту проблему. Теперь вопрос в том, должен ли я использовать источники ntp из ntp.org в качестве отправной точки или есть какие-то простые клиентские реализации? В идеале, некоторый указатель на то, из какого модуля / исходных файлов ntp.org источники, которые я должен использовать для реализации только для клиента, и какой заголовочный файл показывает API, который мне нужно использовать, например, вызов getTrustedTime() … и т.д.
Комментарии:
1. Если вы не можете доверять ОС… Все ставки отменяются. ОС может быть настроена для защиты системного времени. Кроме того, сетевое подключение может существовать не всегда. Вы пытаетесь реализовать защиту лицензий? Если да, пожалуйста, уточните в своем сообщении
2. Насколько точным оно должно быть? 1 или 2 секунды в порядке? Или это должно быть с точностью до миллисекунды?
3. Мое приложение не доверяет времени операционной системы, но требует (периодического) сетевого подключения (действительно, связанного с защитой лицензий). Что касается точности, то до нескольких минут все в порядке.
Ответ №1:
Если вы можете рассчитывать на наличие сетевого подключения, ваше приложение может запросить время у удаленного сервера, возможно, также через подписанное или зашифрованное соединение.
Ответ №2:
Если вы используете Boost, вы могли бы использовать это