Назад | Перейти на главную страницу

Как однозначно удостоверять личность

У нас есть служба, получающая множество подписанных XML-документов, некоторые из них подписаны самозаверяющим сертификатом, а некоторые подписаны доверенным центром сертификации.

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

Сегодня мы сравниваем отпечаток сертификата со списком принятых отпечатков сертификата.

Можем ли мы доверять уникальности отпечатка пальца или его можно подделать?

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

Если вы используете стандартная подпись XML синтаксис, то необязательный KeyInfo может содержать фактический сертификат для использования.

Вы должны использовать отпечаток сертификата из KeyInfo для сопоставления со списком принятых сертификатов, а затем проверять фактическую подпись по копия этого сертификата из вашего собственного хранилища доверенных сертификатов. Если фактический сертификат, использованный при подписании документа, отличается, этап проверки не удастся, документ должен быть отклонен, и кто-то, надеюсь, должен провести дальнейшее расследование.

Отпечаток сертификата должен быть достаточно сложным, чтобы вероятность случайного получения двух сертификатов с одним и тем же отпечатком была незначительной. Но даже если это произойдет (возможно, злонамеренно), это должно привести только к выбору неправильного сертификата для процесса проверки подписи, что определенно должно привести к сбою проверки.

Но если вы проверяете документ с сертификатом, который прилагается к самому документу а затем проверив, что отпечаток сертификата соответствует одному из доверенных сертификатов, вы Делать неправильно: вы по существу используете отпечатки доверенных сертификатов в качестве паролей.