| ||||
| ||||
Здравствуйте, уважаемые. Вопрос, наверняка, продиктован моей некомпетентностью в данном вопросе, прошу заранее прощения, если ответ очевиден: Проверяем цепочку по CertGetCertificateChain, всё нормально, ошибок нет. Но на чём основано доверие к этой проверке? Предположим Ева работает админом в организации, дома подняла CA с таким-же именем что и в организации, выдала им сертификат на имя Алисы (то есть поля Issuer и Subject визуально идентичны атакуемым). Пользователям установила свой рут-сертификат и сертификат своего CA и подписала сфабрикованным сертификатом документ (сертификат совмещён с подписью). Боб проверяет на своём рабочем компьютере эту подпись - она, я так понимаю, будет вполне валидна, потому что цепочка будет полной (упрётся в рутовый сертификат). Вопрос такой: описанная ситуация есть плод моей некомпетентности или это вполне реальная атака и её как-то можно разрулить (например "правильной" проверкой валидности сертификата в подписи - тогда вопрос - как?) Заранее спасибо. | ||||
Ответы: | ||||
| ||||
не то, чтобы я хотел показаться назойливым, но, прошу ответить по возможности на этот вопрос... | ||||
| ||||
Выражение доверия рутовому сертификату - добровольное действие пользователя компьютера. Если он установит поддельный сертификат в хранилище "Доверенные корневые ЦС", то он будет доверять всем сертификатам, выданным поддельным центром. Если он этого не сделает - цепочка не построится. | ||||
| ||||
Спасибо за ответ. то есть, как я понял, основа доверия любым сертификатам это вопрос доверия корневому сертификату. с вашего позволения я задам вопрос немного иначе - правильно ли я понимаю, что доверие к любому сертификату эквивалентно доверию лицу, имеющему права на установку корневых сертификатов на тот компьютер, где будет проверяться подлинность проверяемых? можно в принципе установить подлинность сертификата безотносительно своего локального хранилища рутовых сертификатов? | ||||
| ||||
> доверие к любому сертификату эквивалентно доверию лицу, имеющему права на установку корневых сертификатов на тот компьютер, где будет проверяться подлинность проверяемых Поправка - администратор компьютера может поставить сертификат в хранилище локального компьютера "Доверенные корневые ЦС", откуда он маппируется в одноимённые хранилища всех пользователей этого компьютера. Аналогично администратор домена может установить сертификат в AD и на всех доменных компьютерах будет доверие к этому сертификату. Простой пользователь не сможет поставить рутовый сертификат в "Доверенные корневые ЦС" другого пользователя этого (или другого) компьютера. > можно в принципе установить подлинность сертификата безотносительно своего локального хранилища рутовых сертификатов Смотря что называть "установить подлинность сертификата". Если - проверка цепочки средствами CryptoAPI, то нет. Обратный пример: MS Outlook позволяет явно выражать доверие сертификату, на котором подписано сообщение, даже если нет доверия соответствующему корневому сертификату. | ||||
| ||||
спасибо, исчерпывающе понятно. | ||||