C# DSACryptoServiceProvider有什么问题?

C# DSACryptoServiceProvider有什么问题?,c#,.net,cryptography,digital-signature,dsa,C#,.net,Cryptography,Digital Signature,Dsa,明确建议不要使用现有的DSACryptoServiceProvider 新的非对称算法可用。考虑使用RSURPyTraceVeServices类,而不使用DCurrPyStoReVIEVAsvices类。DSACryptoServiceProvider仅用于与旧式应用程序和数据兼容 DSA有什么问题?由于某种原因,在这个特定的实现中不能交换的仅仅是1024的密钥大小和SHA-1散列算法,还是存在一些不应再使用DSA的通用条件?为什么?我想离散对数问题没有得到有效的解决,是吗 在这个特定的实现中,

明确建议不要使用现有的
DSACryptoServiceProvider

新的非对称算法可用。考虑使用RSURPyTraceVeServices类,而不使用DCurrPyStoReVIEVAsvices类。DSACryptoServiceProvider仅用于与旧式应用程序和数据兼容

DSA有什么问题?由于某种原因,在这个特定的实现中不能交换的仅仅是1024的密钥大小和SHA-1散列算法,还是存在一些不应再使用DSA的通用条件?为什么?我想离散对数问题没有得到有效的解决,是吗

在这个特定的实现中,由于某种原因,不能交换的仅仅是1024的密钥大小和SHA-1哈希算法吗

有点。有两种名为DSA(或DSS,如果您愿意)的算法相互竞争

FIPS 186-1和FIPS 186-2中描述的第一种方法适用于512到1024位的键,步长为64位,需要SHA-1

第二个在FIPS 186-3和更新版本中描述,使用“批准的哈希函数”(基本上指SHA-2函数)处理大小为1024、2048和3072位的密钥

DSACryptoServiceProvider使用Windows CAPI,它只使用旧版本的DSA。DSACng使用Windows CNG,它同时使用两个版本。因此DSACryptoServiceProvider无法升级(在.NET中,因为Windows称CAPI仅用于维护,已弃用)

DSA总的来说已经不受欢迎了。它比RSA和ECDSA慢,比RSA有更多的“完美或破坏”状态,其密钥生成比RSA和ECDSA慢几个数量级


Windows已决定不支持,也“不会”支持使用FIPS 186-3 DSA签名的X.509证书。。。加密库只为被迫有效使用它的人提供。(Apple Security.framework不允许生成DSA密钥,无法验证FIPS 186-3签名,Apple不提供DSA证书)。

存在速度差异、审查差异、长度差异,所有这些都不适合StackOverflow,您是否尝试过crypto.stackexchange.com?@老实说,将军,没有。我认为它适合堆栈溢出,因为它针对的是DSA的一个特定实现——特别是因为.NET framework中的其他实现,例如
DSACng
没有这种注释。我不知道什么样的差异会受到影响,因此我提出了这个问题。“对于DSA,随机签名值k的熵、保密性和唯一性是至关重要的。这一点非常关键,违反这三个要求中的任何一个都会将整个私钥泄露给攻击者。使用相同的值两次(即使在保持k机密的情况下),使用一个可预测的值,或者在多个签名中的每个签名中泄漏几位k,就足以显示私钥x.“,因此它不安全,因为很容易显示足够的数据以允许推断私钥。