Stiamo sviluppando un'app iOS che consente agli utenti di archiviare / modificare le informazioni sanitarie protette (PHI) e l'app deve consentire agli utenti di farlo senza una connessione Internet per ampie parti del processo. Dovremo crittografare i dati, ma stiamo avendo difficoltà a trovare una soluzione su come fare in modo corretto in quanto non vogliamo archiviare la chiave nel codice e i dati dovrebbero comunque essere accessibili senza una connessione a un server.
La nostra idea di lavoro è quella di crittografare i dati utilizzando la password dell'utente (che non verrebbe memorizzata sul dispositivo) ma ci imbattiamo in un problema in cui altri utenti potrebbero aver bisogno di modificare / accedere a quei dati su quel dispositivo tramite il proprio login. (Nel caso in cui si rompa un iPad)
Le idee che abbiamo cercato di elaborare ma non sembrano sicure sono:
- Memorizzazione di una chiave statica nel codice
- Memorizzazione di una chiave dinamica fornita dal server in un database sql locale
- Memorizzazione della chiave dinamica fornita dal server nel portachiavi iOS
Stavamo pensando di far accedere entrambi gli utenti al recupero dei dati e di crittografarli con entrambe le password, ma ci imbattiamo in problemi relativi agli utenti in cui i dati potrebbero essere bloccati se un utente non è in servizio o meno nelle vicinanze.
Domanda: Come possiamo proteggere correttamente PHI su iOS in modo che possa essere ancora accessibile da coloro a cui è consentito accedervi, potenzialmente offline, e non limita i dati a essere visualizzabili da solo una persona - preferibilmente senza memorizzare gli accessi (dato che non vogliamo memorizzare le credenziali dell'utente)
Follow-up: se questo non è fattibile, quale sarebbe la migliore linea di condotta da intraprendere per soddisfare la maggior parte delle esigenze di cui sopra?
Modifica: Chiarimento
L'autenticazione avviene in origine quando si estrae / inoltra i dati e abbiamo bisogno di crittografare i dati che vengono estratti mentre sono accessibili agli utenti autenticati in precedenza senza memorizzare la chiave.