【网络协议】Https

HTTP 协议内容都是按照⽂本的⽅式明⽂传输的,这就可能导致在传输过程中出现⼀些被篡改的情况。所以在HTTP协议的基础上,引入加密层,形成了HTTPS协议。

HTTPS 协议是由 HTTP 加上 TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议,主要通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密,实现互联网传输安全保护。设计目标主要有三个。

(1)数据保密性:保证数据内容在传输的过程中不会被第三方查看。就像快递员传递包裹一样,都进行了封装,别人无法获知里面装了什么。

(2)数据完整性:及时发现被第三方篡改的传输内容。就像快递员虽然不知道包裹里装了什么东西,但他有可能中途掉包,数据完整性就是指如果被掉包,我们能轻松发现并拒收。

(3)身份校验安全性:保证数据到达用户期望的目的地。就像我们邮寄包裹时,虽然是一个封装好的未掉包的包裹,但必须确定这个包裹不会送错地方,通过身份校验来确保送对了地方。

这里解释一下一些概念关于加密的概念:

对称加密:也称单密钥加密,加密和解密所⽤的密钥是相同的。

非对称加密:分为公钥和私钥,公钥加密只能用私钥解密,私钥加密只能用公钥解密。

数据摘要:又称数字指纹,基本原理是利⽤单向散列函数(Hash函数)对信息进⾏运算,⽣成⼀串固定⻓度的数字摘要。数字指纹并不是⼀种加密机制,但可以⽤来判断数据有没有被窜改。

想象一下如果在你和服务器之间存在一个中间人,你和服务器为了保证数据安全,都要对数据加密后再发送。那么通信的双方就必须知道解密的密钥。

场景1:只使用对称加密

你和服务器都有一个你俩才知道到的密钥,这当然可以保证数据安全。但是服务器显然不会只和你交互,那么服务器就必须维护大量密钥与客户端的关联关系,这显然十分麻烦。所以在通信之前就要协商这次通信的密钥是什么,但是发送密钥(密钥也是一种数据)的过程也需要加密,否则中间人获取到你加密过的密钥,照样可以破获你的数据。但是这样就陷入了无限轮回。

场景2:只使用非对称机密

服务器把公钥发送给客户端,客户端用公钥加密后把数据发送给服务器,由于中间人没有私钥自然无法破解密文,但是服务器向客户端发送的信息是用私钥加密的,中间人完全可以在客户端获得公钥之前截取公钥,在服务器给客户端返回消息的时候用公钥破解数据,这样的话还是不安全。

场景3:双方都是用非对称加密

服务器拥有公钥S1和私钥S2,客户端也拥有公钥C1和私钥C2。在通信前,互相发送各自的公钥,然后用各自的私钥加密信息,这样即便中间人截取了数据由于私钥S2和C2在服务器或客户端那里,自然无法解密。但是如果中间人在双方互换公钥之前就已经截取到信息了,然后对其做出修改,比如中间人也有公钥A1和私钥A2,把服务器给客户端的S1换成他自己的A1,然后客户端用A1加密后,把数据发给服务器,中间人就可以用自己的私钥A2解密,然后再用截取到的S1加密数据后发送给服务器。这时候服务器和客户端还傻呵呵乐呢,实际上并不安全。

场景4:非对称加密+对称加密

服务器使用非对称加密,拥有公钥S1和私钥S2。客户端使用对称加密,拥有唯一的密钥C。当进行通信前,服务器把公钥S1发送给客户端,客户端使用S1加密密钥C后发送给服务器,之后双方就可以使用单密钥C通信了。这样理论上是安全的。但是如果中间人在客户端接收公钥S1之前就蹲点了呢?把S1换成中间人自己的密钥A呢?客户端利用密钥A加密密钥C然后发给服务器,被中间人截获后,解密不就获得密钥C了。这样之后的通信相当于全部暴露到了中间人眼皮下,跟裸奔没啥区别。

所以上面的场景2,3,4都犯了一个错误那就是通信前发送公钥无法加密,会被截取。为了避免这种情况,就引入了证书。

CA认证:服务端在使⽤HTTPS前,需要向CA机构申领⼀份数字证书,数字证书⾥含有证书申请者信息、公钥信息等。服务器把证书传输给浏览器,浏览器从证书⾥获取公钥就⾏了,证书就如⾝份证,证明服务端公钥的权威性。
这样就避免了中间人中途修改信息,而客户端还不知道的情况。
证书中存在一个数字签名,是用证书的明文通过哈希函数形成数据摘要,然后对这个数据摘要利用私钥加密形成一个唯一的数字签名。证书包含两部分,一部分是明文,一部分就是这个数字签名。
在客⼾端和服务器刚⼀建⽴连接的时候, 服务器给客⼾端返回⼀个证书,证书包含了之前服务端的公 钥, 也包含了⽹站的⾝份信息。
场景5:非对称加密+对称加密+CA证书
在场景4的基础上,引入CA证书,防止非法身份者发送自己的密钥给客户端。所以中间人想要搞事情就只能在证书上搞花样了。

1.客户端进行认证

当客户端获取到这个证书之后, 会对证书进行校验(防止证书是伪造的).

判定证书的有效期是否过期

判定证书的发布机构是否受信任(操作系统中已内置的受信任的证书发布机构).

验证证书是否被篡改: 从系统中拿到该证书发布机构的公钥, 对签名解密, 得到个 hash 值(称为数

据摘要), 设为 hash1. 然后计算整个证书的 hash 值, 设为 hash2. 对 hash1 和 hash2 是否相等. 如果相等, 则说明证书是没有被篡改过的。

2.中间人有没有可能篡改该证书?

中间篡改了证书的明

由于他没有CA机构的私钥,所以无法hash之后私钥加密形成签名,那么也就没法办法对篡改后

的证书形成匹配的签名

如果强篡改,客户端收到该证书后会发现明和签名解密后的值不致,则说明证书已被篡改,

证书不可信,从向服务器传输信息,防止信息泄露给中间

3.中间人整个掉包证书?

因为中间没有CA私钥,所以无法制作假的证书

所以中间只能向CA申请真证书,然后用自己申请的证书进行掉包

这个确实能做到证书的整体掉包,但是别忘记,证书明中包含了域名等服务端认证信息,如果整

体掉包,客户端依旧能够识别出来。

永远记住:中间没有CA私钥,所以对任何证书都无法进行合法修改,包括自己的

4.为什么签名不直接加密,而是要先hash形成摘要?

签名密度,加快数字签名的验证签名的运算速度

5.如何成为中间

ARP欺骗:在局域中,hacker经过收到ARP Request广播包,能够偷听到其它节点的 (IP, MAC)

地址。例, 黑客收到两个主机A, B的地址,告诉B (受害者) ,⾃⼰是A,使得B在发送给A 的数据包都被黑客截取

ICMP攻击:由于ICMP协议中有重定向的报类型,那么我们就可以伪造个ICMP信息然后发送给局域中的客户端,并伪装⾃⼰个更好的路由通路。从导致标所有的上流量都会发送到我们指定的接上,达到和ARP欺骗同样的效果

假wifi && 假站等

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值