-
DSA算法
鎖定
Digital Signature Algorithm(DSA)是Schnorr和ElGamal簽名算法的變種,被美國國家標準技術研究院(NIST)作為DSS(Digital Signature Standard)。
- 中文名
- DSA算法
- 外文名
- Digital Signature Algorithm
- 別 名
- DSS
- 表達式
- 3. 驗證時計算 w = s^(-1)mod q
- 適用領域
- 算數
- 由 來
- Schnorr和ElGamal簽名算法的變種
算法中應用了下述參數:
p:L bits長的素數。L是64的倍數,範圍是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函數。DSS(FIPS186-4)中選用SHA-1或者SHA-2( Secure Hash Algorithm系列中的2個較新版本,其中SHA-2有4個,SHA-224,SHA-256,SHA-384,SHA-512,最原始的SHA已經不再被使用)。
p, q, g可由一組用户共享,但在實際應用中,使用公共模數可能會帶來一定的威脅。簽名及驗證協議如下:
1. P產生隨機數k,k < q;
2. P計算 r = ( g^k mod p ) mod q
s = ( k^(-1) (H(m) + xr)) mod q
簽名結果是( m, r, s )。
3. 驗證時計算 w = s^(-1)mod q
u1 = ( H( m ) * w ) mod q
u2 = ( r * w ) mod q
v = (( g^u1 * y^u2 ) mod p ) mod q
若v = r,則認為簽名有效。