HTTPS的工作过程

一、HTTPS是什么

HTTPS是⼀个应⽤层协议.是在HTTP协议的基础上引⼊了⼀个加密层(SSL/TLS),HTTP协议内容都是按照⽂本的⽅式明文传输的.这就导致在传输过程中出现⼀些被篡改的情况.

"运营商劫持"

由于我们通过网络传输的任何的数据包都会经过运营商的网络设备(路由器,交换机等),那么运营商的网络设备就可以解析出你传输的数据内容,并进行篡改。

不仅是运营商,黑客也会对此类信息进行攻击,因此,明文传输风险极大,HTTPS就是在HTTP基础上进行加密,从而保护用户的信息安全。

二、工作过程

整体分为两大类:对称加密非对称加密

对称加密

对称加密通过一个同一个"密钥",把明文变成密文。至于密钥的生成,就依据不同的规则设置了。

每个客户端的密钥都应该是不一样的,如果使用统一的密钥,黑客也就容易拿到了。

但是,服务器将要保存每个客户端对应的密钥,这是一个很麻烦的事情,代价极大。

因此,比较理想的做法是当服务器与客户端建立连接的时候,商定好使用的密钥。

但这又会引发一个新问题:

把密钥明文传送的话,黑客也会拿到,那么就需要对密钥进行加密,就得再发送key2,然后对key2加密......

这种方式显然也是行不通的。

非对称加密

为了解决对称密钥面临的风险,引入非对称加密。

非对称加密要用到两个密钥,一个"公钥",一个"私钥",这两个钥匙是配对的,缺点是运算速度非常慢,比对称密钥还慢上很多。

这里的公钥所有设备都能拿到,但是解密的私钥只有服务器有,这样就把对称加密的过程加了层保护。这样看似很安全了。

但上述的过程存在重大隐患。

中间人攻击

黑客自己生成一对公钥私钥,把客户端拿到的服务器换成自己的,这样就能拿到客户端的对称密钥,然后通过服务器的公钥加密,这样就能混入客户端与服务器的会话中。

因此,需要一个校验机制来让客户端判断公钥是否来自服务器。

证书

服务器向可信任的第三方机构申请证书,需要提交材料,包括服务器的域名之类内容,然后服务器依据进行审查,通过后给服务器颁发证书,类似于一个结构体,里面包含颁发证书的机构、证书的有效期、服务器的公钥,服务器的域名等,然后通过机构的私钥进行加密生成一个数字签名,实际上就是一个被加密的校验和。

这个证书在服务器搭建的时候就申请好。因此客户端就需要验证证书:

校验过程:客户端拿到证书后,根据证书里的信息使用同样的算法再次计算校验和,记为a。

通过认证机构的公钥解密数字签名得到第二个校验和,记为b。

比较a和b,如果不同,证书无效,即中间被人修改过。可能遭到第三方攻击。

如果客户端拿到的公钥是黑客生成的呢?

在安装操作系统时,会内置一些知名第三方认证机构的公钥。所以拿到的公钥是安全的。

如果黑客直接修改证书里的公钥呢?

那么计算出的校验会改变,系统会提示网站不安全

如果黑客自己申请一个证书来替换服务器给的证书呢?

证书里包含服务器域名,黑客申请的域名肯定是与你要访问的服务器是不同的,这样会这导致在校验时发现域名不匹配

相关推荐
handsomestWei4 小时前
Docker引擎API接入配置
运维·http·docker·容器·api
汤愈韬8 小时前
网络安全之网络基础知识_2
网络协议·安全·web安全
风逸尘_lz11 小时前
05-LPB3568针对不同网段实现UDP通信
网络·网络协议·udp
灰子学技术13 小时前
Envoy 中 TCP 网络连接实现分析
运维·服务器·网络·网络协议·tcp/ip
IpdataCloud13 小时前
米哈游黑产案解析:游戏账号批量注册如何用IP查询识别外挂与多开用户?操作指南
网络协议·tcp/ip·游戏
星宇笔记13 小时前
我做了一个本地网页版嵌入式调试工具:支持 Serial / TCP / UDP、实时曲线、HEX 发送
单片机·嵌入式硬件·网络协议·tcp/ip·udp·开源软件
请数据别和我作队13 小时前
Python实现直播弹幕数据采集(WebSocket实时弹幕采集)
开发语言·网络·python·websocket·网络协议·学习分享
大數據精準工單獲取14 小时前
【数据抓取】 编写爬虫基本请求:使用爬虫框架发送 HTTP 请求,获取网页内容
爬虫·网络协议·http
测试人社区—835214 小时前
‌TCP/IP协议栈参数调优验证:软件测试从业者指南
网络·人工智能·网络协议·tcp/ip·测试工具·语音识别·压力测试
时空自由民.14 小时前
HTTP协议和MQTT协议区别
网络·网络协议·http