19.04.2006 10:06:14Верификация сертификата. Как обрести уверенность в его подлинности? Ответов: 5
ppvlad
Здравствуйте, уважаемые.

Вопрос, наверняка, продиктован моей некомпетентностью в данном вопросе, прошу заранее прощения, если ответ очевиден:

Проверяем цепочку по CertGetCertificateChain, всё нормально, ошибок нет. Но на чём основано доверие к этой проверке? Предположим Ева работает админом в организации, дома подняла CA с таким-же именем что и в организации, выдала им сертификат на имя Алисы (то есть поля Issuer и Subject визуально идентичны атакуемым). Пользователям установила свой рут-сертификат и сертификат своего CA и подписала сфабрикованным сертификатом документ (сертификат совмещён с подписью).

Боб проверяет на своём рабочем компьютере эту подпись - она, я так понимаю, будет вполне валидна, потому что цепочка будет полной (упрётся в рутовый сертификат).

Вопрос такой: описанная ситуация есть плод моей некомпетентности или это вполне реальная атака и её как-то можно разрулить (например "правильной" проверкой валидности сертификата в подписи - тогда вопрос - как?)

Заранее спасибо.
 
Ответы:
20.04.2006 12:30:31ppvlad
не то, чтобы я хотел показаться назойливым, но, прошу ответить по возможности на этот вопрос...
20.04.2006 12:37:59Василий
Выражение доверия рутовому сертификату - добровольное действие пользователя компьютера. Если он установит поддельный сертификат в хранилище "Доверенные корневые ЦС", то он будет доверять всем сертификатам, выданным поддельным центром. Если он этого не сделает - цепочка не построится.
20.04.2006 14:27:19ppvlad
Спасибо за ответ.

то есть, как я понял, основа доверия любым сертификатам это вопрос доверия корневому сертификату.

с вашего позволения я задам вопрос немного иначе - правильно ли я понимаю, что доверие к любому сертификату эквивалентно доверию лицу, имеющему права на установку корневых сертификатов на тот компьютер, где будет проверяться подлинность проверяемых?

можно в принципе установить подлинность сертификата безотносительно своего локального хранилища рутовых сертификатов?
20.04.2006 15:25:35Василий
> доверие к любому сертификату эквивалентно доверию лицу, имеющему права на установку корневых сертификатов на тот компьютер, где будет проверяться подлинность проверяемых
Поправка - администратор компьютера может поставить сертификат в хранилище локального компьютера "Доверенные корневые ЦС", откуда он маппируется в одноимённые хранилища всех пользователей этого компьютера. Аналогично администратор домена может установить сертификат в AD и на всех доменных компьютерах будет доверие к этому сертификату. Простой пользователь не сможет поставить рутовый сертификат в "Доверенные корневые ЦС" другого пользователя этого (или другого) компьютера.

> можно в принципе установить подлинность сертификата безотносительно своего локального хранилища рутовых сертификатов

Смотря что называть "установить подлинность сертификата". Если - проверка цепочки средствами CryptoAPI, то нет. Обратный пример: MS Outlook позволяет явно выражать доверие сертификату, на котором подписано сообщение, даже если нет доверия соответствующему корневому сертификату.
20.04.2006 18:01:45ppvlad
спасибо, исчерпывающе понятно.