数字签名是一种防止源点或终点抵赖的鉴别技术。可见二者的区分主要体现在了各自的目的上。但是二者共同保证了传输的安全性。
包括常规加密和
公开密钥加密。常规加密提供保密性和鉴别。
公开密钥加密分为具有鉴别和签名的公开密钥加密和具有机密性和鉴别及签名的公开密钥加密。
原理:发送方使用一个
密钥和特定算法对明文产生一个短小的定长数据分组,即MAC(报文鉴别码),并将它附加在报文中。在接收方,使用相同
密钥的和算法 对明文计算MAC,如果新的MAC与报文中的MAC匹配,那么接受者确信报文未被修改过,接受者确信报文来自所期望的发送方。
散列函数类似报文鉴别码,一个散列函数以一个变长的报文作为输入,产生一个定长的散列码作为输出。散列码通常称为
报文摘要(MD)。散列码是报文中所有比特 的函数值,并具有差错检测能力,即报文中被修改则散列码改变。MD与MAC的区别:是否需要
密钥。散列函数可用于报文的
完整性鉴别,与加密技术配合使用可 以对报文的起源进行鉴别,还可以用于存储文件的完整性检验。
MD5报文摘要算法是由Rivest(即RSA中的R)提出的第5个版本的MD,此算法对任意长度的报文进行计算,然后得出128位的MD代码。其作用是将大容量信息在数字签名前被‘压缩’成一种保密的格式。
安全散列算法(SHA)是由美国国家标准和技术协会(NIST)提出,并作为
联邦信息处理标准在1993年公布,1995年又发布了一个修订版称为SHA-1。
SHA-1算法输入报文的最大长度不超过2^64bit,产生的输出是一个160位的
报文摘要。
一般散列函数都没有使用密码,这样,任何一个人都能根据自己的需要产生一个报文的散列值,从而使用户无法判断文件是否被修改过。解决方法有在常规
加密算法上改进得到相关算法和采用需要密钥的散列函数。
这类需要使用
密钥的散列函数或者改进算法通常称为报文鉴别码MAC。报文鉴别码与散列函数有相同的特征,但报文鉴别码使用了一个密钥。只有具有该密钥的人才能生成报文鉴别码。典型的报文鉴别码方案有HMAC,
DSA算法和基于DES的报文鉴别码等。