Digital Signature Algorithm (DSA)是Schnorr和ElGamal签名算法的变种,被美国NIST作为DSS(DigitalSignature Standard)。算法中应用了下述参数: 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中选用SHA( Secure Hash Algorithm )。 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,则认为签名有效。 DSA是基于整数有限域离散对数难题的,其安全性与RSA相比差不多。DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。RSA算法却做不到。 《DSA数字签名算法详解》 数字签名算法(Digital Signature Algorithm,简称DSA)是密码学中的一个重要组成部分,它在网络安全、数据完整性以及身份认证等领域扮演着关键角色。DSA是由美国国家标准与技术研究所(NIST)制定的,作为数字签名标准(Digital Signature Standard,简称DSS)的一部分,它结合了Schnorr和ElGamal签名算法的特点,为电子通信提供了一种可靠的保障。 DSA的核心参数包括: 1. **大素数p**:长度为L位,其中L是64的倍数,通常取值范围为512到1024位,确保了足够的安全强度。 2. **素因子q**:是p-1的160位素因子,这个大小的选择是为了配合常用的哈希函数,如SHA-1,产生160位的摘要。 3. **基数g**:通过h^(p-1)/q mod p计算得出,其中h小于p-1且h^(p-1)/q mod p大于1。g与p和q一起构成系统参数,用于生成公钥和私钥。 4. **私钥x**:是一个小于q的随机数,是签名的秘密所在。 5. **公钥y**:通过y = g^x mod p计算得出,与(p, q, g)共同构成公钥,用于验证签名。 在DSA的签名过程中,发送方P执行以下步骤: 1. 生成随机数k,确保k小于q。 2. 计算r = (g^k mod p) mod q,这是签名的第一个部分。 3. 计算s = (k^(-1) * (H(m) + xr)) mod q,其中H(m)是消息m通过哈希函数得到的摘要,k的逆是模q下的逆元,s是签名的第二个部分。最终签名是(r, s)。 接收方验证签名时,会执行以下步骤: 1. 计算w = s^(-1) mod q。 2. 计算u1 = (H(m) * w) mod q和u2 = (r * w) mod q。 3. 计算v = ((g^u1 * y^u2) mod p) mod q。 4. 如果v等于r,那么签名被认为是有效的,表示消息未被篡改。 DSA的安全性基于整数有限域上的离散对数问题,这是一个被认为在当前计算能力下难以解决的数学难题。DSA的一个独特之处在于,它公开了两个素数p和q,这使得用户可以验证这些参数是否随机生成,从而增强了系统的信任度。相比之下,RSA算法的模数n是p和q的乘积,p和q本身是保密的,因此无法进行类似验证。 DSA作为数字签名的一种方法,以其高效性和安全性在现代密码学中占有一席之地。通过合理的参数设置和严谨的数学运算,DSA确保了数据的完整性和发送者的身份认证,是电子通信安全的重要工具。然而,如同所有加密算法,DSA也需不断适应新的安全挑战,以抵御潜在的攻击手段。
- 易凌风2014-05-19没仔细看,想要源码,这个是word文档。。资料内容百度一下就能找到的
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助