如何在Android上安全地存储模数、公共指数和私有指数?

10
我已经获得了模数、公共指数和私有指数,并需要在安卓设备上安全地存储这些值。我该如何实现?
许多示例是在不获取n、d、e参数的情况下创建公钥和私钥。但我已经获得了这些n、e、d值,并希望安全地存储它们,然后使用这些值创建我的ICC公钥证书,以及签署我的动态数据。
我该如何实现?

1
你正在寻找在安卓上存储数据的最安全方式吗? - Devrim
是的,这些ICC公钥组件(私钥、公钥、模数)对于创建生成AC响应是必要的,我应该在Android上安全地存储它们。 - Figen Güngör
@Phillip已经回答了你的问题。你应该阅读有关“Android Keystore System”的内容,这是在Android 4.3(API级别18)中引入的。 - Devrim
2个回答

6

2
可能,在Android设备上唯一安全的存储方式是Android Keystore系统。
引用:
密钥材料从未进入应用程序过程中。
并且
密钥材料可以绑定到安全硬件上。
(参见http://developer.android.com/training/articles/keystore.html
它的问题在于您受到存储内容的限制。KeyChain类允许您存储私钥和证书链。而Keystore提供程序支持以下类型的条目:PrivateKeyEntry,SecretKeyEntry,TrustedCertificateEntry,根据文档。实际上,尝试放置SecretKeyEntry的实例会导致异常。
我建议在密钥库中放置两个条目。
1. KeyStore.PrivateKeyEntry,您可以通过给定的PrivateKey(使用RSAPrivateKeySpec与KeyFactory结合生成的模数和私有指数)来实例化。 2. KeyStore.TrustedCertificateEntry与您的自签名证书,您需要使用java keytool预先生成,并从资产中加载。根据定义,它不应该是机密的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接