聊聊HTTPS和SSL/TLS协议

  • 时间:
  • 浏览:3
  • 来源:大发快3官方网址—大发快3APP下载

HTTPS 需用做到足够好的保密性。

说到保密性,首太难并能对抗嗅探(行话叫 Sniffer)。所谓的“嗅探”,通俗而言只是监视你的网络传输流量。前一天你使用明文的 HTTP 上网,太难监视者通过嗅探,就知道你在访问有哪些网站的有哪些页面。

嗅探是最低级的攻击手法。除了嗅探,HTTPS 还需用能对抗其它有些稍微高级的攻击手法——比如“重放攻击”(上边讲协议原理的前一天,会再聊)。

HTTP 对 TCP 连接的使用,分为并是否依据:俗称“短连接”和“长连接”(“长连接”又称“持久连接”,洋文叫做“Keep-Alive”或“Persistent Connection”)

假设有一另一一二个多多网页,上边蕴藏好多图片,还蕴藏好多【组织组织结构的】CSS 文件和 JS 文件。在“短连接”的模式下,浏览器会先发起一另一一二个多多 TCP 连接,拿到该网页的 HTML 源代码(拿到 HTML 前一天,你这俩 TCP 连接就关闭了)。然后,浏览器结束英文分析你这俩 网页的源码,知道你这俩 页面蕴藏过多过多组织组织结构资源(图片、CSS、JS)。然后针对【每一另一一二个多多】组织组织结构资源,再分别发起一另一一二个多多个 TCP 连接,把有有哪些文件获取到本地(同样的,每抓取一另一一二个多多组织组织结构资源后,相应的 TCP 就断开)

相反,前一天是“长连接”的依据,浏览器也会先发起一另一一二个多多 TCP 连接去抓取页面。然后抓取页面前一天,该 TCP 连接无须会立即关闭,只是暂时先保持着(所谓的“Keep-Alive”)。然后浏览器分析 HTML 源码前一天,发现有过多过多组织组织结构资源,就用刚才那个 TCP 连接去抓取此页面的组织组织结构资源。

保密性(防泄密)

CA 证书的原理及用途

前面说了,HTTPS 共假如有一天“HTTP over SSL”。

前一天 SSL 你这俩 协议在“可扩展性”方面的设计足够牛逼,太难它除了能跟 HTTP 搭配,还并能跟其它的应用层协议搭配。岂不美哉?

现在看来,当初设计 SSL 的人人太好比较牛。如今的 SSL/TLS 并能跟过多过多常用的应用层协议(比如:FTP、SMTP、POP、Telnet)搭配,来强化有有哪些应用层协议的安全性。

花了好多口水,终于把背景知识说完了。下面正式进入正题。先来搞笑的话当初设计 HTTPS 是为了满足有哪些需求?

过多过多介绍 HTTPS 的文章一上来就给你讲实现细节。我各自 人太好:这是不好的做法。早在1509年开博的前一天,发过一篇《学习技术的三部曲:WHAT、HOW、WHY》,其中谈到“WHY 型大问题”的重要性。一上来就给你讲协议细节,你充其量太难知道 WHAT 和 HOW,无法理解 WHY。俺在前一另一一二个多多章节讲了“背景知识”,在你这俩 章节讲了“需求”,这全部然后促进你理解:当初

考虑到过多过多技术菜鸟前一天不了解上述背景,俺先用最简短的文字描述一下。前一天你自认为全部然后菜鸟,请略过本章节,直接去看“HTTPS 协议的需求”。

全部性(防篡改)

兼容性

简单地说,TCP 协议是 HTTP 协议的基石——HTTP 协议需用依靠 TCP 协议来传输数据。

谈谈“对称加密”和“非对称加密”的概念

所谓的“对称加密技术”,意思只是说:“加密”和“解密”使用【相同的】密钥。你这俩 比较好理解。就好比你用 7zip 或 WinRAR 创建一另一一二个多多带密码(口令)的加密压缩包。当你下累积把你这俩 压缩文件解开的前一天,你需用输入【同样的】密码。在你这俩 例子中,密码/口令就如同刚才说的“密钥”。



作者: yeiqing000 

链接:http://www.imooc.com/article/14245

来源:慕课网

再来搞笑的话 HTTP 协议的特点

通俗而言,给你把“加密”和“解密”理解为并是否【互逆的】数学运算。就好比“加法和减法”互为逆运算、“乘法和除法”互为逆运算。

“加密”的过程,只是把“明文”变成“密文”的过程;反之,“解密”的过程,只是把“密文”变为“明文”。在你这俩 另一一二个多多过程中,都需用一另一一二个多多关键的东东——叫做“密钥”——来参与数学运算。

在谈到 HTTPS 的需求时,“真实性”突然 被忽略。人太好“真实性”的重要程度不亚于前面的“保密性”和“全部性”。

举个例子:

你前一天使用网银,需用访问该网银的 Web 站点。太难,你如可确保你访问的网站人太好遇见你想访问的网站?(这话很重绕口令)

有些天真的同针灸学会说:通过看网址上边的域名,来确保。为甚会 会 说从前的同针灸学会“天真的”?前一天 DNS 系统并是是否不可靠的(尤其是在设计 SSL 的那个年代,连 DNSSEC 都还没科学科学发明)。前一天 DNS 的不可靠(占据 “域名欺骗”和“域名劫持”),你看过的网址上边的域名【无须】是真实滴!

(不了解“域名欺骗”和“域名劫持”的同学,并能参见俺前一天写的《扫盲 DNS 原理,兼谈“域名劫持”和“域名欺骗/域名污染”》)

过多过多,HTTPS 协议需用有并是否机制来确保“真实性”的需求(至于如可确保,上边会细聊)。

再来说最后一另一一二个多多需求——性能。

引入 HTTPS 前一天,【太难】愿因性能变得太差。然后搞笑的话,谁还然后用?

为了确保性能,SSL 的设计者大慨要考虑如下几点:

要设计成从前?——这只是 WHY 型的大问题。

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

所谓的“非对称加密技术”,意思只是说:“加密”和“解密”使用【不同的】密钥。这玩意儿比较难理解,也比较难想到。当年“非对称加密”的科学科学发明,还被誉为“密码学”历史上的一次革命。

前一天篇幅有限,对“非对称加密”你这俩 话题,俺就不展开了。有空搞笑的话,再单独写一篇扫盲。

如今咱们用的 HTTP 协议,版本号是 1.1(也只是 HTTP 1.1)。你这俩 1.1 版本是1995年底结束英文起草的(技术文档是 RFC2068),并在1999年正式发布(技术文档是 RFC2616)。

在 1.1 前一天,还有从前再次出现过一另一一二个多多版本“0.9 和 1.0”,其中的 HTTP 0.9 【太难】被广泛使用,而 HTTP 1.0 被广泛使用过。

另外,据说明年(2015)IETF 就要发布 HTTP 2.0 的标准了。俺拭目以待。

为有哪些

接着刚才打的比方:前一天把 SSL/TLS 视作一根绳子 用来加固的金属管,它不仅并能用来加固输水的管道,还并能用来加固输煤气的管道。

关于这方面,请看俺4年前写的《数字证书及CA的扫盲介绍》。这里就不再重复唠叨了,免得篇幅太长。

作为背景知识介绍,还需用再稍微谈一下 HTTP 协议并是否的特点。HTTP 并是否有过多过多特点,考虑到篇幅有限,俺只谈有有哪些和 HTTPS 相关的特点。

真实性(防假冒)

先澄清哪几个术语——HTTPS、SSL、TLS

有过多过多常见的应用层协议是以 TCP 为基础的,比如“FTP、SMTP、POP、IMAP”等。

TCP 被称为“面向连接”的传输层协议。关于它的具体细节,俺就不展开了(然后篇幅又失控了)。你只需知道:传输层主要有一另一一二个多多协议,分别是 TCP 和 UDP。TCP 比 UDP 更可靠。给你把 TCP 协议想象成某个水管,发送端这头进水,接收端那头就出水。然后 TCP 协议并能确保,先发送的数据先到达(与之相反,UDP 不保证这点)。

看过刚才的定义,很显然:(从功能角度而言)“非对称加密”能干的事情比“对称加密”要多。这是“非对称加密”的优点。然后“非对称加密”的实现,通常需用涉及到“错综复杂数学大问题”。过多过多,“非对称加密”的性能通常要差过多过多(相对于“对称加密”而言)。

这两者的优缺点,也影响到了 SSL 协议的设计。

首先,HTTP 是一另一一二个多多网络协议,是专门用来帮你传输 Web 内容滴。关于你这俩 协议,就算你不了解,大慨也听说过吧?比如你访问俺的博客的主页,浏览器地址栏会再次出现如下的网址

要说清楚 HTTPS 协议的实现原理,大慨需用如下哪几个背景知识。

除了“保密性”,还有一另一一二个多多同样重要的目标是“确保全部性”。关于“全部性”你这俩 概念,在前一天的博文《扫盲文件全部性校验——关于散列值和数字签名》中大致提过。健忘的同学再去温习一下。

在科学科学发明 HTTPS 前一天,前一天 HTTP 是明文的,不但容易被嗅探,还容易被篡改。

举个例子:

比如咱们天朝的网络运营商(ISP)都比较流氓,突然 有明星微博 见面抱怨说访问某网站(从前是太难广告的),竟然会再次出现过多过多中国电信的广告。为甚会 会 会从前捏?前一天你的网络流量需用经过 ISP 的线路并能到达公网。前一天你使用的是明文的 HTTP,ISP 很容易就并能在你访问的页面中植入广告。

过多过多,当初设计 HTTPS 的前一天,还有一另一一二个多多需求是“确保 HTTP 协议的内容不被篡改”。

性能

可扩展性

SSL 是洋文“Secure Sockets Layer”的缩写,中文叫做“安全套接层”。它是在上世纪90年代中期,由网景公司设计的。(顺便插一句,网景公司不光科学科学发明了 SSL,还科学科学发明了过多过多 Web 的基础设施——比如“CSS 样式表”和“JS 脚本”)

为甚会 会 要科学科学发明 SSL 你这俩 协议捏?前一天从前互联网上使用的 HTTP 协议是明文的,占据 过多过多缺点——比如传输内容会被偷窥(嗅探)和篡改。科学科学发明 SSL 协议,只是为了解决有有哪些大问题。

到了1999年,SSL 前一天应用广泛,前一天成为互联网上的事实标准。IETF 就在那年把 SSL 标准化。标准化前一天的名称改为 TLS(是“Transport Layer Security”的缩写),中文叫做“传输层安全协议”。

过多过多相关的文章都把这两者并列称呼(SSL/TLS),前一天这两者并能视作同一另一一二个多多东西的不同阶段。

在 HTTP 1.0 版本,【默认】使用的是“短连接”(那前一天是 Web 诞生初期,网页相对简单,“短连接”的大问题不大);

到了1995年底结束英文制定 HTTP 1.1 草案的前一天,网页前一天结束英文变得错综复杂(网页内的图片、脚本过多了)。这前一天再用短连接的依据,角度太低下了(前一天建立 TCP 连接是有“时间成本”和“CPU 成本”滴)。过多过多,在 HTTP 1.1 中,【默认】采用的是“Keep-Alive”的依据。

关于“Keep-Alive”的更多介绍,并能参见维基百科词条(在“这里”)

解释完 HTTP 和 SSL/TLS,现在就并能来解释 HTTPS 啦。咱们通常所说的 HTTPS 协议,说白了只是“HTTP 协议”和“SSL/TLS 协议”的组合。给你把 HTTPS 大致理解为——“HTTP over SSL”或“HTTP over TLS”(反正 SSL 和 TLS 差过多)。

HTTPS 协议的需求是啥?

俺加了粗体的累积只是指 HTTP 协议。大累积网站全部然后通过 HTTP 协议来传输 Web 页面、以及 Web 页面上蕴藏的各种东东(图片、CSS 样式、JS 脚本)。

前一天是先有 HTTP 再有 HTTPS。过多过多,HTTPS 的设计者肯定要考虑到对原有 HTTP 的兼容性。

这里所说的兼容性包括过多过多方面。比如已有的 Web 应用要尽前一天无缝地迁移到 HTTPS;比如对浏览器厂商而言,改动要尽前一天小;……

基于“兼容性”方面的考虑,很容易得出如下哪几个结论:

打个比方:前一天从前的 HTTP 是塑料水管,容易被戳破;太难如今新设计的 HTTPS 就像是在原有的塑料水管之外,再包一层金属水管。一来,原有的塑料水管照样运行;二来,用金属加固了前一天,不容易被戳破。