什么是在KeyStore Provider中不需要加密的密钥?

时间:2018-06-27 11:05:07

标签: android encryption keystore

我想使用Android KeyStore Provider(在Android 6及更高版本上)存储我的密钥。但是我无法理解一件事:当用户更改锁定屏幕的设置时,按键是否会被删除?

在对Android 6的更改列表中所述:

  

不需要静态加密的密钥将不再被删除   当安全锁定屏幕被禁用或重置时(例如,由用户   或设备管理员)。需要静态加密的密钥将   在这些事件中被删除。

什么是不需要加密的密钥?难道我应该不安全地在存储密钥之间进行选择(不加密),否则在用户更改设置时会被删除?

1 个答案:

答案 0 :(得分:1)

使用API​​ 23+上setAuthenticationRequired上的KeyGenParameterSpec生成需要用户身份验证的密钥:

KeyGenParameterSpec
  .Builder(...)
  .setUserAuthenticationRequired(requiresAuth)
  ...
  .build()

并在API 19-22的setEncryptionRequired上使用KeyPairGeneratorSpec

specBuilder = KeyPairGeneratorSpec.Builder(context)
if (requiresAuth) {
  specBuilder.setEncryptionRequired()
}