在最近与同事的讨论中,我们分析了让来自Verised,Comodo等已知CA的CA签名TLS证书的默认Android系统验证的含义。讨论集中在操作系统可能出现的问题上受到攻击(可能源于恶意软件或被入侵)并修改整个CA证书库以验证未由实际CA签名的证书。
一个可能的解决方案是在应用程序本身中实现证书验证,其中包含一个列表(理论上,考虑到应用程序开发人员知道他将使用哪些证书)应用程序,让应用程序进行验证。这将允许真正的验证,而不依赖于系统CA证书。
我仍然有点担心错误地实现这一点,让de app进行验证有多聪明?
答案 0 :(得分:1)
如果系统受到威胁,则运行时与受感染系统具有相同或更少权限的应用程序无法保存当天。基本上,您不仅需要自己实现TLS验证,还需要完整的TLS堆栈,因为系统上的加密库可能会更改,并为攻击者提供后门以获取纯文本。此外,您需要确保您的应用程序未被劫持,并且明文信息在加密过程之外被窃取,即在加密之前和解密之后。但是,如果攻击者完全破坏了系统,你无法阻止它。
在您自己实现相当复杂的TLS堆栈时,您可能更有可能引入新错误,从而使您的应用程序不仅在受损系统上不安全,而且在其他系统上也不安全。