Quiero desarrollar una aplicación de banco móvil (Windows Phone, Android, iOS) que interactúe con un canal bancario.
La primera vez que el usuario abre la aplicación, comienza el proceso de intercambio de claves y, al final de este proceso, genera un SymmetricKey
a largo plazo que debe almacenar en el dispositivo móvil. Todas las solicitudes que se envían al servidor se cifran con esta clave. Si alguien puede robar el SymmetricKey
, él / ella puede secuestrar la sesión del usuario. De manera sencilla, puedo almacenar SymmetricKey
en formato de texto plano. otra solución es que defina una MasterKey en el Código (Hardcode) y cifre el SymmetricKey
con el MasterKey
. pero en esta solución existe exactamente un MasterKey
para varias instancias de aplicaciones que se instalan en diferentes dispositivos. Si alguien puede descompilar el código de la aplicación móvil y recuperar MasterKey
, él / ella puede recuperar SymmetricKey
Nuevamente, ¿cuál es la mejor solución para almacenar datos confidenciales en aplicaciones móviles?
Leí acerca de algún método que pertenece al sistema operativo móvil que garantiza que los datos se almacenan de forma segura, pero todos ellos necesitan establecer una cuenta de perfil configurada por el usuario (por ejemplo: Protect()
y Unprotect()
en Windows Phone que necesita una cuenta de Hotmail conjunto).
¿Puedo generar diferentes claves maestras por dispositivo diferente?