理解HTTPS加密


一、HTTPS是什么?

在HTTP通讯中,如果数据以明文形式在网络上传输是非常危险的,需要对其进行加密以确保安全,从而产生了HTTPS。

HTTPS 协议(Hyper Text Transfer Protocol Secure),是 HTTP 的加强安全版本。HTTPS 是基于 HTTP 的,也是用 TCP 作为底层协议,并额外使用 SSL/TLS 协议用作加密和安全认证。默认端口号是 443

简单而言: HTTPS == (HTTP+安全层(SSL/TLS加密协议))

二、HTTPS中的加密是什么?

1.对称加密

在众多加密方法中,有一种简单而有效的加密方式被称为"对称加密"。它的主要特点是:

a(明文) + key => b(密文) 加密过程
b(密文) + key => a(明文) 解密过程

简而言之,对称加密中,同一个密钥肩负着双重角色——它既是用于将数据加密的钥匙,也是解密信息的钥匙。因此,这把密钥被称为对称密钥。

在理想状态下,即便黑客通过入侵路由器截获了传输中的加密请求,但如果不掌握这个对称密钥,他们就无法解密数据,从而无法窥探信息内容,确保了数据的保密性,如下图。

在这里插入图片描述

在对称加密中,一个服务器需要与多个客户端各自独立地进行安全通信。这就意味着,每个客户端都需要拥有一个唯一的密钥。由此产生的问题是:这些密钥应该如何生成?考虑到安全性,每个客户端的密钥都必须是独一无二的,这就带来了密钥生成和管理的挑战。

在这里插入图片描述
在对称加密模式中,如果由客户端生成一个密钥,那么客户端就必须将这个密钥安全地传送给服务器。但是,由于服务器在这之前不知道这个密钥,因此传输时密钥只能以明文形式发送。这时,密钥就处于不安全的状态,如上图。

为了安全地将密钥传递给服务器,我们需要再次进行加密操作。这就引入了非对称加密的概念。

2.非对称加密

在非对称加密系统中,服务器会生成一对密钥:一个公钥和一个私钥。其中,客户端持有公钥,而服务器则保管着私钥。

明文 + 公钥 => 密文 使用公钥加密过程
密文 + 私钥 => 明文 使用私钥解密过程

如下图,在非对称加密中,客户端使用公钥对数据进行加密后传输给服务器,服务器则使用自己的私钥解密以获取对称密钥。随后,客户端和服务器可以利用这个对称密钥来进行后续的数据交换。

需要强调的是,在这种模式中,非对称密钥的主要作用是安全传输对称密钥,而实际的文件传输仍然使用对称密钥进行。这是因为非对称加密的效率相对较低,而对称加密的效率更高。
在这里插入图片描述

然而,这种机制可能存在一个潜在的问题:黑客可以伪装成服务器,向客户端发送自己的公钥。之后,客户端可能会被欺骗,使用这个假的公钥来加密数据,并将加密后的数据发送回给黑客,这一攻击手段被称为“中间人攻击”。如下图所示,黑客通过介入通信过程,能够截获和篡改信息。

在这里插入图片描述

为了解决中间人攻击的问题,关键在于确保客户端能够验证接收到的公钥确实属于合法的服务器。这可以通过引入数字证书来实现,实质上是借助第三方认证机构来验证身份。例如,当我们入住旅馆时,需要出示身份证以验证身份,旅馆之所以信任该身份证,是因为有公安局这样的权威机构进行了背书。

同样,当服务器(网站)建立时,它需要向专业的认证机构申请证书,并提供相应的资质。一旦审核通过,认证机构就会颁发包含服务器生成的公钥的数字证书。因此,当客户端请求服务器的公钥时,它们实际上是在请求服务器的整个数字证书,而不仅仅是一个公钥。
在这里插入图片描述

客户端拿到证书之后,就可以对证书进行校验,验证证书是否为假,如果证书无效,浏览器就会直接弹框告警。

证书,主要包含字段1:abc…,字段2:defg…,.公钥:0xbhcsdjkbc,签名:ancbjhscancsabhjjk

客户端可以借助认证机构提供的公钥对签名解密,其结果可视为hash1值。同时,客户端在得到证书后,也能通过一致的hash算法,基于证书的其他字段重新计算出一个hash2值。接下来,客户端将比较hash1和hash2的值是否相同。如果一致,则证书有效。

那么,存在疑问:黑客能否篡改证书信息?例如,替换掉证书中的公钥。一旦证书的公钥被替换,客户端计算出的两个hash值便会不同,这就意味着证书失效。有人可能会问,黑客是否可以计算新的hash值来篡改原有的hash值呢?实际上,这是不可能的。因为黑客没有认证机构的私钥,无法生成有效的签名,所以签名和被篡改后生成的hash值必然不一致。

以上就是http加密的主要过程啦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值