Опубликован: 26.01.2005 | Уровень: специалист | Доступ: платный | ВУЗ: Московский государственный университет имени М.В.Ломоносова
Лекция 5:

Инфраструктура Открытого Ключа (часть 5)

Подготовка для сертификата i+1

Для подготовки обработки сертификата i+1 выполняются следующие шаги для сертификата i:

  1. Если представлено расширение отображений политики, проверяется, что специальное значение anyPolicy не присутствует в issuerDomainPolicy или subjectDomainPolicy.
  2. Если представлено расширение отображений политики, то для каждого issuerDomainPolicy ID-P в расширении отображений политики:
    1. Если переменная policy_mapping больше 0, для каждого узла в valid_policy_tree глубины i, где ID-P есть valid_policy, установить expected_policy_set и установить значения subjectDomainPolicy, которые определены, эквивалентными ID-P из расширения отображения политик.

      Если нет узлов глубины i в valid_policy_tree, имеющих valid_policy ID-P, но есть узел глубиной i с valid_policy anyPolicy, создать подчиненный узел для узла глубиной i-1, который имеет valid_policy anyPolicy, следующим образом:

      1. Установить valid_policy в ID-P ;
      2. Установить qualifier_set в множество квалификаторов политики anyPolicy в расширении политик сертификации сертификата i ;
      3. Установить criticality_indicator в значение критичности расширения политик сертификации сертификата i ;
      4. Установить expected_policy_set в множество значений subjectDomainPolicy, которое определено эквивалентным ID-P расширения отображений политик.
    2. Если переменная policy_mapping равна 0:
      1. Удалить каждый узел глубины i в valid_policy_tree, где ID-P есть valid_policy.
      2. Если есть узел в valid_policy_tree глубины i-1 или меньше без подчиненных узлов, удалить этот узел. Повторять этот шаг до тех пор, пока не будет узлов глубины i-1 или меньше без подчиненных узлов.
  3. Присвоить working_issuer_name имя субъекта сертификата.
  4. Присвоить working_public_key subjectPublicKey сертификата.
  5. Если поле subjectPublicKeyInfo сертификата содержит поле алгоритма с ненулевыми параметрами, присвоить параметры переменной working_public_key_parameters.

    Если поле subjectPublicKeyInfo сертификата содержит поле алгоритма с ненулевыми параметрами или параметры опущены, сравнить алгоритм subjectPublicKey сертификата с working_public_key_algorithm. Если алгоритм subjectPublicKey и working_public_key_algorithm различные, установить working_public_key_algorithm в null.

  6. Определить алгоритм subjectPublicKey сертификата для переменной working_public_key_algorithm.
  7. Если расширение ограничений имени включено в сертификат, модифицировать переменные состояния permitted_subtrees и excluded_subtrees следующим образом:
    1. Если permittedSubtrees присутствует в сертификате, установить переменную состояния permitted_subtrees в пересечение ее предыдущего значения и значения, указанного в поле расширения. Если permittedSubtrees не включает тип конкретного имени, переменная состояния permitted_subtrees для данного типа имени не изменяется. Например, пересечение msu.ru и cmc.msu.ru есть cmc.msu.ru. А пересечение cmc.msu.ru и mm.msu.ru есть пустое множество.
    2. Если excludedSubtrees присутствует в сертификате, установить переменную состояния excluded_subtrees в объединение ее предыдущего значения и значения, указанного в поле расширения. Если excludedSubtrees не включает тип конкретного имени, переменная состояния excluded_subtrees для данного типа имени не изменяется. Например, объединением пространства имен cmc.msu.ru и mm.msu.ru является пространство обеих имен.
  8. Если имена субъекта и выпускающего не идентичны:
    1. Если explicit_policy не 0, уменьшить explicit_policy на 1.
    2. Если policy_mapping не 0, уменьшить policy_mapping на 1.
    3. Если inhibit_any-policy не 0, уменьшить inhibit_any-policy на 1.
  9. Если расширение ограничений политики включено в сертификат, модифицировать переменные состояния 2 и policy_mapping следующим образом:
    1. Если requireExplicitPolicy присутствует и ее значение меньше, чем explicit_policy, установить explicit_policy в значение requireExplicitPolicy.
    2. Если inhibitPolicyMapping присутствует и ее значение меньше, чем policy_mapping, установить policy_mapping в значение inhibitPolicyMapping.
  10. Если расширение inhibitAnyPolicy присутствует в сертификате и меньше, чем inhibit_any-policy, установить inhibit_any-policy в значение inhibitAnyPolicy.
  11. Убедиться, что сертификат есть сертификат СА (если это не указано в расширении basicConstraints, проверить с помощью внешних средств).
  12. Если сертификат не является самовыпущенным, убедиться, что max_path_length больше нуля и уменьшить max_path_length на 1.
  13. Если pathLengthConstraint присутствует в сертификате и меньше, чем max_path_length, установить max_path_length в значение pathLengthConstraint.
  14. Если расширение использования ключа присутствует, проверить, установлен ли бит keyCertSign.
  15. Определить и обработать все остальные критичные расширения в сертификате. Обработать все другие распознанные некритичные расширения, представленные в сертификате.

Если проверки (1), (10), (11), (12) или (13) не прошли, процедура завершается, возвращается индикация недействительности сертификационного пути и соответствующая причина.

Если (1), (10), (11), (12) и (13) завершены успешно, увеличить i и выполнить базовую обработку сертификата, описанную в предыдущем пункте.

Wrap-up процедура

Для завершения обработки сертификата конечного участника выполнить следующие шаги для сертификата n:

  1. Если сертификат n не является самовыпущенным, и значение explicit_policy не 0, уменьшить explicit_policy на 1.
  2. Если расширение ограничений политики включено в сертификат и requireExplicitPolicy присутствует и имеет значение 0, установить переменную состояния explicit_policy в 0.
  3. Присвоить subjectPublicKey сертификата для working_public_key.
  4. Если поле subjectPublicKeyInfo сертификата содержит поле алгоритма с ненулевыми параметрами, определить параметры как переменную working_public_key_parameters.

    Если поле subjectPublicKeyInfo сертификата содержит поле алгоритма с нулевыми параметрами или параметры опущены, сравнить алгоритм subjectPublicKeyInfo сертификата с working_public_key_algorithm. Если subjectPublicKeyInfo и working_public_key_algorithm различны, установить working_public_key_parameters в null.

  5. Присвоить значение алгоритма из расширения subjectPublicKey сертификата переменной working_public_key_algorithm.
  6. Определить и обработать все другие критичные расширения, представленные в сертификате n. Обработать все другие распознанные некритичные расширения, представленные в сертификате n.
  7. Вычислить пересечение valid_policy_tree и user-initial-policy-set следующим образом:
    1. Если valid_policy_tree есть NULL, пересечение есть NULL.
    2. Если valid_policy_tree есть не NULL и user-initial-policy-set есть any-policy, пересечение есть valid_policy_tree.
    3. Если valid_policy_tree есть не NULL и user-initial-policy-set есть не any-policy, вычислить пересечение valid_policy_tree и user-initial-policy-set следующим образом:
      1. Определить множество узлов политики, у которых родительские узлы имеют valid_policy для anyPolicy. Это есть valid_policy_node_set.
      2. Если valid_policy любого узла в valid_policy_node_set установлено не в user-initial-policy-set и не в anyPolicy, удалить данный узел и все подчиненные узлы.
      3. Если valid_policy_tree включает узел глубины n с valid_policy anyPolicy и user-initial-policy-set есть не any-policy, выполнить следующие шаги:
        1. Установить P-Q в qualifier_set в узле глубины n с valid_policy anyPolicy.
        2. Для каждого P-OID в user-initial-policy-set, который не содержит значение valid_policy узла, создать подчиненный узел, чьим родителем является узел глубины n-1 с valid_policy anyPolicy. Установить значения в подчиненном узле следующим образом: установить valid_policy в P-OID ; установить qualifier_set в P-Q ; копировать criticality_indicator из узла глубины n с valid_policy anyPolicy ; установить expected_policy_set в {P-oid}.
        3. Удалить узел глубины n с valid_policy anyPolicy.
      4. Если существует узел с valid_policy_tree глубины n-1 или менее без подчиненных узлов, удалить этот узел. Повторять данный шаг до тех пор, пока не останется узлов глубины n-1 без подчиненных узлов.

Если либо (1) значение переменной explicit_policy больше нуля, либо (2) valid_policy_tree не есть NULL, то обработка пути выполнена.

Выходные значения

Если обработка пути выполнена, процедура завершается, возвращая индикатор успешного завершения вместе с заключительными значениями valid_policy_tree, working_public_key и working_public_key_algorithm working_public_key_parameters.

Илья Сидоркин
Илья Сидоркин

Добрый день! Подскажите пожалуйста как и когда получить диплом, после сдичи и оплаты?????

Наталья Шульга
Наталья Шульга

Курс "информационная безопасность" .

Можно ли на него записаться на ПЕРЕПОДГОТОВКУ по данному курсу? Выдается ли диплом в бумажном варианте и высылается ли он по почте?

Ярослав Ханько
Ярослав Ханько
Украина
Jacob Liberman
Jacob Liberman
Нидерланды, Amsterdam