Https协议详解

本文内容主要讲解Https协议,其他网络知识点作为理解Https协议的辅助。

首先,需要简单知道网络协议的四个层次,即:网络接口层,网络层,传输层,应用层。

Http协议

Http协议是一种超文本传输协议,是客户端浏览器与服务器之前的 应用层 通信协议。
Http协议不提供数据加密,以明文的方式发送内容,容易被攻击截取信息,不适合用于传输一些敏感信息。

Https协议

Https协议是以安全为目标的Http通道,在Http的基础上加入SSL层,简单来说就是Http协议的安全版。
Https协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

在进行详细解释Https之前,我们需要先简单了解一些Https协议使用到的关键技术。

关键技术

对称加密

对称加密使用加密和解密使用相同密钥的加密算法进行加密,也叫私钥加密。常见的对称加密有:DES, AES 等。

非对称加密

非对称加密与对称加密不同,使用非对称加密算法进行加密,需要两个密钥,即公钥和私钥。公钥和私钥是成对出现的,在加密和解密的过程中使用不同的密钥,所以也称为公钥加密。

数字摘要

数字摘要采用单项Hash函数将需要加密的明文 摘要 成一串固定长度(128位)的密文,这个密文又称为数字指纹。不同的明文摘生成的数字指纹总是不同的,而同样的明文摘要生成的数字指纹必定一致。
数字摘要 是Https能确保数据完整性和防篡改的根本原因。

数字签名

数字签名是对 非对称加密数字摘要 两项技术的应用。
它将 摘要信息 用发送者的私钥加密,与原文一起传送给接收者。
接收者只有使用发送者的公钥才能解密出被加密的 摘要信息;接着对接收到的原文用 数字摘要 生成 摘要信息;然后将两个 摘要信息 进行对比。若相同,说明收到的原文是完整的,在传输过程中没有被修改。因此,数字签名能够验证数据的完整性。

SSL

SSL是安全套接层,用以保障数据传输的安全,利用数据加密技术确保数据在传输过程中不会被截取。

SSL又可分为两层:

  • SSL记录协议建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装,压缩,加密等基本功能的支持。
  • SSL握手协议建立在SSL记录协议之上,用于在实际的数据开始传输前,通讯双方进行身份认证,协商加密算法,交换加密密钥等。

SSL/TLS握手流程

SSL/TLS握手过程流程图:


SSL握手流程图
  1. 客户端发起请求:在SSL/TLS协议传输过程中,客户端和服务端必须使用同一套加解密算法才能保证数据正常的加解密。由于客户端对一些加解密算法的支持程度不一样,所以客户端需要告知服务端自己支持的加密套件的列表传给服务端。此外,客户端还要生成一个随机数(第一个随机数),用于传送给服务端,在后面的步骤中与服务端生成的随机数结合起来产生 对话密钥

    那么客户端需要提供的信息:

    • 支持的协议版本
    • 支持的加密算法
    • 支持的压缩方法
    • 随机数
  2. 服务端响应:服务端确定加密协议的版本和加密算法后,也生成一个随机数(第二个随机数),并将自己的证书一并发送给客户端。

    服务端需要提供的信息:

    • 确定支持的版本
    • 确定加密的算法
    • 随机数
    • 服务器证书,包含公钥

    注意:一些场景下,服务器需要确认客户端的身份,会要求客户端提供 客户端证书

  3. 客户端验证证书:客户端先对服务器下发的证书进行验证,验证通过后客户端再生成一个随机数(第三个随机数,也是最关键的随机数),并使用证书中的公钥对随机数进行加密,再加入一个 ChangeCipherSpec 即编码改变的消息和前面所有消息的Hash值,最后将所有的这些信息发送到服务器,确保在正式通信前无误。

    此时,客户端得到全部的三个随机数,客户端会用协商的加密方法,生成本次会话所用的同一把 会话密钥

    ChangeCipherSpec是一个独立的协议,在数据包中就是一个字节的数据,用于告知服务端:客户端已经切换到了协商好的加密套件,准备好加密数据并进行传输了。

    客户端提供的信息:

    • 使用服务器证书中的公钥加密后的随机数(第三个)
    • ChangeCipherSpec 编码改变的通知
    • 握手结束的通知

    注意:如果服务端需要客户端证书,客户端会在这一步发送证书信息。

  4. 服务端生成秘钥:使用私钥对随机数(第三个)的加密数据进行解密,此时服务端得到全部的三个随机数,同样使用协商的加密方法,生成和客户端使用的同一把 会话密钥。准备好后,服务端也会给客户端一个 ChangeCipherSpec 即编码改变的消息,告知客户端已经切换到了协商好的加密套件,准备好加密数据并进行传输了。

    之后,服务端会使用 会话密钥 加密一段finish消息发送给客户端,以验证通过握手建立的加密通道是否成功。

  5. 客户端发送数据:确定 会话密钥 后,客户端与服务器之间就会使用对称加密加密数据后传输了。整个握手的过程也就基本完成了。

注意:SSL协议在握手阶段使用的是非对称加密,在传输阶段使用的是对称加密。
因为非对称加密的速度缓慢,比较耗费资源,所以在使用非对称加密建立连接后,客户端和服务器之间传输数据使用的是协商好的对称加密算法和对称加密密钥(即会话密钥)。这个数据传输过程本身是安全可靠的,也就是说对称加密密钥是不可能被窃取盗用的。
如果有人窃听通讯,他可以知道双方选择的加密方法,以及三个随机数中的两个,也就是说整个通话的安全,只取决于第三个随机数(客户端生成并加密)能不能被破解。

Session的恢复

两种恢复Session对话的方式:Session IDSession ticket

Session ID

客户端和服务器的每次对话都有一个编号。若对话中断,重连时只要客户端给出编号,并且服务器有该编号的记录,双方就可以使用已有的 对话密钥 重新建立连接,而不用重新走握手流程重新连接。

Session ID是目前所有浏览器都支持的方法,缺点是Session ID往往只保留在一台服务器上,如果客户端重连时请求发到另一台服务器上,就无法恢复对话。

Session ticket

客户端发送一个服务器在上次对话中发送过来的Session ticket,其中包括对话的主要信息,如:对话密钥和加密方法等。这个Session ticket是加密的,只有服务器才能解密,服务器在解密Session ticket后就不用重新生成对话密钥了。

目前只有部分浏览器支持,如:Chrome和Firefox


参考资料:

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

推荐阅读更多精彩内容