[瞎想]关于 HTTPS 证书的安全性

2017-02-27 10:15:38 +08:00
 cy18

由于本人对 SSL 的加密理解是半吊子的,有什么说错了高手帮忙纠正一下。

前段时间用了 Let's encrypt 搞了个证书,发现环节跟其他网站申请证书的环节有点不一样,然后有了现在的瞎想。先说结论:一般的 CA 签发证书的流程不安全,只有 LE ( let's encrypt )这种才安全。

首先现在的 https 安全体系最薄弱的一个环节的就是对 CA 的信任,如果信任列表里面的 CA 乱签发证书,搞中间人攻击,那安全性就无从谈起了。但是作为一个有公信的机构,排除道德不说, CA 最害怕的是作恶被抓住证据,比如之前有一家 CA(忘记名字了)私自签发了 Google 的证书然后被截获了,这对 CA 的公信力而言是有很大的影响的。

现在假设 CA 都符合下面几个条件。第一,他很聪明,不犯任何会被抓到证据的错误,也就是说他不会做傻事。第二,他很坏,想方设法实施中间人攻击,其中包括偷窥数据与篡改数据两个方面,也就是说他想做坏事。

我用过三个免费 HTTPS 证书(没用过收费的的 https ),除了 let's encrypt ,另外两个的签发流程是, 1.注册一个账号,提交我的个人信息。 2.验证域名所有权,可以通过 DNS 记录也可以通过网站上目录放一个特定的东西。 3.CA 签发证书,然后我从 CA 的网站上下载签发好的证书,里面包括私钥,公钥跟签名文件。

而 let's encrypt 的流程是 1.自己生成一对私钥跟公钥。 2.LE 对域名所有权进行验证,主要是通过 HTTP 协议进行一些 challenge 。 3.LE 对公钥进行签名,然后我下载签名文件。

两个流程最大的区别在于第一个流程的私钥是 CA 生成了发给我的,而第二个流程是我自己生成的。

现在问题来了,如果这个 CA 跟 ISP 狼狈为奸的话,他可以在不用签发新证书的情况下对我实现中间人攻击,如果只是窥探数据的话完全不会留下痕迹。如果篡改了数据的话,除非客户端通过其他途径跟服务端校对数据,不然也不会发现问题。

对于第二个流程而言而言,由于只有我自己拥有私钥,除非 LE 签发一个新的证书,不然他无法参与中间人攻击。但是,使用新签发的证书实施中间人攻击是会留下证据的,显然聪明的 CA 不会做出这种事。

对于采用了第一种流程的 CA ,你除了信任他不会做傻事,还得信任他不会做坏事。而对于 LE ,你只需要信任他不会做傻事就可以了,因为他没有办法做坏事而不留下证据。

3739 次点击
所在节点    SSL
30 条回复
julyclyde
2017-02-27 14:00:10 +08:00
正规的 CA 有两种做法:
浏览器里 enroll (貌似只有 IE+Windows Crypt service provider 组合才能支持?求证)
提交 CSR
bobylive
2017-02-27 14:06:30 +08:00
正規 CA 都是自己生成私鑰,然後提交 CSR , CA 驗證域名所有人,然後給你域名所有人郵箱發簽發好的證書。證書體系就是基於根 CA 絕對可信,如果根 CA 都不可信的話,證書體系也就坍塌了。
Quaintjade
2017-02-27 14:18:23 +08:00
沃通免费证书刚开始时可以自己提交 CSR ,后来好像是去掉了,记不清了。

腾讯云好像就是直接发给你私钥和公钥,更糟糕的是连吊销都吊销不了(人工服务也不行,不知现在有没有改变)。
tcdw
2017-02-27 18:15:49 +08:00
@gamexg 我记得只有去沃通官网直接申请才有自己提交 CSR 的选项,而且也不算非常明显(虽然确实在选项里)。
sinv
2017-02-27 22:52:15 +08:00
政府要求具有监听的能力,这是写到法规中的,要求 CA 掌握用于加密用途的密钥。
所以只要申请的证书具有通信加密功能的话, CA 那边必须保有你的私钥,否则 CA 是违规的。
sinv
2017-02-28 00:31:02 +08:00
#25 不好意思,我说跑题了
ryd994
2017-02-28 02:27:54 +08:00
CA 真的全靠自觉
提交 CSR 的标准流程只是为了防止传输过程中泄密而已
真要有心, CA 左手右手签一张,你的 CSR 又有什么用
当然,标准流程都不遵守的肯定不可信

理论上来说, CA 是签证书有连续的 serial number ,还有 transparency ,签了就会知道
实际上还是有心搞你你也没办法
Google 那次是 chrome 上报才知道的
cy18
2017-03-01 12:16:07 +08:00
@ryd994 每张证书不是都有 SHA1 的指纹么- -CA 如果左手给我一张右手自己签一张,右手那张指纹肯定不一样的,用来通信被截获的话 CA 的信用就崩塌了- -
ryd994
2017-03-02 02:19:12 +08:00
@cy18 前提是有人会查
正常人能注意 https 就已经很难得了
之前盗签 Google 的事,是因为 chrome 内置了 Google 的指纹,才上报的
cy18
2017-03-02 10:24:48 +08:00
@ryd994 Certificate Transparency 哪天像 https 一样普及了就好了- -

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/343424

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX