Важность времени
Время необходимо для работы практически всех современных компьютерных систем. Синхронизируя последовательную логику и генерируя тактовый сигнал, который определяет время работы функций, компьютеры устанавливают конечные импульсы времени.
Эти импульсы похожи на тиканье часов, по которым работает стабильная и надежная среда ввода/вывода. Обширные, сложные сети и системы, которые управляют работой правительства, экономикой, бизнесом и личной жизнью, работают на этих импульсах, непрерывно запрашивая время. Без часов это все не действовало бы.
Для защиты данных о времени принимаются многочисленные меры безопасности. Проверка подлинности на серверах протокола сетевого времени (NTP) позволяет установить, что злоумышленник не подделывает данные системы о времени. Также используются шифрование и контрольные суммы. Шифрование позволяет защитить обмен данными, а контрольные суммы служат для обнаружения ошибок, возникших в процессе их передачи. По данным времени NTP-сервера проверяется целостность данных и они защищаются от несанкционированного доступа. Иногда применяется произвольное рандомизированное число, которое прибавляется к времени передачи для предотвращения ошибок повторной передачи. Отметки времени и журнал синхронизации времени позволяют сравнивать системное время с данными, полученными у доверенного источника времени. NTP сохраняет доступность и отказоустойчивость за счет использования нескольких источников времени и альтернативных методов распространения, а если доступ к NTP оказывается закрыт, методы резервного копирования позволят точно оценить время по данным последней синхронизации. Существуют и другие передовые методы безопасности, такие как использование записей аудита с отметками времени, блокировка сеансов в случае бездействия, ограничение доступа к учетным записям в зависимости от времени суток.
Все перечисленные средства управления защищают целостность и доступность данных о времени, однако их секретности часто уделяется недостаточно внимания. Практически любое современное приложение может в любой момент запросить время, и как правило, ему будет разрешен доступ не только к дате и времени, но и к библиотекам и функциям часов. NTP позволяет шифровать временные данные, которые передает в систему, но все же контроля над ограничением доступа к текущему системному времени пользователю заметно не хватает. Важно определить эту проблему заранее, потому что время - это критически важная информация, которую злоумышленники применяют для распространения вредоносного ПО. Например, программа Shamoon [44], которая распространялась в Саудовской Аравии, должна была запускаться в начале уикенда, чтобы нанести максимальный урон. Ее целью было стереть все зараженные системы до того, как кто-либо это заметит.
Атаки бывают нацелены также на раскрытие конфиденциальной информации, создание условий гонки, принудительные блокировки, манипулирование состояниями информации и использование временных данных для расшифровки криптографических алгоритмов. Более сложные вредоносные программы могут задействовать свой доступ ко времени для:
временной приостановки деятельности, чтобы избежать обнаружения;
измерения первых 10 млн цифр числа пи, чтобы подсчитать время вычисления и определить, находится ли зараженная система в песочнице или в среде детонации, предназначенной для обнаружения вредоносных программ;
связи с командным интерфейсом компьютера с помощью специальных команд, связанных со временем;
анализа метаданных и другой информации с помощью временных атак, определения состояния, положения и возможностей целевой системы.
Если же администратор запрещает программе доступ к данным о времени (локальном, реальном и линейном), работа с целевой информационной системой может стать для злоумышленника более трудной или вовсе невозможной.
Но тут важно отметить, что массовое ограничение доступа приложений ко времени, скорее всего, приведет к каскадным сбоям и ошибкам. При решении этой задачи необходим тонкий подход.