、利用 ELGamal密码实现数字签名 (3)验证签名 用户B接收:<mr,s 用户B用A的公钥y验证:a= yrs mod p, 是否成立,若成立则签名为真,否则签名为假。 签名的可验证性可证明如下: 因为s=(m-xr)k1modp-1, 所以m=xr+ ks mod p-, a am= axrtks=(arr(ak)s=ytr mod p 放签名可验证
三、利用ELGamal密码实现数字签名 ⑶ 验证签名 • 用户B接收:<m,r,s> • 用户B用A的公钥y验证:αm =yr rs mod p, 是否成立,若成立则签名为真 若成立则签名为真,否则签名为假。 • 签名的可验证性可证明如下: 因为s=(m-xr)k-1 mod p-1, 所以 m=xr +ks mod p-1, 故 αm = αxr+ks = (αx )r (αk )s =yr rs mod p , 故签名可验证
、利用 ELGamal密码实现数字签名 (3)验证签名 安全性 0从公开密钥求私钥是离款矿数问题。 p-1要有大素数因子否则易受攻击。 为了安全,随机数k应当是一次性的。否 则时间一长,k将可能泄露。因为, X=(m-ks)rl mod p-1 如果知道了m,便可求出保密的解密钥
三、利用ELGamal密码实现数字签名 ⑶ 验证签名 • 安全性 • 从公开密钥求私钥是离散对数问题 钥求私钥是离散对数问题。 • p-1要有大素数因子 要有大素数因子,否则易受攻击。 • 为了安全,随机数k应当是一次性的 应当是一次性的。否 则时间一长,k将可能泄露。因为, x=(m-ks)r-1 mod p-1, 如果知道了m,便可求出保密的解密钥 便可求出保密的解密钥
、利用 ELGamal密码实现数字签名 (3)验证签名 安全性 如果k重复使用,如用签名m和m2于是 m,=xr+ks, mod p-1 m2=xr+ks, mod p-1 于是,(31-s2)k=(m1-m)modp-1 如果知道了m和m,便可求出k进而求出保密的解密钥。 此可知,不要随便给别签名。 不要直接对加签名,历是对 HASH(m)签名
三、利用ELGamal密码实现数字签名 ⑶ 验证签名 • 安全性 • 如果k重复使用,如用k签名m1和m2。于是, m1=xr+ks1 mod p-1, m2=xr+ks2 mod p-1, 于是,(s1-s2)k=(m1- m2) mod p-1 如果知道了m1和m2,便可求出k,进而求出保密的解密钥 进而求出保密的解密钥。 • 由此可知,不要随便给别人签名 不要随便给别人签名。 • 不要直接对m签名,而是对HASH(m) HASH(m)签名
、利用 ELGamal密码实现数字签名 3、 ELGamal密码签名的应用 美国数字签名标准(DSS)的签名算法 DSA是它的一种交形。 安全,方便。 0缺点:由于取(r,s)作为m的签名,所 以数字签名的长度是明文的两倍。数据 扩张严重
三、利用ELGamal密码实现数字签名 3、 ELGamal密码签名的应用 • 美国数字签名标准(DSS)的签名算法 DSA是它的一种变形。 它的一种变形。 • 安全,方便。 • 缺点:由于取(r,s)作为m的签名,所 以数字签名的长度是明文的两倍。数据 名的长度是明文的两倍。数据 扩张严重