tasto SQLCipher e PRAGMA su iOS

1

Sono un po 'confuso su come SQLCipher gestisce la chiave PRAGMA fornita per crittografare il database SQLite

Per lo sfondo: Sto esaminando le opzioni per la crittografia dei dati delle applicazioni a riposo. Dalla ricerca che ho fatto, iOS ha una sicurezza abbastanza potente fino a il dispositivo è sbloccato, quindi è fondamentalmente un servizio gratuito per tutti. Quello che sto cercando di fare è garantire che, anche se il dispositivo è compromesso, renderà molto difficile per un utente malintenzionato accedere ai dati all'interno dell'applicazione. Per questo, abbiamo implementato una password per l'app e, dopo una certa quantità di tentativi errati, i dati dell'applicazione vengono cancellati. Tuttavia, la mia comprensione è che se un utente malintenzionato si impossessa di un dispositivo e lo sblocca, è in grado di scaricare tutti i dati del portachiavi e può vedere tutti i dati dell'applicazione memorizzati in testo in chiaro (dato che tutto viene decodificato una volta sbloccato il dispositivo) ).

Da una ricerca più approfondita, sembra che l'unica opzione possibile sarebbe utilizzare SQLCipher e crittografare il database utilizzato nell'applicazione. Capisco che per farlo, dobbiamo fornire una chiave PRAGMA (passphrase) a SQLCipher in modo che possa eseguirlo attraverso una funzione PBKDF2 e calcolare gli HMAC di pagina per ogni pagina che sta crittografando. Quindi, dalla passphrase, deriva una chiave.

La mia domanda è: passare la password dell'applicazione mentre la chiave PRAGMA del database pone qualche minaccia alla sicurezza? In tal caso, come posso minimizzare tale minaccia? La mia idea era di usare la password dell'applicazione per creare una chiave allungando e salendo la password (usando PBKDF2) e insieme ad altri dati (cioè l'UID del dispositivo o qualcosa di simile) per creare un HMAC che posso usare come passphrase per passare a SQLCipher.

L'obiettivo qui è cercare di evitare di archiviare qualsiasi informazione rivelatrice che un utente malintenzionato può utilizzare per decrittografare il database senza un minimo di lavoro da parte sua (ad es. evitare di memorizzare chiavi / password nel portachiavi per l'applicazione, facilmente intuibile) Tasto PRAGMA, ecc.). Se ci sono suggerimenti su come raggiungerlo, faccelo sapere.

Grazie in anticipo per qualsiasi aiuto tu possa fornire.

    
posta jrgonzalez 29.04.2016 - 16:20
fonte

0 risposte

Leggi altre domande sui tag