http安全之数字签名和证书
- 摘要算法,保证数据的完整性
摘要算法能够把任意长度的数据“压缩”成固定长度,独一无二的“摘要字符串”,相当于给这段数据生成了一个指纹。
生成的数字指纹附在数据后面传输,接收方收到后也使用摘要算法根据接收的数据生成 一个指纹,然后与传输过来的指纹做对比,如果一致,说明数据没有被篡改。
TLS中推荐使用的摘要算法是:SHA-2
哈希消息认证码(HMAC):
混合加密系统中,使用密钥把数据和摘要加密后再传输。
- 数字签名
数字签名主要用来解决身份认证的问题,防止身份被假冒。
数字签名的原理是用私钥加密,公钥解密。这与之前数据传输的加密过程相反。
私钥加密数据的摘要就生成了数字签名,这叫做“签名”;接收方使用发送方的公钥解密摘要,如果解密成功,就验证了发送的身份(公钥是发送方的),这叫做“验签”。拿到摘要,就可以对比数据的完整性。
- 数字证书
数字证书主要解决公钥信任的问题。因为接收方拿到的公钥无法确认这个公钥就是某个发送方的公钥。
数字证书是CA(Certificate Authority,证书认证机构)颁发的,为公钥做认证。CA用自己的私钥给发送方的公钥,再加上一些发送方的信息一起加密,生成数字证书。
数字证书有根证书和中间证书之分,中间证书需要根证书的认证,从而形成证书链。根证书内置在操作系统中
数字证书的使用:
发送方将数据,摘要,数字证书发送给接收方,接收方使用CA的公钥解密数字证书,拿到发送方的公钥,再用这个公钥解密数字签名,拿到摘要,再对比数据的完整性。
参考文章: