Инфраструктуры открытых ключей.
Процедура проверки валидности пути.
После построения пути сертификации необходимо проверить его валидность. Проверка валидности пути заключается в верификации всех цифровых подписей на сертификатах, составляющих путь сертификации, определении периода действия каждого сертификата (чтобы гарантировать, что его срок действия не истек) и статуса каждого сертификата (чтобы гарантировать, что сертификат не был аннулирован), а также в отслеживании ограничений на политики применения сертификатов, на имена и т.д. Валидация пути обычно менее трудоемка, чем построение пути, но проверка всех ограничений может оказаться сложной, если путь сертификации достаточно длинный. В реализациях PKI используются различные алгоритмы валидации пути, некоторые из них объединяют построение и валидацию, но в большинстве алгоритмов эти операции реализованы как отдельные этапы. Рассмотрим, как проверяется валидность пути сертификации после того, как он построен.
Путь сертификации должен начинаться в пункте доверия того субъекта, который строил путь, в противном случае путь был построен неправильно. Входными данными для валидации пути сертификации являются открытый ключ пункта доверия, период действия этого открытого ключа, имя пункта доверия и любые ограничения, которые налагаются на пути сертификации, связанные с данным пунктом доверия. Во многих реализациях PKI эта информация содержится в самоподписанном или самоизданном сертификате УЦ, являющегося пунктом доверия.
Путь сертификации считается валидным, если образующая его последовательность сертификатов удовлетворяет следующим условиям [89].
* I. Первый сертификат издан пунктом доверия.
* II. Последний сертификат издан для данного конечного субъекта и содержит данный открытый ключ.
* III. Имена издателей и субъектов сертификатов образуют последовательность. Во всех сертификатах этой последовательности, за исключением первого и последнего, имя издателя текущего сертификата совпадает с именем субъекта предыдущего сертификата, а имя субъекта текущего сертификата совпадает с именем издателя следующего сертификата.
* IV. Период действия всех сертификатов не истек, то есть все сертификаты последовательности на момент валидации являются действующими.
Этот набор условий необходим, но не достаточен для того, чтобы путь сертификации был валидным. Помимо перечисленных условий, должны анализироваться и обрабатываться содержащиеся в сертификатах пути основные ограничения, а также ограничения на имена и политики [60]. Эта обработка выполняется за четыре основных шага:
1 Инициализация.
2 Базовая проверка сертификата.
3 Подготовка следующего сертификата в последовательности.
4 Завершение.
Шаги 1 и 4 выполняются однократно. Шаг 2 выполняется для каждого сертификата в последовательности, а шаг 3 - для всех сертификатов, за исключением последнего - сертификата конечного субъекта.
Валидация пути сертификации обычно выполняется для подтверждения валидности пути в текущий момент времени. В лекции рассматривается именно такая валидация, хотя тот же алгоритм может использоваться и для управления валидацией в моменты времени, предшествовавшие текущему моменту. Для валидации пути сертификации требуется несколько входных параметров, иногда их значения устанавливаются по умолчанию. Устанавливаемые по умолчанию значения подходят не для всех приложений.
Входными параметрами для валидации пути сертификации являются:
* предполагаемый путь сертификации;
* набор идентификаторов допустимых политик применения сертификатов ;
* информация о пункте доверия ;
* индикатор, показывающий, разрешено ли устанавливать соответствие политик применения сертификатов в пути сертификации ;
* индикатор, показывающий, требуются ли в сертификатах явные идентификаторы политики ;
* индикатор, показывающий, разрешено ли указывать в сертификатах специальный идентификатор "любая политика".
Инициализация.
На этапе инициализации в зависимости от входных параметров устанавливаются переменные состояния, необходимые для валидации пути сертификации [70]. В переменных состояния сохраняются различные ограничения, учитываемые при валидации пути. Переменные состояния делятся на четыре группы.
Первая группа переменных состояния используется для сохранения информации, необходимой для верификации цифровых подписей: открытого ключа, связанных с ним параметров и названия алгоритма цифровой подписи.
Вторая группа переменных состояния предназначена для сохранения информации о цепочке имен и длине пути сертификации. Переменная состояния отличительного имени ожидаемого издателя используется для подтверждения корректной связи между отличительным именем издателя и отличительным именем субъекта в последовательности сертификатов. Переменная состояния длины пути отражает максимальное число сертификатов в последовательности. Значение этой переменной зависит от ограничения длины пути в дополнении сертификата Basic Constraints (основные ограничения).
Третья группа переменных состояния применяется для сохранения информации о политиках применения сертификатов, образующих путь сертификации. Эти переменные позволяют оценить, является ли критичным дополнение Certificate Policy ( политика применения сертификатов ), необходим ли явный идентификатор политики, разрешено ли отображать дополнительную политику и указывать в сертификатах идентификатор "любая политика".
Рис. 11.1. Пример проверки ограничений на имена.
Четвертая группа переменных состояния отслеживает правильность именования. Для каждого типа имени должны анализироваться разрешенные и запрещенные поддеревья в иерархической структуре имен. Валидные имена должны содержаться в одном из разрешенных поддеревьев и не содержаться ни в одном из запрещенных поддеревьев.
На рис. 11.1 показан пример использования доменных имен Интернета [70]. Имя host.spyrus.com не является валидным, так как не принадлежит ни одному из разрешенных поддеревьев. Имена mail.department2.beta.com и file-server.department2.gamma.com не являются валидными, потому что принадлежат запрещенным поддеревьям.
Как только все переменные состояния инициализированы, осуществляется базовый контроль первого сертификата в последовательности.
Базовый контроль сертификата.
Базовый контроль сертификата выполняется для всех сертификатов последовательности и состоит из ряда проверок [167]. Проверки, использующие каждую из четырех групп переменных состояния, выполняются, чтобы определить, не является ли сертификат просроченным или аннулированным, удовлетворяет ли сертификат ограничениям сертификатов последовательности, предшествующих ему или следующих за ним. Если любая из проверок дает отрицательный результат, то путь сертификации не считается валидным.
Проверка срока действия сертификата.
Эта проверка завершается успешно, если текущие дата и время на момент валидации находятся в пределах срока действия сертификата.
Проверка статуса сертификата.
Эта проверка завершается успешно, если издатель не аннулировал данный сертификат. Основным средством проверки статуса сертификата являются списки САС, но могут использоваться и другие альтернативные средства проверки.
Проверка подписи сертификата.
Подпись сертификата может быть проверена на базе первой группы переменных состояния при помощи открытого ключа издателя сертификата, использования корректных параметров и алгоритма цифровой подписи.
Проверка цепочки имен.
На базе второй группы переменных состояния сравниваются отличительное имя издателя данного сертификата и отличительное имя субъекта сертификата, следующего в последовательности за данным сертификатом.
Проверка политик применения сертификатов.
Для этой проверки используется третья группа переменных состояния. Если дополнение Certificate Policy присутствует в сертификате, то проверяется, является ли указанная политика одним из ожидаемых значений. Если дополнение Certificate Policy содержит специальный идентификатор "любая политика", то проверяется, показывает ли соответствующий индикатор, что разрешена любая политика. Если дополнение Certificate Policy отсутствует, то проверяется, показывает ли соответствующий индикатор, что требуется явное задание политики.
Проверка ограничений на имена.
Для этой проверки используется четвертая группа переменных состояния. Проверяется, принадлежит ли имя субъекта сертификата одному из разрешенных поддеревьев иерархии отличительных имен X.500 и не принадлежит ли одному из запрещенных деревьев этой же иерархии. Также проверяется, принадлежит ли каждое из альтернативных имен субъекта сертификата одному из разрешенных поддеревьев иерархии отличительных имен этого типа и не принадлежит ли одному из запрещенных деревьев этой же иерархии.
Если хотя бы одна из перечисленных проверок базового контроля завершается неудачно, то есть имя субъекта попадает в запрещенный сегмент иерархии, то путь сертификации не признается валидным. Если все проверки проходят успешно, то следующий шаг зависит от того, в каком месте последовательности находится сертификат, прошедший базовый контроль. Если проверенный сертификат - последний, то следующим шагом становится обработка завершения. Если проверенный сертификат - не последний, то происходит переход к подготовке следующего сертификата в последовательности.
Подготовка следующего сертификата.
Сначала выполняется некоторая простая проверка сертификата УЦ. Затем обновляются переменные состояния, для того чтобы они могли отражать значения полей дополнений сертификата. Существует несколько дополнений, которые встречаются только в сертификатах УЦ; они используются для задания ограничений для подчиненных сертификатов. Обновление переменных состояния налагает ограничения на подчиненные сертификаты, когда выполняется последующая базовая проверка сертификатов.
Проверка того, что сертификат является сертификатом УЦ. Обычно эта информация указывается в дополнении Basic Constraints (основные ограничения). Сертификат должен содержать открытый ключ подписи. Проверяется, действительно ли это так и разрешает ли дополнение Key Usage (назначение ключа) применять ключ для подписания сертификатов.
Проверка длины пути сертификации. Проверяется, не была ли превышена максимальная длина пути сертификации.
Корректировка переменных состояния верификации цифровой подписи. В поле информации об открытом ключе субъекта сертификата устанавливаются значения открытого ключа, параметров, связанных с открытым ключом, и название алгоритма цифровой подписи. Если поле информации об открытом ключе субъекта в данном сертификате не содержит никаких параметров открытого ключа, а предыдущий сертификат содержит открытый ключ, связанный с тем же самым алгоритмом подписи, то сохраняются параметры открытого ключа предыдущего сертификата. То есть эти параметры как бы "передаются по наследству" данному сертификату из предыдущего сертификата.
Корректировка переменных состояния цепочки имен и длины пути сертификации. В поле отличительного имени субъекта сертификата устанавливается отличительное имя ожидаемого издателя сертификата. Если отличительное имя издателя сертификата и отличительное имя субъекта сертификата совпадают, то сертификат является самоподписанным или самоизданным.
Если сертификат не является самоизданным, то переменная состояния - счетчик сертификатов - увеличивается на единицу. То, что самоизданные сертификаты не подсчитываются и, следовательно, не увеличивают длину пути сертификации, позволяет УЦ легко перейти от старого ключа подписи к новому, при этом все выпущенные им для конечных субъектов сертификаты сохраняют свою действительность.
Соответствие политик. В дополнение Policy Mapping (соответствие политик) не рекомендуется включать специальный идентификатор "любая политика". Если в поле этого дополнения появляется идентификатор "любая политика", то путь сертификации не признается валидным. Если в поле этого дополнения появляются идентификаторы других политик, то переменные состояния соответствия политик корректируются с учетом преобразования определенной политики домена издателя в определенную политику домена субъекта.
Корректировка ограничений политики. Переменные состояния ограничений политики принимают значения в результате анализа дополнений, характеризующих политики применения сертификатов, образующих путь сертификации. Если в дополнении сертификата содержатся разрешенные ветви (поддеревья) иерархии ограничений, то переменные состояния принимают значения, полученные в результате пересечения разрешенных поддеревьев, отображенных в дополнении данного сертификата, и разрешенных поддеревьев иерархии ограничений предыдущих сертификатов. Если в дополнении сертификата содержатся запрещенные поддеревья иерархии ограничений, то переменные состояния принимают значения, полученные в результате объединения запрещенных поддеревьев, отображенных в дополнении данного сертификата, и запрещенных поддеревьев иерархии ограничений предыдущих сертификатов.
Обработка дополнительных критичных дополнений. Распознаются и обрабатываются любые дополнительные критичные дополнения, представленные в сертификате. Если какое-либо критичное дополнение не удается распознать, то путь сертификации не считается валидным.
Если хотя бы одна из проверок при подготовке следующего сертификата заканчивается неудачно, то путь сертификации не признается валидным. Если все проверки завершаются успешно, то происходит переход к следующему сертификату в последовательности и выполняется базовый контроль сертификата.
Завершение обработки сертификата.
Когда завершается обработка сертификата конечного субъекта, на основании значений переменных состояния устанавливаются выходные значения.
Корректировка переменных состояния верификации цифровой подписи. В поле информации об открытом ключе конечного субъекта устанавливаются значения открытого ключа, параметров, связанных с открытым ключом конечного субъекта, и название алгоритма цифровой подписи. Если поле информации об открытом ключе конечного субъекта в данном сертификате не содержит никаких параметров открытого ключа, а предыдущий сертификат содержит открытый ключ, связанный с тем же самым алгоритмом подписи, то сохраняются параметры открытого ключа предыдущего сертификата. То есть эти параметры как бы "передаются по наследству" данному сертификату из предыдущего сертификата.
Определение допустимых политик применения сертификатов. Определяется пересечение входного набора идентификаторов допустимых политик применения сертификатов и значений переменных состояния политик применения сертификатов. Если пересечение - пустое, то валидация пути сертификации завершается неудачно. Если пересечение не является пустым, то переменные состояния принимают значения, соответствующие пересечению.
Обработка дополнительных критичных дополнений. Распознаются и обрабатываются любые дополнительные критичные дополнения, указанные в сертификате. Если какие-либо критичные дополнения не распознаются, то путь сертификации не является валидным. Из переменных состояния извлекаются выходные параметры валидного пути сертификации:
* политики применения сертификатов и любые связанные с политикой квалификаторы;
* открытый ключ конечного субъекта, параметры, связанные с открытым ключом, и название алгоритма цифровой подписи.
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
- 81.
- 82.
- 83.
- 84.
- 85.
- 86.
- 87.
- 88.
- 89.
- 90.
- 91.
- 92.
- 93.
- 94.
- 95.
- 96.
- 97.
- 98.
- 99.
- 100.
- 101.
- 102.
- 103.
- 104.
- 105.
- 106.
- 107.
- 108.
- 109.
- 110.
- 111.
- 112.
- 113.
- 114.
- 115.
- 116.
- 117.
- 118.
- 119.
- 120.
- 121.
- 122.
- 123.
- 124.
- 125.
- 126.
- 127.
- 128.
- 129.
- 130.
- 131.
- 132.
- 133.
- 134.
- 135.
- 136.
- 137.
- 138.
- 139.
- 140.
- 141.
- 142.
- 143.
- 144.
- 145.
- 146.
- 147.
- 148.
- 149.
- 150.
- 151.
- 152.
- 153.
- 154.
- 155.
- 156.
- 157.
- 158.
- 159.
- 160.
- 161.
- 162.
- 163.
- 164.
- 165.
- 166.
- 167.
- 168.
- 169.
- 170.
- 171.
- 172.
- 173.
- 174.
- 175.
- 176.
- 177.
- 178.
- 179.
- 180.
- 181.
- 182.
- 183.
- 184.
- 185.
- 186.
- 187.
- 188.
- 189.
- 190.
- 191.
- 192.
- 193.
- 194.
- 195.
- 196.
- 197.
- 198.
- 199.
- 200.
- 201.
- 202.
- 203.
- 204.
- 205.
- 206.
- 207.
- 208.
- 209.
- 210.
- 211.
- 212.
- 213.
- 214.
- 215.
- 216.
- 217.
- 218.
- 219.
- 220.
- 221.
- 222.
- 223.
- 224.
- 225.
- 226.
- 227.
- 228.
- 229.
- 230.
- 231.
- 232.
- 233.
- 234.
- 235.
- 236.
- 237.
- 238.
- 239.
- 240.
- 241.
- 242.
- 243.
- 244.
- 245.
- 246.
- 247.
- 248.
- 249.
- 250.
- 251.
- 252.
- 253.
- 254.
- 255.
- 256.
- 257.
- 258.
- 259.
- 260.
- 261.
- 262.
- 263.
- 264.
- 265.
- 266.
- 267.
- 268.
- 269.
- 270.
- 271.
- 272.
- 273.
- 274.
- 275.
- 276.
- 277.
- 278.
- 279.
- 280.
- 281.
- 282.
- 283.
- 284.
- 285.
- 286.
- 287.
- 288.
- 289.
- 290.
- 291.
- 292.
- 293.
- 294.
- 295.
- 296.
- 297.
- 298.
- 299.
- 300.
- 301.
- 302.
- 303.
- 304.
- 305.
- 306.
- 307.
- 308.
- 309.
- 310.
- 311.
- 312.
- 313.
- 314.
- 315.
- 316.
- 317.
- 318.
- 319.
- 320.
- 321.
- 322.
- 323.
- 324.
- 325.
- 326.
- 327.
- 328.
- 329.
- 330.
- 331.
- 332.
- 333.
- 334.
- 335.
- 336.
- 337.
- 338.
- 339.
- 340.
- 341.
- 342.
- 343.
- 344.
- 345.
- 346.
- 347.