[签名算法]DSA 算法
DSA(Digital Signature Algorithm)是Schnorr和ElGamal簽名算法的變種,被美國NIST作為DSS(DigitalSignature Standard)。 DSA是基于整數(shù)有限域離散對數(shù)難題的。
DSA是一種更高級的驗(yàn)證方式。一般用于數(shù)字簽名和認(rèn)證。DSA 不單單只有公鑰、私鑰,還有數(shù)字簽名。私鑰加密生成數(shù)字簽名,公鑰驗(yàn)證數(shù)據(jù)及簽名。在DSA數(shù)字簽名和認(rèn)證中,發(fā)送者使用自己的私鑰對文件或消息進(jìn)行簽名,接受者收到消息后使用發(fā)送者的公鑰來驗(yàn)證簽名的真實(shí)性。如果數(shù)據(jù)和簽名不匹配則認(rèn)為驗(yàn)證失敗!數(shù)字簽名的作用就是校驗(yàn)數(shù)據(jù)在傳輸過程中不被修改。數(shù)字簽名,是單向加密的升級!
DSA加密算法的安全性
DSA加密算法主要依賴于整數(shù)有限域離散對數(shù)難題,素?cái)?shù)P必須足夠大,且p-1至少包含一個(gè)大素?cái)?shù)因子以抵抗Pohlig &Hellman算法的攻擊。M一般都應(yīng)采用信息的HASH值。DSA加密算法的安全性主要依賴于p和g,若選取不當(dāng)則簽名容易偽造,應(yīng)保證g對于p-1的大素?cái)?shù)因子不可約。
算術(shù)中運(yùn)用的參數(shù)
DSA算法中應(yīng)用了下述參數(shù):
p:L bits長的素?cái)?shù)。L是64的倍數(shù),范圍是512到1024;
q:p – 1的160bits的素因子;
g:g = h^((p-1)/q) mod p,h滿足h < p – 1, h^((p-1)/q) mod p > 1;
x:x < q,x為私鑰 ;
y:y = g^x mod p ,( p, q, g, y )為公鑰;
H( x ):One-Way Hash函數(shù)。DSS中選用SHA( Secure Hash Algorithm )。
p, q, g可由一組用戶共享,但在實(shí)際應(yīng)用中,使用公共模數(shù)可能會帶來一定的威脅。
簽名及驗(yàn)證協(xié)議
P產(chǎn)生隨機(jī)數(shù)k,k < q;
P計(jì)算 r = ( g^k mod p ) mod q
s = ( k^(-1) (H(m) + xr)) mod q
簽名結(jié)果是( m, r, s )。
驗(yàn)證時(shí)計(jì)算 w = s^(-1)mod q
u1 = ( H( m ) * w ) mod q
u2 = ( r * w ) mod q
若v = r,則認(rèn)為簽名有效。
總結(jié)
以上是生活随笔為你收集整理的[签名算法]DSA 算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 航空订票系统java_航空订票系统(JA
- 下一篇: HIT CSAPP 大作业