- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4.3数字签名标准及数字签名算法.ppt
4.3 数字签名标准及数字签名算法 ; DSS签名也利用一杂凑函数产生消息的一个杂凑值, 杂凑值连同一随机数k一起作为签名函数(Sig)的输入,签名函数还需使用发方的秘钥SkA和供所有用户使用的一族参数,称这一族参数为全局公钥PkG。签名函数的两个输出s和r就构成了消息的签名(s, r)。接收方收到消息后再产生出消息的杂凑值,将杂凑值与收到的签名一起输入到验证函数(Ver), 验证函数还需输入全局公钥PkG和发方的公钥PkA。验证函数的输出结果与收到的签名成分r相等, 则验证了签名是有效的。 ;图 4.2 RSA签名和DSS签名的不同方式
(a) RSA签名; (b) DSS签名 ;4.3.2 数字签名算法DSA
DSA是在EIGamal和Schnorr两个签名方案的基础上设计的, 其安全性基于求离散对数的困难性。 算法描述如下:
(1) 全局公钥。
p:满足2L-1p2L的大素数,其中512≤L≤1024, 且L是64的倍数;
q: p-1的素因子,满足2159q2160, 即q长为160 bit。
g: g=h(p-1)/q mod p, 其中h是满足1hp-1, 且使得h(p-1)/qmod p1的任一整数。 ; (2) 用户秘密 x是满足0xq的随机数或伪随机数。
(3) 用户的公钥 y=gx mod p。
(4) 用户为待签消息选取的秘密数k是满足0kq的随机数或伪随机数。
(5) 签名过程。 用户对消息m的签名为(r, s), 其中 ; (6) 验证过程。 设接收方收到的消息为m′, 签名为(r′,s′)。计算 ;算法的框图如图4.3所示, 其中的四个函数分别为: ;? 由于离散对数的困难性,敌手从r恢复k或从s恢复x都是不可行的。
还有一个问题值得注意,即签名产生过程中的运算主要是求r的模指数r=(gk mod p) mod q, 而这一运算与待签的消息无关, 因此能被预先计算。事实上,用户可以预先计算出很多r和k-1以备以后的签名使用,从而可大大加快产生签名的速度。 ;图 4.3 DSA的框图
(a) 签名过程; (b) 验证过程 ;4.3.3 数字签名算法 HASH
HASH函数与加密函数类似。事实上有些HASH函数就是稍加修改的加密函数。大多数函数的做法是每次取一个数据块, 对数据块的每一位用一个简单的编码函数进行编码。
HASH算法的工作方式类似通信协议中的校验和(checksum), 即发信方将一个数据包的所有字节加起来,将和添加在包上。收信方执行同样的运算并比较两个和,以决定是否被正确地传输。 ; 校验算法的主要作用是根据报文内容通过单向的HASH算法计算出一个校验来,如果报文被改动或增减,则无法根据同样的算法算出相同的校验来。 一般在实际应用中,对于只有数据完整性要求的数据只对其校验进行加密就可以了, 这样能够大大减少数据加密的工作量。
HASH签名使用密码安全函数,如SHA(Secure HASH Algorithm)或MD5(Message Digest5),并根据报文文本产生一个HASH值, 这个过程已把用户的密钥(从第三方得到)与文本联系在一起了,然后再把这个文本和密钥的排列打乱。 HASH值作为签名与文本一起传送,只留下密钥。接收方有密钥的副本, 并用它对签名进行检验。 ; 作为CAPSTONE计划的一部分,(美国)国家标准委员会已定义了安全哈希标准(SHS)作为数字签名标准(DSS, Dignature Signature Standard)的标准报文摘要算法。SHS摘要采用160位,被认为更安全,但比MD5摘要计算要慢25%。 DSS和SHS被设计成用软件和芯片两种方法实现。
HASH签名的主要局限是接收方??须持有用户密钥的副本, 校验签名, 同时也存在伪造签名的可能。 另外, 管理这些密钥比较麻烦。 ;4.3.4 数字签名算法RSA
RSA是最流行的一种加密标准,是由Rivest、 Shamir和Adleman三人共同设计,许多产品的内核都有RSA的软件和类库。
RSA签名采用公开密钥算法,生成一对公钥和私钥,信息发送需要用发送者私人密钥加密信息,即签名;信息的接收者利用信息发送者的公钥对签名信息解密,以提高网络运行效率。 RSA签名也不存在HASH签名的局限性。 ; 这里要特别注意,为了克服RS
文档评论(0)