图文解说HTTP和HTTPS的区别,以及HTTPS安全的原因

 

HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

网络分层中的区别:

                                            

SSL(Secure Socket Layer,安全套接字层):1994年为 Netscape 所研发,SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。

TLS(Transport Layer Security,传输层安全):其前身是 SSL,它最初的几个版本(SSL 1.0、SSL 2.0、SSL 3.0)由网景公司开发,1999年从 3.1开始被 IETF 标准化并改名,发展至今已经有 TLS 1.0、TLS 1.1、TLS 1.2 三个版本。SSL3.0和TLS1.0由于存在安全漏洞,已经很少被使用到。TLS 1.3改动会比较大,目前还在草案阶段,目前使用最广泛的是TLS 1.1、TLS 1.2。

                                        

为什么要用HTTPS?

               HTTP的传输方式:

客户端跟服务端进行交互,通过明文进行通信。这样会带来一个问题:如果有坏银的话,通过拦截客户端和服务端交互的信息,就可以轻而易举的获取到一些关键信息,因为全都是明文的,所以安全性比较差劲!那么怎么才能做到安全的进行交互呢?答案是:加密。通过将交互信息加密,就算有坏银将信息拦截到了。看到了加密信息,他们也会一脸懵逼,因为加密的信息他们压根看不懂呀,这就很舒服了。    

怎么来加密?

加密算法分类:

        加密算法分为对称加密非对称加密和Hash加密算法。

        对称加密:甲方和乙方使用同一种加密规则对信息加解密

        非对称加密:乙方生成两把秘钥(公钥和私钥)。公钥是公开的,任何人都可以获取,私钥是保密的,只存在于乙方手中。甲方获取公钥,然后用公钥加密信息,乙方得到密文后,用私钥解密。

        Hash加密:Hash算法是一种单向密码体制,即只有加密过程,没有解密过程

        数字签名:签名就是在信息的后面再加上一段内容(信息经过hash后的值),可以证明信息没有被修改过。hash值一般都会加密后(也就是签名)再和信息一起发送,以保证这个hash值不被修改。

http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html(非常不错的文章,图文解说HTTPS整个加密流程)

对称加密算法加解密效率高,速度快,适合大数据量加解密。常见的堆成加密算法有DES、AES、RC5、Blowfish、IDEA

非对称加密算法复杂,加解密速度慢,但安全性高,一般与对称加密结合使用(对称加密通信内容,非对称加密对称秘钥)。常见的非对称加密算法有RSA、DH、DSA、ECC

Hash算法特性是:输入值一样,经过哈希函数得到相同的散列值,但并非散列值相同则输入值也相同。常见的Hash加密算法有MD5、SHA-1、SHA-X系列

有了对称加密,为什么要用非对称加密呢?

1.初始版加密

                                       

如果说我们所有的客户端与服务器进行交互的时候,都使用同一套对称加密算法进行加密的话,这是非常不安全的。因为如果有坏银拦截到密钥,那么这就跟没有加密是一样的。因为所有交互都用了这一套加密算法,所以这样做是不可取的。

2.升级版加密

这样就安全多了,是不是。我们让不同的客户端与服务器进行交互的时候,使用不同的对称加密算法,这样不就行了。那么问题来了:我们如何

安全的告诉客户端使用哪种加密算法呢?如果有坏银在我们服务器和客户端协商使用什么算法加密的时候,拦截到了我们的协商过程,那么加密过程就不起作用了。那么怎么办呢?没办法,我们只能把协商过程也加密吧。用什么加密,就是用我们上面说的非对称加密。

也就是通过非对称加密将服务器告知客户端使用哪种对称加密算法时的这种协调过程进行加密(主要是对对称加密的密钥进行加密)。

在这里我需要补充一点:

非对称加密算法中的公钥和私钥一般都是由服务器生成的,然后将公钥发放给客户端或者是客户端主动去请求公钥。所以在这里,如果要使用非对称加密算法进行加密,首先要做的是服务器将非对称加密的公钥发放给客户端。那么,问题来了:万一在发放过程中,非对称加密的公钥被坏人拦截了怎么办?再来一次加密?你会发现,如果在加密,会陷入一种无穷无尽的死循环之中!!! 

怎么办?只需要服务器在发放公钥的时候,让客户端去验证一下服务器的真实性,就可以了!也就说,你得让客户端知道给它发放公钥的服务器是真真正正的服务器,而不是坏人或者其他的机构!也就是身份验证!所以在这这里,为了进行身份验证,产生了一种身份验证的方式---数字证书!

数字证书:

什么是数字证书?

就跟每个人的身份证能够确认一个人的身份一样,数字证书同样是对某网站的一种身份。通过数字证书,我们可验证某网站的真实性。那么上面的问题就可以解决了,只要我们验证了服务器的真实性,那么我们就可以信任服务器下发的非对称加密的公钥是真实有效的,而不是被掉包的。

数字证书包含哪些内容?

不同格式,不同版本的数字证书的内容格式不尽相同。典型的数字证书包含一下这些内容:

                                        

   

其中对象的公开密钥就是非对称加密的公钥!

证书的颁发者是谁呢?

        一般来说,数字证书的颁发者是第三方的证书颁发机构(CA)来颁发的。

那么数字证书,是怎么样制作的呢?

首先服务器将非对称加密算法M(用于加密协调过程)的公钥传送给第三方证书颁发机构。然后第三方颁发机构使用非对称加密算法N的私钥对服务器的公钥进行加密,然后添加上一些其他的信息制作成一种证书之后,然后再发送给服务器!服务器将数字证书发给客户端,让客户端验证一下自己的真实身份。客户端会用本地存储的非对称加密算法N的公钥(注意与上面的非对称加密算法N对应)去解密用非对称加密算法N加密的公钥(该公钥是非对称加密M的公钥)! 如果解密成功,那么我们可以认为证书有效,否则无效!那么问题又来了!!假设现在有一个坏人,将自己的非对称加密算法L的公钥提交给第三方证书颁发机构,那么第三方证书同样也会用非对称加密算法N的私钥进行加密,同样会给坏人制作出证书!然后在服务器将证书发给客户端验证身份的时候,坏人用自己的证书将服务器的证书掉包了!客户端同样还是会用非对称加密算法N的公钥去解密,而且一样能够解密成功!那么,对于客户端来说,他无法判断这个证书是来自于服务器的还是来自于那个坏银的!我们看数字证书的内容格式上可以发现,内容中有“数字签名”这一项!数字签名也就很好的解决了上面那个问题。

数字签名:

数字签名你可以理解为咱们快递单上的快递单号,唯一代表这一张证书。服务器在制作数字证书的过程中,第三方证书颁发机构按照某种生成签名的算法(比如说MD5),将一些数据项通过签名算法计算出一串字符串---数字签名!服务器将证书发送给客户端,客户端按照证书中签名算法生成签名,并与证书中的签名进行比对!如果比对无误,则认为该证书没有被修改过!反之亦然。

客户端对服务器的身份验证,属于单向验证!在实际应用过程中,服务器也可能需要对客户端进行验证,这种客户端验证服务器证书,服务器验证客户端证书叫做双向验证。

                                               

1.客户使用HTTPS的URL访问Web服务器,要求与Web服务器建立SSL连接。

2.Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。

3.客户端的浏览器与Web服务器开始协商SSL/TLS连接的安全等级,也就是信息加密的等级。

4.客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。

5.Web服务器利用自己的私钥解密出会话密钥。

6.Web服务器利用会话密钥加密与客户端之间的通信。

Http和Https的区别如下:

1. https协议需要到CA申请证书,大多数情况下需要一定费用

2. Http是超文本传输协议,信息采用明文传输,Https则是具有安全性SSL加密传输协议

3. Http和Https端口号不一样,Http是80端口,Https是443端口

4. Http连接是无状态的,而Https采用Http+SSL构建可进行加密传输、身份认证的网络协议,更安全。

5. Http协议建立连接的过程比Https协议快。因为Https除了Tcp三次握手,还要经过SSL握手。连接建立之后数据传输速度,二者无明显区别。

HTTPS的缺点:

1.HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;

2.HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;

3.SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。

4.SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。

5.HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值