Sto scrivendo un sistema di gestione della password collaborativo e ho domande relative alla memorizzazione di password crittografate. Essenzialmente, vorrei che diversi utenti potessero accedere e modificare un database.
Livello alto:
- L'utente esegue il client che richiede l'autenticazione nome utente / password (backend con AD / Samba / Radius / local).
- In caso di successo, all'utente viene richiesto di inserire una password per il codice di accesso condiviso . Questo dovrebbe essere noto a tutti gli utenti che hanno accesso.
- Il database crittografato viene inviato al client che lo decrittografa e lo visualizza all'utente autenticato.
Leggermente più dettagliato:
- All'inizializzazione del database, viene generata una chiave casuale e crittografata con la password del keyring leggibile. Questa chiave crittografata è memorizzata sul disco.
- Ogni voce nel database che contiene le password viene archiviata crittografata con la chiave originale.
- La password del portachiavi è quindi necessaria per decrittografare il resto delle password.
- La password del portachiavi può anche essere aggiornata senza ricodificare l'intero database. Tutto ciò che accade è decifrare la chiave con la password precedente e ricodificare la chiave con quella nuova.
Questo è tutto per niente? Questo è considerato un cattivo design? Il mio obiettivo è impedire a qualcuno di scaricare semplicemente il database se si ha accesso al server. L'ho trasmesso da un mio amico che, scherzando, ha detto "Sì, perché questo impedisce alle persone di rubare il database di Chrome". Quanto seriamente dovrei prenderlo?
Qualche raccomandazione per una corretta progettazione, algoritmi da usare, ecc.?