KeyStore Provider 中不需要加密的密钥是什么?
What is keys which do not require encryption in KeyStore Provider?
我想使用 Android KeyStore Provider(在 Android 6 及更高版本上)存储我的密钥。但是我不明白一件事:当用户更改锁屏设置时,密钥会被删除吗?
在更改列表中 Android 6 描述:
Keys which do not require encryption at rest will no longer be deleted
when secure lock screen is disabled or reset (for example, by the user
or a Device Administrator). Keys which require encryption at rest will
be deleted during these events.
但是不需要加密的密钥是什么?这是否意味着我应该在不安全地存储密钥(不加密)之间进行选择,或者当用户更改设置时它将被删除?
需要用户身份验证的密钥是使用 setAuthenticationRequired
on KeyGenParameterSpec
on API 23+:
生成的
KeyGenParameterSpec
.Builder(...)
.setUserAuthenticationRequired(requiresAuth)
...
.build()
并在 API 上的 KeyPairGeneratorSpec
上使用 setEncryptionRequired
19-22:
specBuilder = KeyPairGeneratorSpec.Builder(context)
if (requiresAuth) {
specBuilder.setEncryptionRequired()
}
我想使用 Android KeyStore Provider(在 Android 6 及更高版本上)存储我的密钥。但是我不明白一件事:当用户更改锁屏设置时,密钥会被删除吗?
在更改列表中 Android 6 描述:
Keys which do not require encryption at rest will no longer be deleted when secure lock screen is disabled or reset (for example, by the user or a Device Administrator). Keys which require encryption at rest will be deleted during these events.
但是不需要加密的密钥是什么?这是否意味着我应该在不安全地存储密钥(不加密)之间进行选择,或者当用户更改设置时它将被删除?
需要用户身份验证的密钥是使用 setAuthenticationRequired
on KeyGenParameterSpec
on API 23+:
KeyGenParameterSpec
.Builder(...)
.setUserAuthenticationRequired(requiresAuth)
...
.build()
并在 API 上的 KeyPairGeneratorSpec
上使用 setEncryptionRequired
19-22:
specBuilder = KeyPairGeneratorSpec.Builder(context)
if (requiresAuth) {
specBuilder.setEncryptionRequired()
}