在看阮一峰的数字签名介绍,里面说:
通过替换客户端的公钥,然后再用对应的私钥,就可以欺骗客户端(具体怎么做到先不管,起码认证上能骗到了),让客户端以为自己在跟预想的服务端通信。
(欺骗的通信公钥-私钥)
"道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成"数字签名",写信给苏珊,让苏珊用假的鲍勃公钥进行解密。"
(欺骗的通信公钥-私钥 + 欺骗的 CA 公钥-私钥)
下面接着说如果有 CA 的存在,就能防止这个隐患。可我想,那同样不是可以把 CA 的公钥给换掉,再拿对应的私钥,里面放假的服务器公钥,就跟上面的引用相比,再做多一步欺骗,不也一样可以骗到?
1
chinvo 2018-08-30 15:45:44 +08:00 via iPhone
不然你以为为什么 CA 审计要求中对私钥的限制那么多
|
2
rebeccaMyKid OP |
3
skyleft 2018-08-30 15:53:26 +08:00 1
CA 的公钥不是那么容易换的 一般都是固定在系统里了
|
4
chinvo 2018-08-30 15:54:03 +08:00 via iPhone 1
|
5
skyleft 2018-08-30 15:54:36 +08:00
当然如果用户解除系统的限制 随便增加 CA 那就没办法了
|
7
gy911201 2018-08-30 15:57:26 +08:00 1
@rebeccaMyKid 怎么说呢,你都能在客户端上添加 CA 了,那么整个客户机对你来讲应该是处于一个不设防的状态了,此时在考虑什么链路安全是没有意义的事情了……
|
8
rebeccaMyKid OP @chinvo 你这个说的是另外一个问题吧。假如我网站 A,是通过一个叫 B 的 CA 签的证书,那么你要骗过 CA 这层,就得把客户端里 B 的公钥换成自己的公钥,然后再用私钥去伪造一张数字证书。这样客户端就会认为从数字证书里拿到的通信公钥是可靠的。
|
9
rebeccaMyKid OP @gy911201 哈哈哈。。好像有点道理,我较真了
|
10
chinvo 2018-08-30 16:01:52 +08:00 via iPhone
@rebeccaMyKid #8 你 #2 说的不就是这个问题么
|
11
rebeccaMyKid OP @chinvo 对啊,但这个跟不信任“ 12306 的 CA,并且不信任 CNNIC 和 WoSign 的 CA ”,好像没什么关系?
|
12
chinvo 2018-08-30 16:07:02 +08:00 via iPhone
@rebeccaMyKid 因为 12306 的 CA 就是一个自签证书,和你的自签证书一个性质
而 CNNIC 和 WoSign 的 CA 则属于没有得到足够审计的证书,举例这两个则是说明 CA 体系最坚挺但是又最薄弱的环节 |
13
rebeccaMyKid OP @chinvo 嗯,但是自签证书有什么关系呢,我在思考。。就是“数字证书不是由受信任的机构颁发的”,为什么会有问题,比如小明自己当 CA,自己签了一张证书,那我直接添加信任小明不就行了,小明又不可能去签百度的证书,就我的意思是,它影响不到别的,通过大 CA 签的证书。
求解~ |
14
chinvo 2018-08-30 16:17:27 +08:00 via iPhone
|
15
7654 2018-08-30 16:25:10 +08:00
看看 moz 和 Google 为什么要吊销赛门铁克的证书,就是因为它私自乱发证书
|
16
geelaw 2018-08-30 16:25:56 +08:00 1
@rebeccaMyKid #13 如果小明 CA 可以通过一系列链条签发 baidu.com 的服务器认证证书,那就是可以签。
如果你访问 baidu.com 的时候没有检查 baidu.com 证书链条上的环节,那么可能误把小明签发出来的百度当成真的百度。 这检查工作是交给浏览器完成的,验证逻辑就是顺着链条看是不是受信 CA 发出来的。如果把证书放到你面前让你去看,你当然看得出来——因为是你自己检查的。但通常的用户(包括你我)看见软件自动检查通过就不去想了。 |
17
rebeccaMyKid OP |
18
chinvo 2018-08-30 16:47:43 +08:00 via iPhone 1
@rebeccaMyKid #17 再加上中间人劫持或者 DNS 投毒
|
19
rebeccaMyKid OP 这个必须配合在 dns 上做手脚才行吧?通过*.baidu.com ,解析到我的(骗人的),通过认证的服务器上(而这个认证,就是这个 CA 要背锅的地方),是不是这么理解
|
20
honeycomb 2018-08-30 16:56:43 +08:00 via Android 1
@rebeccaMyKid 但是你要考虑到 CA 这个信任链不依赖也不能依赖 DNS (或者是其它形式的域名转网址服务)
或者说这里对 DNS 的要求是:它通常是正确的,且它一定会有一定频率作假/出问题。 所以现在会有 dnssec,试图用 CA 的方法来保证 DNS 返回的数据可供验证 |
21
rebeccaMyKid OP 嗯,大概明白啦,谢谢各位。
|