Построение пути сертификации
Построение пути сертификации
Построение пути может быть очень сложной и трудоемкой задачей, особенно если требуется обработка большого количества сертификатов. Это связано с трудностями поиска сертификата субъекта, который подписал данный сертификат, если субъект находится вне данной локальной среды. Базовое допущение при построении пути заключается в том, что пользователь может найти или каким-то образом получить все сертификаты, необходимые ему для проверки, и сконструировать путь.
Рис. 10.1. Пример построения пути
Пример 10.1. Пусть пользователь А пытается проверить надежность сертификата пользователя В, с которым он желает взаимодействовать [44]. Предположим, что пользователь В сертифицирован УЦ3, УЦ3 кросс-сертифицирован с УЦ2 (наряду с другими удостоверяющими центрами), УЦ2 кросс-сертифицирован с УЦ1 (наряду с другими), а пользователь А владеет доверенной копией открытого ключа УЦ1 (см. рис. 10.1).
Так как пользователь А владеет сертификатом пользователя В, то знает, что последний сертифицирован УЦ3. В силу того, что УЦ3 кросс-сертифицирован с несколькими удостоверяющими центрами (в нашем примере - тремя), пользователю А необходимо определить, какой кросс-сертификат добавит связь в путь, который он строит. УЦ1 не подписывал никакой из сертификатов УЦ3 (ни УЦ2, ни УЦ6, ни УЦ7 ), поэтому пользователь А должен действовать путем проб и ошибок. Он проверяет каждый из кросс-сертификатов, связанных с УЦ2, УЦ6 и УЦ2, - не подписан ли какой-либо из них УЦ1. В данном примере УЦ2 владеет кросс-сертификатом, заверенным УЦ1, поэтому работа пользователя А по построению пути на этом завершается, поскольку УЦ1 является его пунктом доверия.
Очевидно, что это задание существенно усложняется, если УЦ3 и УЦ2 кросс-сертифицированы со многими другими удостоверяющими центрами и/или если путь между УЦ1 и УЦ3 содержит больше промежуточных удостоверяющих центров. В таких случаях для построения пути используются алгоритмы нахождения пути, базирующиеся на теории графов, включая такие алгоритмы поиска, как поиск преимущественно в глубину (не рекомендуемый из-за большого числа лишних вычислений в общем случае), поиск преимущественно в ширину и эвристический алгоритм.