【问题标题】:How to store modulus, public exponent and private exponent securely on Android?如何在 Android 上安全地存储模数、公共指数和私有指数?
【发布时间】:2016-08-21 09:25:18
【问题描述】:

我已经给出了模数、公共指数和私有指数,我需要将这些值安全地存储在 Android 上。我怎样才能做到这一点?

大多数示例都是在不获取 n,d,e 参数的情况下创建公钥和私钥。我已经给出了这些 n,e,d 值并希望安全地存储它们,然后使用这些值来创建我的 ICC 公钥证书并签署我的动态数据。

我怎样才能做到这一点?

【问题讨论】:

  • 您是否正在寻找最安全的方式在 android 上存储数据?
  • 是的,这个 ICC 公钥组件(私有、公共、模数)是创建生成 AC 响应所必需的,我应该将它们安全地存储在 Android 上。
  • @Phillip 然后回答了你的问题。您应该阅读 Android 4.3(API 级别 18)中引入的“Android Keystore System”。

标签: android security encryption public-key-encryption emv


【解决方案1】:

使用Keystore System。

setEntry() 允许您存储任何实现KeyStore.Entry 的对象。如果您需要存储不符合默认值的数据,您可以简单地实现自己的子类型。 (不过有 RSAPrivateCrtKey,您可以将其存储在 PrivateKeyEntry 中。)

【讨论】:

    【解决方案2】:

    Android 设备上唯一的安全存储可能是 Android Keystore System。

    密钥材料永远不会进入申请流程。

    和

    密钥材料可能绑定到安全硬件。

    (见http://developer.android.com/training/articles/keystore.html)

    它的问题是您可以在其中存储的内容受到限制。 KeyChain 类允许您存储私钥和证书链。同时,Keystore Provider 支持以下类型的条目:根据文档,PrivateKeyEntry、SecretKeyEntry、TrustedCertificateEntry。在实践中,尝试放置 SecretKeyEntry 的实例会导致异常。

    我建议在密钥库中放置两个条目。

    1. KeyStore.PrivateKeyEntry,您可以在给定 PrivateKey(使用 RSAPrivateKeySpec 结合 KeyFactory 从模数和私有指数生成)的情况下实例化它
    2. KeyStore.TrustedCertificateEntry 与您的自签名证书,您必须使用 java keytool 预先生成并在运行时从资产加载。根据定义,它不应该是秘密的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2013-11-22
      • 1970-01-01
      • 2023-03-26
      相关资源
      最近更新 更多