HTTPS加密协议

HTTPS是基于HTTP实现的一种加密网络协议

战争时间人们加密通信时,普通的话中藏着要传递的信息。

其中这些普通的话就称为密文,真正要传递的信息称为明文,能够将这两种进行相互转化的称为密钥。

密钥加密有两种主要的方式:

1.对称加密

加密和解密,使用的密钥是同一个密钥

明文  +  密钥   = 密文

密文  +  密钥   = 明文

2.非对称加密,有两个密钥

一个称为公钥,一个称为私钥(一个用来加密一个用来解密)

明文  + 公钥  = 密文

密文  + 私钥  = 明文

或者

明文  + 私钥  = 密文

密文  + 公钥  = 明文

HTTPS的工作过程

针对HTTP的header和body进行加密

1.对称加密

在客户端用密钥对明文进行加密使其变为密文请求,然后将密文请求发送到路由器,尤其进行转发到服务器,服务器通过密钥进行解密。

在实际工作中,服务器不是只和一个客户端通信,而是和很多客户端通信.
这些客户端使用的对称密钥是相同的嘛?
必须要求每个客户端的密钥都不相同.彼此之间才不知道对方的密钥是啥.

此时要求每个客户端对应的密钥都不同.
现在就需要每个客户端,在和服务器建立连接的时候,就把密钥给生成出来(涉及到一些随机数机制在里面,保证每个客户端生成的密钥都不同)
客户端再把自己的密钥通过网络传输给服务器.


此时就有一个问题在通过网络传输过程中如果被黑客截获了,怎么办

黑客知道了通信的密钥.后续传输的加密数据.黑客就可以很轻松的进行解密

此时如果多加几个密钥能否解决? 

不行因为无论增加多少个密钥总需要通过网络来进行传输,和只有一个密钥一样,会被截获。

2.为了解决上述安全传输密钥的问题,引入了“非对称加密"

非对称加密中,有一对密钥.公钥私钥.
可以使用公钥加密,私钥解密.
或者使用私钥加密,公钥解密.

客户端仍然生成对称密钥
使用服务器的公钥,对对称密钥进行加密得到了密钥的密文.

如果黑客拿到加密后的对称密钥
是无能为力的.公钥加密需要私钥解密.私钥只有服务器才有.黑客手里没有


服务器手里持有着私钥.服务器就很容易的能解密出对称密钥是什么

于是服务器就得到了原始的对称密钥,
接下来,客户端和服务器就使用这个对称密钥加密传输即可.

对称加密与非对称加密的区别

既然已经引入了非对称加密,为啥还需要引入对称加密呢?直接使用非对称加密,来完成所有业务数据的加密传输即可.
进行非对称加密/解密,运算成本是比较高的.运算速度也是比较低的.对称加密,运算成本低,速度快.
使用非对称加密,只是用来进行这种关键环节(传输密钥)(一次性的工作,体积也不大),成本就比较可控.

如果要传输大量的业务数据,都使用效率更高的对称加密,比较节省时间.
如果业务数据都使用非对称加密,整体的传输效率就会大打折扣了
.

非对称加密仍然存在一种问题。

中间人攻击

服务器会生成一对公钥和私钥pub1,pri1

黑客自己也生成一对非对称密钥.其中公钥pub2,私钥pri2

当客户端向服务器询问公钥时,经过黑客入侵的路由器,服务器会返回服务器生成的公钥pub1给路由器,但是黑客返回他自己的生成的公钥pub2给客户端,这样黑客生成的公钥代替了客户端的公钥,然后客户端不知道pub2是黑客的以为就是服务器的呢 ,于是就使用pub2针对对称密钥进行加密了.黑客收到加密的对称密钥之后,因为这个密钥是使用pub2加密的.需要使用pri2解密.此时黑客解密之后,拿到了对称密钥。.
黑客手里当然有pri2(他自己生成的),然后就行解密在基于服务器返回的公钥pub1对其进行重新加密,传递给服务器。服务器收到数据之后,使用pri1这个解密是完全能够成功的.于是就约定使用这对非对称密钥。

由于对称密钥,黑客在刚才的过程中,已经拿到了.
所以此时加密传输的数据对于黑客来说已经一览无余了.


如何解决上述中间人攻击问题呢
之所以能进行中间人攻击,关键要点在于客户端没有"分辨能力"客户端不知道当前这个公钥是不是黑客伪造的

所有必须引入第三方的可以被大家都信任的"公证机构" .
公证机构说这个公钥是正确的,不是被伪造的,我们就是可以信任的

网站的开发人员搭建这个服务器的时候,就会生成好公钥私钥(只要一份就行了,不必说每个客户端都不一样.)

向公证机构提出申请.
(提交一些材料域名,公钥,厂商....
公证机构就会对这些材料进行审核.审核通过就会给服务器师—个"证书"

证书就是一段结构化的数据.
这段数据中就会包含一些重要的信息比如,
网站的域名服务器的公钥证书的过期时间
数字签名

然后每次客户端访问时,就会直接变为询问服务器的证书是什么,服务器返回证书。

当客户端拿到了证书,也就拿到了证书中的公钥
客户端就需要验证这个公钥是否是服务器最初的公钥(是否是被黑客篡改了)

这个过程,就称为“证书的校验"
如何进行校验?

 注:核心机制就是"数字签名”因为数字签名就是被加密后的校验和

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

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

在上述机制下,黑客就无法对证书内容进行篡改了.即使篡改,也很容易被发现.
当黑客收到证书之后,如果直接修改里面的公钥,替换成自己的,客户端在进行证书校验的时候,就会发现校验和不一致了

那么黑客是否能自己也申请一个证书,完全替换掉,服务器的证书呢

申请证书,需要提交资料.其中就有网站的主域名

认证机构自然就会认证这个域名是否是你所有的

https 加密:
1)对称加密,加密业务数据

2)非对称加密,加密对称密钥
3)使用证书,校验服务器的公钥
使用这三种方式相结合,保证最终https的安全性以及尽可能快的传输速率














 


 

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值