6

我在这里问同样的问题:

对于安卓。

android 中是否有与此处介绍的等效概念:

我的特殊要求是保护文件免受 root 设备的影响,并且只能通过应用程序和一定的生命周期使它们可用。

谢谢

4

5 回答 5

3

我的特殊要求是保护文件免受根设备

根据定义,这是不可能的。

首先,任何拥有根设备的人都可以访问设备本身任何位置的每个文件。

其次,加密只能帮助用户保护他们的数据免受第三方的侵害。另一方面,您正试图通过阻止用户访问其数据来攻击用户。您可以尝试通过加密来做到这一点的唯一方法是让您成为唯一拥有解密密钥的人,并且由于该解密密钥必须在设备上才能使设备能够解密文件,因此任何希望可以翻阅您的应用程序,找到密钥并自行解密文件。以这种方式加密文件的概念称为 DRM,有两种类型的 DRM:一种已被破解,另一种尚未有人试图破解。

如果您不希望用户访问此数据,请不要将其放在他们的设备上

于 2012-08-25T15:02:20.697 回答
1

两个注意事项:

一般来说,您的应用程序只能与操作系统一样安全。如果设备已植根,则操作系统不再安全。所以你的应用程序也不安全。例如,可能会有操作系统的调整,这将:

  • 记录键盘输入
  • 颠覆任何调用(包括对加密 API 的调用)
  • 记录通过 HTTP(S) 提供的任何信息。

第二个注意事项是,在某些时候,您需要以明文(未加密)的形式向 3rd 方应用程序提供您的数据(文件)。一旦你这样做了,他们就可以复制它,将它发送到某个服务器,而你对此无能为力。因此,即使您在有限的时间内提供对这些文件的访问权限,它们仍然可能“泄漏”。


也就是说,您最简单的方法(正如 Emile 指出的那样)是使用 ContentProvider,在其中加密数据并在将数据交付给 3rd 方应用程序时解密数据。

如果 3rd 方应用程序支持它,一种具有更高复杂性的方法是使用 DRM (http://developer.android.com/reference/android/drm/package-summary.html)。

于 2012-08-23T18:31:00.247 回答
1

查看 Mighter 的答案并考虑到您对根植手机的担忧,这里似乎已经讨论过了。

http://source.android.com/tech/encryption/android_crypto_implementation.html

(我在这里某处找到的子链接http://source.android.com/tech/security/index.html

最初我认为您可以使用 ContentProvider 并将您的数据存储在数据库中,我相信它可以受到保护,或者您至少可以加密其中的数据。但是,我不确定这会回答您的问题。我希望 android 加密实现链接能满足您的要求。尽管由于版本要求可能不切实际。

于 2012-08-18T19:06:54.580 回答
0

Android 利用 Unix 权限来保护应用程序沙箱。每个应用程序都在唯一用户下运行,并且只有该用户有权对/data/data/your.package.name文件夹进行操作。但是,如果目标设备已植根,则您的应用数据可能会受到损害。

一些链接:

http://source.android.com/tech/security/index.html

http://www.amazon.co.uk/dp/1430240628

http://developer.android.com/guide/topics/security/permissions.html

于 2012-08-16T06:43:10.217 回答
0

将任何类型的数据放到 Android 设备上并不安全。它们被认为是开放的设备。如果您希望再次保护您的数据根用户,那么您将不得不使用一种加密形式。并且根据项目的敏感性,这甚至可能不起作用(除非您使用真正的高端加密,否则会降低性能)。不要相信带有敏感信息的 Android 是我唯一能说的。

于 2012-08-23T23:51:23.723 回答