我有一个Android应用程序,它维护一些机密数据(加密),我正在尝试处理在我的应用程序更新中维护此加密数据的情况。我希望我的应用程序的不同版本具有不同的加密密钥,我不希望应用程序的新版本包含每个先前版本的密钥。
我的想法是在应用程序安装上运行一些代码,这将允许重新加密这些数据,但我首先似乎没有提供任何方法在应用程序安装中执行应用程序代码。其次,我还没有看到新安装的应用程序版本在先前版本中执行代码。
这对我来说似乎不太合理,有人可以确认android不允许这个并解释原因吗?在解决方案方面,我必须对所有应用程序使用相同的密钥,或者让我的应用程序的新版本通过其他方式重建此数据...
[还有一些问题有些相关(链接如下),但这是一个不同的案例,答案并没有提供任何参考]
Is there a way to make my Android app run some custom code upon installation?
http://groups.google.com/group/android-framework/browse_thread/thread/0f1617d28e8ff05e
答案 0 :(得分:1)
我希望我的应用程序的不同版本具有不同的加密密钥,我不希望应用程序的新版本包含每个先前版本的密钥。
为什么呢?这不会提高您的安全性。您的加密密钥可以在相当短的时间内找到。唯一安全的加密密钥是用户头上的密钥,因为它至少需要橡胶软管或水桶来获取,这不能轻易实现自动化。
我的想法是在应用程序安装上运行一些代码,这将允许重新加密这些数据,但我首先似乎没有提供任何方法在应用程序安装中执行应用程序代码。
正确。我认为您可以通过广播Intent
通知应用程序更新,但绝对不会安装或删除。这是为了防止偷袭间谍软件等。
其次,我还没有看到新安装的应用程序版本在先前版本中执行代码。
当然不是。对于初学者来说,两个版本可能没有空间。其次,由于它们在同一个软件包中大部分都是相同的Java类,因此即使在同一个虚拟机中同时拥有这两个版本也没有好办法。
这对我来说似乎不太合理
欢迎您的意见。