有没有办法限制Android上的私钥可见性?

时间:2013-02-18 14:16:06

标签: android pki digital-certificate android-keystore

我正在开发和应用程序,需要验证最终用户创建的数据。

我知道我可以使用KeyChain API,但是我认为这个API对我们的应用程序来说是一个缺陷。 由于KeyChain要求用户访问证书并因此访问私钥,因此我们的应用程序可能被指控窃取身份和伪造数据。 我需要一些方法来使用用户私钥来验证这些数据,而无法“复制”私钥或发送到其他地方。

无论如何我能做到这一点吗?

我现在期待智能卡和usb令牌,但如果其他人可以分享实现经验以解决类似问题甚至建议某些事情,我会很高兴。

2 个答案:

答案 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;
    }
}*