Https是如何保证通讯安全的

  • 这个问题困扰了很久,最近看了资料,总结一番,总结不到位的地方还请指出
  • http是明文传输而https加密传输(http的发展历史及各版本的差异,报文头这里就不介绍了,有兴趣的同学自己查阅资料)这是它们最大的区别。那https是如何达到安全传输的呢,这个需要先了解下http与https的osi层次结构(图来源《图解http》)
image.png

很明显https 是在tcp与http之间添加了一层ssl(Secure Sockets Layer)层,俗称安全套接层

  • SSL释义:请参看这里博文,有详细讲解:
    https://www.jianshu.com/p/6c981b44293d
  • 理解https的安全传输需要先了解两种加密算法,因为在整个https通讯过程使用两种加密算法,一种非对称加密算法,另一种对称加密算法
  • 非对称加密算法:这种加密或许理解起来比较困难,这种加密指的是可以生成一对密钥 (k1, k2)。凡是 k1 加密的数据,k1 自身不能解密,而需要 k2 才能解密;凡是 k2 加密的数据,k2 不能解密,需要 k1 才能解密。这种算法事实上有很多,常用的是 RSA,其基于的数学原理是两个大素数的乘积很容易算,而拿到这个乘积去算出是哪两个素数相乘就很复杂了。好在以目前的技术,分解大数的素因数确实比较困难,尤其是当这个大数足够大的时候(通常使用2的10次方个二进制位这么大),就算是超级计算机解密也需要非常长的时间
  • 对称加密算法简单来说就是加密与解密使用的密钥是一样的。

有了这两种算法做基础之后对后面的内容就好理解了。我们现在来一步一步揭开https的面纱。
先假设有两台计算机需要通信,它们的情况大致是这样:


image.png

如果不进行加密传输,裸传就是http传输了,很容易被拦截。假设计算A与计算机B之间约定使用Key1=(20202020liuhulai)这个密钥对报文内容进行加解密,即发送方使用key1对待发送的内容进行加密处理,接收方使用key1对接收过来的内容进行解密处理,看似已经达到了安全传输的效果,但如何保证计算机A安全的将key1发送给计算机B呢?如果这个阶段被拦截了那么key1就被泄露了,别人就可以假冒发送方 计算机A 向接收方 计算机B 发送信息了,还是没达到安全传输的效果。现在问题是需要保证key1能够安全在网络上传输,很明显不能再使用对称加密来保护这个key1的安全传输了,聪明的人类于是引入了非对称加密:

这种方法就是,让客户端和服务器都拥有两把钥匙,一把钥匙是公开的(全世界知道都没关系),我们称之为公钥;另一把钥匙则是保密的(只有自己本人才知道),我们称之为私钥。并且用公钥加密的数据,只有对应的私钥才能解密;用私钥加密的数据,只有对应的公钥才能解密。

于是按照这种方法来保证key1在网络上的安全传输,它的过程大致如下图:


image.png

这种方式貌似已经达到了,但是在第一步计算机B明文传输自己的公钥时又存在泄露的风险,被人拦截之后使用假冒的的公钥假设为key2,发送给计算机A,接着计算机A收到这个报文之后,使用key2对 key1 再进行加密传输,中间人拦截到这个报文之后使用自己的私钥进行解密得到key1,然后再伪造一个key1_1通过计算机B的公钥发送给计算机B,于是计算A与计算机B整个通讯过程都暴露在中间人眼皮底下,无异于裸奔,这种现象就是中间人攻击。

image.png

导致这个问题的根本原因是计算A无法知道这个公钥是否来自计算机B。

科学是向前发展的,充满智慧的人类总是能克服一个一个困难。因此,我们需要找到一种策略来证明这把公钥就是服务器的,而不是别人冒充的。我们需要找到一个拥有公信力、大家都认可的认证中心(CA)。于是就诞生了数字证书。它的具体过程是这样的:
计算机B在给计算机A传输公钥的过程中,会把公钥以及个人信息通过Hash算法生成信息摘要。如图:


image.png

为了防止信息摘要也被人调换,计算机B还会用CA提供的私钥对信息摘要进行加密来形成数字签名。如图:


image.png

并且,最后还会把原来没Hash算法之前的个人信息以及公钥 和 数字签名合并在一起,形成数字证书(回想下在使用https通信时是不是需要内置一份证书文件)。当计算机A拿到这份数字证书之后,就会用CA提供的公钥来对数字证书里面的数字签名进行解密来得到信息摘要,然后对数字证书里服务器的公钥以及个人信息进行Hash得到另外一份信息摘要。最后把两份信息摘要进行对比,如果一样,则证明这个人是服务器,否则就不是。
如图:

image.png

下面是Charles 抓包原理的流程图:
客户端向服务器发起HTTPS请求

Charles拦截客户端的请求,伪装成客户端向服务器进行请求

服务器向“客户端”(实际上是Charles)返回服务器的CA证书

Charles拦截服务器的响应,获取服务器证书公钥,然后自己制作一张证书,将服务器证书替换后发送给客户端。(这一步,Charles拿到了服务器证书的公钥)

客户端接收到“服务器”(实际上是Charles)的证书后,生成一个对称密钥,用Charles的公钥加密,发送给“服务器”(Charles)

Charles拦截客户端的响应,用自己的私钥解密对称密钥,然后用服务器证书公钥加密,发送给服务器。(这一步,Charles拿到了对称密钥)

服务器用自己的私钥解密对称密钥,向“客户端”(Charles)发送响应

Charles拦截服务器的响应,替换成自己的证书后发送给客户端

至此,连接建立,Charles拿到了 服务器证书的公钥 和 客户端与服务器协商的对称密钥,之后就可以解密或者修改加密的报文了。

HTTPS抓包的原理还是挺简单的,简单来说,就是Charles作为“中间人代理”,拿到了 服务器证书公钥 和 HTTPS连接的对称密钥,前提是客户端选择信任并安装Charles的CA证书,否则客户端就会“报警”并中止连接。这样看来,HTTPS还是很安全的。

原文链接:https://blog.csdn.net/zwjemperor/article/details/80719427

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