存储证书锁定公钥的安全性如何?

问题描述:

,通常建议以存储证书钉住用于移动设备的公钥。在这个owasp article中也有类似的建议。虽然可以修改应用程序以篡改公钥本身。那么如何安全地存储用于证书锁定的公钥呢?存储证书锁定公钥的安全性如何?

你的主要问题是反对什么安全?

如果你的意思只是一般,好像它是安全存储的公钥,那么,它是。这就是为什么它被称为公钥。

如果你想确保免受东西MITM攻击,如可信CA签署证书它不应该有,那么就使用证书钉扎就足够了。只要证书是应用程序的一部分,基地OS做你的应用程序的签名验证,该证书并扩展到您的应用程序进行任何更改,应检测和应用程序不应该被允许运行。

如果您试图阻止最终用户嗅探HTTPS连接,那么可以,他可以用自己的证书代替证书,并嗅探他心中的内容。您可以通过比较证书的散列值,加密证书等来验证证书,但无法保证用户无法逆向工程您的应用程序。

+0

“如果你想从诸如可信CA签名证书这样的东西中抵御MiTM攻击,那么只需使用证书钉住就足够了,只要证书是你的应用程序的一部分,操作系统会对您的应用程序进行签名验证,应该检测到对证书进行的任何更改以及对应用程序的扩展,并允许应用程序运行。“你的意思是不应该被允许运行?另外,如果应用程序在被篡改后被正确地签名,那么操作系统将无法检测到它。对? – Salil 2015-04-03 16:26:31

+0

对不起,我没有意识到这个问题被标记为android/iOS。对于android,您显然需要root权限,但恶意应用程序可能会重新打包应用程序。用户会发现他何时试图更新您的应用程序,并且签名不匹配,导致更新失败。 – matthew5025 2015-04-04 08:42:53

揭示了公共密钥是安全的。这是公钥密码术的主要原则。

如果有人可以篡改android应用程序中的公钥,他们也可以篡改应用程序的其他部分(例如完全删除加密或将请求重定向到攻击者)。