HTTPS 的加密流程

HTTPS,又叫做安全超文本传输协议,是一种广泛使用的网络安全协议它通过加密数据来确保数据的安全性和完整性.加密流程通常包括以下几个步骤:建立安全连接,对称加密,非对称加密,数字证书验证和数据传输.


HTTPS 采用的是对称加密非对称加密结合的混合加密方式.

1.对称加密

在对称加密过程中,客户端和服务器共享一个密钥,以上模型有一个问题,就是服务器不只是和一个客户端通信,也和很多个客户端通信,所以要求每个客户端的密钥都不相同,就需要每个客户端和服务器建立连接的时候把密钥生成出来,客户端再把自己的密钥通过网络传输给服务器.

在这个过程中,如果密钥被黑客截获了,那么加密就形同虚设,后续加密传输的数据就很容易被解密破解.

如何将密钥安全传输给服务器?HTTPS 使用非对称加密算法来加密对称加密的密钥.


2.非对称性加密

非对称加密使用两个密钥:公钥和私钥,公钥可以任意分发而私钥保密,解决了密钥交换问题但速度慢.可以使用公钥加密,私钥解密,也可以使用私钥加密,公钥解密.

非对称加密可以确保密钥的安全传输,同时也能保证数据传输的安全性.但一般我们不会用非对称加密来加密实际的传输内容,因为非对称加密的计算比较耗费性能的,而对称加密运算成本低,速度快,使用非对称加密只是在关键环节:在通信建立前采用非对称加密的方式交换会话秘钥,后续就不再使用非对称加密,后续传输大量业务数据,就全部使用对称加密的会话秘钥的方式加密明文数据。

但是这还远远不够,还缺少身份验证的环节,万一公钥是被伪造的呢?客户端如何获取到公钥? 客户端如何确定这个公钥不是黑客伪造的?此时引入一个中间人攻击问题


3.中间人攻击

从客户端的角度看,其实并不知道网络中存在中间人服务器这个角色。那么被黑客入侵的设备就可以解开浏览器发起的 HTTPS 请求里的数据,也可以解开服务端响应给浏览器的 HTTPS 响应数据。相当于,中间人服务器能够 “偷看” 浏览器与服务端之间的 HTTPS 请求和响应的数据。之所以能进行中间人攻击,是因为客户端无法判断公钥的真假,此时引入数字证书验证,来确定公钥是正确的.


4.数字证书验证
在非对称加密完成后,HTTPS 使用数字证书来验证服务器的身份。数字证书是由权威的第三方机构颁发的,其中包含服务器的公钥和其他相关信息。客户端会验证数字证书的签名,以确保与正确的服务器建立连接。如果证书验证失败,客户端会终止连接。正是通过了一个权威的机构来证明公钥的身份,所以伪造公私钥这个小伎俩就没用了。
当客户端获取到这个证书之后 , 会对证书进行校验 ( 防止证书是伪造的 )
会判定证书的有效期是否过期
会判定证书的发布机构是否受信任 ( 操作系统中已内置的受信任的证书发布机构 ).
会验证证书是否被篡改 : 从系统中拿到该证书发布机构的公钥 , 对签名解密 , 得到一个 hash , 设为 hash1. 然后计算整个证书的 hash , 设为 hash2. 对比 hash1 hash2 是否相等 .
如果相等 , 则说明证书是没有被篡改过的 .
如果伪造这个证书,游览器是会提醒该证书存在问题.如果用户执意点击「继续浏览此网站」,那就是用户自己接受了中间人伪造的证书,那么后续整个 HTTPS 通信都能被中间人监听了。
所以,即使成功进行中间人攻击,本质上是利用了客户端的漏洞(用户点击继续访问或者被恶意导入伪造的根证书),也不是https不安全.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值