繁体   English   中英

X509证书,DigitalSignature与不可否认(C#)

[英]X509 Certificates, DigitalSignature vs NonRepudiation (C#)

我们已经在智能卡上获得了一组测试证书,以开发一种要求使用PKI对XML消息进行签名的解决方案。 每个(物理)智能卡似乎都存储有两个证书。 我使用智能卡提供程序提供的软件将它们导入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

我们被告知使用设置了不可否认密钥使用标志的证书来对XML进行签名。 但是,具有NonRepudiation标志的证书具有此标志,而不是我上面检查过的DigitalSignature标志。 这会打击我以外的人吗? 换句话说,我被告知要使用未(似乎)未设置DigitalSignature使用标志的证书进行签名。 这是正常程序吗? 任何意见?

谢谢。

它有什么主要用途? 没错,这有点奇怪,但是,例如,如果密钥用于提供AD登录,则可能未设置用于DigitalSignature的标志。 这并不是说您不能为此使用它,仅表示当您超出密钥指示的使用范围时,证书颁发者不提供任何保证。

当我阅读RFC 5280 (4.2.1.3)时,不可否认是digitalSignature的超集。 换句话说,它授予了DigitalSignature的所有功能,然后授予了某些功能。 因此,从技术上讲,他们要求的是有效的,尽管可能与众不同。

如果要提供不可否认性服务,即您希望签名具有LEGAL值,则应该仅使用不可否认性。 实际上,这是标准推荐的标准(请参阅ETSI TS 102 280),因为将其他keyUsage位与nonRepudation一起使用可能会带来安全问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM