信任根证书就能看微信聊天内容?
煮酒论科技
2024-08-03 02:23:42
0

图片

有人说深信服能监控你的微信聊天内容,原理就是只要你的电脑信任了他们公司的数字证书,他就可以通过路由器网关监听到你的微信聊天内容,真的如此简单吗?

他们公司的产品我没用过,能不能窃听我从技术原理方面去分析。微信的聊天信息具体是加密的我不清楚,我们可以假设微信客户端与服务器之间通信采用了非对称加密算法。


首先,要搞清楚两个概念,认证加密


认证是确保用户的真实性,是通过CA证书确认的,这就现实中公安给你发身份证一样。互联网中,这个公就是颁发CA证书的,你申请的证书就包含有你的信息表明你是真实的某个人或某个组织,证书还包括一对密钥


加密就是对明文按某种方法加密成密文,只有真正的接受方才能解密。


非对称加密就是其中一种实现方法。非对称加密有一对密钥,钥匙是成对出现的,任何人都可以根据某种公开的算法生成一对密钥。

这一对密钥可以互为加解密。用其中一把密钥加密,另一把钥匙就可以解密。同样,用一把钥匙能解密,就会有另一把钥匙进行了加密。

一把密钥是公开的,不需要保密,叫公钥。另一把钥匙是不公开的叫做私钥,只有拥有者本人持有,需要安全保管,谨防泄露。


A向B发送加密信息的过程是这样的:

1、A获取B公开的公钥

2、A把信息用B的公钥进行加密,然后发送给B

3、B收到信息后用B的私钥进行解密


图片


如果A要表明自己是真实的A给B发的信息,A发送文件时可以进行签名:

1、A用自己的私钥对发送的文件进行加密,这就是对文件的签名

2、B收到信息后,用A给的公钥解密,如果是解密成功,那就证明A用了私钥加密的,钥只有他自己有,所以验证了他的签名,确实是他本人签发的,而不是冒充的A


图片



原理就是这么简单,是为什么会有说信任根证书微信聊天内容就能一览无余这个说法呢?有两种可能,一种是你用了假的公钥加密明文了。你误以为B的公钥是微信服务器的公钥。另一种可能就是B用户的私钥泄露了。私钥泄露这不在讨论范围,因为私钥压根就在AB各自电脑的本地中,没有进行网络传输,我们讨论默认是在本地环境安全的情况下进行。


微信用户A要跟微信用户B加密通信,那双方都要获取对方的公钥。实际通信情况,首先是微信用户A的微信客户端与微信的服务器通讯,然后微信服务器再把信息转发给微信用户B。可以简化为微信A客户端与微信服务器通信。如果微信客户端一开始就在客户端植入真实微信的公钥,那将不存在所谓的中间人攻击。


中间人攻击指的是,由于网络通信是不安全的,中间人在微信客户端与微信服务端传输彼此的公钥时进行拦截。中间人攻击者劫持你们之间的通信流量,他自己分别构造一个假的微信客户端和一个假的微信服务器端。


如之前提到的发CA证书的机构。他可以给自己发一个微信服务器的证书,声称自己就是真的微信服务器。如果微信客户端没有去验证证书的话,微信的客户端就会从中间人那获取到假微信的公钥,客户端用假的微信公钥对发送的内容进行加密。然后发给假微信服务器。攻击者用假微信的私钥,进行聊天内容的解密。之后再用劫持到真公钥对聊天内容加密,再传给真实的微信服务器,这样客户端跟服务器都误以为都是在跟真实的对方通信,真实情况是经过了中间人篡改后的数据。




真实情况微信应该不会这么傻吧,微信客户端不是浏览器,微信客户端完全可以只信任自己或某个机构颁发的证书。

所以,网友说的证书攻击前提是微信客户端不验证微信服务端的证书,互联网大厂国民级的应用应该不会这么做吧?

其次,微信客户端、服务器端本地都可生成一对密钥,用私钥加密数据保证数据的完整性,避免第三方篡改。


所以结论还是一样,加密后的微信聊天记录,想要在路由器端窃听解密聊天记录,只要微信开发人员不是白痴的前提下,难于登天。


还有说什么DNS劫持之类的,还是那句话,只要是微信客户端是安全的,它不是白痴到不给信息加密就发出去,就算被劫持了也只是登录不上去,不会有密码泄露的风险。


相关内容

热门资讯