资讯专栏INFORMATION COLUMN

没那么浅地谈谈HTTP与HTTPS【一】

Tecode / 1863人阅读

摘要:握手协议它建立在记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证协商加密算法交换加密密钥等。包括握手协议,改变密码协议,警告协议。配备身份证书,防止身份被冒充。鉴定依赖认证体系和加密算法。

面对愚昧,神们自己也缄口不言 。——《基地》

2019年8月11日,IETF 终于发布了 RFC 8446,标志着 TLS 1.3 协议大功告成 。这是该协议的第一次重大改革,带来了重大的安全性和性能改进。

本来想写一篇简短介绍...结果越写越长,干脆拆分开慢慢写,慢慢发。

一、基本概念

http

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

比如浏览器地址栏打开任意网址http://http://ulyc.github.io/

加了粗体的部分就是指 HTTP 协议。大部分网站都是通过 HTTP 协议来传输 Web 页面、以及 Web 页面上包含的各种东西(图片、CSS 样式、JS 脚本)。

如果你有一些网络基础知识,就知道http协议存在于四层网络结构中的应用层

HHTP协议为明文传输,所有信息均为可见的,很不安全,信息极易被篡改和劫持,也因此衍生出了相对更为安全的HTTPS。

SSL/TLS

SSL(Secure Sockets Layer),即安全套接层,是一种安全协议,目的是为互联网通信提供安全及数据完整性保障。

网景公司(Netscape)在1994年推出HTTPS协议,以SSL进行加密,这是SSL的起源。 到了1999年,SSL 因为应用广泛,已经成为互联网上的事实标准。IETF 就在那年把 SSL 标准化。标准化之后的名称改为 TLS(是“Transport Layer Security”的缩写),中文叫做“传输层安全协议”。   

很多相关的文章都把这两者并列称呼(SSL/TLS),因为这两者可以视作同一个东西的不同阶段。

SSL又分为两层:

  1. SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
  2. SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。 包括SSL握手协议,SSL改变密码协议,SSL警告协议 。

https

HTTPS(Hyper Text Transfer Protocol Secure),即超文本传输安全协议,也称为http over tls等,是一种网络安全传输协议。

相当于工作在应用层(osi七层模型)的http,只不过是在会话层和表示层利用ssl/tls来加密了数据包,说白了就是“HTTP 协议”和“SSL/TLS 协议”的组合,你可以把 HTTPS 大致理解为——“HTTP over SSL”或“HTTP over TLS” 。

有位大神做过一个很形象的比喻:

如果原来的 HTTP 是塑料水管,容易被戳破;那么如今新设计的 HTTPS 就像是在原有的塑料水管之外,再包一层金属水管。
一来,原有的塑料水管照样运行;
二来,用金属加固了之后,不容易被戳破。

访问时以https://开头,默认443端口,同时需要证书。现在大部分网站都已经支持https协议,如果经常访问的支持https的网站突然只能以http访问,就要小心了。

二、引入https的必要性

不使用SSL/TLS的HTTP通信,就是不加密的通信。

所有信息明文传播,带来了三大风险:

  1. 窃听风险(eavesdropping):第三方可以获知通信内容。
  2. 篡改风险(tampering):第三方可以修改通信内容。
  3. 冒充风险(pretending):第三方可以冒充他人身份参与通信。

SSL/TLS协议是为了解决这三大风险而设计的,希望达到:

  1. 所有信息都是加密传播,第三方无法窃听。
  2. 具有校验机制,一旦被篡改,通信双方会立刻发现。
  3. 配备身份证书,防止身份被冒充。

互联网是开放环境,通信双方都是未知身份,这为协议的设计带来了很大的难度。而且,协议还必须能够经受所有匪夷所思的攻击,这使得SSL/TLS协议变得异常复杂。

SSL/TLS协议对于以上风险的防护分别作了以下实现:

  1. _加密(encryption)_:使用密钥协商机制。
  2. _鉴定(identification)_:依赖CA 认证体系和加密算法。
  3. _认证(verification)_:依赖CA 认证体系。

三、基本的运行过程

应用层

客户端(浏览器、爬虫程序等)向服务器发送符合http协议的请求(http发送的是明文请求,https是经过安全层加密的密文请求),得到服务器返回的响应(同样http是明文响应,https是密文响应),并在本地解析渲染。

安全层

此层是是SSL/TLS所在的位于传输层与应用层之间的一个抽象层,在TCP/IP协议族中勉强可以划分到_传输层_,在osi七层网络模型中没有严格的对应,一般认为属于 _会话层_和_表达层_。

http与https主要区别就在于是否存在此安全层,本层实现了_加密(encryption)(非对称加密),认证(verification),鉴定(identification)。_

基本过程是:

  1. 客户端向服务器端索要并验证公钥。
  2. 双方协商生成"对话密钥"
  3. 双方采用"对话密钥"进行加密通信。

上面过程的前两步,称为"握手阶段",即SSL四次握手。

传输层

http与https协议都是基于传输层的TCP协议。

连接时会进行“三次握手”,断开连接时客户端与服务器进行”四次挥手“。

未完待续……

本文作者:UCloud后台研发工程师 Hughes.Chen

博客地址:https://ulyc.github.io/


文章来源:UCloud云计算 知乎官方技术专栏
https://www.zhihu.com/column/ucloud
更多干货,移步查阅哦!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/126005.html

相关文章

  • 那么浅地谈谈HTTPHTTPS【二】

    摘要:王蒙没那么浅地谈谈与二四加密算法和密钥管理介绍密钥交换机制之前先普及一些加密算法基本知识以及为什么要有密钥管理机制。证书证书,顾名思义,就是颁发的证书。公钥基础设施公钥基础设施,简称是目前网络安全建设的基础与核心。**玫瑰与荆棘共生,香菇与毒菇同长,真实与假冒比翼腾飞。——王蒙**没那么浅地谈谈HTTP与HTTPS【二】四、加密算法和密钥管理介绍密钥交换机制之前先普及一些加密算法基本知识以及...

    Tecode 评论0 收藏0
  • 那么浅地谈谈HTTPHTTPS【三】

    摘要:公开密钥加密的出现大大减轻了交换对称密钥的困难,公钥可以公开透过不安全可被窃听的渠道发送,用以加密明文。当与配合使用,称之为,与配合则称为,以此类推。这步没有签名,服务端收到数据后不会发现被篡改。对于认证机构,一旦私钥外泄,将可能导致整未济,亨。小狐汔济,濡其尾,无攸利。——《易》六、密钥管理当不再担心身份会被冒充、篡改之后,我们再来详细谈谈网络通信中对于加密算法的密钥管理。在密钥被签发后,...

    Tecode 评论0 收藏0
  • 2021年,用更现代的方法使用PGP(下)

    摘要:上篇链接年,用更现代的方法使用上年,用更现代的方法使用中公钥的发布与交换讨论公钥安全交换的中文文章比较少,而这一环是整个加密体系的重中之重。年月,有攻击者恶意向公钥服务器提交了对两个著名网友的签名背书。此事件中的受害者的证书就被签名了次。上篇链接:2021年,用更现代的方法使用PGP(上)2021年,用更现代的方法使用PGP(中)PGP 公钥的 发布 与 交换讨论公钥安全交换的中文文章比较少...

    Tecode 评论0 收藏0
  • 用大白话谈谈XSSCSRF

    摘要:它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了以及用户端脚本语言。更偏向于方法论,更偏向于一种形式,只要是伪造用户发起的请求,都可成为攻击。 这两个关键词也是老生常谈了,但是还总是容易让人忘记与搞混~。XSS与CSRF这两个关键词时常被拉出来一起比较(尤其是面试),我在这里也在写一篇扫盲文,也帮自己整理一下知识脉络。 这篇文章会用尽量人话的语言解...

    Yumenokanata 评论0 收藏0
  • 用大白话谈谈XSSCSRF

    摘要:它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了以及用户端脚本语言。更偏向于方法论,更偏向于一种形式,只要是伪造用户发起的请求,都可成为攻击。 这两个关键词也是老生常谈了,但是还总是容易让人忘记与搞混~。XSS与CSRF这两个关键词时常被拉出来一起比较(尤其是面试),我在这里也在写一篇扫盲文,也帮自己整理一下知识脉络。 这篇文章会用尽量人话的语言解...

    wawor4827 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<