Tienes los instintos correctos. Todo lo que se encuentra en la tarjeta SD es legible para todas las aplicaciones, por lo que la mejor solución es cifrar el archivo antes de almacenarlo en la tarjeta SD.
Supongo que está preguntando desde la perspectiva de un desarrollador de aplicaciones, y desea saber cómo implementar esta protección en su aplicación. Si es así, un enfoque simple es cifrar usando el modo AES-CBC (con un IV aleatorio), y luego tomar el texto cifrado resultante y agregarle un código de autenticación de mensaje utilizando AES-CMAC. Necesitará dos claves AES separadas (y criptográficamente aleatorias). Puedes generar las claves con java.util.SecureRandom
. Luego puede almacenar las claves en el almacenamiento privado de la aplicación (no en la tarjeta SD). Esperemos que esto sea bastante sencillo de codificar.
Si está preguntando desde la perspectiva de un usuario, deberá proporcionar más información sobre lo que está tratando de lograr. Si solo desea almacenar el video en su teléfono celular, pero no verlo en su teléfono celular, entonces una posibilidad es cifrarlo usando GPG (o PGP) en su escritorio, y luego descargar el archivo cifrado en su teléfono celular; cuando más tarde quieras acceder, cópialo desde tu teléfono y descifra con GPG (o PGP). Por otro lado, si desea poder verlo en su teléfono celular, probablemente deba explicar qué quiere decir con "ninguna otra aplicación o usuario puede usarlo, fuera de la aplicación o en cualquier otro dispositivo" (por ejemplo, , ¿qué aplicación?).