Как обнаружить подделку (переходы) системных часов для продукта безопасности с использованием C++20?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как обнаружить подделку (переходы) системных часов для продукта безопасности с использованием C++20?

Сообщение Anonymous »

Я разрабатываю кроссплатформенный агент безопасности, ориентированный в основном на Windows. В будущем мне может понадобиться аналогичный подход для macOS. Одной из важнейших функций является режим «временной приостановки», которым управляет ИТ-администратор, при котором агент прекращает мониторинг на определенный период времени.
Проблема: Пользователи могут попытаться продлить периоды приостановки, вручную изменив системные часы (настенные часы), пока агент находится в автономном режиме. (Я могу использовать доверенный сервер для получения текущего времени, когда агент находится в сети.) Поскольку мой продукт использует логику, основанную на времени, мне необходимо убедиться, что системное время не было изменено.
Текущий подход: В настоящее время я использую фоновый поток, который опрашивает каждые 2 секунды. Он сравнивает std::chrono::system_lock (на который может влиять пользователь) с std::chrono::steady_lock (который является монотонным и не должен прыгать). Этот подход не кажется правильным. Достаточно ли этой переносимой реализации, или мне следует использовать альтернативный подход, который мог бы использовать внутренние события, специфичные для ОС, не жертвуя при этом слишком большой переносимостью.
Ниже приведен минимально воспроизводимый пример моей текущей логики, которую я пишу с помощью чат-бота. Он компилируется на VS2022 C++20. Есть ли более стандартный или надежный способ реализовать это для контекста, чувствительного к безопасности? Действительно ли мне нужно иметь дело с собственными вещами для Windows?
#include
#include
#include

using namespace std::chrono_literals;

int main() {
auto last_system = std::chrono::system_clock::now();
auto last_steady = std::chrono::steady_clock::now();

std::cout

Подробнее здесь: https://stackoverflow.com/questions/798 ... -using-c20
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»