Http和Https的区别

作者: rxdxxxx | 来源:发表于2016-06-10 09:17 被阅读6572次

RedRain的简书:http://www.jianshu.com/users/29e03e6ff407/latest_articles

Http和Https的区别

1.什么是Http

Http中文叫做超文本传输协议, 它完成客户端到服务端等一系列运作流程

1.1 与http关系密切的协议: IP, TCP和DNS

负责传输的IP协议

IP协议数据网络层, IP协议的作用是把各类数据包传送给对方. 而要确保确实传送到对方那里, 则需要满足各类条件. 其中两个重要的条件是IP地址和MAC地址.

IP地址指明了节点被分配到的地址, MAC地址是指网卡所指的固定地址. IP地址和MAC地址进行配对, IP地址可以变换, 但是MAC地址基本不会更改.

确保可靠性的TCP协议

TCP位于传输层, 提供可靠的字节流服务

字节流服务: 为了方便传输, 将大块数据分割成以报文段为单位的数据包进行管理.

为了确保无误将数据送达目标处, TCP协议采用了三次握手策略.当然除了三次握手策略, 还有很多其他的手段保证通讯的可靠性

负责域名解析的DNS服务

DNS服务是和HTTP协议一样位于应用层的协议. 他提供域名与IP地址之间的解析服务.

因为记住一组纯数字太难了, 而字母加数字才是人类习惯的方式,为了解决这个问题, DNS服务营运而生.

2. HTTP的缺点

  • 通信使用明文(不加密), 内容可能会被窃听
  • 不验证通信方的身份, 因此有可能遭遇伪装
  • 无法证明报文的完整性, 所有有可能已遭篡改

3.HTTP+加密+认证+完整性保护 = HTTPS

HTTPS并非是应用层的一种新协议. 只是HTTP通信接口部分用SSL(Secure Socket Layer)和TLS (Transport Layer Security) 协议替代而已.

通常, HTTP直接和TCP通信, 当使用SSL时, 演变成了先和SSL通信, 再由SSL和TCP通信了, 简而言之, 所谓HTTPS, 其实就是身披SSL协议的这层外壳的HTTP.

在采用SSL后, HTTP就拥有了HTTPS的加密, 证书和完整性的保护这些功能.

SSL是独立于HTTP的协议, 所有不光是HTTP协议, 其他运行在应用层的SMTP(邮件协议)和Telnet等协议均可配合SSL协议使用. 可以说SSL是当今世界上应用最广泛的网络安全技术.

4.SSL是如何加密的

SSL采用一种叫做公开密钥加密(Public-key cryptography)的加密方式.

近代的加密方法中, 加密算法是公开的, 而秘钥是保密的, 通过这种方式得以保持加密方法的安全性.

共享密钥加密的困境

加密和解密同用一个密钥的方式称为共享密钥加密, 也被叫做对称密钥加密.

共享加密方式加密时必须将密钥也发给对方. 在互联网上转发密钥时, 如果通信被监听那么密钥就会落入攻击者之手, 同事也就失去了加密的意义,

怎么才能安全的转交?

使用两把密钥的公开密钥加密

公开密钥加密方式很好地解决了共享密钥加密的困难

公开密钥加密使用一对非对称的密钥. 一把叫做私有密钥, 另一把叫做公开密钥

使用公开密钥加密方式, 发送密文的一方使用对方的公开密钥进行加密处理, 对方收到被加密的信息后, 在使用自己的私有密钥进行解密. 利用这种方式, 不需要发送用来解密的私有密钥, 也不用担心密钥被攻击者窃听而盗走.

另外, 要想根据密文和公开密钥, 恢复到信息原文是异常困难的, 因为解密过程就是在对离散对数进行求值, 这并非轻而易举就能办到的. 退一步讲, 如果能对一个非常大的整数做到快速地因式分解, 那么密码还是在存在希望的, 但就目前的技术来看是不太现实的.

HTTPS采用混合加密机制

HTTPS采用共享秘钥加密 和 公开秘钥加密两者并用的混合加密机制. 若密钥能够实现安全交换, 那么有可能会考虑仅适用公开密钥加密来通信. 但是公开密钥加密和共享密钥加密相比, 其处理速度要慢.

所以应充分利用两者各自优势, 将多种方法组合起来用于通信. 在交换密钥环节适用公开密钥加密方式, 之后的建立通信交换报文阶段则使用共享密钥加密方式.

5.证明公开密钥的正确性的证书

遗憾的是, 公开密钥加密方式还是存在一些问题的, 那就是无法证明公开密钥本身就是货真价实的公开密钥. 比如, 正准备和某台服务器建立公开密钥加密方式下的通信时, 如何证明收到的公开密钥就是原本预想的那台服务器发行的公开密钥. 或许在公开密钥传输途中, 真正的公开密钥已经被攻击者替换了.

为了解决上述问题, 可以使用有数字证书认证机构其他相关机关颁发的公开密钥证书

基本流程为:

  • 1.服务器把自己的公开密钥登录至数字证书认证机构
  • 2.数字证书认证机构用自己的私有密钥向服务器的公开密钥署数字签名并颁发公钥证书
  • 3.客户端拿到服务器的公钥证书后, 使用数字证书认证机构的公开密钥, 向数字证书认证机构验证公钥证书上的数字签名, 以确认服务器的公开密钥的真实性
  • 4.使用服务器的公开密钥对报文加密后发送
  • 5.服务器用私有密钥对报文解密

6.SSL速度慢吗?

由于HTTPS还需要做服务器,客户端双方加密及解密处理, 因此会消耗CPU和内存等硬件资源, 和HTTP通信相比, SSL通信部分消耗网络资源. 而SSL通信部分, 有因为要对通信进行处理, 所有时间上又延长了.

针对速度慢这样一个问题, 并没有根本性的解决方案, 我们会使用SSL加速器这种(专用服务器)硬件来改善该问题. 相对软件来讲, 能够提高数倍SSL计算速度.

7.为什么不一直使用HTTPS

既然HTTPS那么的可靠安全, 那为何不所有的Web网站不一直使用HTTPS?

其中的一个原因是, 因为与纯文本通信相比, 加密通信会消耗更多的CPU资源以及内存资源, 如果每次通信都加密, 会消耗相当多的资源, 平摊到一台计算机上时, 能够处理的请求数量必定会随之减少.

因此, 如果是非敏感信息则使用HTTP通信, 只有在包括个人信息等敏感数据时, 才利用HTTPS加密通信, 以节省资源. 除此之外, 想要节约购买证书的开销也原因之一.

PS: <图解HTTP>

相关文章

  • HTTP和HTTPS区别

    HTTP HTTP是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从W...

  • http和https区别

    1.https协议需要到CA申请证书,免费证书少,需要一定的费用 2.http是超文本传输协议,信息是明文传输 3...

  • http和https区别

    超文本传输协议http协议被用于在web浏览器和网站服务器之间传递信息,http协议以明文方式发送内容,不提供任何...

  • http和https区别

    1、http:HyperText Transfer Protocol 2、https就是躺在SSL(secure ...

  • http和https 区别

    超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何...

  • Http和Https区别

    为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HT...

  • http和https区别

    https://blog.csdn.net/qq_38289815/article/details/8096941...

  • http和https区别

    1、HTTP和HTTPS的基本概念: HTTP:超文本传输协议,是在互联网上应用最广泛的一种网络协议。是一个客户端...

  • http和https区别

    https://blog.csdn.net/qq_38289815/article/details/8096941...

  • HTTP 和 HTTPS 的区别

    首先我们还是简单的描述一下专业定义。 HTTP 是怎么定义的? HTTPS 又是怎么定义的? HTTP (全称 H...

网友评论

  • 刚子2015:"HTTPS并非是应用层的一种新协议. 只是HTTP通信接口部分用SLL(Secure Socket Layer)和TLS (Transport Layer Security) 协议替代而已".
    SSL吧
    rxdxxxx:已经修改, 谢谢
  • 吃蘑菇De大灰狼:信接口部分用 SLL,这里是笔误SSL吧?
  • caobug:硬件和网络越来越廉价,速度可能并不会产生多大的影响。反倒是很多小企业从传统行业转过来,并且着急应付市场,没功夫想性能、安全性等,通常会等有技术团队了再由技术经理思考这些部署
  • 己活:有点没太明白,就算公开密钥被替换掉也没有什么安全问题吧?
    rxdxxxx:@为什么活着 我觉得如果真的被攻击了,你的信息会被中间替换掉。可能中间人把信息解析后再发给服务器,神不知鬼不觉。我也是猜测,你可以再搜搜资料。
    己活:被替换的公钥加密的信息,用原来的私钥还能正常还原信息吗?
    rxdxxxx:@为什么活着
    HTTPS使用混合加密,
    第一步使用公开密钥加密方式安全地交换在稍后的共享密钥加密
    第二步确保交换的密钥是安全的前提下, 使用共享密钥加密方式进行通信

    此处如果第一步的公开密钥被替换,使则第二步使用假共享密钥加密通信会导致敏感信息泄露.

本文标题:Http和Https的区别

本文链接:https://www.haomeiwen.com/subject/xxdsdttx.html