加密类型
首先了解一下两种加密类型
- 对称类型 如
AES
DES
- 非对称加密 如
RSA
对称加密
对称加密很好理解,同一个密钥可以同时用作信息的加密和解密。举个现实生活中的例子,甲乙是合作伙伴,商量制作一个箱子,然后制作两把相同的钥匙用来打开箱子,两把相同的钥匙即密钥
非对称加密
首先,非对称加密比对称加密安全性高,但是效率相对低
这里有公钥和私钥的概念,公钥和私钥是一对,私钥加密的只有对应的公钥能解,公钥加密的只有对应的私钥能解
下面以现实中的发邮件为例:
首先如果使用对称加密,那么很有可能被第三方劫持到公开的密钥,从而窃取邮件信息,那么我们看一下非对称加密的机制:
非对称加密的两个要点:
- 公钥和私钥加密的只有对应的私钥和公钥可解
- 私钥是不会对外公布的,只有自己知道
基于这两个要点,所以保证类上述邮件的安全性
SSL
首先看一个公式HTTPS = HTTP + SSL
,由此可见,SSL主要的工作是加密
CA证书
在分析加密机制之前,我们首先要知道什么是CA证书
CA 证书其实就是数字证书,是由 CA 机构颁发的
一般包含以下内容:
- 证书的办法机构 版本
- 证书的使用者
- 证书的有效时间
- 证书的公钥
- 证书数字签名的hash值以及签名的hash算法
加密机制
校验CA证书
客户端校验CA证书的步骤:
- 证书的私钥进行加密得到CA中的Hash值
- 客户端拿到证书,利用公钥解析此Hash值得到Hash-a
- 客户端利用证书内的签名Hash算法进行加密得到Hash-b
- 比较Hash-a和Hash-b,如果相等,则证明证书正确,除此之外,还会校验 CA 证书的有效时间和域名匹配等,如果其中出错则无法建立http连接
握手
HTTPS
中的SSL的握手过程:
A(客户端) B(服务端)
- A访问B,A生成一个随机数1,A将随机数1以及SSL的版本号和加密算法发给B
- B确认双方的加密算法,生成一个随机数2,连同CA颁发的证书一起发给A
- A拿到B的证书,校验有效性,成功后再次生成一个随机数3,利用证书中的公钥加密,传给B
- B拿到加密后的随机数3,利用私钥解密,得到真正的随机数3
- 此时A B 中同时存在随机数1 2 3,双方利用这三个随机数生成一个对话密钥,接下来就是利用对话密钥加解密,此时是对称加密,一般就是AES加密
- A通知B后面的通讯用对话密钥进行,并且A的握手结束
- B通知A后面的通讯用对话密钥进行,并且B的握手结束
- SSL 的握手部分结束,SSL 安全通道的数据通讯开始,A 和 B 开始使用相同的对话密钥进行数据通讯
简化上述的流程:
- A通过CA证书校验B的正确性
- A B 生成三个随机数,通过三个随机数生成对话密钥
- A B确认对话密钥,对话结束
- 使用同一套对话密钥进行数据通讯
小结
-
https
既利用了非对称加密的安全性也利用了对称加密的高效性 - 非对称加密没对称加密高效,但是比对称加密安全