Сертификаты X509, DigitalSignature и NonRepudiation (C#)

Нам передали набор тестовых сертификатов на смарт-картах для разработки решения, требующего подписи XML-сообщений с использованием PKI. На каждой (физической) смарт-карте хранится два сертификата. Я импортирую их в хранилище сертификатов Windows с помощью программного обеспечения, предоставленного поставщиком смарт-карт, а затем использую код, похожий на следующий, для перебора установленных сертификатов:

foreach (X509Certificate2 x509 in CertStore.Certificates) {
  foreach (X509Extension extension in x509.Extensions) {
     if (extension.Oid.Value == "one we are interested in") {
        X509KeyUsageExtension ext = (X509KeyUsageExtension)extension;
        if ((ext.KeyUsages & X509KeyUsageFlags.DigitalSignature) != X509KeyUsageFlags.None) {
            // process certs here

Нам было сказано использовать сертификаты с установленным флагом использования ключа NonRepudiation для подписи XML-файлов. Однако сертификат с флагом NonRepudiation имеет этот флаг только, а не, например, флаг DigitalSignature, который я проверял выше. Кому-то, кроме меня, это кажется немного странным? Другими словами, мне говорят подписать с сертификатом, у которого (кажется) не установлен флаг использования DigitalSignature. Это нормальная процедура? Любые комментарии?

Спасибо.


person Eyvind    schedule 21.12.2009    source источник


Ответы (3)


Какое ключевое использование у него есть? Вы правы, это немного странно, однако, если, например, ключ использовался для предоставления входа в AD, тогда у него могут не быть установлены флаги для использования DigitalSignature. Это не означает, что вы не можете использовать его для этого, это просто указывает на то, что эмитент сертификата не дает никаких гарантий, когда вы выходите за пределы указанного использования ключа.

person blowdart    schedule 21.12.2009
comment
Тот, у кого установлен флаг NonRepudiation, имеет только этот флаг, и это то, что кажется мне странным (учитывая, что мне прямо сказано использовать его для подписи), однако я далек от этого. от эксперта в этой области, поэтому я подумал, что лучше поспрашивать :) - person Eyvind; 21.12.2009
comment
Кстати; эти сертификаты создаются специально для этой цели и не предназначены для входа в AD и т. д. - person Eyvind; 21.12.2009
comment
Что ж, это немного странно, должно быть и то, и другое, но это зависит от политики эмитента. Флаги на самом деле являются индикаторами использования, но вам решать, следует ли одобрять или отклонять сертификаты на их основе. - person blowdart; 21.12.2009

Как я прочитал RFC 5280 (4.2.1.3), nonRepudiation является надмножеством digitalSignature. Другими словами, он предоставляет все возможности digitalSignature и некоторые другие. Так что технически то, о чем они просят, действительно, хотя, возможно, и необычно.

person Von    schedule 10.01.2010

Если вы хотите предоставить услугу неотказуемости, то есть вы хотите, чтобы подписи имели ПРАВОВОЕ значение, то вы должны использовать только неотказуемость. Действительно, это РЕКОМЕНДУЕТСЯ стандартами (см. ETSI TS 102 280), поскольку использование других битов keyUsage вместе с nonRepudation может иметь проблемы с безопасностью.

person G.P.    schedule 10.06.2010
comment
Спасибо, что прояснили это и вернулись к этому вопросу спустя такое долгое время :) +1 - person Eyvind; 11.06.2010