Estamos desarrollando una aplicación iOS que permite a los usuarios almacenar / modificar la Información de salud protegida (PHI) y la aplicación debe permitir que los usuarios lo hagan sin una conexión a Internet para una gran parte del proceso. Tendremos que cifrar los datos, pero estamos teniendo dificultades para encontrar una solución sobre cómo hacerlo correctamente, ya que no queremos almacenar la clave en el código y aún sería necesario poder acceder a los datos sin una conexión a un servidor.
Nuestra idea de trabajo es cifrar los datos con la contraseña del usuario (que no se almacenaría en el dispositivo) pero nos encontramos con un problema en el que otros usuarios pueden necesitar modificar / acceder a esos datos en ese dispositivo a través de su propio inicio de sesión. (En el caso de que se rompa un iPad)
Las ideas que hemos intentado resolver pero que no parecen ser seguras son:
: almacenar una clave estática en código
- Almacenar una clave dinámica dada por el servidor en una base de datos sql local
- Almacenar la clave dinámica dada por el servidor en el llavero de iOS
Estábamos considerando que ambos usuarios iniciaran sesión tras la recuperación de datos y los cifraran con ambas contraseñas, pero nos encontramos con problemas relacionados con el usuario en los que los datos podrían bloquearse si un usuario no está de servicio o no está cerca.
Pregunta: ¿Cómo podemos proteger adecuadamente la PHI en iOS para que puedan acceder a ella los usuarios que pueden acceder a ella, potencialmente sin conexión, y no restringen los datos para que puedan verlos? solo una persona, preferiblemente sin almacenar inicios de sesión (ya que no queremos que se almacenen las credenciales de usuario)
Seguimiento: Si esto no es algo factible, ¿cuál sería el mejor curso de acción para satisfacer la mayoría de las necesidades mencionadas anteriormente?
Editar: Aclaración
La autenticación se lleva a cabo originalmente cuando se bajan / envían datos y debemos cifrar los datos que se bajan y mantenerlos accesibles para los usuarios previamente autenticados sin almacenar la clave.