我问同样的问题:
对于android。
在Android中是否有与此处所示内容相同的概念:
我的特殊要求是保护文件免受root设备的攻击,并且只能通过应用程序和一定的生命周期使用它们。
由于
答案 0 :(得分:3)
我的特殊要求是保护文件免受root设备的侵害
根据定义,这是不可能的。
首先,拥有root设备的任何人都可以访问设备本身的任何位置。
其次,加密只能帮助用户保护来自第三方的数据。另一方面,您试图通过阻止用户访问其数据来攻击用户。您可以通过加密尝试执行此操作的唯一方法是让您成为唯一一个具有解密密钥的方法,并且由于该解密密钥必须位于设备上以便设备能够解密文件,因此任何用户都希望可以通过你的应用程序搜索,找到密钥,并自己解密文件。以这种方式加密文件的概念称为DRM,有两种类型的DRM:已经破解的DRM和没有人试图破解的麻烦。
如果您不希望用户访问此数据,请勿将其放在设备上。
答案 1 :(得分:1)
通过Mighter的答案并了解您对root手机的关注,看起来已经在这里进行了讨论。
http://source.android.com/tech/encryption/android_crypto_implementation.html
(我在这里找到的一个子链接http://source.android.com/tech/security/index.html)
最初我以为你可以使用ContentProvider并将数据存储在数据库中,我相信它可以受到保护,或者你至少可以对其中的数据进行加密。但我不确定那会回答你的问题。我希望android加密实现链接可以满足您的要求。虽然由于版本要求可能不切实际。
答案 2 :(得分:1)
两个注释:
一般来说,您的应用程序可能只能像操作系统一样安全。如果设备已植根,则操作系统不再安全。所以你的应用程序也不安全。例如,可能会调整操作系统:
第二个注意事项是,在某些时候,您需要以明文(未加密)的方式向第三方应用程序提供您的数据(文件)。一旦你这样做,他们就可以复制它,将它发送到某个服务器而你却无法做任何事情。因此,即使您在有限的时间内提供对这些文件的访问,它们仍然可以“泄漏”。
也就是说,你最简单的方法(正如Emile指出的那样)是使用ContentProvider,加密其中的数据,并在数据传递给第三方应用时解密数据。
更复杂的方法是使用DRM(http://developer.android.com/reference/android/drm/package-summary.html),以防第三方应用支持它。
答案 3 :(得分: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
答案 4 :(得分:0)
将任何类型的数据放到Android设备上没有任何安全措施。它们是开放式设备。如果您希望再次根据用户保护数据,则必须使用加密形式。并且取决于项目的敏感性,这可能甚至不起作用(除非您使用真正的高端加密,然后将消耗性能)。不要相信Android有敏感信息是我唯一能说的。