清晰图解深度分析HTTPS原理

前言

很高兴遇见你~

Https现在基本已经覆盖所有的http请求了,作为一个伟大的发明,保障了我们的通信安全。在Android中对于HTTPS其实感知不多,因为这些内容都有成熟的框架帮我们完成了,例如okHttp。我们发起一个http或https的请求几乎感受不到区别。

但最近在研究okHttp的源码的时候,发现很多的内容没看懂,最后发现是http相关的网络知识不扎实,再一次回过头来,把https学了一遍。正如前面所说,得益于框架,我们几乎不需要学习https背后到底发生了什么,但是发生了相关的bug也就无法修复(面试要问[狗头])。所以,作为一个android开发者,也还是很有必要学一下https。

HTTPS的目标就是解决网络通信的安全问题。本文首先阐述网络中存在的风险,然后再讨论其涉及的加密方法、证书验证,最后再同从请求的角度解析整个安全连接的流程。

网络存在的风险

在没有经过任何加密手段的HTTP通信中,面临着三大危险:消息监听、消息篡改、冒充身份

消息监听

我们发送的消息需要经过很多的中间路由器,我们无法确保网络中每一个节点都是安全的,所以我们发送的数据会被恶意的对象截取到。假如我们的消息没有经过任何加密,那么恶意用户就可以监听到我们通信的所有数据。如下图:

image.png

解决的方法是:对通信数据进行加密。如下图:

image.png

经过加密的数据,即时被黑客截取到,他也无法知道数据的内容。

消息篡改

第二个危险是消息篡改。我们发出的数据会经过危险的中间节点,黑客可以监听我们的数据,也可以对我们的数据进行修改。如下图:

image.png

解决篡改的方法是:利用MD5等hash算法手段来检验数据的完整性 。下面会详解。

冒充身份

HTTP并没验证身份的流程,我们无法保证我们接收到的数据是服务器响应的,服务器也无法鉴别请求的用户是否是恶意用户。如下图:

image.png

解决的方法是:使用证书来检验对方的身份

HTTP通信面临的这些问题,让我们的网络通信变得极其不安全,HTTPS就是在HTTP的基础上来解决安全问题。

加密算法

加密算法依旧是HTTPS安全通信中的重头戏。在理想的情况下,如若有一个加密算法使得仅有用户和服务可以加密解密,那么其实是不存在上面的安全问题的。但黑客本身,他也可以作为一个客户存在,普通客户可以加密解密,那么黑客也就可以做到。所以需要附加上动态因子来保证算法的安全。

这里解释一下什么是动态因子算法(这个名字我自己起的,仅仅为了帮助理解)

假如现在需要发送的数据是:123
算法是:数据+动态整数

现在通信双方商量的动态因子是:5,那么

  1. 发送方对数据进行加密:123+5=128
  2. 接收方对数据进行解密:128-5 =123

即使黑客知道具体的算法就是数据+动态整数,但是他不知道具体的动态整数是多少,也就无法解出原始的数据内容。这个动态整数称之为密钥

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值