WeMobileDev/article

请教下mmtls中关于公钥交换方式的问题

teaey opened this issue · 2 comments

teaey commented

注意到,由于签名算法中的公钥ECDSA_verify_key是一直公开的,攻击者没有办法阻止别人获取公钥,除非完全掐断发送方的通信。这样一来,中间人攻击就不存在了,因为Eve无法伪造签名。

这里没看懂,既然ECDSA的公钥是公开的,那么理论上中间人也可以拦截ECDSA的签名和公钥内容,然后再伪造

这里没看明白,请教下诸位!

公钥即是公开的,也是可以验证的,伪造出一个可以通过验证的证书难度很大。所以,拦截不是问题,伪造证书才是难点,同时也是安全的保障点。

@teaey ECDSA的公钥是公开的,所以客户端有很多渠道可以获得这个公钥,中间人没法把所有的渠道都拦截到,更何况在mmtls中svr的ECDSA的公钥是内置在客户端中的,除非中间人修改了客户端安装包(这属于安装包完整性保护的范畴,不属于协议安全范畴),这个问题是属于证书(公钥)伪造的问题。 另外,普通的做法是:在PKI体系下,用于验证签名的公钥被称为证书,但是公钥不完全等价于证书,PKI体系下的证书解决了伪造svr证书的问题,它使用证书链的方式一级一级验证,只要保证根CA可信,所有由根CA及其签署的CA签发下来的证书都是可信的