2010-11-27 12 views
7

Estoy desarrollando una aplicación para iOS de atención médica. Me gustaría que los datos de mis usuarios se cifren, de modo que si se roban su iPhone, el ladrón no podrá acceder a su información de salud. El propietario legítimo DEBERÍA tener acceso a su información (tan diferente de this question).¿Cómo debo proteger una base de datos SQLite en iOS?

Estoy considerando usar SQLCipher para cifrar la base de datos completa y poner la contraseña de SQLCipher en Keychain.

¿Es esta una buena técnica?

Además, ¿entiendo correctamente que, dado que todo está en el dispositivo, un hacker determinado podrá entrar sin importar qué?

+0

posible duplicado de [Información segura contenida en iPhone SQLite DB] (http://stackoverflow.com/questions/3335364/secure-information-contained-on-iphone-sqlite-db) –

+0

Ver también [iPhone SQLite Password Field Cifrado] (http://stackoverflow.com/questions/3017581/iphone-sqlite-password-field-encryption) –

+0

Bueno, en realidad no es un duplicado de esa pregunta porque la información segura no es mía (el desarrollador de la aplicación) es Los usuarios. No estoy tratando de proteger mi IP de la competencia, estoy tratando de proteger la información de salud del usuario de ladrones o personas que fisgonean en la copia de seguridad del iphone. – Ford

Respuesta

2

Creo que su solución hace sens. Proporciona una seguridad bastante buena y hace que su aplicación sea fácil de usar.

Lo principal que está haciendo con el llavero es que las copias de seguridad del usuario están aseguradas porque el contenido del llavero no está respaldado con el iphone. (Pero supongo que ya lo sabes)

Pero esto es una gran ventaja además de que el hacker potencial tendrá que obtener acceso físico al iPhone. Además, si el iPhone está bloqueado por un pin, es probable que la única manera rápida de obtener los datos es acceder físicamente a la memoria flash del dispositivo, lo cual no es lo más fácil de hacer.

Para ser sincero, no creo que los usuarios usen su aplicación si los fuerza a ingresar contraseñas largas. Y si les permites usar su contraseña, los piratas informáticos podrán romper el cifrado de la base de datos utilizando el ataque de diccionario.

+0

¿cómo puedo hacer con esto .. – Jitendra

4

Objetivo para el cifrado de dos factores: debe encriptar el DB como se describe, pero requiere que el usuario ingrese una contraseña cada vez que inicie la aplicación. La clave del DB sería un hash de la contraseña, salado con un nonce. Guarde la contraseña sal en el llavero.

Un pirata informático determinado podría llegar a la base de datos cifrada de SQLite a través del acceso al sistema de archivos. Si fueran capaces de romper el cifrado del llavero, podrían crackear fácilmente la base de datos, pero al requerir una contraseña (o frase de contraseña) del usuario, ayuda a combatir ese ataque.

Cuestiones relacionadas