Android phonegap应用中的本地存储保护
我应该开发一个phonegap应用程序。我需要对服务器端的请求进行加密,然后解密。 HTTPS不是一个解决方案,因为我需要对请求进行签名以确保数据不是伪造的。我可以使用任何异步加密(应用程序将生成Android phonegap应用中的本地存储保护,android,ios,encryption,cordova,Android,Ios,Encryption,Cordova,我应该开发一个phonegap应用程序。我需要对服务器端的请求进行加密,然后解密。 HTTPS不是一个解决方案,因为我需要对请求进行签名以确保数据不是伪造的。我可以使用任何异步加密(应用程序将生成私钥/公钥密钥,并将公钥发送到服务器)。但这样我需要在设备上保留我的私钥 问题是:如何在设备上安全地保留私钥 我可以使用(加密我的本地SQLite DB)并将其放入我的phonegap应用程序中。很好,但这里我必须保留数据库的密钥:) 任何有权使用手机的人都可以获得此密钥。所以这里我有同样的问题:) 请
私钥/公钥
密钥,并将公钥发送到服务器)。但这样我需要在设备上保留我的私钥
问题是:如何在设备上安全地保留私钥
我可以使用(加密我的本地SQLite DB)并将其放入我的phonegap应用程序中。很好,但这里我必须保留数据库的密钥:)
任何有权使用手机的人都可以获得此密钥。所以这里我有同样的问题:)
请给我一些建议
谢谢
p、 默认情况下,PhoneGap本身不提供加密功能。基于iOs和Android(姜饼版本以上)的设备支持全磁盘加密。但PhoneGap/Cordova开发人员无法使用此功能 从wiki: PhoneGap通常仅限于平台的安全功能 它正在其上运行 指
对于一些基于JS的解决方案,请尝试一下您必须区分加密和身份验证 首先,我建议使用https加密您的消息并安全地传输它们 其次,我建议使用HMAC对消息进行身份验证。它基本上是这样工作的:
- 在编译时生成应用程序和服务器已知的秘密字符串。您将此秘密直接存储在应用程序的源代码中,这样它就不会被传输到服务器或从服务器传输出去。这可能是私钥/公钥方法的主要区别:您将秘密权限编译到应用程序中,而不是稍后将其写入用户可访问的存储中。“直接进入你的应用程序”是指Phonegap不是在你的HTML/JS文件中,而是在本机源代码中!如有必要,您必须将访问器连接到javascript
- 当用户首次启动应用程序时,在应用程序中设置用户id(=key;long,random!)。如果您想验证您的用户,您可能有某种登录/密码机制。(将用户id以及根据用户id和共享机密生成的HMAC存储在设备上。每次读取用户id时,请对照哈希检查以确保用户id未被伪造。)
/comment/1
或/user/1
发送相同的删除请求,则会有很大的不同我的一个解决方案是实现“PIN页面”,并在每次应用程序运行时显示它。所以PIN将是数据库的密钥。若用户输入错误的pin码3次,我将清除数据库。事实上,这不是一个解决方案,因为罪犯可以尝试从控制台绕过pin码屏幕打开数据库。哦…你考虑过使用HMAC进行身份验证吗?这就是AWS&Co使用的。据我所知,我在问题中描述了HMAC,不是吗?我在回答中更详细地描述了HMAC方法。建议在将私钥存储在db中之前,将私钥编译到你的应用程序中,并通过同步加密的方式对私钥进行加密。这可能就足够了。问题的关键是,根据文档,没有特定的解决方案。编辑了我的答案,并链接到crypt js链接。这很好,但与phonegap无关。。。您的回答中没有关于如何解决此问题的信息。我详细阐述了“HTTPS不是解决方案,因为我需要对请求进行签名以确保数据不是伪造的。”最后一段是关于如何在设备上安全存储密钥的。Phonegap只是HTML5和本地开发的混合体。因此,您有以下几种可能性:将其存储在HTML资产或本机代码中,或使用本机代码将其存储在密钥链中。
var db = window.sqlitePlugin.openDatabase({name: "DB", key: "secret1"});