https 非对称加密

https相当于在http和tcp之间加上了一层ssl加密,但是要注意的是,https协议在内容传输的加密上使用的是对称加密,非对称加密只作用在证书验证阶段。这是为什么呢?因为非对称加密的加解密效率是非常低的,而 https的应用场景中通常端与端之间存在大量的交互,非对称加密的效率是无法接受的。

首先我们需要对对称加密和非对称加密有所了解。对于对称加密,比如说常见的移位替换等方法,只要知道了加密过程,就一定知道解密过程,因为加密算法比较简单,那么根据加密算法就能反推出解密算法,也就是双方的秘钥是一样的,这就是对称加密。

非对称加密:你的手上有两个密钥(一对密钥),它们有一定的关联,但没有办法通过其中一个算出另外一个。你把一个密钥紧紧地攥在手里,永远不向别人公布(私钥);把另外一个发送给我,当然,发送给我的途中,所有的设备都知道了这个密钥(公钥)。之后我用公钥加密了数据,并发送给你,你却可以奇迹般地用私钥解密它。但是对于只有公钥的人,却不能用公钥对其进行解密。

我们来看看https建立连接的过程:

1. 客户端发起握手请求,注意这里请求是明文的,客户端没有使用任何秘钥。直接达到请求url的443端口即可。

2. 服务器将数字证书发送给客户端,这个数字证书是为了防止中间人攻击的,里面包括了公钥。请注意,这里服务器接收到请求之后,会在服务器本地生成这个一对公钥和私钥,它的公钥会发送给客户端,私钥留在自己本地。而数字证书,是保证了客户端收到这个私钥所在的数字证书之后,信任真正是由这个网站发送过来的(数字证书表示对服务器的认可)而不是别的中间人。

3. 客户端验证证书的合法性。因为数字证书包括过期时间,域名以及最重要的公钥,所以数字证书能验证是不是真正由网站发过来的。

4. 确定证书合法之后,客户端随机生成一个长整数,这个长整数用公钥加密,加密之后就发送至服务器。

5. 服务器用私钥解密,拿到了之后进行数据交换时用于对称加密的秘钥。这个秘钥就是以后进行真正数据交换的秘钥了。

6 服务端通过客户端传入的随机数构造对称加密算法,对返回结果内容进行加密后传输给客户端,这样子这个对称加密的算法双方都知道了,https加密连接也就完成了。

 

所以我们看究竟怎么避免加密失败了呢?

首先,第二步的数字证书保证了服务器和公钥的可信任性,这样之后客户端就可以大胆利用这个公钥进行加密。

第二,服务器用公钥发送,私钥一直留在本地,这样就没可能让客户端发送的东西被其他人截取之后破解,因为没有私钥。也就是说第五步用私钥解密之后,保证了这个客户端随机生成的整数只有客户端和服务器知道,其他的人都不知道。

之后利用这个别人都不知道的整数去生成对称加密的算法,这样其他人就就算是拦截了数据,因为对称加密算法不知道,也就无法破解了。

正是这种精妙的设计,保证了https协议的安全性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值