1、上节的主要内容上节的主要内容Hash函数函数密钥管理密钥管理第四讲第四讲 数字签名数字签名数字签名的概念数字签名的概念所谓数字签名(所谓数字签名( Digital Signature),也称电),也称电子签名,是指附加在某一电子文档中的一组特定的子签名,是指附加在某一电子文档中的一组特定的符号或代码,它是利用数学方法和密码算法对该电符号或代码,它是利用数学方法和密码算法对该电子文档进行关键信息提取并进行加密而形成的,用子文档进行关键信息提取并进行加密而形成的,用于标识签发者的身份以及签发者对电子文档的认可于标识签发者的身份以及签发者对电子文档的认可,并能被接收者用来验证该电子文档在传输过程中,
2、并能被接收者用来验证该电子文档在传输过程中是否被篡改或伪造。是否被篡改或伪造。数字签名满足的条件数字签名满足的条件 签名是可以被确认的;签名是可以被确认的; 签名是不可伪造的;签名是不可伪造的; 签名是不可重用的;签名是不可重用的; 签名是不可抵赖的;签名是不可抵赖的; 第三方可确认签名但不能篡改;第三方可确认签名但不能篡改;数字签名方案的组成数字签名方案的组成一般数字签名包括三个过程:一般数字签名包括三个过程: 系统初始化过程:系统初始化过程:生成数字签名方案用到的所有参数。生成数字签名方案用到的所有参数。签名生成过程签名生成过程用户利用给定的算法对消息产生签名用户利用给定的算法对消息产生签
3、名 s=Sig(m)。签名验证过程签名验证过程验证者利用公开的验证方法对给定消息的签名验证者利用公开的验证方法对给定消息的签名进行验证,得出签名的有效性进行验证,得出签名的有效性 。 Ver(s,m)=0或或 1数字签名的原理数字签名的原理Elgamal签名体制签名体制 初始化:初始化:首先选择一个大素数首先选择一个大素数 p,使在,使在 Zp中求解离散对数困难。中求解离散对数困难。然后选择一个生成元然后选择一个生成元 gZp *,计算,计算 y=gx mod p,则公开密钥,则公开密钥y,g,p,私钥,私钥 x。 签名过程:签名过程:设待签消息为设待签消息为 m,签名者选择随机数,签名者选择
4、随机数 kZp * ,计算:,计算:r=(gk mod p)s=(h(m)-xr)k-1 mod (p-1)则数字签名为则数字签名为 (s,r),其中,其中 h()为为 Hash函数。函数。Elgamal签名体制签名体制 (续续 ) 验证过程:验证过程:签名接受者在收到消息签名接受者在收到消息 m和签名值和签名值 (r,s)后,后,首先计算首先计算 h(m),然后验证等式:,然后验证等式:yrrs=gh(m) mod p如等式成立,则数字签名有效;否则签名无效。如等式成立,则数字签名有效;否则签名无效。Elgamal签名正确性签名正确性因为:因为:r=(gk mod p)s=(h(m)-xr)k-1 mod (p-1)所以:所以:ks=h(m)-xr mod (p-1)gks = gh(m)-xr mod pgks gxr = gh(m) mod p yrrs=gh(m) mod p数字签名的扩展数字签名的扩展 代理签名代理签名 群签名群签名 盲签名盲签名 多重签名多重签名 不可否认的数字签名不可否认的数字签名 门限的数字签名门限的数字签名