近几年,互联网发生着翻天覆地的变化,尤其是我们一直习以为常的HTTP协议,在逐渐的被HTTPS协议所取代,究其原因就是 HTTP 它不是安全的,在数据传输过程中会遭到黑客窃取,本篇文章会先讲解 HTTP 缺点,然后再讲解 HTTPS 是如何解决这些问题来保证安全的。
一、HTTP的缺点
1. 通信使用明文(不加密),内容可能会被窃听
HTTP 本身不具备加密的功能,因此其在通信过程是使用明文方式发送的。这种方式就有可能造成通信过程中信息会被破解获取。
例如一群佩奇在路上坐着敞篷大货车,路过的人一下就能看到这车里都是,信息完全暴露。
2. 不验证通信方的身份,有可能遭遇伪装
HTTP 协议在请求和响应中不会对通信方进行确认。这就存在可能你访问的服务器有可能不是你真正指定的服务器,拿到返回响应的客户端可能不是一开始发起请求的客户端。
这里举个小例子,例如母鸡孵蛋,我偷偷把鸡蛋换成鸭蛋,母鸡照样在那孵,不会有任何的怀疑。
3. 无法证明报文完整性,有可能信息已遭篡改
HTTP 协议 无法证明通信的报文完整性,在请求和响应发出后,在传输过程中内容如果遭到篡改,也没有办法感知到。
例如你从某个网站下载内容,无法确定你客户端下载的文件是否和服务器中存放的文件是否一致,有可能文件在传输过程中被篡改为其他的内容。
二、什么是 HTTPS
HTTPS是在HTTP上建立SSL加密层,并对传输数据进行加密,是HTTP协议的安全版。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。
HTTPS主要作用是:
(1)对数据进行加密,并建立一个信息安全通道,来保证传输过程中的数据安全;
(2)对网站服务器进行真实身份认证。
我们经常会在Web的登录页面和购物结算界面等使用HTTPS通信。使用HTTPS通信时,不再用http://,而是改用https://。另外,当浏览器访问HTTPS通信有效的Web网站时,浏览器的地址栏内会出现一个带锁的标记。对HTTPS的显示方式会因浏览器的不同而有所改变。
三、HTTPS如何解决HTTP上述三个缺点?
HTTPS并非是应用层的一种新协议。只是HTTP通信接口部分用SSL(Secure Socket Layer)和TLS(Transport Layer Security)协议代替而已。
通常,HTTP直接和TCP通信。当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信了。简言之,所谓HTTPS,其实就是身披SSL协议这层外壳的HTTP。
(一)解决内容可能被窃听的问题——加密
方法1.对称加密
怎么理解对称加密呢?其实很简单,就是指加密和解密使用的密钥都是同一个。只要保证了密钥的安全,那整个通信过程就具有了机密性。
例如你要登陆某个网站,你事先和网站约定好使用一个对称密码,那么在数据传输过程中全是用密钥加密后的密文,只有网站能解密,传输的过程中即使信息被窃取,也无法获得原始数据。
方法2.非对称加密
对称加密看起来好像完美实现了机密性,但这其中也有一定的安全隐患,就是如何把密钥安全地传递给对方,因为对称加密只要有密钥就能解密,如果双方约定的密钥在传递过程被窃取,就会造成数据会被很容易的解密。
例如你家的钥匙,你跟你爸妈约定好钥匙放在门外鞋底里,看似安全,但如果别人发现了这个鞋底里藏的钥匙,那你家大门就会被打开,就很危险。
那有没有更安全的加密方式呢,就要说到非对称加密(也叫公钥加密算法)。
它有两个密钥,一个叫 “公钥”,一个叫“私钥”。两个钥匙是不同的,公钥可以给任何人使用,但私钥必须严格保密。
公钥加密的数据只能由私钥解密,反过来,私钥加密后也只能用公钥解密。
网站秘密保管私钥,在网上随意分发公钥,如果你想登录网站,只要用公钥来加密即可,密文只能由私钥持有者才能解密,即使数据传输过程中被黑客获取到,他也无法破解。
方法3.对称加密+非对称加密(HTTPS采用这种方式)
非对称性加密虽然安全性高,但因为它都是基于复杂的数学运算,速度就会很慢,虽然保证了安全,但通信速度太慢,实用性也会大打折扣。
混合加密就是在通信刚开始的时候使用非对称算法,来解决对称加密密钥交换安全性问题。
对方拿到密文后用私钥解密,拿到对称密钥,这样双方就实现了对称密钥的安全交换,后续就不再使用非对称加密,全都使用对称加密。
这样混合加密就实现了安全和性能兼顾,实现了可靠的机密性。
(二)解决通信方身份可能被伪装的问题——数字证书
公钥每个人都可以进行发布,我们还缺少一个防止黑客伪装公钥的手段,也就是如何证明这个公钥就是你的公钥呢?
为了解决这个问题,我们需要找一个公认的可信第三方,来帮助构建起公钥的信任链。
这个第三方就是 CA (数字证书认证机构),它扮演着类似网络世界中的公安局,公证中心这种角色,由它来给各个公钥签名,用自身的信誉来保证公钥无法伪造,是可信的。
服务器会将由数字证书认证机构颁发的公钥证书发送给客户端,接到证书的客户端可使用公开密钥,对那张证书上的数字签名进行验证,一旦验证通过,就证明服务器的公开密钥是真
(三)解决报文可能遭篡改问题——数字签名
黑客其实是可以伪装成你,向网站发起支付、转账等请求消息,因为网站没有办法确认你的身份就会造成钱被偷走。
在现实生活中,我们解决身份认证是通过身份证,签名或者印章等等,来确定这个是本人操作的。
那 HTTPS 是如何解决身份认证问题的?还记得之前提到的非对称加密里的私钥吗,使用私钥再加上摘要算法,就可以实现“数字签名”,同时实现“身份认证”。
数字签名的原理就是把公钥和私钥用法反过来,之前是公钥加密,私钥解密,现在变成私钥加密、公钥解密。
签名和公钥一样完全公开,任何人都可以获取。但这个签名只有用私钥对应的公钥才能解开,拿到摘要后,再比对原文验证完整性,就可以像签署文件一样证明消息确实是你发的。
四、为何不所有的网站都使用HTTPS?
既然HTTPS那么安全可靠,那为何不所有的Web网站都使用HTTPS?
首先,很多人还是会觉得HTTPS实施有门槛,这个门槛在于需要权威CA颁发的SSL证书。从证书的选择、购买到部署,传统的模式下都会比较耗时耗力。
其次,想要节约购买证书的开销也是原因之一。要进行HTTPS通信,证书是必不可少的。而使用的证书必须向认证机构(CA)购买。
五、如何选择合适的SSL证书为网站部署HTTPS?
目前市场上有许多提供SSL证书服务的商家,但是如何选择安全可靠的证书机构对于新手来说也是十分困难的,这边推荐蜜蜂云盾CDN的免费SSL证书服务,它是和国际知名CA机构合作,采用国际领先互联网加密技术,能够有效加强网站数据安全,防止网站数据被窃取、篡改、劫持,获得搜索引擎更高排名。
留言0