HTTPS体系中若攻击者将自己公钥上传CA得到签名,并将两者一起用于篡改证书的中间人攻击会怎样?
比如A和B通信,B的公钥和签名被O截取,而O原先已将自己的公钥上传CA得到了O的签名。于是O将B的公钥和签名一起替换成O的公钥和O的签名,再发给A。
那么A能够识别这个证书中连签名也被替换了吗?
按个人理解,这个问题取决于CA在受理用户的签名请求时,是仅仅对用户提供的公钥进行签名,还是要对包括用户公钥和申请用户信息等其他要素的总和进行整体签名。
如果CA仅仅是对用户公钥进行签名,那么很显然第三方攻击者完全可以在不掌握CA私钥的前提下,就以申请签名的名义利用CA得到一份自己公钥的签名,进行两者同时替换。
如果CA是要对用户公钥和申请用户信息的整体进行签名,那就要看CA会不会审核申请签名的用户的身份信息。
比如说这里的CA先后收到两个宣称自己是B的用户要给公钥进行签名,但两个公钥是不一样的。显然后者是攻击者O在冒充B申请新的签名。CA如果负责的话应该对同一用户对不同公钥进行签名的请求进行警惕,比如拒绝第二次签名或者联系用户本人进行确认等。
谢邀,首先我得纠正一下你的说法。当CA签名的时候,它不是只对公钥签名的,而是会对整张数字证书签名。所以一张完整的数字证书你不可能只换签名,这样通不过完整性校验,要换只能把整张证书换掉。
所以这个问题的正确表述应该是:
比如A和B通信,B的公钥和数字证书被O截取。而O原先已将自己的公钥上传CA,并得到了CA签发的一张等效的数字证书。于是O将B的公钥和证书一起替换成O的公钥和O的证书,再发给A。A能够识别自己正在遭受中间人攻击吗?
好,如果你想问的问题是这个的话,那么一句话总结:用户没有任何办法判断自己是不是正在遭受攻击,而且这样的攻击已经大规模发生过最少两次了。这两次攻击一次是印度政府发动的,一次是中国政府发动的,都在相关机构手里留下了确凿的证据,之后涉案的CA都被开除了Root CA资格。
印度机构造SSL"假证书" 威胁Gmail安全?netsecurity.51cto.com谷歌称CNNIC发布伪造CA证书-月光博客?www.williamlong.info当然,我个人怀疑美国国安局可能也没少玩类似的把戏,但是既然人家没有漏出马脚,那我也不好意思多说什么。
除此之外,我记得零几年还发生过这么一件事:某男子通过社会工程学手段伪装成微软的法人代表,然后诈骗到了一张CA签发的微软证书。但是我现在搜不到那条新闻了,有人记得的话麻烦在评论区贴一下资料。
总而言之,这个问题完全依赖于CA的安全措施做得够不够周到。而CA毕竟也只是一个商业机构,不是什么科技领先人类文明三五百年的神奇仙境,该出安全问题还是照样出安全问题,该屈服于强权还是屈服于强权,不要对它们盲目信任。
我记得斯诺登泄露过NSA如何窃听Yahoo和Google的网路流量来著,刚才翻出来仔细看了一眼,发现NSA玩得高端多了,是直接在CDN里面做手脚,根本不需要CA的配合,中印两国在这方面还是嫩了点啊。
NSA infiltrates links to Yahoo, Google data centers worldwide, Snowden documents say?www.washingtonpost.comNSA的手段就跟原题不搭了,暂时先跳了吧,哪天看到了相关问题我再写一下。
有个更有意思的场景,而且更实际。用户A同时信任CA1和CA2, 其中CA1签了给B的证书。 但O成功冒充B让CA2签了一个域名,SID, OID等信息和B一样的证书,O唯独替换了公钥。此时A发起对B的连接和密钥交换请求,会发生什么呢。。。搜索一下CA根被移出火狐(Mozilla Firefox)的新闻吧。
CA当然有审核的责任,要不然凭什么收钱,大家又凭什么信任这个CA。
证书机构CA一般签发证书的简要流程如下:
1. 证书申请者向认证机构CA提交公钥、组织信息、个人信息(域名)等信息并申请认证。
2. CA 通过线上或线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法,是否拥有域名的所有权等
3. 信息如果审核通过,CA 会向申请者签发认证文件-证书。
其中证书生成则是认证机构对证书申请者提供的自身信息,公钥信息和其他附属信息进行签名(先对明文做消息摘要然后使用 CA 的私钥对信息摘要进行加密,密文即签名)然后附加上CA自己的信息来提供客户端验证。
即证书=公钥+申请者与颁发者信息+签名。
证书中所有提供的信息发生任何变化CA都将进行重新校验并对其进行重签名,既不存在只对用户提供公钥进行签名这种说法。
另外当攻击者O如果真的将自己的公钥成功上传CA并且还能够通过CA对你的域名所有权的验证,那么这时候签发的数字证书用户是没有任何办法判别是不是遭受攻击的。
CA作为PKI的核心,它存在的本身具有权威性和可靠性,任何用户默认都是对其可信的。所以即使客户端这一秒收到的证书下一秒发生变化,如果这个证书是CA签发的都是无法识别是否被攻击。
一般CA都会对用户进行严格的核实验证来证明你对这个域名或者你对这个主机具有实际的控制权,如下图所示。所以像题主所叙述的情况还是比较少见的。