浅谈HTTPS和SSL/TLS协议的背景和基础

相关背景知识
要说清楚HTTPS协议的实现原理,至少要需要如下几个背景知识。
大致了解几个基础术语(HTTPS、SSL、TLS)的含义
大致了解HTTP和TCP的关系(尤其是"短连接"和"长连接")
大致了解加密算法的概念(尤其是"对称加密和非对称加密")
大致了解CA证书的用途

考虑到很多的技术菜鸟不可能了解到上述的背景,我想用最简单的文字描述一下。如果你自己认为自己不是菜鸟,请略过此文,直接看"HTTP协议的需求"。

HTTPS:
首先,HTTP是一个网络协议,是专门用来帮你传输WEB内容的,关于这个协议,就算你不知道,至少听说过吧。
比如说:http://www.baidu.com。http就是协议部分,大部分的网站就是通过HTTP协议来传输WEB页面、以及WEB页面上的各种东西。

SSL、TLS:SSL是杨文"Secure Sockets Layer"的缩写,中文叫"安全套接层"。有网景公司设计。顺便插一句,网景公司不关发明了SSL,还发明了很多WEB基础的设施(CSS样式和JS脚本)。
为啥发明SSL这个协议呢?因为原来互联网使用的HTTP协议是用明文写的,存在很多的缺点,比如说传输内容会被偷窥。和篡改。发明SSL协议,就是说为了解决这个问题。
到了1999年,SSL因为应用广乏,已经成为了互联网的标准,IETF就是在那年把SSL标准化的。标准化之后的名称改为TLS。叫做"传输层安全协议"。
很多的相关文章吧这两者并称为(SSL/TLS)。因为这两者可以看成是同一个东西的不同的阶段。
3.HTTPS是啥意思?
解释完HTTP和SSL/TLS,现在就可以来解释HTTPS了。咱们通常说HTTPS协议。说变了就是HTTP协议和SSL/TLS协议的组合。
你可以把HTTPS大致理解为-"HTTP over SSL"和"HTTP over TLS"(反正SSL和TLS差不多)
说说HTTP的特点
作为背景知识姐好啊,还需要再稍微读一下HTTP协议的本身的特点。HTTP本省有很多特点,考虑到篇幅有限,我制度那些和HTTPS相关的特点。
1.HTTP的版本和历史
如今我们用的HTTP协议,这个版本号是2.0。之前还有三个版本1.1和0.9和1.0。其中0.9倍广乏使用。1.0也是。
HTTP和TCP关系
简单来说,TCP协议就是HTTP协议的基础-HTTP协议需要依赖TCP协议来传输数据。
在网络的分层中,TCP被称为"传输层协议",HTTP被称为"应用层协议"。
有很多的常用的应用协议是以TCP为基础的,比如说"FTP、SMTP、POP、IMAP"等。
TCP被称为"面向连接"的传输层协议。关于他的具体的细节,我就不张开了。你只需要知道:传输层主要有两个协议:TCP和UDP。TCP比UDP更加的可靠。你可以把TCP协议想象成某个水管。发送端这边进水,先发送的数据线到达。(UDP不能保证这一点)。
TCP是克劳连接,不丢包。UDP不能保证。
3.HTTP协议如何使用TCP连接?
HTTP对TCP连接的使用,分为两种方式:"短连接","长连接"(持续连接),杨文叫做keep alive。
假设一个网页,里面有很多的图片和css文件和js文件。
在短连接的模式下,浏览器将会先发出一个TCP连接,拿到这个网页的HTML源代码(拿到HTML之后,这个TCP连接就关闭了)。然后,浏览器开始分析这个网站的源码,知道这个页面包含很多的外部的资源。图片、资源、css、js。然后针对每一个外部资源,在分别发起一个TCP连接,把这些文件获取到本地(同样的,没抓取一个外部资源后,相应的TCP就会断开)
相反,如果是"长连接"的方式,浏览器也会先发起一个TCP连接去赚取页面,单是抓取页面之后,该TCP连接并不会立即关闭,而是暂时先保持着,然后浏览器分析HTML源码之后,发现有很多的外部资源,就用刚才的那个TCP连接去抓取这个页面外部资源。

在HTTP1.0,默认使用的是"短连接",那个时候是WEB诞生初期,网页相对比较简单,"单链接"的问题不大。

到了1995年底开始自定HTTP1.1草案的是,网页开始变的复杂,(脚本和样式越来越多),这个时候再用短连接的方式,效率太低了。因为TCP连接是有时间成本的CPU成本的。所以在HTTP1.1中,默认采用的是keep-alive。
关于keep-alive的更多的介绍,可以百度。
1.啥是加密和解密:通俗来说,你可以把"加密"和"解密"理解成某种互逆的数学过程。就好比加法和减法的运算。乘法和除法的运算。"加密"的过程就是把明文变成"密文"。反之,"解密"就是把密文转化成明文。
这两个过程中,需要有一个关键的东西:秘钥。
2.啥是"对称加密"
所谓的"对称加密技术"。意思是"加密"和"解密"使用相同的秘钥。这个比较好理解。
就好比你用7zip或者winrar创建一个带密码的加密压缩吧。当你再次要把这个压缩包文件解开的时候,你需要输入相同的密码。在这个例子中,密码口号就相当于刚才说的秘钥。
3.啥是非对称加密
所谓的"非对称加密技术"。意思就是"加密"和"解密"使用。这玩意比较那理解。也比较难想象。当年的"非对称加密"的发明。还被誉为"密码学"历史的一次革命。
犹豫篇幅有限,对"非对称加密"这个话题,我就不详述了。
4.各自有啥优缺点
看完这个定义,很显然,"非对称加密"能干的事情比"对称加密"要多。这是"非对称加密"的优点。但是"非对称加密"的实现,通常需要涉及到"复杂数学问题"。所以,"非对称加密"的性能通常要差很多。
这两者的优缺点,也影响到SSL协议的涉及。
HTTPS学医的需求是啥
现在是正题了。先啦说说当初涉及HTTPS是为了满足那些需求的?
很多介绍HTTPS的文章一上来就是说很多的细节。个人觉得:这不是一个号的做法。
因为是现有HTTP再有HTTPS。所以,HTTPS的设计者肯定要考虑到对源头的HTTP的兼容性。
这里所说的兼容性包含很多的方面。比如说有的WEB应用要竟可能的迁移到HTTPS;再比如说对浏览器厂商来说,改动要尽可能的小。基于"兼容性"方面的考虑,很容易得出如下几个结论:
1.HTTPS还是要给予TCP来传输
(如果改成UDP作为传输层),无论是WEB服务器还是浏览器客户端,都得大改,改动太大了。
单独使用一个新的协议,吧HTTP协议包裹起来。
所谓的HTTP over SSL,实际上是在原有的基础上家里一层SSL的封装。HTTP协议原有的GET、POST之类的机制,原封不动。
打个比方。如果原来的HTTP是塑料水管没在包一层金属水管,一来原来的塑料水管照常运行,而来,用金属加固的,不容易抽破。
前面说了,HTTPS相当于"HTTP over SSL"。
如果SSL这个协议在"可扩展性"方面上涉及足够NB,那么除了能和HTTP搭配,还能干和其他的应用层协议搭配。不是很完美吗?
现在看来,当初设计SSL的人确实比较NB之外,如今SSL/TLS可以和很多的常用的应用层搭配,来强化这个协议的安全性。

接着刚才的比方,如果把SSL、TLS是做是一根用来加固的金属管,他不仅可以用来加密输水的管道,还可以用来加固输煤气的管道。
保密性
HTTP需要做到足够好的保密性。
说道保密性,说先需要能够对抗嗅探sniffer。所谓的嗅探,通俗的就是监视你的网络传输流量,如果你是使用明文的HTTP上网的话,那么监视着通过嗅探,就知道你在访问的那些网络的那些页面了。
嗅探是最低级的攻击手法。除了嗅探,HTTPS还需要对抗其他的一些稍微高级的攻击手法,比如"重放攻击"。
完整性:除了保密性,还有一个同样重要的目标是确保完整性。
在发明这个HTTPS之前,由于HTTP是明文的,不但容易被嗅探,还容易被篡改。
举个栗子:
比如咱们的网络运营商(ISP)都比较流氓,经常有网友抱怨说访问某个网站是没有广告的,竟然会跳出很多中国电信的广告。为啥会这样子呢?应为你的网络流量需要经过ISP的线路才能到达公网。如果你使用的明文的HTTP,ISP很容易就在你的访问的页面中植入广告。
所以,当初设计HTTPS的时候,还有一个需求是"确保HTTP协议的内容不被篡改"。
当谈到HTTPS的需求的时候,"真实性"经常被忽略。其实"真实性"的重要程度不亚于前面的"保密性"和"完整性"。
举个栗子:
你因为使用网银,需要访问该网银的WEB网站。那么,你如何确保你访问的网站确实是你想要访问的网站呢?
有些同学说:通过看域名,因为DNS系统本身是不可靠的,尤其在设计SSL的那个年代,脸你看到的网站的域名未必是真是的。
所以,HTTPS协议必须是有某个机制来确保"真实性"的需求。
性能:
再来说最好一个需求--性能
引入HTTP之后,不能导致性能变得太差,否则的话,谁还用啊。
为了确保性能,SSL的设计者至少要考虑如下几点:
如何选择加密算法
如何兼顾HTTP采用的"短连接"TCP方式
SSL是在1995年之前开始设计的,那个时候的HTTP版本还是1.0,默认使用的是"短连接"的TCP方式,默认不适用keep-alive。
小结:以上就是设计SSL协议的时候,必须要兼顾的各种需求。
设计HTTP协议的主要难点
设计HTTPS这个协议,有好几个难点。
我个人认为最大的难点在于"秘钥交换"
在传统的密码学场景中,假设张三要和李四建立一个加密通讯的渠道,双方事先要约定好使用哪种加密算法。同事也要约定好使用的秘钥是山?在这种场景中,加密算法的乐行让旁人知道,没太大关系,但是秘钥千万不能躺叛忍知道,一旦旁人知道,自然可以破解通讯的密文,得到明文。
当你访问某个公网的网站,你的浏览器和网站的服务器之间,如果要建立加密通讯,必然要商量好双方使用啥算法。啥秘钥。在网络的通讯术语中。这个过程叫做"三次握手"。
在握手过程中,因为加密方式没有协商好,所以握手阶段必定是明文的。既然是明文,自然就有被第三方偷窥的可能。然后,还要考虑到双方之间间隔一个互联网,什么样的都有可能发生。
因此,在握手过程中,如何做到安全的交换秘钥信息,而不是让周围的第三方看到,这个就是设计HTTP最大的难点。连接了这些,你才能知道,为啥当初要把协议设计成这样子。

时间: 2024-08-23 03:37:33

浅谈HTTPS和SSL/TLS协议的背景和基础的相关文章

浅谈 HTTPS 和 SSL/TLS 协议的背景与基础

相关背景知识 要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义 大致了解 HTTP 和 TCP 的关系(尤其是"短连接"VS"长连接") 大致了解加密算法的概念(尤其是"对称加密与非对称加密"的区别) 大致了解 CA 证书的用途 考虑到很多技术菜鸟可能不了解上述背景,俺先用最简短的文字描述一下.如果你自认为不是菜鸟,请略过本章节,直接去看"HTTPS 协议的需求&

扫盲 HTTPS 和 SSL/TLS 协议[1]:背景知识、协议的需求、设计的难点

转自: https://program-think.blogspot.com/2014/11/https-ssl-tls-1.html 扫盲 HTTPS 和 SSL/TLS 协议[1]:背景知识.协议的需求.设计的难点 文章目录 ★相关背景知识★HTTPS 协议的需求是啥?★设计 HTTPS 协议的主要难点★结尾 ★相关背景知识 要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识.1. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义2. 大致了解 HTTP 和 TCP 的关

聊聊HTTPS和SSL/TLS协议

原文地址:http://www.techug.com/https-ssl-tls 要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识.1. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义2. 大致了解 HTTP 和 TCP 的关系(尤其是“短连接”VS“长连接”)3. 大致了解加密算法的概念(尤其是“对称加密与非对称加密”的区别)4. 大致了解 CA 证书的用途 考虑到很多技术菜鸟可能不了解上述背景,俺先用最简短的文字描述一下.如果你自认为不是菜鸟,请略过本章节,直接去看“

【转】聊聊HTTPS和SSL/TLS协议

要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识.1. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义2. 大致了解 HTTP 和 TCP 的关系(尤其是“短连接”VS“长连接”)3. 大致了解加密算法的概念(尤其是“对称加密与非对称加密”的区别)4. 大致了解 CA 证书的用途 考虑到很多技术菜鸟可能不了解上述背景,俺先用最简短的文字描述一下.如果你自认为不是菜鸟,请略过本章节,直接去看“HTTPS 协议的需求”. 先澄清几个术语——HTTPS.SSL.TLS 1. “

[转]浅谈https\ssl\数字证书

浅谈https\ssl\数字证书 http://www.cnblogs.com/P_Chou/archive/2010/12/27/https-ssl-certification.html 全球可信的SSL数字证书申请:http://www.shuzizhengshu.com 在互联网安全通信方式上,目前用的最多的就是https配合ssl和数字证书来保证传输和认证安全了.本文追本溯源围绕这个模式谈一谈. 名词解释 首先解释一下上面的几个名词: https:在http(超文本传输协议)基础上提出的

浅谈HTTPS以及Fiddler抓取HTTPS协议

最近想尝试基于Fiddler的录制功能做一些接口的获取和处理工作,碰到的一个问题就是简单连接Fiddler只能抓取HTTP协议,关键的登录请求等HTTPS协议都没有捕捉到,所以想让Fiddler能够同时抓取到HTTPS和HTTP协议,设置只是很小的一步,关键是了解HTTPS协议的原理.Fiddler抓取HTTPS协议的原理,然后才能更好的理解如何进行设置.本文主要由三部分组成,第一部分用比较通俗形象的方式简述了HTTPS的原理,第二部分则是在第一部分的基础上介绍Fiddler抓取HTTPS协议的

浅谈HTTPS以及Fiddler抓取HTTPS协议(摘抄)

一.浅谈HTTPS 我们都知道HTTP并非是安全传输,在HTTPS基础上使用SSL协议进行加密构成的HTTPS协议是相对安全的.目前越来越多的企业选择使用HTTPS协议与用户进行通信,如百度.谷歌等.HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息.网上有诸多资料,有些写得过于晦涩难懂,尤其是需要密码学的一些知识.我做了一下简单的整理,刨除复杂的底层实现,单从理解SSL协议的角度宏观上认识一下HTTPS.一言以弊之,HTT

图解SSL/TLS协议(HTTPS的安全层)

http://blog.csdn.net/wallezhe/article/details/50977337 图解SSL/TLS协议 作者: 阮一峰 日期: 2014年9月20日 本周,CloudFlare宣布,开始提供Keyless服务,即你把网站放到它们的CDN上,不用提供自己的私钥,也能使用SSL加密链接. 我看了CloudFlare的说明(这里和这里),突然意识到这是绝好的例子,可以用来说明SSL/TLS协议的运行机制.它配有插图,很容易看懂. 下面,我就用这些图片作为例子,配合我半年前

SSL/TLS协议运行机制的概述

转自:SSL/TLS协议运行机制的概述 作者: 阮一峰 日期: 2014年2月 5日 互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行机制.文章的重点是设计思想和运行过程,不涉及具体的实现细节.如果想了解这方面的内容,请参阅RFC文档. 一.作用 不使用SSL/TLS的HTTP通信,就是不加密的通信.所有信息明文传播,带来了三大风险. (1) 窃听风险(eavesdropping):第三方可以获知通信内容. (2) 篡改风险(tampering):第三方可以