我正在开发和应用程序,需要验证最终用户创建的数据。
我知道我可以使用KeyChain API,但是我认为这个API对我们的应用程序来说是一个缺陷。 由于KeyChain要求用户访问证书并因此访问私钥,因此我们的应用程序可能被指控窃取身份和伪造数据。 我需要一些方法来使用用户私钥来验证这些数据,而无法“复制”私钥或发送到其他地方。
无论如何我能做到这一点吗?
我现在期待智能卡和usb令牌,但如果其他人可以分享实现经验以解决类似问题甚至建议某些事情,我会很高兴。
答案 0 :(得分:2)
如果使用硬件密钥库实现私钥,KeyChain API将不允许复制私钥。不幸的是,只有安装了Android 4.1+的Google Nexus设备才能实现硬件密钥库。其他供应商也可能也可以使用标准的不安全软件实现。
我认为有专门的SD卡支持智能卡,但这些并不便宜,我不知道它们是否适用于所有电话。
同样在Android 4.1+中,您无法访问私钥。您只能获得一个可用作签名/解密/加密私钥的对象,但您没有获得实际密钥。在此处查看有关实施的更多详细信息:http://nelenkov.blogspot.de/2012/07/jelly-bean-hardware-backed-credential.html
答案 1 :(得分:0)
如果你将返回对象而不是访问权限,并使用私有变量如果两个类在同一个文件中。
private class test_A
{
private int num;
private test_A getObject()
{
return this;
}
}
private class test_B
{
private void test()
{
test_A __object__ = new test_A().getObject();
__object__.num = 3;
}
}*