(1)dsa加密算法不能进行数据加密,也无法进行密钥分配。DSS只是一个数字签名标准,但当时美国还无法定的公钥加密标准,因此引起了人们对DSS的猜疑。
(2)dsa加密算法比RSA慢。DSA与RSA生成数字签名的速度差不多,在验证签名时DSA比RSA要慢10-40倍。
(3)dsa加密算法的密钥长度太短,最初的DSA模数为512比特,由于dsa加密算法的安全性依靠求解离散对数问题的困难性,这种规模的离散对数已不能保证长期的安全,因此后来NIST将DSA的密钥设置为可变的,变化范围在512-1024bit之间。
(4)dsa加密算法其设计过程不对外,分析时间不充足,猜想其中可能有陷门。这主要是担心政府借机干涉公民的隐私。
(5)其他意见。比如dsa加密算法可能侵犯别人的专利;RSA经受了多年的分析已成为一个事实标准,并且产业界已投入了大量资金等。
现在看来,dsa加密算法的安全问题并不像当初很多人猜测的可怕,有些涉及安全脆弱性的疑虑并不是dsa加密算法独有的,并且可在算法的具体实现中利用适当的措施避免。但也不能说dsa加密算法是绝对完美的,在后来的分析过程中,一些有关安全的瑕疵也多次被提出,主要有以下几个方面:
(1)攻击秘密数k。k是签名者选的秘密数,每次签名都需一个新的k,且应是随机的。若攻击者能恢复一个签名者对消息签名时用的秘密数k,那么就可导出签名者的签名私钥。更危险的是,若签名者用同一秘密数k签名两个不同的消息,则攻击者仅要可以截获这2个消息及签名,无需求解k就能直接得到签名者的签名私钥,也就能伪造此签名者的数字签名。因此,在DSA的应用中,随机秘密数k非常敏感,运用起来一定要特别小心。通常借助一个“好”随机数生成器来应对此问题,避免出现安全漏洞。
(2)共用模数的危险。dsa加密算法在具体应用中可能会让所有人都用相同的模数,这毕竟会给算法的实现带来一定的方便。虽然现在还未发现公共模数有什么问题,不过公共模数对于攻击者而言明显是诱惑的目标。
(3)DSA的阈下信道。该阈下信道可让签名者在签名中嵌进秘密消息,仅有知道密钥的人可以提取此嵌入的秘密消息。Simmons声称,DSA“提供了至今发现的最合适于阈下信道通信的环境”。然而,NIST和NSA没有对这种阙下信道做任何解释,人们有理由怀疑他们是否早已知道这种阈下信道的存在。