Pergunta

Recebemos um conjunto de sertificados de teste em cartões inteligentes para o desenvolvimento de uma solução que exige que as mensagens XML sejam assinadas usando o PKI. Cada cartão inteligente (físico) parece ter dois certificados armazenados nele. Eu os importo para o armazenamento de certificados do Windows usando o software fornecido pelo provedor de cartões inteligentes e, em seguida, uso o código semelhante ao seguinte para iterar sobre os certificados instalados:

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

Fomos instruídos a usar os certificados que possuem o sinalizador de uso de chave de não repudiação definido para assinar o XMLs. No entanto, o certificado que possui a bandeira de não repudiação tem essa bandeira , e não, por exemplo, o sinalizador DigitalSignature, que eu verifico acima. Isso parece alguém além de mim como um pouco estranho? Em outras palavras, sou instruído a assinar com um certificado que não (parece) ter o sinalizador de uso do digitalsignature. Isso é procedimento normal? Algum comentário?

Obrigado.

Foi útil?

Solução

Que uso principal ele tem? Você está certo, isso é um pouco estranho, no entanto, se, por exemplo, a chave foi usada para fornecer logins de anúncios, pode não ter os sinalizadores definidos para uso digitalSignature. Isso não quer dizer que você não possa usá -lo para isso, apenas indica que o emissor do certificado não oferece garantia quando você sair do uso indicado da chave.

Outras dicas

Enquanto eu li RFC 5280 (4.2.1.3), a não repudiação é um superconjunto de designação digital. Em outras palavras, concede a todas as habilidades da designação do digitals e mais algumas. Então, tecnicamente, o que eles estão pedindo é válido, embora talvez incomum.

Se você deseja fornecer um serviço de não repudiação, ou seja, você deseja que as assinaturas tenham um valor legal, você deve usar apenas a não repudiação. De fato, isso é recomendado por padrões (ver Etsi TS 102 280), pois o uso de outros bits Keyusage, juntamente com a não repudação, pode ter problemas de segurança.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top