网络安全-哈希算法和数字签名

1. 单向散列算法

单向散列算法也称为哈希算法,它是一种不可逆的单向数学函数,把哈希算法应用于任意长度的一块数据,可以将它映射为一段数据唯一的、不可逆的、定长的、极其紧凑的字符串,这个字符串便称为散列值、哈希值或消息摘要。

常见的单向散列算法有由Ron Rivest设计的可以产生128位散列值的MD5和由NSA设计的可以产生160位的散列值的SHA-1,还有SHA-224、 SHA-256、SHA-384 和SHA-512等。

常见HASH算法:

MD5:MD5 是由 Ron Rivest 设计的可产生一个 128 位的散列值的散列算法。MD5 设计经过优化以用于 Intel 处理器。这种算法的基本原理已经泄露,这就是为什么它不太受欢迎的原因。

SHA-1:与 DSA 公钥算法相似,安全散列算法 1(SHA-1)也是由 NSA 设计的,并由 NIST 将其收录到 FIPS 中,作为散列数据的标准。它可产生一个 160 位的散列值。SHA-1 是流行的用于创建数字签名的单向散列算法。

HASH算法主要应用:

1)文件校验

我们比较熟悉的校验算法有奇偶校验和CRC校验,这2种校验并没有抗数据篡改的能力,它们一定程度上能检测并纠正数据传输中的信道误码,但却不能防止对数据的恶意破坏。

MD5 Hash算法的"数字指纹"特性,使它成为目前应用最广泛的一种文件完整性校验和(Checksum)算法,不少Unix系统有提供计算md5 checksum的命令。

2)数字签名

Hash 算法也是现代密码体系中的一个重要组成部分。由于非对称算法的运算速度较慢,所以在数字签名协议中,单向散列函数扮演了一个重要的角色。对 Hash 值,又称"数字摘要"进行数字签名,在统计上可以认为与对文件本身进行数字签名是等效的。而且这样的协议还有其他的优点。

3)鉴权协议

如下的鉴权协议又被称作"挑战--认证模式:在传输信道是可被侦听,但不可被篡改的情况下,这是一种简单而安全的方法。

2. 数字签名

数字签名,顾名思义,就像在办公中用笔对纸质文件进行签名,它是在计算机上对数据文件进行签名,用于鉴别数字信息,验证数据发送方的身份,保证数据的完整性和不可否认性。

它结合使用了非对称加密技术与哈希算法来实现,它包含两种互补的运算:一个用于数字签名的签署,另一个用于数字签名的验证。签名和验签的过程一般由启用 PKI 的应用程序完成,首先由数据的发送方用哈希算法生成数据的哈希值,然后用自己的私钥将这个哈希值加密形成数字签名,将它与数据一起加密发送给接收方;接收方进行解密获得数据和数字签名后,用发送方的公钥对数字签名进行解密,如果成功解密,即证明了发送方的身份;对数字签名解密得到数据的哈希值之后,数据的接收方对数据用相同的哈希算法生成另一个哈希值,然后将这两个哈希值进行比较,如果两者相同,则证明这块数据极有可能在传输期间没有被篡改。.

数字签名签署和验证数据的步骤如图所示:

PKCS1和PKCS7标准格式的签名:

1. PKCS1签名:即裸签名,签名值中只有签名信息。

2. PKCS7签名:签名中可以带有其他的附加信息,例如签名证书信息、签名原文信息、时间戳信息等。

PKCS7的attached和detached方式的数字签名:

1. attached 方式是将签名内容和原文放在一起,按 PKCS7 的格式打包。PKCS7的结构中有一段可以放明文,但明文必需进行ASN.1编码。在进行数字签名验证的同时,提取明文。这里的明文实际上是真正内容的摘要。

2. detached 方式打包的 PKCS7格式包中不包含明文信息。因此在验证的时候,还需要传递明文才能验证成功。同理,这里的明文实际上是真正内容的摘要。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190720A0OUGI00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券