HTTPS加密协议你知道多少?

一、前言

本文我们来聊一聊计算机网络HTTPS协议这个话题,在当今互联网时代,凡是涉及到‘上网’两字,就离不开数据信息的传输,那么有没有想过这样一个问题:在你登陆某一网站时,你的登陆密码是如何从你家里传送到网站的服务器呢?假如该网站的服务器在上海,网络如何能够保证数据被安全地传送那么远的距离呢?如果过程中有黑客从中间截取到你的账户密码,这种情况有想过吗?本文将结合图片+文本带你一起了解网络传输数据的安全协议

二、对称加密

数据加密的由来

远在古代战争年间,没有通信网络的时期,将军要将作战计划和军令下发到各个营队中,就需要传令兵日夜兼程将军令传达到下级队伍。为了防止敌军截获情报,获取军情,古人采用了加密通讯。由此,加密通讯的方式便诞生了-------双方通过协商好的一个秘钥,A发送情报时,将情报使用秘钥进行加密,得到无法识别的密文,传令兵将情报送达到B方,B得到密文后使用协商好的秘钥对明文进行还原,便得到了上级下达的军令。即使敌军中间截获情报,由于没有秘钥,所以敌军无法识别线索从中获取任何情报。

对称加密具体方式

HTTPS加密协议你知道多少?_第1张图片
简单做了一个对称加密的图,此图中,B/S双方实现数据的交换通过秘钥进行,双方提前协商好加密的秘钥后,各保存一份,发送数据时,首先使用协商好的秘钥对明文进行加密,获取密文后发往服务端,服务端接受到密文后使用秘钥进行解密得到原数据。过程非常简单,双方的交流建立在秘钥的加密解密基础上进行。

对称加密优点
  • 速度快,效率高
  • 过程简单,只需共同协商好加密的秘钥。
  • 加密解密简易
  • 适合大型数据传输
对称加密的弊端

看似方便的加密过程中,隐藏了一个很大的问题,由于双方距离远,秘钥协商通过面对面告知也不太现实,那么前期的秘钥协商依旧摆脱不了网络的局限性,黑客可以通过在双方协商秘钥时,获取到双方的协商信息,从而得到秘钥,随后的数据交互,黑客便可以通过得到的秘钥轻松解密,得到用户个人信息。

三、非对称加密

什么是非对称加密?

非对称加密是由一对秘钥(公钥/私钥)进行加密的,其原理是服务端持有一把独一无二的私钥,不公开,别人无法得到的,除非私钥泄漏。同时还有一把公钥,用于公开,访问方可以通过公钥来进行数据加密,接收方使用私钥进行解密。
非对称加密可以有两种形式对数据进行加密

公钥加密-私钥解密

这也是普遍使用的一种方式,我画了一幅图来表示了A端与B端之间的非对称加密解密过程
HTTPS加密协议你知道多少?_第2张图片

  • A端首先到网上下载B端的公钥
  • A端成功获取到B端公布的公钥
  • A端使用B端的公钥对要发送的数据(包括A端的公钥)进行加密得到密文,并发往B端
  • B端使用自己独有的私钥对A端发来的数据进行解密,得到原始数据
  • B端使用A端发来的公钥对消息进行加密发往A端
  • A端收到B端发来的数据并使用A端的私钥进行解密后,得到消息

希望你没被绕晕。就这样双方的消息通道就建立了,数据的交流就以这样的形式开展了

私钥加密-公钥解密

可能大多数人听到的都是使用公钥加密、私钥解密。从而纳闷,嗯?那私钥加密以后,将数据发出,公钥又是公开的,岂不是所有人都能解密密文,那它的加密还有什么意义呢?这种加密形式其实主要是认证机构用来对数字证书进行签名使用的,后面会讲到,这里简单引入一下,为了增加可信度,认证机构要对服务端颁发数字证书,同时认证机构会使用私钥对证书进行签名,防止证书被中间者篡改,且客户端获得证书后,用本机系统自带的证书秘钥解密来验证证书,马上我们就会讲到。

非对称加密暴露的问题

使用公钥加密数据后,只有私钥才能进行解密,而私钥又只有服务端才会有,也就是说使用公钥加密的数据,即使黑客中间拦截了,同时也有B端公钥,它也是没有办法解开这个数据的(这里记住了,下文会涉及到),既然黑客无法解密数据,数据的安全已经得到保证,又何谈问题呢?
来看这个图
HTTPS加密协议你知道多少?_第3张图片

与上一幅图的差别在于加了黑客中间者
既然黑客无法解析公钥加密的数据,那么他可以换一个地方入手—在客户端下载公钥时便开始介入

  • 客户端下载公钥时,黑客中间者拦截到了客户端的消息
  • 黑客中间者以自己的身份假冒客户端到服务端下载服务端公钥,同时又假冒服务端返回给客户端一个黑客中间者伪造的公钥
  • 客户端接受到伪公钥后,开始使用伪公钥加密数据,并发送
  • 黑客中间者继续拦截到客户端发送的密文,使用自己的私钥解密密文,得到客户信息(密码),接着使用从服务端拿来的公钥对对客户信息重新加密,发往服务端,
  • 服务端认为该消息是由客户端发来的,检查后确认密码正确,返回用户私密数据
  • 黑客中间者成功得到数据并转给客户端

可以看到整个过程中黑客中间者充当了代理身份,假冒服务端与客户端交流,同时用客户发来的数据,假冒成客户端与服务端进行交互。正常状态下黑客中间者将双方的私密数据进行相互转发,一旦双发的交流过程中透漏出黑客中间者感兴趣的数据,他完全可直接将数据保存,做非法用途

四、HTTP+TLS协议

非对称加密问题剖析

既然使用对称/非对称加密都不能防止黑客,那是不是没有办法来保证数据的安全了呢?非也,非也。只要能找到问题所在,就能对症下药。
非对称加密的漏洞在于客户端下载公钥时,黑客中间者可以伪装服务端身份返回伪公钥。针对这个问题,客户端可以增加一个身份验证,当客户端发送请求时,对作出响应的主机进行身份验证,如果目标主机身份异常,主机域名不是自己请求的目的地,就可以辨别出响应消息的主机是否值得信赖。

什么是HTTPS?

现在几乎大多数传输协议使用的都是HTTPS,相比于HTTP多了一个S,TLS/SSL,其位于应用层与TCP/IP层之间,在HTTP的基础上添加了认证环节,在上文中非对称加密中我们简单提了一下,接下来重点讲解,要注意啦,拿出你的小本本,认真看,认真记。

HTTPS的认证原理

会有第三方认证机构的存在,A不相信B,B不相信A,但是AB都相信C,所以C充当了法人,用于证明B是好人。大概就是这么个道理,服务端首先会到公认的认证机构来为自己颁发一个数字证书,数字证书中包含有服务端的域名信息、过期时间、证书序列号、签发机构、及对证书的签名。
解释一下什么是证书的签名,认证机构为了防止证书被中间者篡改,对证书进行了一次hash计算后得到其摘要信息,会使用自己独有的私钥对摘要数据进行加密,叫做签名,其相当于一个身份标识,用于接受端对证书做验证

  1. 当接收方也就是客户端收到证书后,会首先验证证书是否合法,可被信任。
  2. 你可能会问:既然通过证书认证服务端的合法性,而证书又是由签发机构颁发的,那客户端又怎么能知道签发这个证书的机构是可被信任的呢?没错,证书需要被信任,签发证书认证机构也需要被信任,所以在计算机出厂后,一些官方信任的证书会被安装到电脑操作系统中,这样接收方在收到对方发来的证书信息以后,就可以通过查询本地根证书来验证证书签发者的可信度。 同时证书中包含了证书机构的信息,包括对方的公钥,主要用于解密签名文件
  3. 确认证书合法后,根据数字证书提供的算法对证书进行一次hash计算得到摘要信息A,使用本地安装的证书(马上说到)中的公钥对签名进行解密,也得到了一个摘要数据B,客户端使用自己计算的摘要A与解密后的摘要B进行比对,如果一致说明证书在传输过程中没有被中间者篡改。
  4. 那么回顾一下,本地系统查询确认证书是合法机构签发的,并且证书内容也没有被修改过(通过对比签名),那么客户端就可以确认这个消息是服务端发来的,不是黑客伪造的。
  5. 其后使用证书中携带的服务端公钥,对要发送的消息进行加密后发往服务端,这样,即使黑客拦截,由于没有服务端私钥,数据无法解析,所以之后的所有操作,黑客看到的只能是一堆反逻辑的密文而束手无策

再来提一个问题:如果黑客中间篡改证书会怎么样?嗯,是个关键问题。因为证书中不仅包含了服务端的域名信息,同时也包含了对此证书的签名,这个签名是对证书进行计算得到的摘要,通过认证机构的私钥加密后生成的,注意是私钥加密的,黑客得到了证书,并且对证书内容作了修改,比如将域名改为自己的的地址,由于没有认证机构的私钥,他是没有办法将修改之后的证书进行重新签名,如果就那样将证书发给客户端的话,客户端对签名解密得到摘要数据后,发现与自己计算出的证书摘要数据不相同,就知道了证书被中间人修改过,黑客的伪造手段也就以失败告终了。
OK,容忍我用这么啰嗦的长篇大论来解释HTTPS的证书认证原理,这里的内容才是本文的重点,也是难点,搞清楚上面所说的,那么你对HTTPS的工作原理也就有了一定认识了.我们结合图来帮助理解他的原理

验证流程

HTTPS加密协议你知道多少?_第4张图片

  • 客户端向服务器发送连接请求,内容包括随机数字1,支持的算法和加密套件以及一个“Server Hello”
  • 服务端收到客户端发来的消息回应客户端“Client Hello”,同时又包括选择的算法与加密套件,生成的随机数2发给客户端,接着服务器再发一个响应将自己的证书发给客户端表示自己是合法公民,可以信赖。证书中包含服务端公钥、域名、认证信息等信息,带一个“Server Hello Done”
  • 客户端收到证书后对证书进行验证,途中假设黑客中间窃取数据,保存了证书,但其无法篡改数据,一旦改了客户端不会信任。
  • 客户端对证书验证后确认是目标服务端发来的且证书没被修改,随后生成随机数3,同时使用服务端公钥对其加密,名叫预主密钥,发送给服务端
  • 这时候黑客由于没有私钥,无法破解此消息,加密算法就被安全的送往服务端
  • 服务端收到消息后使用私钥解密得到预主密钥,此秘钥由于黑客无法破解,所以只有双方两者知道,没有其他人会知道,因为他们没有私钥
  • 最后客户端与服务端都用各自之前得到的随机数1、2与预主密钥计算得到最终的回话秘钥,之后的所有交流都采用对称加密算法交流数据,而黑客中间者只能傻傻地看着手里一堆看不懂文字发呆,无可奈何~

四、总结

到此,对称、非对称、证书认证的非对称加密就说完了。简单总结一下
对称加密:效率高,速度快,但一旦黑客得到秘钥,所有的密文都会被破解
非对称加密:计算繁琐,速度相对较慢,数据相对安全,但黑客可以从中间假冒服务端伪造公钥,以代理身份截获信息。对称加密分两种类型:公钥加密—私钥解密、私钥加密—公钥解密(用于签名)
HTTPS:HTTP协议的基础上增加TLS协议,通过证书与签名来验证对方的身份,能够正确获得服务端公钥而非黑客伪造公钥(因为非对称加密的主要漏洞在于这一点),协商会话秘钥,最后进行对称加密,可以看到。HTTPS中只有在三次握手时才会用到非对称加密,随后的数据交流都将采用对称加密进行,提高传输效率

你可能感兴趣的:(Android,网络与线程,android,网络)