目录
1.HTTPS的出现
http是明文发送的,也就是说其安全性难以保证。
1.HTTPS协议介绍
1.HTTPS也是⼀个应⽤层协议.是在HTTP协议的基础上引⼊了⼀个加密层ssl/tls.
2.HTTP协议内容都是按照⽂本的⽅式明⽂传输的。这就导致在传输过程中出现⼀些被篡改的情况,其端口号为443。
2.补充概念
1.加密
1.解释
1.加密就是把明⽂(要传输的信息)进⾏⼀系列变换,⽣成密⽂.
2.解密就是把密⽂再进⾏⼀系列变换,还原成明⽂
3.在这个加密和解密的过程中,往往需要⼀个或者多个中间的数据,辅助进⾏这个过程,这样的数据称为密钥
4.发送数据前要加密,这样网络上传输的都是密文,最终到达目的主机被解密就得到原始数据了
2.原因
因为http的内容是明⽂传输的,明⽂数据会经过路由器、wifi热点、通信服务运营商、代理服务器等多个物理节点,如果信息在传输过程中被劫持,传输的内容就完全暴露了。劫持者还可以篡改传输的信息且不被双⽅察觉,这就是中间⼈攻击,所以我们才需要对信息进⾏加密。
3.加密方式
对称加密
1.加密和解密使用的是同一个密钥。
2.算法公开、计算量⼩、加密速度快、加密效率⾼
3.常⻅对称加密算法(了解):DES、3DES、AES、TDEA、Blowfish、RC2等
非对称密钥
1.需要两个密钥来进⾏加密和解密。这两个密钥是公开密钥(publickey,简称公钥)和私有密钥(privatekey,简称私钥)。
2.算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,⽽使得加密解密速度没有对称加密解密的速度快
3.常⻅⾮对称加密算法(了解):RSA,DSA,ECDSA
2.数据摘要和数字签名
数据摘要
1.数字指纹(数据摘要),其基本原理是利⽤单向散列函数(Hash函数)对信息进⾏运算,⽣成⼀串固定⻓度的数字摘要。数字指纹并不是⼀种加密机制,但可以⽤来判断数据有没有被窜改,唯一性非常强。
2.摘要常⻅算法:有MD5、SHA1、SHA256、SHA512等,算法把⽆限的映射成有限,因此可能会有碰撞(两个不同的信息,算出的摘要相同,但是概率⾮常低)
3.摘要特征:和加密算法的区别是,摘要严格意义不是加密,因为没有解密,只不过从摘要很难反推原信息,通常⽤来进⾏数据对⽐
数字签名
摘要经过加密,就得到数字签名
3.加密方案
1.只使用对称密钥加密
即客户端和服务端之间只有一个密钥进行加密和解密。当浏览器访问服务端时,服务端将密钥发送给客户端,客户端就拥有了解密的能力。
但是,这样的设置是无法满足安全要求的,因为中间人劫持能直接连接两边,服务端将密钥给了中间人,中间人再给客户端,那么客户端的安全就不能保证了。
2.只使用非对称密钥加密
只用一对密钥
服务端有公钥和私钥。当浏览器请求时,服务端发送给客户端公钥,那么此时服务器将信息发送给客户端就用私钥进行加密,即保证了客户端向服务端发送的安全性;但是我们无法保证服务端发给客户端的安全性,因为每一个客户端的公钥完全一致,那么劫持服务端发给客户端的信息,中间人也能解密。
用两对密钥
服务端和客户端都有私钥和公钥。连接时,客户端发送公钥给服务端,服务端也将公钥给服务器。这样两边的数据都能被保护起来了。客户端发信息先用服务端的公钥解密再发送;服务端发送思路同理。
缺点:1.发送速度慢 2.安全问题依然无法解决
3.对称密钥加密和非对称密钥加密组合
服务端有一对密钥,客户端只有公钥。客户端发送请求,服务端发送公钥给客户端。客户端形成对称密钥,客户端拿着服务端发来的公钥加密密钥,这样到服务端能得到加密后的对称密钥。但是,安全问题依然无法解决
4.中间人攻击
只要当链接未完成建立,中间人在开始就已经进行攻击。此时对于上面的方法依然存在安全问题。中间人在中间生成两个密钥针对服务端和客户端,这样客户端的所有请求其实都能被中间人轻而易举的获取。由于它有两边的密钥,那么破解也十分容易。
其问题的最初问题其实是:服务端发送密文的公钥时,中间人有可能获取并且篡改,但是客户端无法辨别得到的公钥的真假。
3.证书
1.证书介绍
服务端在使⽤HTTPS前,需要向CA机构申领⼀份数字证书,数字证书⾥含有证书申请者信息、公钥信息等。服务器把证书传输给浏览器,浏览器从证书⾥获取公钥就⾏了,证书就如⾝份证,证明服务端公钥的权威性
1.企业将申请认证的资料提交给CA机构。信息包括:公钥和私钥,域名,申请者等。
2.审核后,将证书发送给企业。证书的信息时明文的。
3.最后,就是每次客户端访问服务端时,服务端都会发证书给客户端,客户端确认无误再进行连接。
2.理解数据签名
1.企业发送给CA机构的证书,经过哈希得到数据摘要,数据摘要又通过CA提供的私钥进行加密变成数据签名。数据签名和证书合并就是所谓的带签名的证书。
2.数据签名是为了防篡改
3.检查证书
将带签名的证书分离出数据签名和证书。签名可以通过公钥得到数据摘要。证书也可以通过哈希得到数据摘要。这两份数据摘要一致则说明安全。
因为CA的私钥只有CA有,那么CA形成的数据摘要只有CA机构可以判断
4.解决安全问题
1.客户端请求服务端,服务端将证书发给客户端。
2.证书中有服务端的公钥。为了保证公钥的正确性,客户端会分离出证书和数据签名,证书直接哈希得到数据摘要,CA在浏览器中加入了公钥,该公钥用于数据签名,数据签名解码得到数据摘要,要知道CA的私钥只有CA有,也就意味着数据签名转换的数据摘要是绝对正确的,两个数据摘要一对比就能知道是否有中间人攻击了
证书+对称加密+非对称加密
1.首先客户端发送请求,服务器发送证书,客户端检查证书。此时客户端就得到了服务器的公钥
2.客户端生成了对称加密密钥,通过服务器的公钥加密给服务器。服务器的私钥只有服务器拥有,那么也就只有服务器能够解密出对称加密的密钥。最终得到了安全的要求