比较HTTP与HTTPS以及加密

1、HTTP是什么

首先,HTTP 是一个网络应用层协议,是专门用来帮你传输 Web 内容。

2、HTTP 和 TCP 之间的关系

在网络分层模型中,TCP 被称为“传输层协议”,而 HTTP 被称为“应用层协议”。

传输层主要有两个协议,分别是 TCP 和 UDP。TCP 比 UDP 更可靠。你可以把 TCP 协议想象成某个水管,发送端这头进水,接收端那头就出水。并且 TCP 协议能够确保,先发送的数据先到达(UDP 不保证这点)。

简单地说,HTTP 协议需要依靠 TCP 协议来传输数据。

3、HTTP 协议如何使用 TCP 连接?

HTTP 对 TCP 连接的使用,分为两种方式:俗称“短连接”和“长连接”。

在“短连接”的模式下,浏览器会先发起一个 TCP 连接,拿到该网页的 HTML 源代码(拿到 HTML 之后,这个 TCP 连接就关闭了)。然后,浏览器开始分析这个网页的源码,知道这个页面包含很多外部资源(图片、CSS、JS)。然后针对【每一个】外部资源,再分别发起一个个 TCP 连接,把这些文件获取到本地(同样的,每抓取一个外部资源后,相应的 TCP 就断开)

如果是“长连接”的方式,浏览器也会先发起一个 TCP 连接去抓取页面。但是抓取页面之后,该 TCP 连接并不会立即关闭,而是暂时先保持着(所谓的“Keep-Alive”)。然后浏览器分析 HTML 源码之后,发现有很多外部资源,就用刚才那个 TCP 连接去抓取此页面的外部资源。

在 HTTP 1.0 版本,【默认】使用的是“短连接”(那时候是 Web 诞生初期,网页相对简单,“短连接”的问题不大);
到了1995年底开始制定 HTTP 1.1 草案的时候,网页已经开始变得复杂(网页内的图片、脚本越来越多了)。这时候再用短连接的方式,效率太低下了。所以,在 HTTP 1.1 中,【默认】采用的是“Keep-Alive”的方式。

4、“SSL/TLS”又是什么?

SSL(Secure Sockets Layer),中文叫做“安全套接层”。它是在上世纪90年代中期,由网景公司设计的。
为啥要发明 SSL 这个协议捏?因为原先互联网上使用的 HTTP 协议是明文的,存在很多缺点——比如传输内容会被偷窥(嗅探)和篡改。发明 SSL 协议,就是为了解决这些问题。
后来SSL 因应用广泛,便被标准化。且名称改为 TLS(Transport Layer Security),中文叫做“传输层安全协议”。
很多相关的文章都把这两者并列称呼(SSL/TLS),因为这两者可以视作同一个东西的不同阶段。

5、“HTTPS”是啥意思?

解释完 HTTP 和 SSL/TLS,现在就可以来解释 HTTPS 啦。咱们通常所说的 HTTPS 协议,说白了就是“HTTP 协议”和“SSL/TLS 协议”的组合。

你可以把 HTTPS 大致理解为——“HTTP over SSL/TLS”
Https的作用:
身份认证 认证用户和服务器,确保数据发送到正确的客户机和服务器;(通道端可靠)
内容加密 建立一个信息安全通道,来保证数据不被窃听;(通道加密)
数据完整性 防止内容被第三方篡改;(避免通道劫持)

6、HTTPS和HTTP的区别
1、HTTPS协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议。
3、HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者使用的端口是80,后者使用的端口是443。
4、HTTPS的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。


1、“对称加密”

所谓的“对称加密技术”,意思就是说:“加密”和“解密”使用【相同的】密钥。
由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。所以也称这种加密算法为密钥加密或单密钥加密。
常见的对称加密有:DES(Data Encryption Standard)、AES(Advanced Encryption Standard)、RC4、IDEA。
对称安全性不仅取决于加密算法本身,密钥管理的安全性更是重要。因为加密和解密都使用同一个密钥,如何把密钥安全地传递到解密者手上就成了必须要解决的问题。

2、“非对称加密”

所谓的“非对称加密技术”,意思就是说:“加密”和“解密”使用【不同的】密钥。
与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey);并且加密密钥和解密密钥是成对出现的。通过这种算法得到的密钥对能保证在世界范围内是唯一的。
非对称加密算法在加密和解密过程使用了不同的密钥,非对称加密也称为公钥加密,在密钥对中,其中一个密钥是对外公开的,所有人都可以获取到, 称为公钥,其中一个密钥是不公开的称为私钥。
非对称加密算法对加密内容的长度有限制,不能超过公钥长度。比如现在常用的公钥长度是 2048 位,意味着待加密内容不能超过 256 个字节。

如果只是单方面采用非对称性加密算法,其实有两种方式,用于不同用处:

第一种是签名,使用私钥加密,公钥解密。用于让所有公钥所有者验证私钥所有者的身份并且用来防止私钥所有者发布的内容被篡改。但是不用来保证内容不被他人获得。
只要有发送方公开密钥的人都可以验证签名的正确性。
第二种是加密,用公钥加密,私钥解密。用于向公钥所有者发布信息,这个信息可能被他人篡改,但是无法被他人获得。如果甲想给乙发一个安全的保密的数据,那么应该甲乙各自有一个私钥,甲先用乙的[公钥加密]这段数据,再用自己的私钥加密这段加密后的数据。最后再发给乙,这样确保了内容即不会被读取,也不会被篡改。
任何知道接收方公钥的人都可以向接收方发送消息。
总结:公钥通常用于加密消息、验证数字签名(即解密)。
3、各自有啥优缺点?

看完刚才的定义,很显然:(从功能角度而言)“非对称加密”能干的事情比“对称加密”要多。这是“非对称加密”的优点。但是“非对称加密”的实现,通常需要涉及到“复杂数学问题”。所以,“非对称加密”的性能通常要差很多(相对于“对称加密”而言)。
这两者的优缺点,也影响到了 SSL 协议的设计。

4、摘要算法

  数字摘要是采用单项Hash函数将需要加密的明文“摘要”成一串固定长度(128位)的密文,这一串密文又称为数字指纹,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。“数字摘要“是https能确保数据完整性和防篡改的根本原因。

验证
1、数字签名
数字签名技术就是对“非对称密钥加解密”和“数字摘要“两项技术的应用,它将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在 传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的【完整性】。
数字签名的过程如下:明文 –> hash运算 –> 摘要 –> 私钥加密 –> 数字签名
数字签名验证的过程如下:数字签名 –> 公钥解密 –> 摘要 –> hash原文 –> 对比摘要

数字签名有两种功效:

确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名。(来源可靠)
确定消息完整未篡改(完整性)。
注意:数字签名只能验证数据的完整性,数据本身(即原文)是否加密不属于数字签名的控制范围
2、数字证书 
  为什么要有数字证书?
  对于请求方来说,它怎么能确定它所得到的公钥一定是从目标主机那里发布的,而且没有被篡改过呢?亦或者请求的目标主机本本身就从事窃取用户信息的不正当行为呢?这时候,我们需要有一个权威的值得信赖的第三方机构(一般是由政府审核并授权的机构)来统一对外发放主机机构的公钥,只要请求方这种机构获取公钥,就避免了上述问题的发生。
  数字证书的颁发过程
  用户首先产生自己的密钥对,并将公钥及部分个人身份信息传送给认证中心。认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一个数字证书,该证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息(根证书私钥签名)。用户就可以使用自己的数字证书进行相关的各种活动。数字证书由独立的证书发行机构发布,数字证书各不相同,每种证书可提供不同级别的可信度。
  证书包含哪些内容
证书颁发机构的名称
证书本身的数字签名
证书持有者公钥
证书签名用到的Hash算法

3、验证证书的有效性   
浏览器默认都会内置CA根证书,其中根证书包含了CA的公钥。
1.证书颁发的机构是伪造的:浏览器不认识,直接认为是危险证书
2.证书颁发的机构是确实存在的,于是根据CA名,找到对应内置的CA根证书、CA的公钥。用CA的公钥,对伪造的证书的摘要进行解密,发现解不了,认为是危险证书。
3.对于篡改的证书,使用【证书持有者公钥】对数字签名进行解密得到摘要A,然后再根据签名的Hash算法计算出证书的摘要B,对比A与B,若相等则正常,若不相等则是被篡改过的。
4.证书可在其过期前被吊销,通常情况是该证书的私钥已经失效。较新的浏览器如Chrome、Firefox、Opera和Internet Explorer都实现了在线证书状态协议(OCSP)以排除这种情形:浏览器将网站提供的证书的序列号通过OCSP发送给证书颁发机构,后者会告诉浏览器证书是否还是有效的。

原文链接:http://www.jianshu.com/p/a677fecec927

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值