【技术整理】HTTPS安全设计思路

本文是由我在公司的技术分享中抽取部分内容重新书写的文章。公司的技术分享原本讲的是开发人员常用的工具,然后由charles引申出网络安全的思考。
本篇文章以HTTPs的设计理念为主线,讲解网络安全思路,文中会提到一些charles软件相关的知识,特此提前告之,避免各位觉得讲解内容突然提到charles很奇怪。

概述

谈到Https, 我们可以想到的关键词有:对称/非对称加密、p12证书、CA机构等等。
网上有非常多的文章去讲解这些事。我当年每次面试前,都会去记一次,但过了几个月又会忘掉。所以,我换了另一个思路去记忆Https的原理、机制:Http的安全性很低,为什么目前会设计成Https这样的安全思路?如果是我,有没有别的办法去设计安全连接?Https有没有漏洞?

黑客手段

抛去木马这种靠骗术、软件完全获取到所有用户设备信息的手段不谈,黑客对于网络方面的手段可以简单理解为:黑客能做到charles软件提供的各项功能。

Charles基本功能(针对Http)

抓包:看到用户端请求的所有参数,以及服务端返回的所有信息

更改请求数据:将请求中的某些参数更改

Charles对应功能:Rewrite\断点Debug联调

更改结果数据:将服务器返回回来的信息做更改

Charles对应功能:Map Remote\Map Local\Rewrite

黑客如何做到Charles类似的功能(针对Http)

方法1: DNS截持

本来用户请求的域名是www.baidu.com,正确通过DNS解析的IP应该是xxx.xxx.xxx.xxx, 却被劫持到yyy.yyy.yyy.yyy的黑客服务器下,黑客获取到用户的请求信息后,可以随意阅览、修改信息,再转发到正确的IP服务器下;收到服务器的返回结果,可以随意阅览、修改信息后,将修改后的结果发给用户。

方法2:设置免费的WIFI

人们登上了这种黑客设置的WIFI,发送、返回的所有请求、结果,黑客都可以通过自己路由器的权限随意更改。

被黑客攻破的结果

如果你访问网站、使用的APP健全性不够(用的Http协议,关键信息未加密),那么黑客可以了解你访问过哪些网站、看过哪些内容、发过哪些言论、登录的用户名和密码是什么、仿造你的token冒充你去与银行和支付软件进行转账操作(前提是银行的软件、支付软件本身的安全校验功能不高)。

从Http到Https的安全方案

image.png

Http是明文传输的,在黑客已经成功截持了用户客户端浏览器的情况下,我们如何将Http协议增强安全性呢?

方案1: 简单对称加密

image.png

浏览器在与服务器进行沟通时,首先告诉服务端:“我们以后用密钥为A的对称性加密方式进行沟通”,服务端看到消息后,用公钥A加密消息,回复给浏览器。

方案1黑客破解

image.png

浏览器在第一次告诉服务端以后沟通的密钥是A时,中间的黑客已经获取到这条信息。所以,未来浏览器与服务端的加密沟通,黑客都可以破解,任意更改两边发送的消息。

方案2: 可信的第三方介入(CA机构)

浏览器与服务端的通信是不可靠的,因为作为其中一边,你完全无法判断对面的是你真正想交流的对象还是黑客冒充的对象。
那么此时,引入可信的第三方(CA机构)。CA机构使用非对称加密,将加密私钥自己保留,解钥公钥公布出去,供各个浏览器、客户端下载使用。

(提前说明,这仍是个不安全的设计思路)

image.png

设计方案:

  1. (这一步就有错误,诸位可以自己想想错在哪里)服务端在上线前,将自己的公司信息、未来供给浏览器的对称加密密钥(图中的密钥B)发给CA,CA将这些信息通过自己的加密私钥加密后,生成证书发给服务端(这个证书我们称为CA证书)。
  2. 未来服务端上线后,与浏览器进行通信。将自己的明文公司信息、CA机构名、CA证书发给浏览器。
  3. 浏览器使用之前下载保留好的对应的CA解密公钥将CA证书解密,对比解密后的信息是否与服务端给的明文信息相同,如果相同,则认为校验通过。
  4. 使用CA证书里服务端提供的对称加密密钥(图中的密钥B)将信息加密与服务端开始通信。

方案2黑客破解

这种方案仍然会有安全性问题。原因见下图后的文案说明:

image.png

原因:CA机构的解密公钥是对所有人公开的,服务端如果直接传的是对称型加密密钥,那么中间的黑客也可以获取服务端对称加密密钥,仍可以在中间冒充双方进行沟通。对称加密的消息对黑客来说相当于明文。

方案3:将服务端封入证书的对称密钥改为非对称加密的加密公钥(也就是HTTPS使用的方案)

image.png

设计方案:

  1. (与方案2不同)服务端在上线前,将自己的公司信息、未来供给浏览器的非对称加密的加密公钥(图中的密钥B)发给CA,CA将这些信息通过自己的加密私钥加密后,生成证书发给服务端(这个证书我们称为CA证书)。
  2. (与方案2第2步相同)未来服务端上线后,与浏览器进行通信。将自己的明文公司信息、CA机构名、CA证书发给浏览器。
  3. (与方案2第3步相同)浏览器使用之前下载保留好的对应的CA解密公钥将CA证书解密,对比解密后的信息是否与服务端给的明文信息相同,如果相同,则认为校验通过。
  4. (与方案2不同)使用CA证书里服务端提供的非对称加密的加密公钥(图中的密钥B)将未来沟通使用的 对称加密密钥(图中的密钥C) 加密传给服务端。
  5. (新加步骤)未来客户端浏览器与服务端使用对称加密密钥(图中的密钥C)互相沟通。

一个细节注意,第4步,客户端浏览器也可以传给服务端一个自己的非对称加密的加密公钥,解密私钥自己保留。这样,客户端浏览器与服务端的通信可以使用对方提供的加密公钥去加密信息互相沟通。也可以保证消息的安全性。
但HTTPS为什么没有用这种方案呢?
答案是:对称加密的加密、解密时间消耗更小,所以,在确保安全的前提下,要尽量使用对称加密去互相通讯。

方案3黑客尝试破解,显然破解会失败

image.png
  1. 黑客可以破解服务端初次传给客户端浏览器的信息(图中XX),获取到服务端的公司信息与非对称加密的加密密钥B
  2. 当客户端浏览器收到信息XX,返加信息YY时,黑客无法知道客户端浏览器发了什么内容
  3. 黑客唯一能做的,就是完全屏蔽掉浏览器对服务端的通信,自己去和服务端通信。但这样做对于窃取更改数据的目的来说, 是无意义的。黑客相当于自己开了个浏览器上网,无法获取到用户的任何信息。
  4. 发生了这种事,对于客户端浏览器来说,就是显示请求异常,无法上网,但保证了自身信息的安全性。

总结

以上概述,希望各位能对“对称/非对称加密、p12证书、CA机构”这些关键词有进一步的理解。
何时使用对称加密?何时使用非对称加密?p12证书是什么?CA证书里面有什么内容?为什么要有CA机构来配合通信?Https真的是100%保证数据安全的吗?
这些问题,都弄清楚怎么回事,我们才会真正懂得HTTPS的意义。

题外话

对于非技术人员,提醒一些安全性方面的小建议:

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

推荐阅读更多精彩内容

  • http协议明文传输:三次握手之后,直接交互。互相发送的数据都是完全明文传输。一旦在客户端到服务端的中间过程中,被...
    无聊之园阅读 428评论 0 1
  • 前言 http和https对于web developers来说肯定都不陌生,甚至是每天都在接触,然而在我接触的一些...
    LK2917阅读 755评论 0 14
  • http协议是现在网络通信中最常用的协议之一,但是由于http协议本身并没有考虑网络安全方面的问题,因此很多基于h...
    RainMi阅读 679评论 0 1
  • 前言 http和https对于web developers来说肯定都不陌生,甚至是每天都在接触,然而在我接触的一些...
    酷拼车阅读 480评论 0 0
  • HTTPS 一、SSL/TLS协议运行机制的概述 握手阶段的详细过程 握手阶段所有的通讯都是明文的 (一) 第一阶...
    songsongJ阅读 654评论 0 1