有没有办法在Android上安全地处理内存中的敏感数据?

时间:2012-02-13 13:23:11

标签: android security memory encryption

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

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

2 个答案:

答案 0 :(得分:5)

  

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

Android进程的内存只能由该应用的用户帐户或超级用户访问。因此,具有超级用户权限的任何人(在Android术语中:rooted device users)原则上可以使用内核调试器访问进程的内存。

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

有关详情,请参阅Accessing any memory locations under Linux 2.6.x

  

将数据存储在本机缓冲区中是一条好路线吗?

这没有任何影响。

答案 1 :(得分:2)

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