2017-08-25 125 views
0

在最近与同事的讨论中,我们分析了让Android的默认Android系统验证从已知CA(如Verising,Comodo等)签署TLS证书的含义。关于操作系统可能受到危害的问题(可能植根于恶意软件或被黑客入侵)以及修改整个CA证书库以验证未由实际CA签名的证书。让Android中的应用程序执行HTTPs CA签名验证

对此的一个可能的建议解决方案是在应用程序本身中实现证书验证,在应用程序本身中有一个列表(理论上,考虑到应用程序开发人员知道他将使用哪些证书,该列表会更狭窄)根CA证书应用程序并让应用程序进行验证。这将允许真正的验证而不依赖于系统CA证书。

我仍然有点担心错误地实现这一点,让de app做验证有多聪明?

回答

1

如果系统遭到破坏,运行的应用程序的权限与受损系统相同或更低,则无法保存当天。本质上,您不仅需要自己完成TLS验证,还需要完整的TLS堆栈,因为加密库可能会在系统上进行更改,并为攻击者提供后门以获取纯文本。此外,您需要确保您的应用程序未被劫持,并且纯文本信息在加密过程之外(即加密之前和解密之后)被盗。但是,如果攻击者已经完全损害了系统,那么你无法阻止这一点。

这可能是更多的方式可能引入新的bug,同时落实自己的相当复杂的TLS堆栈,从而使您的应用程序不仅不安全的对受损系统,而且在其他人。

+0

是的,我也结束了对此的结论。我考虑过的另一个选择是使用Android SSLSocketFactory并在那里添加已知的CA根证书(将证书嵌入应用程序的二进制文件中)。 – Larcho

相关问题