Ricevo dati sensibili su una connessione HTTPS e devo archiviarli su disco, crittografati in modo che nessuno possa manometterli, ma per leggerli in seguito. Ogni utente nel sistema ha una password.
L'applicazione deve memorizzare le informazioni ricevute tramite HTTPS nel caso in cui non sia disponibile alcuna connessione Internet. Sincronizzazione una tantum e lettura di un file contenente le informazioni più importanti. Ovviamente, una sincronizzazione automatica avverrà quando è possibile stabilire una connessione. Le informazioni sono necessarie per garantire che l'utente abbia il permesso di compiere determinate azioni, quindi l'utente non dovrebbe essere in grado di manomettere il file .
Qual è il modo migliore per farlo?
1) Argomenti come questo , questo e questo suggeriscono di utilizzare una password e qualcosa come PBKDF2 per generare una chiave, che può essere usato per crittografare la chiave che crittografa i dati . Ho ragione nel capire questo?
2) In tal caso, la chiave che crittografa i dati dovrebbe anche essere derivata dalla password dell'utente? Per me questo sembra losco, per non dire altro.
3) Non ne so abbastanza del disassemblaggio, ma ho paura della possibilità che un avversario possa dirottare il file binario e manomettere i dati ricevuti dall'HTTPS, prima che venga crittografato. Si tratta di un rischio sostanziale? La crittografia deve essere eseguita sul server e, in caso affermativo, come cambia il protocollo?
Il prodotto funziona su OSX, Windows e probabilmente su Linux in futuro.