一篇文章了解Https基本原理

本文只是做一个《图解HTTP》的读书笔记,有里面很多的截图,深入了解的话,建议大家去看《图解HTTP》,不喜勿喷。

1.为什么要使用https?

主要是http存在以下不足:

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

下面详细描述http的几个不足:

1.1内容的加密

http协议中没有加密协议,所以会对http协议传输的内容本身进行加密,即加密报文部分:


image.png

这种做法需要客户端和服务端同时具备加密和解密的机制,而且内容仍有被篡改的风险。

1.2不验证通信方的身份就可能遭遇伪装

http协议的实现本身很简单,不论是谁发过来的请求都会返回响应,因此不确认通信方,会存在以下各种隐患:

  • 服务器可能是伪装的
  • 客户端可能是伪装的
  • 无法确认正在通信的对方是否具备访问权限
  • 即使是无意义的请求也会照单全收,无法阻止海量请求下的Dos攻击(Denial of Service,拒绝服务攻击)

虽然使用http协议无法确认通信方,但如果使用SSL则可以。SSL不仅提供加密处理,还提供了一种被称为证书的手段,可用于确认双方。

证书是由值得信任的第三方机构颁发,用来验证服务器和客户端的身份。


image.png

1.3 无法证明报文的准确性,可能已遭篡改


image.png

像这样,请求或相应在传输途中,遭攻击者拦截并篡改内容的攻击成为中间人攻击(Man-in-the-Middle attack,MITM)。

2.什么是https

  • HTTP + 加密 + 认证 + 完整性保护 = HTTPS
    或者是 HTTP + SSL/TLS = HTTPS
image.png

HTTPS并非是应用层的一种新协议,只是HTTP通信接口部分用SSL/TLS协议代替而已。
通常,HTTP直接和TCP通信,当使用SSL时,则变成先和SSL通信,再由SSL和TCP通信。


image.png

3.https加密方式

3.1 共享密钥加密(对称密钥加密)

加密算法公开,密钥是保密的,而且服务器和客户端使用相同的密钥。这种方式的难点在于如何安全的发送共享密钥,如下图所示:


image.png
3.2公开密钥加密方式(非对称加密)

公开密钥加密方式使用两把密钥,很好的解决了共享加密密钥方式的困难。
其中一把叫做私有密钥,另一把叫做公开密钥,私钥不能让其他任何人知道,公钥则可以随意发布,任何人都可以获得。
公开密钥加密方式的过程是:发送方使用对方的公钥进行加密,对方收到被加密的信息后,再使用自己的私钥进行解密。这样就不担心密钥被攻击者窃听而盗走。


image.png
3.3https采用混合加密机制

由于公开密钥加密的速度要比共享密钥的速度慢很多,所以应该使用两者的优势,采用混合加密方式:在交换密钥环节使用公开密钥加密方式,之后建立通信交换报文阶段则使用共享密钥加密方式。


image.png

4.如何证明公开密钥的正确性

公开密钥加密方式还存在一些问题,就是无法证明公开密钥本身就是真的公钥,应为在公钥传输过程中,可能已经被攻击者换掉。
为了解决上述问题,可以使用有数字证书认证机构(CA)和其相关机关颁发的公开密钥证书。具体流程如下:

  • 1.服务器运营人员向第三方数字证书认证机构购买由自己的信息签名的公开密钥,并将公开密钥放入公钥证书后绑定在一起,公钥证书也叫数字证书或证书
  • 2.服务器将公钥证书发送给客户端,以进行公开密钥加密方式。
  • 3.接到证书的客户端可使用数字证书认证机构的公开密钥,对服务器发来的证书上的数字签名进行验证,一旦验证通过,客户端可以明确两件事:
    一,认证服务器的公开密钥的真实有效的数字证书认证机构。二,服务器的公开密钥是值的信赖的。

上面的第三步中,客户端的数字证书认证机构的公开密钥是怎么来的呢?
如果使用通信的方式,如何安全的转交是一件很困难的事,因此多数浏览器都已经内置了常用认证机关的公开密钥,手机端也是如此。

image.png

5.用来确认客户端的客户端证书

https的证书验证分为单向验证和双向验证,单向验证是指客户端验证服务器证书或者服务器验证客户端证书;双向验证是客户端和服务器互相验证证书。
在描述4中讲解的是客户端验证服务器证书的过程,服务器同样也需要认证客户端的证书,用来确保是合法的客户端。
但是客户端证书必须需要用户自己将证书安装到客户端上,而第三方的证书是收费的,以上两点就导致这件事就很难执行。所以除了一些特殊机构,比如银行,不会采用客户端证书认证。

6. HTTPS的安全通信机制

image.png

image.png

image.png

简单归纳为:

验证服务器端
允许客户端和服务器端选择加密算法和密码,确保双方都支持
验证客户端(可选)
使用公钥加密技术来生成共享加密数据
创建一个加密的 SSL 连接
基于该 SSL 连接传递 HTTP 请求

6.确保完整性

上面讲了加密 + 认证,还剩下完整性保护。
在https的通信流程中,应用层发送数据时会附加一种叫做MAC(Message Authentication Code)的报文摘要,Mac能够查知报文是否早遭到篡改,从而保护报文的完整性。


image.png

5.SSL 和 TLS

TLS是以SSL3.0为基准开发的,后又指定了TLS1.0、TlS1.1 、TLS1.2
SSL有以下缺点:

  • 1.SSL会使通信变慢,主要是指由于大量消耗CPU及内存等资源,导致处理速度变慢。和使用HTTP相比,网络负载可能会变慢2到100倍,这是因为除去TCP连接、发送HTTP请求/响应外还增加了SSL通信。
  • 2.SSL必须进行加密处理,客户端和服务器都需要进行加密和解密的运算处理,导致了更多的硬件损耗。

针对变慢的问题,还没有根本性解决方案,我们会使用SSL加速器这种(专用服务器)硬件来改善该问题,相对于软件来讲,它能够提高数倍SSL的计算速度,并分担负载。


image.png

6.其他不同之处

HTTP 标准端口是 80 ,而 HTTPS 的标准端口是 443
在 OSI 网络模型中,HTTP 工作于应用层,而 HTTPS 工作在传输层

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,671评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,442评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,524评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,623评论 1 275
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,642评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,584评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,953评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,621评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,865评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,608评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,698评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,378评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,958评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,940评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,173评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,419评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,425评论 2 342

推荐阅读更多精彩内容