我正在创建一个应用程序,该应用程序使用每次用户登录应用程序时创建的密钥对数据进行加密。但是,有时会通过需要加密的BroadcastReceiver接收数据,但用户未登录,因此加密密钥不可用。 安全性非常重要,因此使用存储在代码中的密钥来加密数据直到用户下次登录是不可能的,就像在应用程序数据库中存储一个密钥一样,尽管它位于应用程序沙箱中。 我一直在搜索Android文档并获得API的提示来解决这种情况,但尚未提出明确的解决方案。 有谁知道这个问题的通常解决方案?我预计它会在软件开发中占据相当大的比例。
答案 0 :(得分:1)
让我们看看......
设置:创建RSA密钥对。加密私钥。存储未加密的公钥。
收到广播:生成随机AES-128密钥/ IV。使用RSA公钥加密密钥。使用密钥/ iv加密payoad。存储加密密钥,iv和加密的有效负载。
登录:解密私钥。使用私钥解密AES密钥。使用AES密钥解密有效负载。
由于这是我想到的第一个想法,我无法保证其安全属性。
我也不确定您正在寻找什么样的安全属性 - 您试图防御哪些攻击?为什么攻击者不能直接拦截广播?难道你不担心它在其他进程的记忆中挥之不去吗?
答案 1 :(得分:0)
两个想法:
我不知道你的应用程序做了什么,所以它只是猜测可能会发生什么......