seegongsik
安全

怎么工作 HTTPS 为什么安全

地址栏前面那把小锁,表示这个连接用的是HTTPS。在网络领域里,我们顺着流程看了这个连接是按什么顺序建立的。这一次换个问题:那把锁为什么安全?答案出乎意料地眼熟。证书、密钥交换、对称加密、指纹和签名,这个领域里一样一样学过的零件,全都装在那把锁里。

01

不是怎么做,而是为什么安全

在网络领域遇到HTTPS时,我们看的是请求发出去、响应传回来的过程中,锁是按什么顺序挂上的。那是“怎么做”的视角。这里换成“为什么”的视角来看同一把锁:打开它,追问是什么挡住了什么,所以才值得信任。
一把锁要挡住的威胁有三种:假装成真网站的冒充,偷看来往内容的窃听,在半路改动内容的篡改。分别挡住这三种威胁的机制,一环扣一环地咬合在一起,就像一道门上同时装了猫眼、门锁和封条。

同一把锁,两个视角
点一下两个视角把它们分开。同一个 HTTPS,看法不同。

点一下两个视角比一比。网络领域看的是流程,也就是怎么做;这一课看的是安全的理由,也就是为什么。

流程告诉你动作的顺序,理由告诉你凭什么可以相信这些动作。两样都需要,不过这一课的主角是理由。
这个理由可以归成三个环。第一,确认对方真是那个网站。第二,安全地分好只有双方知道的钥匙。第三,用那把钥匙把内容锁上,并确认内容没被改过。三个环全部扣上,锁才真正起作用。

02

确认是不是真网站

第一个环是确认。挂锁之前,得先问一句:我现在真的在和那个网站说话吗?会不会是一个装成真网站的假货?
连接一开始,网站就把自己的证书发过来。浏览器像上一课看到的那样,核对链条能不能追到可信的根、签名对不对、证书上的域名和地址栏里的地址是否一致、有没有过期。全都对才进入下一步;只要有一样不对,就在这里停下,弹出警告。这一步就像进门前先看清来人的证件。

核对哪个站点的证书
?
保书
选一个站点,核对它的证书。

选一个网站,检查它的证书。担保对得上就通过,是假的就停下并弹出警告。

只有担保对得上的那一边亮绿灯通过,对不上的那一边亮红灯停下。外观仿得再像,也仿不了可信机构的签名,所以第一颗扣子只会扣在真网站身上。这就是挡住冒充的那一环。
不过,确认了对方是真的,对话并不会马上变安全。内容依然走在谁都能看到的路上。接下来该分只属于双方的钥匙了。

03

安全地分钥匙

第二个环是分钥匙。要想快速锁上内容,双方手里得各有一把相同的对称密钥。难的是,在可能有人偷看的路上,这把钥匙怎么分。
办法有两种。一种是浏览器做出对称密钥,用网站的公钥包好发过去,下面的演示就是这一种。另一种像密钥交换那一课讲的,双方交换公开的材料,一起做出同一个秘密。现在的连接大多用后一种,而且网站会用证书对应的私钥给自己那份材料签名,让半路的人没法调包。

1收到对方的公钥
2用公钥裹住秘密钥匙
3只有私钥能开
···
还没有共享钥匙。
偷看的人
盯着来往的东西。

依次点各个步骤,把钥匙分好。用公钥包好送出的钥匙,没有私钥就打不开,偷看的人只能空手而归。

顺着步骤走下来,双方拿到了同一把对称密钥。在半路盯着的人看到了那个包裹,可没有能打开它的私钥,只能空着手。秘密钥匙从没被单独寄出去,结果却只有双方握着它。
要是用一起做秘密的办法,还能再进一步:每次连接都做一个新秘密,用完就扔,所以就算日后网站的私钥泄露,过去的对话也解不开。现在该用这把钥匙锁上真正的对话了。

04

三个环扣上了

第三个环是上锁。用只有双方才有的对称密钥给来往的内容加密,在路上偷看的人只能看到一堆看不懂的字符。对称加密速度快,大文件和视频也能轻松锁上。
不光是上锁。每一段内容都附上一个用共享密钥算出的校验值一起发送,谁在半路哪怕只改一个字,校验值就对不上,收件方立刻就能发现。这种确认叫完整性。确认、分钥匙、加密加完整性,这三样一起扣上,锁才算锁住。

点一下闭合三个环
未锁
还有环没闭。缺一个,锁就扣不上。

把三个环一个一个点上扣好。三个都扣上,冒充、窃听、篡改就全被挡住;只要有一个空着,锁就锁不上。

三个环全部扣上,锁就锁住了。冒充靠证书确认来挡,窃听靠加密来挡,篡改靠完整性校验来挡。每种威胁都有一个和它配对的环。
少了哪一个都不行。不确认就加密,等于和假网站非常安全地聊天;只确认不加密,内容就在路上一览无余。话说回来,锁也不是什么都能守住。偷看的人仍然能知道你连的是哪个网站、来往的数据大概有多少;诈骗网站也能为自己的域名正常拿到证书。锁的意思是对方是这个地址的主人,并不是说这个网站很诚实。

05

小结

归纳起来是这样:HTTPS是这个领域里学到的零件汇聚而成的锁。在网络领域我们看了流程,这里看了它为什么安全。安全来自三个环扣上:用证书确认是真网站,用公钥技术安全地分好双方专用的对称密钥,再用这把对称密钥加密内容,并用校验值确认完整性。
冒充、窃听、篡改,每个环挡住一种,三个一起扣上,锁才锁住。不过,锁守护的是来往的内容,管不到网站是否诚实。

1为什么安全
2证书核对
3钥匙安全交换
4三个环闭合

依次点四个要点回顾一下:为什么安全、检查证书、安全地分钥匙、三个环扣上。

现在再看地址栏里那把小锁,感觉应该不一样了。它不只是一个图标,而是三个环全部扣上的承诺:用证书确认了对方,安全地分好了双方专用的钥匙,正在用这把钥匙锁着内容。
可是,锁守护的是已经打开的连接上的内容。那些压根不该放进来的连接,又由谁在门口挡住?下一课来看担当这份工作的防火墙。

一句话总结HTTPS是这个领域里学到的东西汇聚在一起的锁。如果说在网络领域看的是它的流程,这里看的就是它为什么安全。安全来自三个环扣上。第一,用证书确认对方真是那个网站,挡住冒充。第二,用公钥技术安全地分好双方专用的对称密钥。现在的连接大多是双方一起做出同一个秘密,网站为这个过程签名;每次连接都用新钥匙,所以就算日后私钥泄露,过去的对话也是安全的。第三,用这把对称密钥加密内容,挡住窃听,再用每段附上的校验值抓出篡改。三个环一起扣上,锁才锁住;只要有一个空着,就不安全。不过,锁只说明对方是这个地址的主人,并不保证网站诚实,而且连的是哪个网站这类信息依然看得见。
← 安全
如果有帮助,请支持我们