DSA签名算法简介
目錄
DSA算法
密鑰生成
簽名生成
簽名驗證
正確性驗證
DSA安全性說明
DSA算法是Schnorr和ElGamal簽名算法的變種,被美國NIST作為DSS(Digital Signature Standard)。DSA使用公開密鑰,為接受者驗證數(shù)據(jù)的完整性和數(shù)據(jù)發(fā)送者的身份,也可用于由第三方去確定簽名和所簽數(shù)據(jù)的真實性。
信息交流中,接收方希望收到的信息未被竄改(信息完整性),還希望接收到的信息確由自己認(rèn)定的發(fā)送方所發(fā)(信息來源有效性),那么接收方和發(fā)送方就可以約定,共同使用DSA加密算法來實現(xiàn)。
DSA算法
常見DSA參數(shù)(p、q、簽名)長度為:
- 1024? 160?????? 320
- 2048? 224?????? 448
- 3072? 256?????? 512
下面以1024位的DSA為例進(jìn)行說明:
密鑰生成
?
簽名生成
對數(shù)據(jù)x散列后做簽名,簽名結(jié)果為一對整數(shù)(r, s)。
簽名驗證
?
正確性驗證
‘簽名生成’時的s為:
兩邊同乘s與k的逆,得到
由‘簽名驗證’時的2、3步替換得到:
兩邊同時做模p的指數(shù)運(yùn)算得到:
有‘密鑰生成’時的步5替換得到:
兩邊分別模q得到:
由‘簽名生成’時的步2中r與‘簽名驗證’時的步4中v替換得到:
?
DSA安全性說明
DSA加密算法的安全性:
DSA加密算法主要依賴于整數(shù)有限域離散對數(shù)難題,素數(shù)P必須足夠大,且p-1至少包含一個大素數(shù)因子以抵抗Pohlig &Hellman算法的攻擊。
DSA加密算法的安全性主要依賴于p和d,若選取不當(dāng)則簽名容易偽造,應(yīng)保證d對于p-1的大素數(shù)因子不可約。
重要特點:兩個素數(shù)公開
DSA是基于整數(shù)有限域離散對數(shù)難題的,其安全性與RSA相比差不多。DSA的一個重要特點是兩個素數(shù)公開,這樣,當(dāng)使用別人的p和q時,即使不知道私鑰,也能確認(rèn)它們是否是隨機(jī)產(chǎn)生的,還是作了手腳。
?
總結(jié)
- 上一篇: 易语言 精易WEB浏览器拦截并且显示验证
- 下一篇: 问题解决:Docker之DOCKER_O