Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Мельников Д. А. - Организация и обеспечение безопасности информационно-технологических сетей и систем - 2012

.pdf
Скачиваний:
734
Добавлен:
15.07.2016
Размер:
20.96 Mб
Скачать

312

Глава 19. Система сетевого времени (синхронизации)

ние передается через некоторое время. После каждого приёма NTP-со­ общения вычисляется сдвиг «0« между временем удалённого сервера и системными часами, используя для этого соответствующие значения статистических параметров «8«, «е« и «^«.

Системный процесс1 включает процедуры селекции, кластери­ зации и суммирования на основе соответствующих алгоритмов оп­ тимизации, и осуществляет поиск среди возможных серверов вре­ мени наиболее «лучших» кандидатов, с точки зрения их точности и надежности, для последующей синхронизации системных часов. Алгоритм селекции основан на византийских принципах обнару­ жения неисправностей или отказов и решает задачу по нейтрализа­ ции самых некорректных кандидатов, именуемых «ложными часа­ ми», и предотвращения их включения в перечень (группу) «надёж­ ных часов». Надёжные часы представляют собой такие часы, кото­ рые обеспечивают соответствующую точность синхронизации отно­ сительно известного доверенного стандартного источника време­ ни/частоты (синхронизируются от него), в то время как ложные ча­ сы представляют собой часы, которые показывают ложное или не­ точное время. Алгоритм кластеризации основан на статистических принципах и обеспечивает поиск группы часов, включающей наи­ более точные надежные часы. Алгоритм суммирования (объедине­ ния) решает задачу вычисления финального значения сдвига вре­ мени путём статистического усреднения значений наиболее точных надёжных часов, прошедших алгоритм кластеризации.

Процедура корректировки часов представляет собой систем­ ный процесс, который управляет временем и частотой системных часов, а в модели реализации он представляет собой генератор пе­ ременной частоты (ГПЧ). Метки времени, формируемые ГПЧ, «за­ мыкают» контур ФАПЧ, который управляет временем системных часов. Процесс, обеспечивающий подстройку часов, представляет собой процедуру корректировки времени, которая проводится 1 раз в секунду в целях вставки вычисленного сдвига времени и поддер­ жания постоянной частоты. Среднеквадратическое отклонение (сдвиг) времени представляет собой номинальную ошибку при оце­ нивании сдвига или джиттер системных часов. Среднеквадратиче­ ское отклонение (сдвиг) частоты представляет собой стабильность частоты генератора или отклонение частоты.

Клиентский программный NTP-модуль передаёт N TP-сооб­ щения каждому серверу времени с интервалом опроса, равным 2‘

1 В данном случае системный процесс назван так потому, что он является системным с точки зрения NTP-протокола, а с точки зрения операционной системы сервера или персонального компьютера клиента он является прикладным NTP-процессом.

Раздел II.

313

секунд. В КГТРу4-стандарте «т« имеет диапазон значений от 4 (16 се­ кунд) до 17 (36 часов). Значение «т« определяется с помощью алго­ ритма настройки часов в целях его совпадения с временной кон­ стантой контура ФАПЧ «Тс = 2Т«. В режиме «клиент/сервер» сервер времени отвечает незамедлительно. Однако в симметричном режи­ ме каждый из двух удаленных серверов времени регулируют значе­ ние «т« в зависимости от текущего системного сдвига и системного джиттера, и поэтому они могут не согласиться с применением одно­ го и того же значения. Очень важно, чтобы динамическое поведение алгоритма настройки времени было под «чутким» контролем для поддержания стабильности в крупных NTP-подсетях. Это требует, чтобы удалённые серверы должны согласовывать единое значение «т«, равное минимальному показателю степени среди двух серверов времени. Для корректного согласования значения этого параметра NTPv4-npOTOKon включает специальные средства.

Модель реализации ЫТРу4-протокола включает специализи­ рованные средства для установки и корректировки системных ча­ сов. Полагается, что ОС реализует две функции:

1)прямая установка времени (например, ОС-Unix системный процесс «settimeofday»);

2)корректировка времени в пределах небольшого диапазона (с помощью минимальных приращений), путём ускорения или замедления течения времени, с помощью вычисленного кор­ ректирующего значения (например, ОС-Unix системный про­

цесс «adjtime»).

Системный процесс «adjtime» используется при корректировке времени, если корректирующее значение не превосходит предель­ ное значение, а системный процесс «settimeofday» - если превосходит предельное значение.

19.6. Типы данных (логическая характеристика)

Все значения NTP-времени представляются в бинарном фор­ мате (twos-complement format), в котором биты нумеруются, начи­ ная с нуля, слева на право (причём крайний левый бит - бит высше­ го порядка или старший). В настоящее время существуют три фор­ мата NTP-времени:

32-битовый укороченный формат (рис. 19.4,1). Этот формат используется в полях заголовка NTP-сообщения, содержащих значения задержки и дисперсии, когда использование значе­ ний с высокой точностью или в более широком диапазоне не

314 Глава 19. Система сетевого времени (синхронизации)

приемлемо. Он включает 16-битовое поле целых секунд и 16битовое поле долей секунды;

|_ 0 _________________________________________ 15\16________________________________________ Щ

I Секунды I Д оли секунды J

Рис. 1 9 .4 ,1 . 32-битовый укороченный формат NTP-времени

о64-битовый формат метки времени (рис. 19.4,2). Этот формат используется в заголовках NTP-сообщений или в других полях с ограниченной длиной. Он включает 32-битовое поле целых секунд (136 лет) и 32-битовое поле долей секунды (точность 232 пикосекунды);

_ о _______________________________________________________________________________________ 31_

___________________________________________Секунды __________________________________________

_______________________________________ Д оли секунды _______________________________________

Рис. 19.4,2. 64-битовый формат метки времени

в128-битовый формат даты (рис. 19.4,3). Этот формат использу­ ется только тогда, когда существует возможность хранения с достаточным объёмом памяти. Он включает 64-битовое поле целых секунд (584 млрд, лет) и 64-битовое поле долей секунды (0,05 аттосекунды или 0,5е-18). В целях согласования отобра­ жений между форматами поле целых секунд разделено на два субполя: 32-битовое поле номера эпохи и 32-битовое по­ ле сдвига эпохи. Эпохи не могут напрямую формироваться NTP-протоколом, и в этом просто нет необходимости. Если это будет необходимо, то тогда номер эпохи может быть получен из внешних источников, например, из файловой системы или специализированного аппаратного устройства.

Вформатах даты и метки времени точкой отсчёта первичной эпохи, или основной датой нулевой эры (0), является ОСШчасов 1 ян­ варя 1900 г. по UTC-шкале времени, когда все биты нулевые. Необ­ ходимо заметить, что строго говоря, UTC-времени не существовало до 1 января 1972 г., но существует договорённость о том, что оно су­ ществовало всю вечность, и даже в случае, когда вся информация о применении вставочных секунд могла быть потеряна. Все даты оп­ ределяются относительно первичной эпохи. Если значение даты больше, чем нулевое, то она представляется временем после точки отсчёта первичной эпохи, если же - меньше, то она представляется временем до точки отсчёта первичной эпохи. (Примечание. Поле «Сдвиг эпохи» в формате даты и поле «Секунды» в формате метки времени интерпретируются одинаково.)

раздел II.

315

О________________________________________________________ 31_

__________________________ Ном ер э п о х и ___________________________

___________С двиг относительно то чки о тсчета эпохи___________ } Секунды

Доли секунды

Рис. 1 9 .4 ,3 .128-битовый формат даты

Метки времени представляют собой беззнаковые значения вре­ мени, а выполнение операций над ними приводит к результату, ко­ торый относится к той же самой или смежной эпохе. Нулевая эра включает даты, начиная с точки отсчёта первичной эпохи до опреде­ лённого момента времени в 2036 г., когда поле метки времени полно­ стью заполнится единицами и в следующий момент времени обну­ литься, и после этого начнётся первая эра (1). В обоих форматах ну­ левое значение представляет собой особый случай, при котором не­ известно время или отсутствует возможность синхронизировать вре­ мя. На рис. 19.5 представлено несколько исторических NTP-дат и их значения в соответствие с Модифицированным Юлианским днём (Modified Julian Date - MJD), NTP-эпохой и NTP-меткой времени.

 

Д А Т А

М J D

NTP-эпоха

NTP-метка времени

С Д В И Г

 

(эра)

(сдвиг эпохи)

 

 

 

 

1января -4712 г.

-2,400,001

-49

1,795,583,104

1-ый день Юлианского календаря

 

1 января -1 г.

-679,306

-14

139,775,744

2 век до нашей эры

 

1января 0 г.

-678,491

-14

171,311,744

1 век до нашей эры

 

1января 1 г

-678,575

-14

202,939,144

1 век нашей эры

4 октября 1582 г.

-100,851

-3

2,873,647,488

Последний день Юлианского кален­

даря

 

 

 

 

 

15 октября 1582 г

-100,840

-3

2,874,597,888

1-ый день Григорианского календаря

31

декабря 1899 г.

15019

-1

4,294,880,896

Последний день NTP-эпохи -1 (эра -

1)

 

 

 

 

 

1

января 1900 г.

15020

0

0

Первый день NTP-эпохи 0 (эра 0)

1

января 1970 г.

40,587

0

2,208,988,800

Первый день UNIX-эпохи

1

января 1972 г.

41,317

0

2,272,060,800

Первый день UTC-эпохи

31

декабря 1999 г.

51,543

0

3,155,587,200

Последний день 20-го века

8 февраля 2036 г.

64,731

1

63,104

Первый день NTP-эпохи 1 (эра 1)

Рис. 19.5. Наиболее интересные исторические NTP-даты

Пусть «р» будет число старших битов, отведенных для дробной части секунды. Тогда точность часов определяется выражением 2- р в секундах. С целью минимизации отклонения и содействия в форми­ ровании максимально непредсказуемых для нарушителя значений меток времени младшие биты должны быть установлены в форме ре­

316

Глава 19. Система сетевого времени (синхронизации)

альной случайной последовательности битов. Точность часов пред­ ставляет собой текущее время для считывания системного времени, в секундах. (.Примечание. Точность, определённая таким образом, может быть больше или меньше, чем разрешение. Параметр «р«, используе­ мый для обозначения точности, всегда больше двух.)

При обработке значений дат и меток времени допускается только одна арифметическая операция - вычитание по модулю два, в результате которого получается 127или 63-битовое знаковое значе­ ние. Чрезвычайно необходимо, чтобы разности первого порядка ме­ жду двумя датами сохраняли полную 128-битовую точность, а разно­ сти первого порядка между двумя метками времени сохраняли пол­ ную 64-битовую точность. Однако разности обычно представляют собой весьма малые значения, как правило, сравнимые с коротким промежутком времени в несколько секунд, и поэтому они могут быть преобразованы в удвоенный формат с плавающей запятой (точкой) для последующей обработки, причём без снижения точности.

Очень важно, чтобы двоичные арифметические действия не отличались между собой при обработке знаковых и беззнаковых ве­ личин (несмотря на то, что их можно сравнивать по знаку в записи), в противном случае необходимо ввести указания по условному обо­ значению. Таким образом, даже на наличие различий между знако­ выми датами и беззнаковыми метками времени, они обрабатывают­ ся одинаково. Существует опасность, связанная с вычислением 64-битовых меток времени перекрывающих границы эпох, напри­ мер, в 2036 г., которая может привести к обнулению всех битов мет­ ки времени. Фактически, если клиент синхронизировался от серве­ ра времени за 68 лет до начала действия протокола, то тогда всё равно будут иметь место корректные значения, даже невзирая на то, что клиент и сервер функционируют в граничащих эпохах.

Некоторые значения времени указываются в экспоненциаль­ ном формате, это относится к точности значений времени, времен­ ным константам и интервалам опроса. Для этого используется 8-битовый знаковый целочисленный формат, в котором секунды выражаются как двоичный логарифм (log2). Для обработки значе­ ний в этом формате допускается только две арифметических опе­ рации: увеличение или уменьшение. Например, если интервал оп­ роса составляет 1024 секунды, то в экспоненциальной форме этот интервал будет равен 10.

Для преобразования системного времени в любой NTPформат даты и метки времени необходимо знать число секунд «s» от точки отсчёта первичной эпохи до значения системного времени. Для заданного «s» определяем:

«era» = s/232 и «timestamp» = s - eraxl32,

раздел II.

317

которые имеют место и при положительных и отрицательных зна­ чениях даты. Для заданных значений эпохи {«era») и метки времени

{«timestamp») определяем:

s = erax232 + timestamp .

Преобразование NTP-времени в системное время и наоборот может быть с незначительными ошибками, но это не является про­ блемой данного стандарта. {Примечание. Число дней в нулевой эре

(0) на один больше, чем число дней в большинстве других эпох, и выравнивание эпох не произойдет до тех пор, пока не наступит 2400 год эры 3.)

19.7. Структуры данных (логическая характеристика)

Переменные состояния разделены по классам в соответствии с их функциональным предназначением:

опакетные переменные представляют собой величины, разме­ щаемые в заголовках NTP-сообщений, которые, в свою оче­ редь, содержаться в передаваемых и принимаемых IP-пакетах;

переменные удаленного сервера и процедуры опроса представляют собой величины, которыми обменивается каждый сервер по отдельному виртуальному соединению;

всистемные переменные представляют собой величины, которые описывают состояние сервера времени, то есть, как оно пони­ мается зависимыми от него клиентами;

опеременные настройки часов представляют собой величины, ко­ торые используются во внутренних процессах обработки па­ раметров при реализации алгоритма настройки часов;

одополнительные классы параметров и переменных.

Обозначение

О п и с а н и е

г.Переменная в заголовке принятого NTP-сообщения

X.Переменная в заголовке переданного NTP-сообщения

р.Переменная удаленного сервера/опроса

S.Системная переменная

с.Переменная настройки часов

Рис. 19.6. условные обозначения префиксов

Условные обозначения структур данных. С целью установ­ ления различия между переменными с одним и тем же именем, но используемых в различных процедурах, вводятся их условные обо­

318

Глава 19. Система сетевого времени (синхронизации)

значения, представленные на рис. 19.6. Переменная в принятом NTP-сообщении « V » является составным элементом пакетной струк­ туры «г» и имеет полное наименование «r.v». Аналогично обознача­ ет переменная в переданном NTP-сообщении - «x.v», переменная удалённого сервера - «p.v», системная переменная - «s.v», и пере­ менная настройки часов - «c.v». Для каждого виртуального соеди­ нения устанавливаются переменные удалённого сервера. Систем­ ные переменные и переменные часов устанавливаются только 1 раз.

Общие параметры. В данном стандарте помимо классов пе­ ременных представлены несколько общих параметров, часть кото­ рых представлена на рис. 19.7.

В любой прикладной системе таких общих параметров гораздо больше, а их количество зависит от самой прикладной системы. Не­ которые из общих параметров записываются в постоянное запоми­ нающее устройство (ПЗУ), например, номер порта транспортного уровня, утверждённый IANA. Другие общие параметры, например допустимое отклонение частоты («ср«), касаются предположения о наиболее худшем функционировании системных часов после их синхронизации и последующем допустимом дрейфе в условиях по­ тери связи с источниками синхронизации (синхроисточники). В ча­ стности, это относится к максимальным и минимальным значениям параметров, определяющих границы переменных состояния.

Некоторые прикладные системы могут настраивать и управ­ лять своими переменными с помощью специализированных команд настройки. Например, прикладной эталонный источник вычисляет значение точности «PRECISION» как логарифм двух (log2) от мини­ мального значения времени за несколько итераций при считывании системного времени.

Наименование

Значение

О п и с а н и е

параметра

 

 

PORT

123

Номер транспортного порта NTP-протокола

VERSION

4

Номер версии NTP-протокола

TOLERANCE

IS e1®

Допустимое отклонение частоты «ср« (сек/сек)

MINPOLL

4

Минимальное экспоненциальное значение интервала опроса (16 сек)

MAXPOLL

17

Максимальная экспоненциальное значение интервала опроса (36 часов)

MAXDISP

16

Максимальная дисперсия (16 сек)

MINDISP

0,005

Минимальная дисперсия/приращение (сек)

MAXDIST

1

Пороговое расстояние (1 сек)

MAXSTRAT

16

Максимальный номер «слоя»

Рис. 19.7. Общие параметры

Переменные в заголовке NTP-сообщения. Наиболее важны­ ми переменными состояния, с объективной точки зрения, являются переменные в заголовке NTP-сообщения (рис. 19.8). Заголовок NTP'

Раздел II.

319

сообщения включает целое число 32-битовых (4-октета) слов, распо­ ложенных в порядке их последовательной передачи по сети. NTPсообщение включает три следующих компонента:

1)собственно заголовок;

2)одно или несколько дополнительных полей расширения;

3)дополнительный код аутентификации сообщения (Message Authentication Code - MAC).

Собственно заголовок идентичен заголовкам NTP-сообщение

всех предшествующих версий. Дополнительные поля расширения используются ассиметричными криптоалгоритмами Autokeyпротокола. МАС-поле используется совместно Autokey-протоколом и симметричным криптоалгоритмом.

NTP-сообщение размещается в поле полезной нагрузки UDPблока (RFC-768). Некоторые поля включают несколько 32-битовых слов, а другие размещаются в составе одного 32-битового слова. Заго­ ловок NTP-сообщения представлен на рис.19.9, он включает двена­ дцать 32-битовых слов и завершается дополнительными полями рас­ ширения и кодом аутентификации сообщения, содержащее поле идентификатора криптоключа и поле проверочной аутентификаци­ онной суммы сообщения. Поля расширения используются для обеспе­ чения дополнительных функциональных возможностей (свойств), на­ пример, использование Autokey-протокола. Формат поля расширения выбран так, чтобы при анализе содержания сообщения не нужно было быиметь какую-либо информацию о функциях этого поля.

Наименование

О бозначение

 

leap

leap

 

version

version

 

mode

m ode

 

stratum

stratum

 

poll

poll

 

precision

P

 

 

__

rootdelay

A r

__

rootdisp

E r

__

refid

refid

___reftime

reftime

____ org

T 1

____ rec

T2

____xmt

T3

^ _ _ _ d s t

T4

 

 

^ _ _ k e y id

keyid

 

 

L ^

J V I A C

M A C

 

 

О п и с а н и е

Индикатор перехода через ООзачасов Номер версии NTP-протокола Режим функционирования

Номер «слоя» Экспоненциальное значение интервала опроса

Экспоненциальное значение точности Коневая задержка Коневая дисперсия

Идентификатор эталонного источника Значение (метка) времени эталонного источника

Метка времени клиента при отправке NTP-сообщения серверу Метка времени сервера при получении NTP-сообщения клиента Метка времени сервера при отправке NTP-ответа клиенту Метка времени клиента при получении NTP-ответа сервера Идентификатор криптоключа

Проверочная аутентификационная сумма сообщения

Рис. 19.8. Переменные в заголовке NTP-сообщения

320

Глава 19. Система сетевого времени (синхронизации)

Основной заголовок NTP-сообщения начинается с первого би­ та сообщения до конца поля «Метка времени сервера при отправке NTP-ответа клиенту» (Transmit Timestamp).

Назначение и кодирование полей NTP-сообщения следующие: 1. «Leap Indicator» (LI): индикатор перехода - 2-битовый код, ука­

зывающий на использование секунд перехода через ОСШчасов, которые будут вставлены или удалены на последней минуте текущего дня, и имеющий следующую кодировку:

Код _________________________________З н а ч е н и е ___________

00 П р е д у п р е ж д е н и е о тсутств ует

01 П о сл ед н яя м и нута со д ер ж и т 61 секунд у

юП о сл ед н яя м и нута с о д ер ж и т 5 9 секунд

11

С о сто я н и е «тр ев оги » (часы

не с и н х р о н и з и р о в а н ы );

 

О

 

 

 

 

7 \ 8

 

?5j J5

 

2 3 \2 4

31

Индншор

Номер

, Р#1ЧИ1 ;

Номергспоя'

 

Интервалопроса

 

Точность

персоля

версии

i

,

;

(8)

.

(8)

.

(8)

 

(2)

(3)

_

 

Корневая задержка (32) Корневая дисперсия (32)

____________________ Идентификатор источника времени (32)_________________ _

Метка времени источника эталонного времени (64)

Метка времени отправки NTP-сообщения серверу (64)

Метка времени сервера при получении NTP-сообщения клиента (64)

Метка времени сервера при отправке NTP-ответа клиенту (64)

Первое поле расширения (переменная длина)

Второе поле расширения (переменная длина)

______Идентификатор криптоключз (32)______

Криптографическая проверочная сумма (128)

Рис. 19.9. Формат заголовка NTP-сообщения

2.«Version Number» (VN): номер версии NTP-протокола - 3- битовый целочисленный код. Текущая версия «4».

3.«Mode»: режим функционирования - 3-битовый целочисленный код. Имеет следующую кодировку:

Код ___________________________________З н а ч е н и е ___________

0 З а р е зе р в и р о в а н о

1 С и м м етри чны й активны й реж им

2С и м м етри чны й пассивны й реж им

3К л и ент

4С е р в е р

5Ш иро ковещ ател ьн ы й реж им

6

З а р е зер в и р о в ан о

д л я

управ л я ю щ и х N T P -сооб щ ен ий

7

З а р е зер в и р о в ан о

д л я

частн ого использования ,

раздел II.

321

4. «Stratum»: номер «слоя» - 8-битовый целочисленный код, оп­ ределяющий уровень иерархии, на котором расположен сер­ вер времени. Имеет следующую кодировку:

Код 0

1

2 . 15

16

17

2 5 5

З н а ч е н и е Н е о п р ед ел ен о или недопустим

П ервичны й сер вер (нап р и м ер , че р е з G P S -п ри ем н ик) Вторичны й сер вер (че р ез N T P -прото кол )

Не си нхр они зиро вано

Зарезер в и р о в ано .

Обычно, нулевое значение номер «слоя» в принятых NTPсообщениях отображается в значение «MAXSTRAT (16)» пере­ менной удалённого сервера «р.stratum», а передаваемых NTPсообщениях отображается в переменную «р.stratum» со значе­ нием «MAXSTRAT (16)» или большим, чем ноль. Это правило позволяет эталонным часам, которые, как правило, располо­ жены на нулевом уровне иерархии, достаточно просто исполь­ зовать те же алгоритмы, которые используются при работе с внешними источниками;

5.«Poll»: интервал опроса - 8-битовый целочисленный знаковый код, определяющий максимальный интервал между успешно переданными NTP-сообщениями (в секундах, как log2). Макси­ мальное и минимальное значения интервала, которые предла­ гаются использовать «по умолчанию», - 6 и 10, соответственно.

6.«Precision»: точность - 8-битовый целочисленный знаковый код, определяющий точность локальных часов (в секундах, как log2). Например, значение «-18» соответствует точности при­ близительно 1 микросекунде. Точность может быть определе­ на при первом запуске службы времени, как минимальное время полученное за несколько итераций при считывании системного времени.

7.«Root Delay»: корневая задержка определяет общую задержку петлевого маршрута до эталонного источника, 32-битовый укороченный формат NTP-времени (рис. 19.4,1).

8.«Root Dispersion»: корневая дисперсия определяет максималь­ ную ошибку времени относительно эталонного источника, 32битовый укороченный формат NTP-времени (рис. 19.4,1).

9.«Reference ID» (refid): идентификатор источника времени - 32битовый код, определяющий эталонные часы или соответст­ вующий сервер времени. Конкретная интерпретация иденти­ фикатора зависит от значения в поле «Номер «слоя». Если в NTP-сообщении указан нулевой номер «слоя» (не определён или не допустим), то тогда идентификатор кодируется как 4- символьная ASCII-последовательность (RFC-1345), именуемая