以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 安全理论 』  (http://bbs.xml.org.cn/list.asp?boardid=65)
----  [求助]什么情况下需要数字签名?单向散列函数和数字签名的关系是什么?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=65&rootid=&id=47762)


--  作者:二火斤欠
--  发布时间:5/30/2007 8:33:00 PM

--  [求助]什么情况下需要数字签名?单向散列函数和数字签名的关系是什么?
大哥大姐帮小妹一把....
--  作者:binaryluo
--  发布时间:6/1/2007 10:32:00 AM

--  
以下是引用二火斤欠在2007-5-30 20:33:00的发言:
大哥大姐帮小妹一把....

1.数字签名是一种通过向公正的第三方提供消息的来源和内容认证的方法。数字签名提供了不可否认服务。数字签名通常分两类:直接数字签名和仲裁数字签名。下列两种情形需要数字签名:
(1)Mary可以伪造一条消息并称该消息发自John。
(2)John可以否认曾经发过某条消息。

2.在解释单向散列函数前先简介一下消息认证码。
消息认证码又称MAC,是一种认证技术。它利用密钥来生成一个固定长度的短数据块,并将该数据块附加在消息之后。比如A和B共享密钥K,若A向B发送消息时,则A计算MAC(它是消息和密钥的函数),即MAC=Ck(M)。消息和MAC一起将被发送给接收方。B接收到后再用密钥和MAC函数计算一次MAC,与A发过来的MAC比较,如果一致说明消息未被篡改过,否则说明消息被篡改过。

单向散列函数又叫单向hash函数,也可简称hash函数。与消息认证码一样,hash函数的输入是可变大小的消息M,输出是固定大小的hash码H(M)。与MAC不同的是,hash码并不需要使用密钥。

3.数字签名和单向散列函数的关系。
数字签名的过程:
若A向B发送一条消息M:首先,A用自己的私钥对M进行加密(公钥密码,如RSA)得M1,加密的过程也就是签名;将M + M1发给B。然后,B接收到M + M1后,用A的公钥对M1解密得M2,并将M2和M比对,如果一样说明M确实是A发来的,并且A也不能否认发过M + M1,因为A的私钥只有A自己知道。

上述过程就是数字签名的基本过程,但是由于在实际中,公钥密码的效率是比较低下的,用对整个消息M加密是不合算的,所以,美国国家标准与技术研究所(NIST)发布了联邦信息处理标准FIPS 186,称为数字签名标准(DSS),其中对上述的签名过程进行了改进:
若A向B发送一条消息M:首先,A用hash函数(DSS中使用的是SHA)对M进行摘要,得到固定长度的小数据块M0,然后用私钥对M1进行加密得到M1并将M + M1发给B。然后,B收到M + M1后,用A的公钥对M1解密得M2,之后再用hash函数对M进行摘要得M3,将M2和M3比对,若一样则说明M确实是A发来的,并且A也不能否认发过M + M1。

上面仅仅是对数字签名、单向hash函数进行了简单的介绍,如果要作更深入理解请查阅其他资料。


--  作者:jindell
--  发布时间:6/7/2007 4:30:00 PM

--  
赞一个
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
7,734.375ms