https 加密

首先http(超文本传输协议)是不安全的,因为它通过明文对数据进行传输。

那么问题来了,怎么改进呢?(一步步来)

1 对称加密:

       在发送真实数据之前,服务器先生成一把密钥,并给客户端,之后服务器再给客户端传输的时候会通过秘钥对数据进行加密。

客户端收到加密的数据后通过密钥进行解密。

  特点:效率高,不安全(服务端给客户端的密钥被中间人劫取后,那么就可以对之后劫取得任意加密数据进行解密)。

2 非对称加密

   服务端和客户端都拥有两把钥匙,一把公钥、一把密钥。我们拿服务器给客户端传数据为例:服务端拿客户端的公钥对数据进行加密,客户端收到后,通过自己的密钥进行解密。客户端给服务端传数据同理。

特点:相对安全,效率低(非对称加密要比对称加密慢上百倍

3: 对称加密 + 非对称加密

  这个方法应该说是上两个的优化。实现:用非对称加密来加密对称加密的密钥。例: 服务器用明文给客户端发送自己的公钥,客户端收到公钥后生成一把密钥(用于对称加密),然后用服务器的公钥对这把密钥进行加密,之后再把密钥传给服务器,服务器收到了进行解密,然后服务器就得到了这把密钥了。而客户端也有一把密钥,就可以进行对称加密了。(这里我做了个颜色区分,蓝色的就是对称加密的密钥,红色的就是非对称加密的公钥和密钥。这样应该好理解一点)。

那么问题来了:这样就是安全吗?

     如果在服务端给客户端提供密钥的时候被中间人劫取,然后中间人把自己的公钥发给客户端,客户端拿到劫取人的公钥生产一个对称加密的密钥,然后劫取人的公钥对这个密钥进行加密,发给劫取人(发给服务端的时候又被劫取人劫取),劫取人就可以用自己的密钥解密的到了对称加密的密钥。那么就跟对称加密效果一样了。

 问题出在哪?

    很显然,问题就出在客户端不知道拿到的这个公钥是不是服务器给的。

怎么办呢?

数字证书!

上面的问题出在不知道得到的公钥是不是服务端的。那么我们就需要找一个可靠的、大家认可的认证中心(CA)。

服务器在给客户端传输公钥的过程中,会把服务器的个人信息和公钥通过hash算法生产摘要信息。为了防止摘要被人劫取,服务器还会用CA提供的私钥对摘要信息进行加密形成数字签名。然后服务器将摘要信息和数字签名一并(数字证书)发给客户端。当客户端拿到数字证书后,通过CA的公钥对数字证书进行解密的到摘要信息,然后对数字证书里服务器的公钥以及个人信息进行hash计算得到另一个摘要信息。然后两个摘要信息对比是否一样。如果一样就证明是服务器,否则不是。

 

这样,就确保了服务器的公钥安全交给客户端了。

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值