Мельников Д. А. - Организация и обеспечение безопасности информационно-технологических сетей и систем - 2012
.pdf312 |
Глава 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), именуемая