Sto scrivendo un'applicazione App1
. Questa applicazione utilizza il database SQLite e ho intenzione di crittografarlo usando AES256 . Per la crittografia simmetrica ho bisogno di una chiave, che ho bisogno di memorizzare da qualche parte.
Da una domande simili ho alcune opzioni, ma nessuna è applicabile nel mio caso:
-
Collega la chiave di crittografia al tuo accesso amministratore
Non mi fido dell'utente attualmente loggato. Infatti, voglio nasconderlo a chiunque, ma
App1
. -
Collega la chiave di crittografia all'hardware.
App1
viene distribuito su migliaia di macchine, alcuni potrebbero non avere l'hardware necessario. -
Digitare la chiave di crittografia all'avvio, memorizzarla nella memoria.
L'utente non deve avere accesso alla chiave
App1
. -
Archivia la chiave su un altro server.
La macchina può essere offline, mentre
App1
è in esecuzione. -
Archivia la chiave altrove sullo stesso server.
Quindi può essere trovato.
-
Memorizza la chiave nel database.
Ho bisogno di proteggere il database, che è un po 'ricorsivo nel mio caso.
La soluzione possibile è quella di memorizzare la chiave utilizzando DPAPI di Windows , ma
-
DPAPI si concentra sulla protezione dei dati > per gli utenti <.
Considerando che ho bisogno di proteggere un'applicazione. Ho anche bisogno che
App1
abbia funzionato da diversi utenti sulla stessa macchina -
Posso aggiungere entropia secondaria, per limitare l'accesso dell'utente ai dati attualmente registrati.
Tuttavia, ho bisogno di memorizzare questi dati segreti sulla macchina. Come posso proteggerlo ... Sembra essere di nuovo ricorsivo.
Domanda: dove memorizzo in modo sicuro la chiave simmetrica specifica per l'applicazione?