Android 安卓安全:应用程序私有数据的安全程度如何?

Android 安卓安全:应用程序私有数据的安全程度如何?,android,security,appdata,Android,Security,Appdata,我有一个应用程序,它将机密信息存储在应用程序的私有数据文件夹中的文件中 我想知道这样做有多安全 据我所知,在android设备上,其他应用程序无法访问该文件 假设: 设备没有根目录 锁屏上有密码保护 一个黑客偷了那个设备,他真的被迫得到那个文件 有什么样的技巧可以得到那个文件?我的意思是: 是否可以将设备根目录(在此场景中)然后获取该文件 黑客能否从设备中取出闪存芯片,然后使用任何工具进行分析。安卓是否进行了加密以防止这种情况发生 也许还有其他方法可以得到那个文件 是否有可能以某种方式完

我有一个应用程序,它将机密信息存储在应用程序的私有数据文件夹中的文件中

我想知道这样做有多安全

据我所知,在android设备上,其他应用程序无法访问该文件

假设:

  • 设备没有根目录
  • 锁屏上有密码保护
  • 一个黑客偷了那个设备,他真的被迫得到那个文件
有什么样的技巧可以得到那个文件?我的意思是:

  • 是否可以将设备根目录(在此场景中)然后获取该文件
  • 黑客能否从设备中取出闪存芯片,然后使用任何工具进行分析。安卓是否进行了加密以防止这种情况发生
  • 也许还有其他方法可以得到那个文件
是否有可能以某种方式完全保护该文件? 也许应用程序可以有一个自动启动服务来监视根目录状态。如果设备被根化,服务将立即删除该文件

谢谢大家!

是否可以将设备根目录(在此场景中)然后获取该文件

是的,假设:

  • 黑客可以暴力破解密码
  • 该设备通常是可根的(并非每个设备都有获得根的已知方法)
黑客能否从设备中取出闪存芯片,然后使用任何工具进行分析

从理论上讲,如果不从物理上破坏它,这是不容易做到的

安卓是否进行了加密以防止这种情况发生

Android提供全磁盘加密,在新的Android 5.0设备上默认启用。旧的安卓设备的全磁盘加密可能会被强制执行;安卓5.0在这方面似乎更强,但只有时间才能证明它是否也有缺陷

是否有可能以某种方式完全保护该文件

首先不要将文件放在设备上

或者,自己加密,使用用户已知的足够强的密码短语。你最终会找到一种比破解设备更可行的方法

也许应用程序可以有一个自动启动服务来监视根目录状态。如果设备被根化,服务将立即删除该文件

您的应用程序在某些情况下无法运行,部分原因是操作系统不一定在正常模式下运行

此外,即使您的应用程序正在运行,攻击者也会在通过锁屏后并在尝试设置根访问权限之前强制停止设置

而且,这假设您的应用程序知道所有可能的检测根访问的方法,这似乎不太可能


我的应用程序需要读写那个文件,所以从黑客的角度来看加密是无用的


仅当应用程序需要“读写该文件”,而用户不提供密码短语时。在这种情况下,您唯一的绝对防御是不拥有该文件。其他一切只会减慢攻击速度,但无法阻止它们。

在非根设备上,应用程序在进程和文件系统级别上被沙盒化。每个应用程序都有自己的文件系统空间,只有它可以访问。应用程序可以选择使文件世界读/写,但默认情况下不是这样。但是,正如一些评论和您的原始帖子中所指出的,如果设备是根设备,那么攻击者几乎可以访问文件系统中的任何位置的文件。安卓5.0通过启用完全强制的Linux SE策略缓解了这一问题,因此,如果利用特权系统进程,它将受到SE策略的限制

这就是说,最好的做法是假设一旦数据到达文件系统,如果不受保护,它就可以被读取。您可以利用javax加密包来加密文件数据。最好通过正确散列的密码(PBKDF2)对其进行保护,以便为文件创建密钥,而不是在应用程序中对其进行硬编码。有许多文章介绍了实现这一点的最佳方法


请注意,Android 5.0“加密文件系统”并不是这方面的故障保护。加密文件系统为您提供的是在设备通电时保护数据分区。用户提供的密码在启动时用于安装加密分区(就像在桌面操作系统加密卷上一样)。一旦安装,它看起来就像任何其他安装的文件系统一样。

大多数Android设备现在都在设置菜单中提供了加密手机数据的选项。在将文件保存到磁盘之前,您始终可以自己加密该文件。此外,如果手机是根用户,则不会阻止根用户访问他们想要的任何文件。写入文件时对其进行加密如何?:)新版本的android(5.0)可以加密文件系统,如果用户应用的话。对于其余的东西,一旦一个聪明人对机器有了物理访问,你就可以认为所有的东西都会丢失:你不能阻止系统根或任何东西……我的应用程序需要读写文件,所以从黑客的角度看加密是没有用的。如果我的应用程序可以读写文件,那么黑客“很容易”就能在应用程序中找到合适的代码,并使用该代码显示文件的内容。如果你在上问这个问题,你可能会得到更好的答案。简而言之:1)设备可以根目录(90%的Android设备都可以根目录),2)您的设备可以安装一个特殊工具,该工具可以从您的设备上拉出整个ROM(即Android固件),3)ROM可以像普通存档一样浏览,列出您的系统和拉出的ROM中的任何其他目录或信息,4)ROM中的APK可以使用专用工具进行拆卸-只需知道如何读取
baksmali
-low le