Глава 17
Часы
Прежде чем переходить к подробному обсуждению управления ключами,
необходимо рассмотреть еще одну примитивную функцию: часы. На первый
взгляд это совершенно
не
криптографическая функция. Тем не менее, по-
скольку в криптографических системах часто используется текущее время,
нам определенно не обойтись без надежных часов.
17.1
Зачем нужны часы
В криптографии часы имеют несколько областей применения. Функции
управления ключами часто привязаны к предельным срокам. Кроме того,
текущее время может пригодиться как в качестве уникального значения, так
и для полного упорядочения событий. Обсудим каждую из этих областей
применения подробнее.
17.1.1
Срок действия
Довольно часто требуется ограничить срок действия документа. В реаль-
ном мире ограниченный срок действия имеют многие вещи — чеки, авиабиле-
ты с открытой датой, ваучеры, купоны и даже авторские права. Стандартный
способ ограничить срок действия цифрового документа — включить время
истечения срока действия в сам документ. Но, чтобы проверить, не истек
ли срок действия документа, необходимо знать текущее время. Вот где на
помощь приходят часы.
17.1.2
Уникальные значения
Еще одной удобной особенностью текущего времени является возмож-
ность применять его в качестве уникального значения в рамках одного ком-
320
17.1. Зачем нужны часы
321
пьютера. В предыдущих главах не раз упоминались оказии. Важным свой-
ством оказии является то, что никакое ее значение не используется дважды,
по крайней мере на протяжении заданного периода времени. Иногда этот пе-
риод времени ограничен, например использование оказии в рамках сеанса
безопасного канала общения. В этой ситуации оказию можно генерировать
с помощью счетчика. В других случаях оказия должна оставаться уникаль-
ной до следующей перезагрузки компьютера. Существует два универсальных
способа генерации значений оказии. Первый заключается в использовании те-
кущего времени часов совместно с некоторым механизмом, гарантирующим,
что одно и то же значение времени никогда не будет использовано дважды.
Второй
способ подразумевает использование генератора псевдослучайных чи-
сел, который рассматривается в главе 10, “Генерация случайных чисел”. Недо-
статком использования случайной оказии является то, что она должна быть
очень большой. Чтобы достигнуть уровня безопасности в 128 бит, следова-
ло бы использовать 256-битовую оказию. Не все криптографические функции
поддерживают оказии таких размеров. Более того, на некоторых платформах
очень сложно реализовать генератор псевдослучайных чисел. В качестве за-
мечательного альтернативного
способа генерации оказий можно предложить
надежные часы.
17.1.3
Монотонность
Время, как известно, всегда идет вперед, оно никогда не останавливает-
ся и не обращает свой ход вспять. Это весьма полезное свойство применя-
ется в некоторых криптографических протоколах. Включив текущее время
в криптографический протокол, мы мешаем злоумышленнику пересылать
старые сообщения, сгенерированные в рамках предыдущих сеансов работы
протокола, под видом новых. Действительно, время, закодированное в тех
сообщениях, не попадает во временн ´
ые рамки текущего сеанса работы про-
токола.
Еще одной важной областью применения часов является аудит и ведение
журналов. В любой системе управления транзакциями очень важно вести
журнал всего происшедшего. Если в системе когда-нибудь возникнет спорная
ситуация, журналы аудита позволят отследить точную последовательность
происшедших событий. В каждую запись о событии очень важно включать
точное время; не имея временн´ой метки, сложно определить, какие события
принадлежали к одной и той же транзакции и в каком порядке они выпол-
нялись. Если часы различных компьютеров хорошо синхронизированы и их
показания не отклоняются (или практически не отклоняются) друг от дру-
га, наличие временн ´
ых меток позволяет соотносить события из различных
журналов, находящихся на разных машинах.