【问题标题】:Android Data Encryption dilemmaAndroid数据加密困境
【发布时间】:2010-08-20 09:08:26
【问题描述】:

我正在创建一个应用程序,该应用程序使用用户每次登录应用程序时创建的密钥来加密数据。但是,有时会通过需要加密的 BroadcastReceiver 接收数据,但用户未登录,因此加密密钥不可用。 安全性非常重要,因此使用存储在代码中的密钥来加密数据直到用户下次登录是不可能的,就像将密钥存储在应用程序数据库中一样,尽管它位于应用程序沙箱中。 我一直在搜索 Android 文档并获得 API 的提示来解决这种情况,但还没有提出明确的解决方案。 有人知道这个问题的通常解决方案吗?我预计它会在软件开发中大量出现。

【问题讨论】:

  • BroadcastReceiver 从哪里获取数据?网络?

标签: android security encryption


【解决方案1】:

让我们看看...

设置:创建一个 RSA 密钥对。加密私钥。存储未加密的公钥。

收到广播:生成随机 AES-128 密钥/IV。使用 RSA 公钥加密密钥。使用密钥/iv 加密有效载荷。存储加密的密钥、iv 和加密的有效负载。

登录:解密私钥。使用私钥解密 AES 密钥。使用 AES 密钥解密负载。

因为这是我想到的第一个想法,所以我不能保证它的安全属性。

我也不确定您在寻找什么安全属性——您试图防御什么攻击?为什么攻击者不能直接拦截广播?你不担心它会在其他进程的内存中徘徊吗?

【讨论】:

    【解决方案2】:

    两个想法:

    • BroadcastReceiver 获取加密数据,通过存储的凭据登录并获取解密数据的密钥。
    • 你BR只是存储了加密数据并通知用户,所以用户登录获取解密数据。

    我不知道你的应用是做什么的,所以只是猜测可能的情况......

    【讨论】:

    • 收到的数据是未加密的,所以问题是在用户下次登录之前以安全的方式对其进行加密。
    • 啊,可以在用户登录之前存储纯数据吗?我的意思是,如果您发送纯数据,那么它就不是明智的数据......
    猜你喜欢
    • 2017-05-15
    • 2011-11-27
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多