一.HTTPS是什么
HTTPS也是⼀个应⽤层协议.是在HTTP协议的基础上引⼊了⼀个加密层.
HTTP协议内容都是按照⽂本的⽅式明⽂传输的.这就导致在传输过程中出现⼀些被篡改的情况.
加密"是什么
加密就是把明⽂ (要传输的信息)进⾏⼀系列变换,⽣成密⽂
解密就是把密⽂ 再进⾏⼀系列变换,还原成明⽂
二.HTTPS的⼯作过程
既然要保证数据安全,就需要进⾏"加密".
⽹络传输中不再直接传输明⽂了,⽽是加密之后的"密⽂".
加密的⽅式有很多,但是整体可以分成两⼤类:对称加密和⾮对称加密
1.引⼊对称加密
对称加密其实就是通过同⼀个"密钥",把明⽂加密成密⽂,并且也能把密⽂解密成明⽂
把密文和密钥通过网络传输到服务器,黑客很容易就拿到密钥对密文解析得到明文 这跟没加密没什么区别
2.引⼊⾮对称加密
⾮对称加密要⽤到两个密钥,⼀个叫做"公钥",⼀个叫做"私钥".
公钥和私钥是配对的.最⼤的缺点就是运算速度⾮常慢,⽐对称加密要慢很多.
• 通过公钥对明⽂加密,变成密⽂
• 通过私钥对密⽂解密,变成明⽂
也可以反着⽤
• 通过私钥对明⽂加密,变成密⽂
• 通过公钥对密⽂解密,变成明⽂
客⼾端在本地⽣成对称密钥,通过公钥加密,发送给服务器.
• 由于中间的⽹络设备没有私钥,即使截获了数据,也⽆法还原出内部的原⽂,也就⽆法获取到对称密钥
• 服务器通过私钥解密,还原出客⼾端发送的对称密钥.并且使⽤这个对称密钥加密给客⼾端返回的响应数据.
• 后续客⼾端和服务器的通信都只⽤对称加密即可.由于该密钥只有客⼾端和服务器两个主机知道,其他主机/设备不知道密钥即使截获数据也没有意义
3.中间⼈攻击
⿊客可以使⽤中间⼈攻击,获取到对称密钥.
-
服务器具有⾮对称加密算法的公钥S,私钥S'
-
中间⼈具有⾮对称加密算法的公钥M,私钥M'
-
客⼾端向服务器发起请求,服务器明⽂传送公钥S给客⼾端
-
中间⼈劫持数据报⽂,提取公钥S并保存好,然后将被劫持报⽂中的公钥S替换成为⾃⼰的公钥M,并将伪造报⽂发给客⼾端
-
客⼾端收到报⽂,提取公钥M(⾃⼰当然不知道公钥被更换过了),⾃⼰形成对称秘钥X,⽤公钥M加密X,形成报⽂发送给服务器
-
中间⼈劫持后,直接⽤⾃⼰的私钥M'进⾏解密,得到通信秘钥X,再⽤曾经保存的服务端公钥S加密后,将报⽂推送给服务器
-
服务器拿到报⽂,⽤⾃⼰的私钥S'解密,得到通信秘钥X
-
双⽅开始采⽤X进⾏对称加密,进⾏通信。但是⼀切都在中间⼈的掌握中,劫持数据,进⾏窃听甚⾄修改,都是可以的
4.引入证书
服务端在使⽤HTTPS前,需要向CA机构申领⼀份数字证书,数字证书⾥含有证书申请者信息、公钥信息等。服务器把证书传输给浏览器,浏览器从证书⾥获取公钥就⾏了,证书就如⾝份证,证明服务端公钥的权威性
证书包含以下信息
证书发布机构
有效期
公钥
所有者
签名 :颁布证书的公证机构会在发布证书计算出一个校验和然后公正机构使用自己的私钥(和服务的私钥无关)针对校验和进行加密,此时得到证书的签名
证书的本质:经过加密的校验和
客户端拿到证书之后
1.按照同样的算法,把证书的其他字段重新计算一遍,得到校验和1
2.使用系统中内置的公证机构公钥 对证书的签名进行解密,得打校验和2
看校验和1和校验和2是否相同