我正在编写简单的脱机词典应用程序。所有数据都存储在SQLite数据库中。
如果我们假设数据库是加密的,则应用必须使用某种key
,才能访问它。此外,我们假设此应用程序是完整的offline
,并且不能访问任何远程服务器。
这意味着key
它将被存储在应用程序本身中。我试图找出很多将其隐藏key
在应用程序中的方法,但所有方法都有缺陷。
甚至可以将其key
隐式隐藏在应用程序本身中吗?
如果应用程序自动显示数据,则无法保护该数据。
您的应用程序必须将密钥存储在某个地方。无论您尝试对代码进行多大程度的混淆,仍然可以对其进行反编译(或仅执行经过混淆的部分,直到密钥出来)。
或以另一种方式看待它:隐藏密钥是一种加密形式。因此,现在您需要第二个密钥来加密/解密第一个密钥。(但是,由于混淆,“密钥”是程序结构,其安全性不如真实的加密算法。)
保护数据的唯一方法是通过在每次使用应用程序时要求用户输入密钥(作为密码或一些单独的令牌)来避免存储密钥。这意味着可以信任用户不要放弃密钥。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句