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

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

Сообщение Anonymous »

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