Android Keystore, valor seguro de la clave

Estoy investigando currenlty usando el Keystore asegurado / mejorado introducido en Android 4.3.

Me gustaría almacenar una clave de cifrado dentro de este almacén de claves, esta clave se utiliza para cifrar un db sqllite y los valores contenidos en mis preferencias compartidas.

Cuando echo un vistazo a la muestra de KeyStore en el SDK veo lo siguiente:

public static final String ALIAS = "my_key" 

Si alguien pudiera descompilar mi código, sería capaz de ver el alias de texto claro (= la clave para recuperar la clave de cifrado del almacén de claves) y por lo tanto podrían obtener una referencia a mi clave de cifrado. ¿Cómo puedo administrar securly mi ALIAS? O estoy perdiendo el punto aquí?

El alias no es información sensible. Cada almacén de claves está asociado con una contraseña y cada clave tiene su propia contraseña (opcional). Esos son los valores que deben mantenerse seguros.

Sin la (s) contraseña (s), un atacante no puede leer su material clave a pesar de conocer el alias.

La siguiente respuesta es para 4.3+. Hubo grandes cambios en las clases de KeyStore y KeyChain en esta versión. Vea aquí para más información

Keystore acceso al Keystore está restringido por el UID: a su aplicación se le asigna un UID durante la instalación.

Esto es lo que impide que otras aplicaciones / procesos accedan a su par de claves / clave privada . El deamon keystore hará cumplir esto.

Esto puede requerir opcionalmente un pin de dispositivo para encriptación adicional. Consulte http://developer.android.com/reference/android/security/KeyPairGeneratorSpec.Builder.html#setEncryptionRequired ()

Todo el punto de usar el software / hardware keystore es superar la situación que usted describe – que es cualquier datos codificados en su aplicación se puede leer en la descompilación por lo que no sería seguro.

@Duncans respuesta hace que parezca que usted necesita para mantener una contraseña alrededor. Le aconsejo que genere un par de claves usando el keystore y luego use esto para cifrar una clave AES que puede usar para cifrar cualquier cosa que desee (mucho más rápido que usar una clave RSA)

Puede utilizar su clave privada de hardware / sortware keystore respaldada como keyStore.getEntry(alias, null); Y no pasar ningún tipo de contraseña.

Vea SecretKeyWrapper.java para un buen ejemplo de esto

  • As3 AIR for android - Contenido de la caja de herramientas de la aplicación ERROR
  • Seguridad de enviar extras de intenciones sensibles dentro de mi propia aplicación?
  • Requerir acceso cada vez que el usuario vuelve a la aplicación de Android
  • Verificar que Android apk no ha sido reempaquetado?
  • KeyStore getKey () devolviendo null en Android
  • Cómo agregar PBKDF2WithHmacSHA1 para android api 8 (Froyo)
  • Permitir que sólo mis aplicaciones Android ejecuten api de punto final en java
  • ¿Cómo puedo administrar las transacciones de facturación en la aplicación en un servidor externo de forma segura?
  • Cómo cifrar y descifrar archivos en Android?
  • Android Keystore Tipo ¿cuál debo elegir?
  • Lee la huella digital de la computadora RSA desde Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.