Si explica su aplicación con más detalle, podría encontrar que no estoy aquí, pero por ahora voy a hacer algunas suposiciones sobre su caso de uso y modelo de amenaza.
Según tengo entendido, tiene información delicada que desea sincronizar entre un dispositivo móvil con conectividad intermitente y algún servicio remoto. El servicio solo es accesible para usuarios autenticados, y los usuarios deben autenticarse en el dispositivo móvil para acceder a su copia de la información, incluso si está fuera de línea.
Si desea una seguridad sólida, cifre la copia del dispositivo móvil mediante cifrado basado en contraseña.
Puede utilizar la misma contraseña utilizada para autenticarse en el servicio, pero, en general, evitaría volver a utilizar la misma clave para diferentes propósitos. Un mejor enfoque sería tener una contraseña de cifrado maestra para el dispositivo móvil, que encripta la base de datos móvil, así como la "contraseña" utilizada para autenticar al usuario en el servicio de sincronización. Tenga en cuenta que la contraseña de autenticación del servicio podría ser una clave privada para la autenticación SSL client-cert o una contraseña basada en caracteres.
Deberá evaluar el riesgo de tener una sola contraseña, pero en muchos casos, creo que la conveniencia que esto ofrece al usuario, combinada con la seguridad proporcionada por una contraseña maestra sólida en lugar de dos débiles las contraseñas fáciles de recordar son un buen equilibrio.
Tenga en cuenta que este enfoque permitirá que los usuarios cuyo acceso de servicio haya sido revocado continúen accediendo a su copia local, pero sin nuevas actualizaciones. Podría incluir alguna noción de un límite de tiempo para ser aplicado por el software móvil, pero un atacante determinado podría eludir esto.
Si solo necesita la seguridad de los juguetes, su sugerencia de almacenar el hash correcto en el dispositivo móvil es adecuada, y realmente no importa si tiene la contraseña real o una alternativa, porque si usa el hash correcto, les debería llevar unos pocos miles de millones de años encontrar una colisión de contraseña que les permita acceder al servicio remoto.
Sin embargo, suponiendo que un atacante puede ver el hash de la contraseña, ¿qué impide que también miren los datos sincronizados? ¿Por qué tendrían que recuperar la contraseña? Encriptar la base de datos móvil evitaría esto.
¿Estás hablando de acceso permanente sin conexión o de volver a autenticar a alguien que ha estado en línea, ahora que ya no están? – Whisk
El objetivo final es que el cliente se conecte más adelante al servidor y sincronice sus datos/actualizaciones. – pc1oad1etter
Perdón por la confusión. No quise decir una contraseña "maestra" compartida por todos los usuarios, quise decir una contraseña que proteja la base de datos móvil del usuario y las credenciales de autenticación del servicio del usuario. Esto autentica efectivamente a los usuarios fuera de línea y en línea. – erickson