studio encriptar encriptado deshacer desencriptar descifrar como cifrar celular archivos alcatel java android security encryption keystore

java - encriptado - encriptar archivos android



¿Cómo almacenar de forma segura las claves de cifrado en Android? (4)

A partir de sus comentarios, debe cifrar los datos mediante una clave local para las versiones actuales de Android y las antiguas.

Android Keystore está diseñado para generar y proteger sus claves. Pero no está disponible para el nivel de API inferior a 18 y tiene algunas limitaciones hasta el nivel de API 23.

Necesitará una clave de cifrado simétrica aleatoria, por ejemplo AES. La clave AES se utiliza para cifrar y descifrar sus datos. Voy a resumir sus opciones para generarlo y almacenarlo de manera segura según el nivel de API de Android.

  • Nivel de API <18: Android Keystore no presente . Solicite una contraseña al usuario, obtenga una clave de cifrado a partir de la contraseña. El inconveniente es que debe solicitar la contraseña cuando se inicie la aplicación. La clave de cifrado no se almacena en el dispositivo. Se calcula cada vez que la aplicación se inicia con la contraseña.

  • Nivel de API> = 18 <23: Android Keystore disponible sin soporte de AES . Genere una clave AES aleatoria utilizando el proveedor criptográfico predeterminado (no utilizando AndroidKeystore). Genere un par de claves RSA en el almacén de claves de Android y cifre la clave AES utilizando la clave pública RSA. Almacene la clave AES cifrada en Android SharedPreferences. Cuando se inicie la aplicación, descifre la clave AES utilizando la clave privada RSA

  • Nivel de API> = 23: Android Keystore disponible con soporte AES . Genera una clave AES aleatoria usando el almacén de claves de Android. Puedes usarlo directamente.

Para cifrar puede usar el AES/CBC/PKCS7Padding . También requiere un vector de inicialización aleatorio (IV) para cifrar sus datos, pero puede ser público.

Alternativas:

  • Nivel API> 14: llavero de Android : KeyChain es un almacenamiento de credenciales para todo el sistema. Puede instalar certificados con claves privadas que pueden ser utilizadas por las aplicaciones. Use una clave preinstalada para cifrar / descifrar su clave AES como se muestra en el segundo caso anterior.

  • Ficha externa : las claves protegidas no se almacenan en el dispositivo. Puede usar un token externo que contenga un par de claves privada / pública que le permita cifrar la clave AES. El token se puede acceder mediante bluetooth o NFC.

¿Quiero saber cómo almacenar de forma segura la clave de cifrado en Android? ¿Cuál es el mejor escenario para proteger el cifrado y las claves secretas?


No hay forma de guardar de forma segura sus claves de API privadas en el código. Pero puedes usar NDK para guardar de forma segura las claves privadas. No es trivial obtener la clave de NDK. Ejemplo de clave de clave con NDK


No puede colocar la clave de cifrado dentro de su archivo apk. Es posible que desee mantenerlo en un servidor remoto y descifrar utilizando el servidor. O puede hacer que sea difícil para los demás codificando la clave y guardándola en lugares no obvios. Pero no hay una solución a prueba de balas para esto.