
(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沒有對這種闕下信道做任何解釋,人們有理由懷疑他們是否早已知道這種閾下信道的存在。
