如何在Android KeyStore中生成KeyPair,受自定义密码保护

时间:2016-11-11 12:58:49

标签: android keystore key-pair android-fingerprint-api

我有app使用指纹和4位数针(可以由用户在应用程序设置中设置,这不是系统管脚/模式/密码)授权。

使用指纹一切都很好,我的针有问题。

我想做的是:

  1. 让用户从应用程序设置中设置PIN
  2. 在密钥库中为输入引脚保护的某些别名生成密钥对(以便在没有此引脚的情况下无法访问私钥)
  3. 将公钥发送到服务器以供将来签名验证
  4. 从服务器获取用户令牌并将其存储在本地存储中
  5. 然后在授权期间:

    1. 请求用户输入图钉
    2. 按输入的密钥检索私钥
    3. 从本地存储中检索令牌
    4. 使用步骤6中的私钥对令牌进行签名
    5. 将其发送到带有签名数据的服务器
    6. 验证服务器上的签名以及是否有效,为用户打开会话。
    7. 我的问题是:如何生成受用户输入的PIN保护的KeyPair

      P.S。对于fingerprint,此逻辑由以下处理:

      KeyGenParameterSpec.Builder(KEY_NAME, KeyProperties.PURPOSE_SIGN).setUserAuthenticationRequired(true)
      

1 个答案:

答案 0 :(得分:0)

我建议您尝试使用这篇帖子Use the Android KeyStore to securely store arbitrary strings

这篇文章已经涵盖了

  1. 在设备上生成,安全存储和检索加密密钥。

  2. 加密任意数据并将其保存在设备上。

  3. 访问并解密数据以供后续使用。

  4. 我希望它会有所帮助。