加密基础知识
- 非对称加密:使用一对公私钥能够加密解密信息。例如使用私钥作为密钥加密信息,可以通过公钥解密,反之亦然。优点:安全性更高,公钥是公开的,私钥是自己保存的,不需要将私钥给别人。缺点:加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
- 对称加密:使用同一个密钥加密解密信息。优点:算法公开、计算量小、加密速度快、加密效率高。 缺点:秘钥的管理和分发非常困难,不够安全。
- PKI:PKI是Public Key Infrastructure的首字母缩写,翻译过来就是公钥基础设施。PKI是一种遵循标准的利用公钥加密技术提供一套安全基础平台的技术和规范。
TLS 证书
在一般网络环境,特别是互联网环境,通讯双方线上明文交换公钥并不安全,也不太可能提前线下交换公钥。为了解决这个问题,需要引入PKI。当客户端发起访问请求的时候,服务端会发送包含了公钥信息的TLS证书给客户端。
TLS证书是如何保证公钥信息不被恶意修改呢?先来看看证书内容,信息包含了:
- CA的名称(Issuer)
- 服务端的名称(Subject)
- 证书有效时间
- 公钥的加密算法
- 公钥明文
- 可选的SAN(Subject Alternative Name),一般是服务端的域名,IP地址,高版本Chrome要求一定要有SAN
- 签名算法(一般是特定Hash算法)
- 签名密文内容B(使用签名算法对证书内容进行计算,得到Hash值A,然后再使用CA私钥进行加密,得到最终的签名内容B)
通过对证书内容进行验证,可以确认公钥是否被修改。现代OS一般都内置了部分CA的公钥,客户端拿到服务端TLS证书后,验证过程如下:
1. 会根据证书的Issuer,查找到CA公钥
2. 根据证书的加密算法和CA公钥,对签名内容B解密得到证书的Hash值A
3. 根据证书中的签名算法,对证书内容进行计算,得到Hash值A1
4. 如果A和A1相等,证明证书的确是CA发布,并且没有修改
5. 验证证书的有效期、SAN(验证是否是客户端访问的域名、IP地址)等
在上述验证都通过后,客户端最终确认证书有效。利用公钥和服务端交换后续通讯临时的对称密钥。后续的通讯双方都使用该密钥进行加密解密,从而保证的网络的通讯安全。
网友评论