Skip to main content

http安全之数字签名和证书

  1. 摘要算法,保证数据的完整性

摘要算法能够把任意长度的数据“压缩”成固定长度,独一无二的“摘要字符串”,相当于给这段数据生成了一个指纹。

生成的数字指纹附在数据后面传输,接收方收到后也使用摘要算法根据接收的数据生成一个指纹,然后与传输过来的指纹做对比,如果一致,说明数据没有被篡改。

TLS中推荐使用的摘要算法是:SHA-2

哈希消息认证码(HMAC):

HMAC

混合加密系统中,使用密钥把数据和摘要加密后再传输。

  1. 数字签名

数字签名主要用来解决身份认证的问题,防止身份被假冒。

数字签名的原理是用私钥加密,公钥解密。这与之前数据传输的加密过程相反。

私钥加密数据的摘要就生成了数字签名,这叫做“签名”;接收方使用发送方的公钥解密摘要,如果解密成功,就验证了发送的身份(公钥是发送方的),这叫做“验签”。拿到摘要,就可以对比数据的完整性。

  1. 数字证书

数字证书主要解决公钥信任的问题。因为接收方拿到的公钥无法确认这个公钥就是某个发送方的公钥。

数字证书是CA(Certificate Authority,证书认证机构)颁发的,为公钥做认证。CA用自己的私钥给发送方的公钥,再加上一些发送方的信息一起加密,生成数字证书。

数字证书有根证书和中间证书之分,中间证书需要根证书的认证,从而形成证书链。根证书内置在操作系统中

数字证书的使用:

发送方将数据,摘要,数字证书发送给接收方,接收方使用CA的公钥解密数字证书,拿到发送方的公钥,再用这个公钥解密数字签名,拿到摘要,再对比数据的完整性。

参考文章:

通俗理解数字签名,数字证书和https

安全背后: 浏览器是如何校验证书的