В. Р. Гинзбург Перевод с английского



Pdf көрінісі
бет159/203
Дата26.09.2024
өлшемі2,74 Mb.
#145829
1   ...   155   156   157   158   159   160   161   162   ...   203
Байланысты:
практическая криптография


Глава 17. Часы
17.4
Создание надежных часов
Простое решение проблемы создания надежных часов нам не известно.
Мы можем лишь предложить несколько методов и идей. Детали этого процес-
са столь существенно зависят от конкретного рабочего окружения и анализа
рисков, что универсальный ответ невозможен.
Большинство компьютеров имеют или могут реализовать некое подобие
счетчика, который начинает функционировать при загрузке компьютера. Это
может быть счетчик количества циклов процессора, счетчик обновлений или
что-нибудь подобное. Такой счетчик может применяться для отслеживания
времени, прошедшего с момента последней перезагрузки компьютера. Разу-
меется, его нельзя рассматривать как часы, так как он не предоставляет ника-
кой информации о текущем времени. Тем не менее он может использоваться
для измерения времени, прошедшего между событиями, которые случились
с момента последней перезагрузки.
Основное назначение счетчика (по крайней мере применительно к пробле-
ме создания надежных часов) состоит в проверке датчика времени на предмет
обнаружения случайных ошибок. Если датчик времени работает неправиль-
но, его показания начнут расходиться со счетчиком. Наличие данного свой-
ства может применяться в качестве признака некоторых ошибочных режи-
мов работы датчика времени, а обнаружить расхождение совсем несложно.
Если системное время было изменено авторизованным пользователем, соот-
ветствие между временем часов и значениями счетчика придется подкоррек-
тировать.
Вторая простая проверка состоит в том, чтобы отслеживать время послед-
него выключения компьютера или последней записи данных на диск. Часы не
должны перескакивать назад. Если компьютер неожиданно загрузится и по-
кажет 1980 год, с датчиком времени, очевидно, что-то не так. Кроме того,
мы можем помешать часам “перескакивать” на большой период времени впе-
ред. Большинство компьютеров загружаются, как минимум, раз в неделю.
Систему можно настроить таким образом, чтобы пользователь подтверждал
правильность даты, если компьютер не включался больше недели
1
. Это поз-
волило бы перехватить ошибку, связанную с переводом часов более чем на
неделю вперед.
Существуют и другие методы проверки времени. Чтобы узнать точное
время, можно обратиться к серверу времени в Internet или intranet. Многие
системы широко используют протоколы синхронизации времени, такие, как
NTP [65] или SNTP [66]. Некоторые из этих протоколов даже обеспечивают
1
Поскольку большинство пользователей щелкают на кнопке OK, даже не удосужившись
прочитать сообщение, гораздо лучше попросить пользователя самого ввести текущую дату,
не показывая ему, какая дата выставлена на встроенном датчике времени.


17.5. Проблема одного и того же состояния
327
аутентификацию временн ´
ых данных, чтобы злоумышленник не смог обма-
нуть компьютер. Разумеется, для выполнения подобной аутентификации си-
стеме требуется некоторая инфраструктура ключей. В качестве общего клю-
ча, используемого совместно с сервером времени, можно было бы применять
ключ симметричного шифрования и настраивать его вручную, но настрой-
ка ключей вручную — занятие не из приятных. Обмен ключами с сервером
времени можно было бы проводить и с помощью инфраструктуры открытого
ключа (PKI). К сожалению, как отмечается в главе 19, “PKI: красивая мечта”,
большинству систем PKI нужны часы, что напоминает старую добрую исто-
рию о курице и яйце. Будьте крайне осторожны, полагаясь на криптографи-
ческую защиту, которую предоставляют протоколы синхронизации времени.
В этом случае от безопасности протокола может зависеть безопасность всей
вашей системы, а мы еще не видели ни одного криптографического обзора
подобных протоколов.
17.5
Проблема одного и того же состояния
Мы подошли к серьезной проблеме, свойственной некоторым аппаратным
платформам. Речь идет о небольших встроенных компьютерах наподобие
дверного замка или удаленного устройства считывания смарт-карт. Такие
компьютеры, как правило, состоят из небольшого процессора, небольшого
объема оперативной памяти, энергонезависимой памяти (например, флэш-
памяти), в которой хранится программа, нескольких каналов связи и допол-
нительного оборудования, специфичного для конкретной задачи.
В подобные устройства редко включают датчики времени. Добавление
датчика времени требует установки дополнительной микросхемы, кварцево-
го резонатора и, что самое важное, батареи. Помимо увеличения стоимости
устройства добавление батареи усложняет его. Необходимо заботиться о том,
чтобы заряд батареи не закончился. Батареи весьма чувствительны к ко-
лебаниям температуры, а наличие в некоторых батареях токсичных веществ
может привести к проблемам с доставкой оборудования. Все это и послужило
причиной того, почему большинство малых компьютеров не имеют датчика
времени.
Малый компьютер всегда загружается в одном и том же состоянии. Он
считывает одну и ту же программу из одной и той же энергонезависимой па-
мяти, инициирует аппаратное обеспечение и начинает выполнение операций.
Поскольку наша книга посвящена криптографии, будем исходить из пред-
положения, что для взаимодействия малого компьютера с другими частями
системы применяется некий криптографический протокол. Вот тут-то и на-
чинаются проблемы: при отсутствии датчика времени или аппаратного гене-


328
Глава 17. Часы
ратора случайных чисел встроенная система всегда будет демонстрировать
одно и то же поведение. Представьте себе злоумышленника, который ждет,
пока к воротам предприятия подъедет грузовик, и компьютеру ворот пона-
добится их открыть. Злоумышленник перезагружает компьютер ворот непо-
средственно перед тем, как они должны открыться (например, на мгновение
прервав подачу электропитания). После нескольких процедур инициализа-
ции центральная система по каналу связи скомандует компьютеру открыть
ворота. На следующий день злоумышленник снова перезагружает компьютер
ворот и посылает ему в точности те же сообщения, что и в первый раз. По-
скольку компьютер ворот запускается в том же состоянии и получает те же
входные данные, он поведет себя точно так же и откроет ворота. Это, конеч-
но же, очень и очень плохо. Отметим, что использование компьютером ворот
протокола синхронизации времени в данном случае не имеет никакого значе-
ния. Злоумышленник может воспроизвести вчерашние сообщения протокола,
а встроенный компьютер ворот не умеет распознавать подобные вещи. Про-
блему одного и того же состояния не решит никакой протокол.
Для решения этой проблемы достаточно воспользоваться микросхемой
датчика времени. Малый встроенный компьютер может зашифровать теку-
щее время вместе с фиксированным секретным ключом, чтобы сгенерировать
данные, обладающие высокой степенью случайности. Эти данные, в свою оче-
редь, могут быть использованы в качестве оказии в криптографическом про-
токоле. Поскольку состояние датчика времени никогда не повторяется, встро-
енный компьютер сможет избежать постоянного пребывания в одном и том
же состоянии.
Аналогичного эффекта можно добиться с помощью аппаратного генера-
тора случайных чисел. Он позволяет встроенному компьютеру изменять свое
поведение после каждой перезагрузки.
А как быть, если в системе нет датчика времени или генератора случай-
ных чисел? К сожалению, это оборачивается большими проблемами. Разуме-
ется, проявив смекалку, вы можете попытаться извлечь случайность из фа-
зового сдвига синхронизирующих импульсов между локальным резонатором
и сетевым источником времени, но получить достаточное количество энтро-
пии за такое короткое время практически невозможно. Вряд ли кто-нибудь
захочет, чтобы встроенный компьютер загружался 10 минут кряду!
В своей практике мы постоянно сталкиваемся с проблемой одного и того
же состояния. Главный урок, который мы смогли вынести из всех подобных
ситуаций, таков: чтобы действительно можно было сделать что-нибудь сто-
ящее в плане криптографии на таких маленьких компьютерах, аппаратное
обеспечение должно коренным образом измениться. Эту идею сложно вну-
шить руководству, особенно если аппаратное обеспечение уже установлено.
Руководство не желает слышать о том, что чего-то нельзя сделать. Но у нас


17.6. Время
329
нет волшебной палочки, которой можно прикоснуться к существующей небез-
опасной системе и превратить ее в безопасную. Если система с самого начала
не будет разрабатываться с оглядкой на безопасность, хороший уровень без-
опасности практически недостижим.
Существует еще одно возможное решение, хотя оно редко применимо на
практике. Иногда в энергонезависимую память удается поместить счетчик
перезагрузок. Значение этого счетчика будет увеличиваться на единицу при
каждой перезагрузке компьютера. Данное решение изобилует всевозможны-
ми недостатками. Некоторые типы энергонезависимой памяти могут претер-
петь лишь несколько тысяч обновлений. Постоянное обновление счетчика,
хранящегося в такой памяти, приведет к быстрому износу компьютера. Еще
некоторые типы энергонезависимой памяти могут быть запрограммированы
только при наличии дополнительного напряжения, которое в обычных усло-
виях зачастую недоступно. В некоторых системах мы можем лишь устанав-
ливать определенные биты энергонезависимой памяти или очищать все ее со-
держимое. Последняя возможность нас не устраивает, поскольку в результа-
те полной очистки памяти мы бы потеряли главную программу компьютера.
Впрочем, даже если мы справимся со всеми перечисленными выше пробле-
мами, нам будет крайне сложно модифицировать энергонезависимую память
таким образом, чтобы значение счетчика всегда гарантированно увеличива-
лось, даже если в произвольные моменты времени система будет неожиданно
отключаться от электропитания. На практике мы встречали лишь несколько
ситуаций, в которых данное решение оказывалось действительно жизнеспо-
собным.
17.6
Время
Обсуждая часы, нельзя не поговорить и о том, какое время следует ис-
пользовать. Наш совет: держитесь подальше от местного времени. Местное
время — это время, которое выставлено на наших наручных, комнатных
и других часах. Проблема местного времени состоит в его изменении при
переходе на летнее время. Подобные изменения приводят к неприятностям:
некоторые значения времени повторяются дважды в году, когда осенью часы
переводят на час назад. В результате подобных манипуляций время теряет
свою уникальность и монотонность. Аналогичным образом некоторые зна-
чения времени пропускаются, когда весной часы переводят на час вперед.
Более того, точные даты перехода на летнее и зимнее время различаются от
страны к стране. В некоторых странах правило перехода на летнее время из-
меняется каждые несколько лет, что привело бы к необходимости постоянно
обновлять программное обеспечение. Ну и наконец те, кто путешествует со


330
Глава 17. Часы
своими ноутбуками, могут изменять установленное на них время в соответ-
ствии с местным временем, что еще более усугубит проблему.
Очевидное решение — использовать время UTC. Это международный
стандарт времени, основанный на использовании атомных часов, который
широко применяется во всем мире. Любой компьютер может отслеживать
смещение местного времени относительно времени UTC и использовать эти
знания для взаимодействия с пользователем.
Время UTC имеет один недостаток —


Достарыңызбен бөлісу:
1   ...   155   156   157   158   159   160   161   162   ...   203




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет