HTTPS

HTTPS基于HTTP引入加密,用对称加密处理大量数据,非对称加密用于密钥交换,通过证书确保公钥真实,防止中间人攻击。
摘要由CSDN通过智能技术生成

目录

什么是HTTPS

"加密" 是什么

HTTPS的工作过程

1.引入对称密钥

2.引入非对称密钥

3.中间人攻击

4.引入证书

4.总结


什么是HTTPS

HTTPS 也是一个应用层协议.,是在 HTTP 协议的基础上引入了一个加密层。

 HTTP 协议内容都是按照文本的方式明文传输的, 这就导致在传输过程中可能会出现内容被窃取或者被篡改,所以明文传输是一件比较危险的事情。HTTPS就是在HTTP的基础上进行了加密,进一步来保障用户的信息安全。

"加密" 是什么

加密就是把明文(要传输的信息)进行一系列变换, 生成密文 。解密就是把密文再进行一系列变换, 还原成明文。在这个加密和解密的过程中, 往往需要一个或者多个中间的数据, 辅助进行这个过程, 这样的数据称为密钥。

HTTPS的工作过程

既然要保证数据安全, 就需要进行 "加密". 网络传输中不再直接传输明文了, 而是加密之后的 "密文". 加密的方式有很多, 但是整体可以分成两大类: 对称加密非对称加密。

1.引入对称密钥

对称密钥,就是加密和解密使用的是同一个密钥。

明文+密钥 => 密文

密文+密钥 => 明文

引入对称加密后,即使数据被截获,由于黑客不知道密钥的美容就无法进行解密,也就不知道发送的请求是什么了。咋一看上面的模型好像没什么问题,但仔细思考,其实还存在一个严重的问题,那就是同一时刻, 服务器不止和一个客户端通信,而是和很多个客户端通信。而且这么多客户端,每个客户端用的密钥都必须是不相同的(如果是相同,密钥就太容易扩散了, 黑客就也能拿到了).。因此服务器就需要维护每个客户端和每个密钥之间的关联关系,这也是一件很麻烦的事.

比较理想的做法就是,能在客户端和服务器建立连接的时候, 双方协商确定这次的密钥是什么,

但是如果直接是明文传输,那么黑客也能直接获得密钥,那后面的加密操作就如同虚设了。因此,密钥的传输也必须是加密的!但是想要对密钥进行对称加密,就仍需要协商一个"密钥的密钥",但是这样一来,"密钥的密钥"还是会泄露,无论引入多少个密钥,都会有泄露的风险。所以用对称加密来加密 密钥显然是不行的,为了解决上述问题,就得引入"非对称加密"。

2.引入非对称密钥

非对称密钥有两个密钥,这两个密钥是一对的,一个称为"公钥",一个称为"私钥"(公钥就是可以公开的,私钥就是自己藏好的)。

明文 + 公钥 => 密文          或            明文 + 私钥 =>密文

密文 + 私钥 => 明文                           密文 + 公钥 => 明文

非对称加密的数学原理比较复杂, 涉及到一些数论相关的知识. 这里举一个简单的生活上的例子.

A 要给 B 一些重要的文件, 但是 B 可能不在. 于是 A 和 B 提前做出约定:

B 说: 我桌子上有个盒子, 然后我给你一把锁, 你把文件放盒子里用锁锁上, 然后我回头拿着钥匙来开锁取文件.

在这个场景中, 这把锁就相当于公钥, 钥匙就是私钥.,公钥给谁都行(不怕泄露), 但是私钥只有 B 自己持有,持有私钥的人才能解密. 

既然已经引入了非对称加密,为什么还要引入对称加密呢,直接使用非对称加密来完成业务数据的加密传输不就好了吗?  原因很简单,成本。使用非对称加密/解密的运算成本是比较高的,而且运算速度比较低,.而对称加密成本低,运算速度快。非对称加密只用在关键环节(传输密钥)(一次性工作,体积也不大),后续传输大量的业务数据,都使用更高效的对称加密这样一来就使得的成本比较友好了。而且如果业务数据都使用非对称加密的话,那整体的传输效率就会大打折扣。

上述的对称加密和非对称加密就是HTTPS的基本内容,但是光有这些还不够,上述的流程还存在一个漏洞,如果黑客利用这个漏洞就仍然可以获取到原始的明文数据。

3.中间人攻击

上述问题中黑客之所以能够成功替换公钥和私钥,关键要点在于客户端没有"分辨能力",不能辨别当前的公钥是黑客伪造的。这里的"分辨"不能靠"自证"(谁都说自己是真的),所以要引入第三方---可以被大家都信任的"公证机构"。公证机构说这个公钥是正确的,不是被伪造的,那就是可以信任的。

4.引入证书

想要得到证书,服务器就要向公证机构提出申请,就需要提交一些材料(域名,公钥,厂商.......),公证机构就会对这些材料进行审核,审核通过后就会给服务器颁发一个"证书",再把这个证书返回给服务器。这个证书不是纸质的证书,而是计算机中一段结构化的数据,这段数据就会包含一些重要的信息,比如网站的域名,服务器的公钥,证书的过期时间...以及数字签名

什么是数字签名?颁发证书的时候,公证机构就会针对证书中的各个属性,计算出一个校验和,并针对这个校验和进行加密,就得到了数字签名。这里的加密也是非对称加密,公证机构自己生成一对公钥私钥(和服务器的公钥私钥不一样),公证机构持有私钥,把公钥发给各个客户端设备(公钥往往都是内知道系统中的,只要安装了操作系统就会自带公证机构的公钥)。

客户端如何进行校验?客户端拿到数字签名,通过系统内置的公证机构的公钥进行解密,得到最初的校验和。客户端在重新计算一遍这里的校验和,再和解密出来的校验和进行对比,如果校验和一致就可以认为证书没有被篡改过,公钥是可信的。

在上述机制下,黑客就无法对证书内容进行篡改,即使是篡改了,也会很容易就被发现。黑客收到证书,如果直接修改里面的公钥,客户端在进行证书校验的时候,救护发现校验和不一致,客户端就可以认为公钥被篡改过。客户端这边就就会往往弹出一些对话框来警告用户,存在风险安全。

那黑客能不能替换公钥之后,能不能自己替换数字签名呢?不能!数字签名是由校验和以及公证机构的公钥加密的,只有公证机构的私钥才能解密,而黑客没有这个私钥。

那黑客能否自己申请一个证书来替换掉服务器的证书呢?这是行不通的,因为证书需要提供资料,其中就有网站的主域名,认证机构就会认证这个域名是否是你所有。

5.总结

HTTPS的加密过程:

1)使用对称加密,加密业务数据;

2)使用非对称加密,加密对称加密;

3)使用证书,校验服务器的公钥

这三者相结合,最终就保证了HTTPS的安全性。

好啦,这就是这次分享的全部内容了,有疑惑的小伙伴可以留言评论,我们一起共勉~

  • 20
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值