https详解

前言

http协议属于明文传输协议,交互过程以及数据传输都没有进行加密,通信双方也没有进行任何认证,通信过程非常容易遭遇劫持、监听、篡改,严重情况下,会造成恶意的流量劫持等问题,甚至造成个人隐私泄露(比如银行卡卡号和密码泄露)等严重的安全问题。

就像坐在教室里,想传纸条给另一位同学,在建立TCP之后,便开始传纸条,这时候要面对第一个问题是,途径的每个同学都能知道纸条上的内容。第二个问题是,如果某个同学篡改了其中的内容也是正常。

这时候就需要一个加密方式来把内容加密 —— 对称加密(****https协议的第一部分内容****)

对称加密

对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。

常用的加密算法是 AES 算法

image.png
  • 发送方利用密钥123456,加密明文“我是小灰”,加密结果为TNYRvx+SNjZwEK+ZXFEcDw==。
  • AES支持三种长度的密钥:128位,192位,256位
  • AES256安全性最高,AES128性能最好,本质是处理轮数不同[1]
  • 加密速度快,适合经常发送数据的场合。缺点是密钥的传输比较麻烦。

此时,内容加密方式已经确定了,下一步就是如何把密钥共享,传递密钥 —— 非****对称加密(****https协议的第二部分内容****)

非对称加密

密钥传递,需要协商,如果这个过程被“中间人”“嗅探”到了,拿到了唯一密钥,那后面的加密内容传递 无异于明文传递。

所以这一协商过程必须发生在TLS握手阶段,对上面的密钥非对称加密后再进行传输

这种加密指的是可以生成一对密钥 (公钥k1, 私钥k2), 私钥加密后的密文,只要是公钥,都可以解密,但是公钥加密后的密文,只有私钥可以解密。私钥只有一个人有,而公钥可以发给所有的人。常用 RSA[2]

image.png

公钥每个人都可以有,但是私钥只有服务器才有,所以似乎只需要此时将用公钥加密内容密钥,发送给服务端,服务端再用私钥解密即可。

但这样并不安全,有一种更恶劣的行为是专门针对上述方式的, 就是“中间人攻击

image.png

<u>中间人攻击</u>

  1. 客户端发起https请求到达中间人,中间人请求服务端,服务端返回 服务端的公钥(服)
  2. 中间人 拿到 公钥(服)后, 生成自己的 公钥(中)和私钥(中),同时返回给客户端 公钥(中)
  3. 客户端 拿到 公钥(中)后,加密密钥 ,再发给中间人,
  4. 中间人用自己的 私钥(中)解密后,记住 密钥 明文,再用 公钥(服)加密后 发给 服务器
  5. 服务器 拿到 后解密,确认 内容密钥

为了解决此问题,从而引入了CA(数字证书)的概念

数字证书

数字证书就是通过数字签名实现的数字化的证书, 数字签名就是对非对称加密和摘要算法的一种应用

image.png
  1. 服务器首先生成公私钥,将公钥提供给相关机构(CA),CA将公钥放入数字证书并将数字证书颁布给服务器
  2. 此时服务器就不是简单的把公钥给客户端,而是给客户端一个数字证书(公钥(服),数字签名,签名算法)。
  3. 数字证书中加入了一些数字签名的机制,保证了数字证书一定是服务器给客户端的。
  4. 如果中间人发送伪造的证书,不能够获得CA的认证, 客户端和服务器就知道通信被劫持了。
  5. 如果中间人不伪造证书,则因没有服务端的私钥,而无法解析客户端的信息

客户端如何验证证书

  1. CA证书验证维护在客户端浏览器和操作系统中
  2. 客户端拿到证书后根据数字证书上的方法自己生成一个数字签名,如果生成的数字签名与证书上的数字签名相同,那么说明这个证书是真实的。

CA参与的TLS过程

image.png
  1. 客户端给出协议版本号、一个客户端生成的随机数1(Client random),以及客户端支持的加密方法。
  2. 服务端确认双方使用的加密方法,并给出数字证书、以及一个服务器生成的随机数2(Server random)。
  3. 客户端确认数字证书有效,然后生成一个新的随机数3(Premaster secret),并使用数字证书中的公钥加密这个随机数3,发给服务端。
  4. 服务端使用自己的私钥,获取客户端发来的随机数3(即Premaster secret)。
  5. 客户端和服务端根据约定的加密方法(对称加密),使用前面的三个随机数(随机数123),生成"对话密钥"(session key),用来加密接下来的整个对话过程。

注意

  1. 生成对话密钥一共需要三个随机数。
  2. 握手之后的对话使用"对话密钥"加密(对称加密),服务器的公钥和私钥只用于加密和解密"对话密钥"(非对称加密),无其他作用。
  3. 服务器公钥放在服务器的数字证书之中。

SessionID恢复

session ID的思想很简单,就是每一次对话都有一个编号(session ID)。如果对话中断,下次重连的时候,只要客户端给出这个编号,且服务器有这个编号的记录,双方就可以重新使用已有的"对话密钥",而不必重新生成一把。

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

推荐阅读更多精彩内容

  • 存在即合理 http是非常常见的应用层协议,是超文本传输协议的简称,其传输的内容都是明文的。在这个混乱的世界,明文...
    落魄PHP女程序员阅读 372评论 0 0
  • https原理详解http://liuduo.me/2018/05/14/https-detail/[http:/...
    小红军storm阅读 886评论 0 10
  • 前言:在一个app运行时期,由于android进程隔离的原因,每个应用都有自己独立的内存空间,其他应用是无法直接访...
    松哦哦阅读 339评论 1 5
  • 本文原作者“JackJiang2011”,收录时有改动,感谢原作者。 简介 HTTPS(全称: Hypertext...
    周蛋蛋阅读 364评论 0 1
  • 前言 近几年,互联网发生着翻天覆地的变化,尤其是我们一直习以为常的HTTP协议,在逐渐的被HTTPS协议所取代,在...
    指尖跳动阅读 6,736评论 0 2