Quindi, supponiamo di avere un messaggio segreto che desidero crittografare e archiviare nel mio database, da cui un utente autenticato può recuperare, decodificare, leggere, aggiornare il messaggio.
EDIT: il problema che sto incontrando è questo: non ha senso usare la stessa password per l'autorizzazione e la decrittografia. Di solito, una password con hash viene memorizzata nel database per verificare l'utente. Ma se uso la password hash per crittografare il messaggio, allora tutto ciò che un hacker deve fare una volta che vede il database decrittografare il messaggio con la password hash
Da alcune ricerche StackOverflow (http://stackoverflow.com/questions/2388256/secure-encrypted-database-design?rq=1), ora correggimi se ho capito male, sembra che la soluzione sia per crittografare il messaggio segreto con chiavi pubbliche, decodificare il messaggio con chiavi private e quindi crittografare simmetricamente queste chiavi private con le passphrase dell'utente. Le chiavi private crittografate possono quindi essere archiviate nel database. Quindi, in sintesi, questo è il modo in cui funziona: l'utente fornisce una passphrase, che decodifica la chiave privata come archiviata nel database, che viene quindi utilizzata per decrittografare il messaggio segreto memorizzato nel database.
Ora, la mia domanda è questa: puoi usare la passphrase sia per l'autenticazione che per decifrare il messaggio? Non voglio che gli hacker siano in grado di indovinare le passphrase fino a quando la chiave privata non viene decifrata correttamente, quindi qualche autenticazione utente (cioè nome utente, password, archivio con password hash nel database) sarebbe buona. Tuttavia, l'idea di dover inserire sia una password per l'autenticazione che una passphrase per decifrare il messaggio sembra eccessiva.
Credo di poter fraintendere il post collegato, ma la mia ultima domanda è come posso strutturare il sistema di sicurezza in modo che il messaggio possa essere crittografato nel database (nel caso in cui qualcuno ottenga l'accesso non autorizzato al database) senza avere la password di una persona è la chiave per la decrittazione.