如何在Android设备中存储密钥,只能使用密钥,而不是检索密钥。例如:我从应用程序向此“安全存储”导入私有/生成RSA密钥对或对称密钥。现在,NOBODY应该能够检索密钥,甚至是原始应用程序。 (密钥的非秘密部分 - RSA密钥对的公钥 - 但不是对称密钥的一部分 - 仍然应该是可检索的,特别是如果密钥是在安全存储中生成的)
密钥库现在应该充当黑盒子,提供加密数据的输入和解密数据的输出,例如,我提供我想要解密的加密值,并获取解密的值。
如果这是在Android设备的硬件安全芯片中实现的,那就是一个很大的优势,就像智能卡芯片一样,它具有防篡改功能,即使设备已经植根,也可以保证密钥安全。克隆
任何有Android手机的想法,有这样的防篡改芯片吗? 关于如何使用这种存储的任何想法?
找到一个类似的问题:Android Secure Storage但这不能回答我的问题。
答案 0 :(得分:6)
我会回答这个问题但是有所保留。
https://developer.android.com/training/articles/keystore.html
“密钥材料可能绑定到Android设备的安全硬件(例如,可信执行环境(TEE),安全元素(SE))。当为密钥启用此功能时,其密钥材料为从未暴露在安全硬件之外。“
因此,您为密钥启用了该功能。然而,
“如果Android操作系统受到攻击或攻击者可以读取设备的内部存储空间,攻击者可能可以使用Android设备上任何应用的Android Keystore密钥,但不会从装置“。
这是因为Android允许使用密钥而没有本质上不安全的秘密。因此我的预订。
用安全芯片回答安卓芯片我会对搜索说。 似乎TEE soc已经存在了一段时间。
秘密:[______________]
答案 1 :(得分:4)
了解在Android上获取安全存储所需的操作:
您需要购买一张符合ASSD规范(Advanced Security SD)的Secure MicroSD卡。 这是一个包含安全元素的MicroSD卡,通常是PKI解决方案,您可以在卡上生成私钥,因此无法提取私钥,但可以提取公钥并使用它来加密只有MicroSD卡可以解密。
两个例子是CertGate MicroSD(可作为消费者版本,名为“SmartCard-HSM Android”)和消费者版本中不再提供的一种,是G& D移动安全卡。
这使得它成为一个安全的存储设备,不会被根电话攻击,并且根据定义不能复制,也不可能。 如果你正确点击,唯一的方法是使用公钥强制私钥作为验证。但是如果你使用RSA-2048,那在技术上也是不可能的。
原因是手机制造商似乎将内置的手机安全元素锁定到制造商认可的应用程序,因此您无法任意使用它。唯一的方法是以MicroSD卡的形式向手机添加安全元素。
(此答案仅适用于5.0之前的Android版本)
答案 2 :(得分:0)
您可以查看CertStore
或KeyStore
,但我不知道这些是如何在Android上实施的。我做了一些搜索,但找不到任何有希望的例子,实际上在Android-Security-Discussions小组中发现了post,表明这可能甚至不适用于Android。
答案 3 :(得分:-1)
你问的是不可能的。具有越狱设备的用户可以比您更多地控制设备。没有地方可以隐藏任何东西,而且永远不会有。你要找的是“(in)Security Though Obscurity”。