【问题标题】:Android KeyStore reset when lock screen is set to "none"当锁定屏幕设置为“无”时,Android KeyStore 会重置
【发布时间】:2013-09-21 22:19:13
【问题描述】:

以下问题是用android 4.3和nexus 7测试的

在Android 4.3版本使用KeyStore时,将锁屏设置为none后key被删除,之前是否设置了锁屏没有关系。

要重现这一点,您可以使用位于
下提供的 android 示例 “sdk\samples\android-18\security\keystore\BasicAndroidKeyStore”。

运行应用程序后:

  • 列表项
  • 符号(应为空)
  • 生成密钥
  • 签(会签)
  • 关闭应用程序
  • 重新开始
  • 签(会签)
  • 将屏幕锁定设置为“无”(即使之前没有)(可在设置 -> 安全 -> 屏幕安全下找到)。
  • 返回应用程序并再次尝试签名(将返回 null)

在检查 android 源代码时,我发现在第 639 行中,密钥库似乎已被重置。见:https://android.googlesource.com/platform/frameworks/base/+/52c489cd63cca0361f374f7cb392018fabfa8bcc/core/java/com/android/internal/widget/LockPatternUtils.java

有人知道为什么会这样吗?我向android社区报告了这个 https://code.google.com/p/android/issues/detail?id=60176

编辑: 在 android 版本 4.2 中,如果保存了某些键,则无法将锁定屏幕设置为无。在这样做之前,您必须先删除您的凭据。

【问题讨论】:

  • 如果为空,则有条件地重置密钥库。如果非空,我们只是切换键保护类型
  • 感谢您的回复。不幸的是,这并不能解决问题。在上述情况下,密钥库不是空的。我认为,isEmpty 返回 true 的问题是,keyStore.isEmpty() 是从 android 系统调用的,而 android 系统有一个不同于应用程序的 UID。
  • 有什么解决办法吗?

标签: android keystore android-keystore android-4.3-jelly-bean


【解决方案1】:

这似乎是 Android 4.3 以后的一个错误。这里有一篇非常好的文章:

Android Security: The Forgetful Keystore

作者说有些人声称这是一个功能而不是一个错误,但我不同意。如果加密数据即将变得不可读,平台至少应该通知用户,如果不能完全阻止他们继续进行。

【讨论】:

  • 在 Android 5.0 中已修复(更改)。
  • 有什么解决方法吗?我们应该停止在 Android 4.3 和 4.4 上使用 Keystore 吗?
猜你喜欢
  • 1970-01-01
  • 2014-07-20
  • 1970-01-01
  • 1970-01-01
  • 2014-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多