【问题标题】:Is there a way to process sensitive data in memory securely on Android?有没有办法在 Android 上安全地处理内存中的敏感数据?
【发布时间】:2012-02-13 23:57:12
【问题描述】:

我正在处理一些内容,这些内容是我从 Android 中的文件中解密的,并且需要在应用程序的整个持续时间内保留在内存中。这是来自饼干的安全风险吗?如果是这样,Android 是否提供某种形式的敏感内容内存保护,类似于 Windows 的进程安全内存访问保护机制?

我不是在 Private 模式下通过 SharedPreferences 寻找存储空间,我需要一些不可篡改的内存区域。将数据存储在本机缓冲区中是一个好方法吗?我也意识到不可变的、垃圾收集的 String 对象对于存储这些数据可能是一个非常糟糕的主意,我目前正在使用 char[]。

【问题讨论】:

    标签: android security memory encryption


    【解决方案1】:

    这是来自破解者的安全风险吗?如果是这样,Android 是否提供某种形式的敏感内容内存保护,类似于 Windows 的进程安全内存访问保护机制?

    Android 进程的内存只能由该应用的用户帐户或超级用户访问。因此,任何拥有超级用户权限的人(Android 术语:root 设备用户)原则上都可以使用内核调试器访问您进程的内存。

    AFAIK,每个现代操作系统都在类似的模型下工作。因此,Android 在这方面的安全性不亚于 Windows、OS X、Linux 等。事实上,Android 正在使用实际的 Linux 进程安全性来实现自己的实现。

    请参阅Accessing any memory locations under Linux 2.6.x 了解更多信息。

    将数据存储在本机缓冲区中是个好方法吗?

    这不会有任何影响。

    【讨论】:

    • 我最终将存储保留为 char[],但使用简单的散列来隐藏内容。
    【解决方案2】:

    如果您拥有 root 凭据,那么 *nix 操作系统中就不会存在无法访问的内存。您可以设计它的唯一方法是使用 Web 服务或任何允许用户识别和状态管理的外部设备。 此外,混淆和隐藏是破解者获取东西的主要方式,如果你不隐藏东西,即非对称加密或 Web 服务,他们的工作量会更大。

    【讨论】:

      猜你喜欢
      • 2015-08-29
      • 1970-01-01
      • 1970-01-01
      • 2014-09-30
      • 2012-03-28
      • 1970-01-01
      • 2020-10-27
      • 2013-08-01
      • 1970-01-01
      相关资源
      最近更新 更多