Android KeyStore restablece cuando la pantalla de bloqueo está establecida en "ninguno"

El siguiente problema se probó con Android versión 4.3 y un nexo 7

Cuando se utiliza el KeyStore con Android versión 4.3, la clave se eliminan después de establecer la pantalla de bloqueo a ninguno, no importa si la pantalla de bloqueo se estableció ninguno antes.

Para reproducir esto, puede usar la muestra android proporcionada
"Sdk \ samples \ android-18 \ security \ keystore \ BasicAndroidKeyStore".

Después de ejecutar la aplicación:

  • Producto en la lista
  • Signo (debe ser nulo)
  • Generar una clave
  • Signo (cantará algo)
  • Cerrar la aplicación
  • empezar de nuevo
  • Cantar (cantará algo)
  • Establezca el bloqueo de pantalla en "ninguno" (incluso si no lo era antes) (esto se encuentra en la configuración -> seguridad -> Seguridad de pantalla).
  • Volver a la aplicación y tratar de cantar de nuevo (se devolverá null)

Al examinar el código fuente de Android me enteré, que en la línea 639 el almacén de claves parecía ser reseted. Consulte: https://android.googlesource.com/platform/frameworks/base/+/52c489cd63cca0361f374f7cb392018fabfa8bcc/core/java/com/android/internal/widget/LockPatternUtils.java

¿Alguien sabe por qué sucede esto? Lo informé a la comunidad de Android https://code.google.com/p/android/issues/detail?id=60176

Editar: En la versión 4.2 de Android no se podía establecer la pantalla de bloqueo a ninguna si se guardaban algunas claves. Usted tuvo que borrar su credencial primero antes de hacerlo.

Esto parece ser un error en Android a partir de 4.3 en adelante. Hay un muy buen artículo sobre él aquí:

Seguridad de Android: el almacén de llaves olvidadizo

El autor dice que algunas personas afirman que esto es una característica en lugar de un error, pero no estoy de acuerdo. Si los datos cifrados están a punto de quedar ilegibles, la plataforma debe informar al menos al usuario, si no impedir que proceda por completo.

  • ¿Qué es el archivo de keystore de Android, y para qué se utiliza?
  • Keytool Signing Problem: Keystore fue manipulado, o la contraseña fue incorrecta
  • ¿Cómo puedo especificar la ubicación de debug keystore para Android ant debug builds?
  • ¿Dónde puedo encontrar la ubicación predeterminada para las librerías de claves android creadas por eclipse?
  • No puede encontrar keytool en un mac
  • Nombre de la unidad organizativa
  • Encuentra el hash clave para una aplicación firmada
  • Extraer certificado crudo X.509 de un firmado APK o JAR
  • ¿Cómo saber el uso del archivo .apk al almacén de claves para firmar?
  • Al construir la versión de apk usando android studio, obtengo un error "Keystore fue manipulado, o la contraseña era incorrecta"
  • KeyStore getEntry devuelve null después de cambiar la contraseña
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.