本文我们来聊一聊计算机网络HTTPS协议这个话题,在当今互联网时代,凡是涉及到‘上网’两字,就离不开数据信息的传输,那么有没有想过这样一个问题:在你登陆某一网站时,你的登陆密码是如何从你家里传送到网站的服务器呢?假如该网站的服务器在上海,网络如何能够保证数据被安全地传送那么远的距离呢?如果过程中有黑客从中间截取到你的账户密码,这种情况有想过吗?本文将结合图片+文本带你一起了解网络传输数据的安全协议
远在古代战争年间,没有通信网络的时期,将军要将作战计划和军令下发到各个营队中,就需要传令兵日夜兼程将军令传达到下级队伍。为了防止敌军截获情报,获取军情,古人采用了加密通讯。由此,加密通讯的方式便诞生了-------双方通过协商好的一个秘钥,A发送情报时,将情报使用秘钥进行加密,得到无法识别的密文,传令兵将情报送达到B方,B得到密文后使用协商好的秘钥对明文进行还原,便得到了上级下达的军令。即使敌军中间截获情报,由于没有秘钥,所以敌军无法识别线索从中获取任何情报。
简单做了一个对称加密的图,此图中,B/S双方实现数据的交换通过秘钥进行,双方提前协商好加密的秘钥后,各保存一份,发送数据时,首先使用协商好的秘钥对明文进行加密,获取密文后发往服务端,服务端接受到密文后使用秘钥进行解密得到原数据。过程非常简单,双方的交流建立在秘钥的加密解密基础上进行。
看似方便的加密过程中,隐藏了一个很大的问题,由于双方距离远,秘钥协商通过面对面告知也不太现实,那么前期的秘钥协商依旧摆脱不了网络的局限性,黑客可以通过在双方协商秘钥时,获取到双方的协商信息,从而得到秘钥,随后的数据交互,黑客便可以通过得到的秘钥轻松解密,得到用户个人信息。
非对称加密是由一对秘钥(公钥/私钥)进行加密的,其原理是服务端持有一把独一无二的私钥,不公开,别人无法得到的,除非私钥泄漏。同时还有一把公钥,用于公开,访问方可以通过公钥来进行数据加密,接收方使用私钥进行解密。
非对称加密可以有两种形式对数据进行加密
这也是普遍使用的一种方式,我画了一幅图来表示了A端与B端之间的非对称加密解密过程
希望你没被绕晕。就这样双方的消息通道就建立了,数据的交流就以这样的形式开展了
可能大多数人听到的都是使用公钥加密、私钥解密。从而纳闷,嗯?那私钥加密以后,将数据发出,公钥又是公开的,岂不是所有人都能解密密文,那它的加密还有什么意义呢?这种加密形式其实主要是认证机构用来对数字证书进行签名使用的,后面会讲到,这里简单引入一下,为了增加可信度,认证机构要对服务端颁发数字证书,同时认证机构会使用私钥对证书进行签名,防止证书被中间者篡改,且客户端获得证书后,用本机系统自带的证书秘钥解密来验证证书,马上我们就会讲到。
使用公钥加密数据后,只有私钥才能进行解密,而私钥又只有服务端才会有,也就是说使用公钥加密的数据,即使黑客中间拦截了,同时也有B端公钥,它也是没有办法解开这个数据的(这里记住了,下文会涉及到),既然黑客无法解密数据,数据的安全已经得到保证,又何谈问题呢?
来看这个图
与上一幅图的差别在于加了黑客中间者
既然黑客无法解析公钥加密的数据,那么他可以换一个地方入手—在客户端下载公钥时便开始介入
可以看到整个过程中黑客中间者充当了代理身份,假冒服务端与客户端交流,同时用客户发来的数据,假冒成客户端与服务端进行交互。正常状态下黑客中间者将双方的私密数据进行相互转发,一旦双发的交流过程中透漏出黑客中间者感兴趣的数据,他完全可直接将数据保存,做非法用途
既然使用对称/非对称加密都不能防止黑客,那是不是没有办法来保证数据的安全了呢?非也,非也。只要能找到问题所在,就能对症下药。
非对称加密的漏洞在于客户端下载公钥时,黑客中间者可以伪装服务端身份返回伪公钥。针对这个问题,客户端可以增加一个身份验证,当客户端发送请求时,对作出响应的主机进行身份验证,如果目标主机身份异常,主机域名不是自己请求的目的地,就可以辨别出响应消息的主机是否值得信赖。
现在几乎大多数传输协议使用的都是HTTPS,相比于HTTP多了一个S,TLS/SSL,其位于应用层与TCP/IP层之间,在HTTP的基础上添加了认证环节,在上文中非对称加密中我们简单提了一下,接下来重点讲解,要注意啦,拿出你的小本本,认真看,认真记。
会有第三方认证机构的存在,A不相信B,B不相信A,但是AB都相信C,所以C充当了法人,用于证明B是好人。大概就是这么个道理,服务端首先会到公认的认证机构来为自己颁发一个数字证书,数字证书中包含有服务端的域名信息、过期时间、证书序列号、签发机构、及对证书的签名。
解释一下什么是证书的签名,认证机构为了防止证书被中间者篡改,对证书进行了一次hash计算后得到其摘要信息,会使用自己独有的私钥对摘要数据进行加密,叫做签名,其相当于一个身份标识,用于接受端对证书做验证
再来提一个问题:如果黑客中间篡改证书会怎么样?嗯,是个关键问题。因为证书中不仅包含了服务端的域名信息,同时也包含了对此证书的签名,这个签名是对证书进行计算得到的摘要,通过认证机构的私钥加密后生成的,注意是私钥加密的,黑客得到了证书,并且对证书内容作了修改,比如将域名改为自己的的地址,由于没有认证机构的私钥,他是没有办法将修改之后的证书进行重新签名,如果就那样将证书发给客户端的话,客户端对签名解密得到摘要数据后,发现与自己计算出的证书摘要数据不相同,就知道了证书被中间人修改过,黑客的伪造手段也就以失败告终了。
OK,容忍我用这么啰嗦的长篇大论来解释HTTPS的证书认证原理,这里的内容才是本文的重点,也是难点,搞清楚上面所说的,那么你对HTTPS的工作原理也就有了一定认识了.我们结合图来帮助理解他的原理
到此,对称、非对称、证书认证的非对称加密就说完了。简单总结一下
对称加密:效率高,速度快,但一旦黑客得到秘钥,所有的密文都会被破解
非对称加密:计算繁琐,速度相对较慢,数据相对安全,但黑客可以从中间假冒服务端伪造公钥,以代理身份截获信息。对称加密分两种类型:公钥加密—私钥解密、私钥加密—公钥解密(用于签名)
HTTPS:HTTP协议的基础上增加TLS协议,通过证书与签名来验证对方的身份,能够正确获得服务端公钥而非黑客伪造公钥(因为非对称加密的主要漏洞在于这一点),协商会话秘钥,最后进行对称加密,可以看到。HTTPS中只有在三次握手时才会用到非对称加密,随后的数据交流都将采用对称加密进行,提高传输效率