Сертификаты X509, цифровая подпись и нерепродукция (C #) - PullRequest
0 голосов
/ 21 декабря 2009

Мы получили набор тестовых сертификатов на смарт-картах для разработки решения, которое требует подписи 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, имеет этот флаг only , а не, например, флаг DigitalSignature, который я проверяю выше. Удивляет ли это кого-то, кроме меня, как-то странно? Другими словами, мне говорят подписать сертификатом, для которого (кажется, не) установлен флаг использования DigitalSignature. Это нормальная процедура? Есть комментарии?

Спасибо.

Ответы [ 3 ]

1 голос
/ 10 января 2010

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

1 голос
/ 10 июня 2010

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

1 голос
/ 21 декабря 2009

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

...