深入浅出HTTPS

前言

最近又开始忙碌起来了,年底了各种杂七杂八的事情开始多了起来。事情一多,几天前复习的计算机网络相关知识,怕又淡忘了,赶紧打开电脑,写下了这篇总结。

一 有了http,为啥还要设计https?

1.1 先谈谈HTTP的缺点

(1)通信过程使用明文传输,所以内容很容易被截获

(2)无法确定通信双方的真实身份。攻击方很容易伪造客户端身份,向服务端发起通信请求;客户端的请求也很容 易被截获,攻击者伪造成服务端,向移动端发送错误的指令。

(3)无法验证报文的完整性,所以有可能已经遭到篡改。服务端返回数据给客户端的时候,内容也很容易被伪造,导致发送危险信息给客户端。

1.2 怎么避免?

既然http通信过程中,使用的是明文,那么,我们是不是把内容加个密就可以了?这样的话,就算攻击者拿到了通信请求,也不知道是啥?好,那么,我们现在已知的,有哪些加密方式?

(1)通信加密使用ssl或者tsl结合HTTP,加密通信内容,这个也即是我们本文所要介绍的https,这里不做展开,下文有详细解释

(2)将通信内容加密,但这个要求服务端和客户端需要同时具备加密和解密的功能,这个过程将影响通信的性能,而且由于该方式不同于SSL或者TSL的加密方式,内容还是有可能被篡改。比如我们在下载文件的时候,常用md5算法来校验文件的完整性,用pgp来创建数字签名,但是这个过程也是无法保证百分百正确的,因为在传输过程中,如果md5和pgp都被篡改的话,用户也是没有办法去感知的

所以,基于ssl的https传输协议就变得十分的必要了。

二 HTTPS之旅

我们可以简单的这么总结:HTTPS就是在HTTP的基础上,加上了加密处理和认证处理。

2.1 对称加密和非对称加密

什么是对称加密?对称加密指的是加密和解密用的是同一个密钥,而非对称加密,指的是加密用的是一把密钥,而解密用的是另一把密钥。那么,在网络传输如果采用对称加密方式进行传输的话,就需要在发送一个报文的时候,把密钥也传给对方,如果不发送,对方就不能解开这个报文。但是这个工程中,如果密钥被攻击者拿到,那么这个加密过程也就相当于废弃了,所以,网络传输过程使用对称加密,是不能防止被窃听的风险的。

2.2 非对称加密网络传输解析

非对称加密采用的是公钥+私钥的加解密方式,所以只要我们保存好私钥,公钥被别人拿到,因为没有私钥,所以攻击者也解不开这个报文。所以在网络传输过程中,我们可以把公钥发送客户端,客户端拿到这个公钥,对所要发送的内容进行加密,传输给服务端,服务端拿着私钥去对报文进行解密。这样就完成了整个通信过程。

2.3 采用混合加密机制的HTTPS

由于公开密钥的处理速度要比共享密钥慢,所以https采用的是混合加密机制。即在交换密钥环节采用公开密钥的加密方式,之后建立通信交换报文的阶段,采用的是共享密钥的加密方式。

三 HTTPS之TSL握手

在分析流程之前,先放上一张自己认为比较经典的图(来自图解HTTP)

https通信过程

这张图仅仅说明了从服务端公开密钥证书建立HTTPS通信的整个过程,那么,我们接下来就仔细分析,从client say hello 开始完整的HTTPS握手的过程
https TSL

第一步:客户端发起https通信请求,也即是client hello,这个时候client的附加请求包含

1 一个随机字符串client_rand1(random number)

2 当前客户端支持的ssl版本(ssl version)

3 当前支持的加密方法(supported cliphers)

4 压缩算法(etc)

第二步:服务端接到client hello,响应server hello给客户端,这个时候,server返回的数据包括

1 Cipher suite (加密方法 RSA,TSL版本号和压缩算法)

2 server Certificate 服务端证书

3 随机字符串server_rand1

4 client certificate request 客户端验证请求。有些类似银行的通信,需要客户端也校验自己的身份
5 server key exchange 服务端证书没有提供方足够信息是,可以发送这个内容

第三步:客户端再此回应。

1 client key exchange 即当服务端需要客户端提供身份验证时,客户端发送这个给服务端,包括:客户端的证书认证

2 第三个随机数client_rand2,这个也即是PreMaster Secret,通过公钥加密,发送给服务端

3 ChangeCipherSpec 告知服务端,客户端已经切换到之前协商好的加密套件(Cipher Suite)的状态,准备使用之前协商好的加密套件加密数据并传输了

4 client finish 表明当前client 握手结束,这个数据是为了对刚刚建立的握手机制进行加解密验证

第四步:server 回应

服务端接收到preMaster secret,通过私钥,得到premasterkey。

至此,https 握手机制完成。

四 HTTPS 缺点

1 效率较低

第一:通信慢,出去原有的tcp http 请求和响应,还要加入tsl、ssl通信,整体通信量不可避免的增加

第二:服务端和客户端的加解密过程将会耗费大量的cpu计算

2 购买证书需要费用

备注:

本文参考了
1 https://segmentfault.com/a/1190000002554673
2 《图解http》

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

推荐阅读更多精彩内容