4

我正在开发一个处理敏感数据的应用程序。

该应用程序具有合理的安全模型,包括加密、SSL 和数据不会永久存储在设备上。

我正在尝试确定我的应用程序在 root 设备上运行是否“安全”,或者设备已 root 的事实将使应用程序更容易被利用/破解。所以问题是:处理敏感数据的应用程序应该在有根设备上运行吗?

我已经进行了研究,但我还没有看到任何关于 root 设备安全性的讨论。我知道检测有根设备的方法可能会被规避,因此不支持有根设备有什么意义?

4

2 回答 2

3

根设备上的应用程序最大的安全问题是:

  1. 用户可以直接访问您的内部数据
  2. 其他应用可以访问您应用的私人数据

你能做的最好的事情是:

  1. 以难以进行逆向工程的方式加密您的数据。如果有人在寻找您的数据,您应该假设他们也反编译了您的应用程序。因此,请在服务器上进行所有加密/解密,不要让您的算法等常识
  2. 如果您应该将数据存储在设备本身上,请将其设置为晦涩难懂。因此,如果您必须保存整数,请不要保存原始值。使用类似savedValue = ((((realValue*10)+1)/365*23)*50)+1;This 使黑客很难编辑您保存的值并获得所需的结果,尽管由于他/她会反编译您的 apk,因此这是一项非常基本的保护措施。
  3. 在设备上存储尽可能少的高风险数据。需要时,通过安全连接下载、显示和删除,甚至从 RAM 中删除。此外,将机密数据保留在内存中的时间尽可能短,因为可以读取 RAM 中的未加密数据。
  4. 确保您的加密技术不容易被暴力破解。由于其他应用程序也可以在有根设备上访问您的数据,因此您的数据有可能被发送到远程服务器进行解密,并且这样的服务器将比您的手机拥有更多的处理能力

这些只是我能想到的一些建议。我绝不是安全专家,您可能想就此事咨询其中一位专家。

于 2012-09-18T14:51:00.677 回答
1

Android root 设备中的应用程序是否受到威胁?是的,他们是。

即使在非 root 手机上,攻击者仍有可能捕获漏洞并进行 root 控制(GingerBreak 就是其中的一个案例)。因此,即使手机没有被用户植根,也没有 100% 的手机不会受到损害。

正如您所提到的,对 root 的检测不能完全可靠,因为它们可以被绕过。但是,如果您检测到手机已植根,则绝对应该阻止它。如果您没有检测到它,这并不意味着手机没有root,您仍然需要有安全机制来抵御root手机的攻击。

您可能需要应对几种类型的攻击:中间人攻击、键盘记录器、屏幕捕获、用户模式 ​​rootkit、内核模式 rootkit,...

The good news is that there are companies that make libraries for you to protect your apps against such type of attacks. They offer you solution to free yourself from headache as they will care abt it for you. V-Key is one of those, you can look at their website and consider if you want to buy their V-Guard product.

于 2012-09-18T15:50:09.370 回答