我正试图决定最好的方法,以公开加密的内容存储在手机上第三方应用程序。内容是敏感的,需要保护,所以只有特定的应用程序才能访问它。我正在研究的方法是IPC和内容提供商。下面是我认为对我的情况来说是正反两方面的一些东西。
IPC -Pro的
。
IPC - Con's
要实现比内容Provider
内容提供商-Pro的
通过提供程序定义权限保护访问的容易implement
:
内容提供商-Con的
为了确保访问安全,内容提供商的密钥签名必须与第三方应用程序共享,而第三方应用程序在返回的结果类型中不具有ideal.
在性能和电池方面有什么重大差异吗?
可以异步执行吗?
对清单还有其他意见/建议吗?
发布于 2011-06-30 12:54:45
易于通过提供程序定义权限保护访问: protectionLevel=signature
只有当您是唯一使用内容提供商的公司时,这才有效。
为了确保访问安全,内容提供商的密钥签名必须与第三方应用程序共享,这并不理想。
我认为这更像是“可能符合”精神错乱“的医学定义”。您的第三方将能够修改您的“安全”数据,伪造由您发布的应用程序,将您的签名密钥泄露给恶意软件作者等等。
内容提供程序仅返回查询列的游标对象。
您可以在Cursor
-based内容提供程序API之外使用或替代基于文件的内容提供程序API。参见像openInputStream()
on ContentResolver
这样的方法。
在性能和电池方面有什么重大差异吗?
不是特别的。
可以异步执行吗?
两者都可以,不过就我个人而言,我觉得使用服务会更容易一些。
对清单还有其他意见或建议吗?
权限同样适用于服务和内容提供者,但我想再次强调,您永远不应该与第三方共享您的签名密钥,除非是在枪口下。
发布于 2017-04-23 07:12:51
我不能回答你的全部问题,但我可以解决密钥共享部分。您的APK与您的公钥/私钥对的公共部分签名。也许可以将您的公钥附加到另一个应用程序上,以伪装为您的应用程序,但需要有人拥有您的私钥才能通过使用您的公钥以您的名义上传应用程序。
“公钥证书,也称为数字证书或身份证书,包含公钥/私钥对的公钥,以及标识密钥所有者的其他元数据(例如,名称和位置)。证书的所有者持有相应的私钥。
在签署APK时,签名工具会将公钥证书附加到APK上.公钥证书充当一个“指纹”,它唯一地将APK与您和您相应的私钥关联起来。这有助于Android确保将来对APK的任何更新都是真实的,并且来自原作者。“
(来自https://developer.android.com/studio/publish/app-signing.html )
另外,这是我的理解,从它是如何措辞,其他应用程序共享他们的钥匙与你的应用程序,而不是相反的方式。如果您可以使用其他设置之一,则签名级别保护也是不必要的。根据https://developer.android.com/guide/topics/manifest/permission-element.html#plevel,您可以选择将应用程序设置为4种不同的保护级别之一。大多数应用程序都不包含敏感到需要设置“危险”设置的数据,因此,对于大多数应用程序来说,正常可能会正常工作。
另外,应用程序的签名(公钥)已经通过PackageManager类中可用的方法公开了。我仔细查看了Android开发人员的页面,并阅读了另一篇文章的非常有用的答案,以找到这一点。看起来,任何应用程序都可以通过这里描述的方法( Android content provider protection level & different keys by CommonsWare )获取应用程序的公钥。
https://stackoverflow.com/questions/6534187
复制相似问题