Para cada uno de los sistemas operativos que ha enumerado, debe aprovechar el almacenamiento seguro integrado del sistema operativo para las claves en lugar de intentar "rodar su propia" solución.
En general, no se considera una práctica recomendada utilizar su propio cifrado, ya que continuará teniendo que admitir y depurar su implementación, lo que puede tener vulnerabilidades imprevistas. En su lugar, es una buena práctica aprovechar las herramientas nativas a su disposición para un almacenamiento seguro.
Para iOS, este sería el llavero. Para Android, esto se conoce como el almacén de claves. Para Windows Phone 8.1+, esto se conoce como el "Bloqueo de credenciales".
Estos sistemas generalmente funcionan cifrando los datos privados en una pequeña base de datos en el dispositivo, y luego restringiendo el acceso a los mismos solo a las aplicaciones autorizadas. Esto hace que sea mucho más difícil obtener la clave privada del dispositivo sin enraizar / hacer jailbreak al dispositivo, etc.
También debe generar claves únicas para cada dispositivo que reciba estos archivos. Tener una cadena codificada en la aplicación (en lugar de en un archivo de configuración) es peligroso porque una vez que la clave está comprometida, todos los usuarios están comprometidos. Compruebe el uso correcto de SecureRandom o bibliotecas criptográficas similares para asegurarse de que está generando claves únicas, casi imposibles de descifrar.