Non sono sicuro che questa sia la SE giusta per porre questa domanda, ma sembra che abbia un database di file che deve essere crittografato in modo tale che più persone con password / accessi diversi a questo sistema remoto possano accedere al stessi file senza inserire una seconda serie di credenziali.
In particolare, devo essere in grado di supportare:
- più utenti che accedono alla versione "in chiaro" di un singolo file che è stato crittografato una volta
- revoca dei diritti di un singolo utente (se vengono licenziati, ecc.)
- consente a un utente che ha dimenticato la propria password di ottenere una nuova password (ad es. reset della password)
- idealmente, consente la ricerca / l'ordinamento remoto di tali file crittografati riducendo al minimo la possibilità per un utente malintenzionato di intercettare le credenziali.
La mia conoscenza della sicurezza è teoricamente nella migliore delle ipotesi; Ho eseguito alcune codifiche di dongle (ben sapendo che i cracker distruggeranno la sicurezza con un tempo sufficiente), ma questo tipo di sistema distribuito è un po 'oltre me.
La mia idea attuale è:
- ha un file di certificato che serve per decodificare i file crittografati in remoto. Questo certificato è crittografato dal nome utente / password dell'utente. Gli utenti di
- accedono da remoto prima di provare a decrittografare il certificato, quindi se non riescono ad accedere (cioè non lavorano più lì, qualunque cosa), non possono ottenere il certificato. Questo è estremamente debole, dal momento che dovrebbero essere in grado di decodificare il certificato in ogni caso se sono esperti.
- per la ricerca / l'ordinamento remoto di questi file, eseguire la preselezione dell'intervallo di date dei file. Questa tecnica è preziosa solo perché non ci aspettiamo più di 5-10 aggiunte al database per utente al giorno (e anche questo è ridicolmente prolifico), quindi ricevere le voci degli ultimi tre giorni, tre settimane, ecc., Supporta il nostro più atteso caso d'uso. Quindi decrittografia / ricerca / ordinamento di questi file può essere fatto localmente.
- per le riassegnazioni delle password, devono ottenere un altro certificato crittografato con il nuovo nome utente / password. Ciò significa che qualcun altro sul sito (l'amministratore o chiunque) deve avere accesso a una versione in chiaro del certificato per fornire all'utente un nuovo certificato, il che significa che le nuove password devono essere assegnate da un amministratore. Con cui sto bene.
Questo approccio è negativo per alcuni motivi:
- gli utenti esperti possono decifrare il loro vecchio certificato utilizzando le loro credenziali e la conoscenza della routine di crittografia / decrittografia. Questo non è un grosso problema, perché non possono comunque accedere ai dati remoti, dato che i loro accessi falliranno.
- la ricerca / selezione remota sarà dolorosa.
- se tutti gli utenti del sito perdono la loro password, perdono tutti i loro dati. Tendo a pensare che se i clienti vogliono questo livello di sicurezza, vogliono anche questo tipo di conseguenza.
Quindi chiedo a questa community: questo approccio sembra fattibile? Esiste un pacchetto o un gruppo di utilità che dovrei considerare per questo (o qualche altro approccio più avanzato)?
Per essere chiari, questo sistema memorizzerà i dati crittografati da remoto e l'utente accederà a tali dati. Posso rendere il client utente su qualsiasi sistema, ma l'idea è che sarà un programma che forniamo all'utente per accedere ai dati remoti. Il server non dovrebbe mai avere dati di testo in chiaro.
Quindi, se l'utente è su Windows, avrà un client, un certificato e le credenziali di accesso. Il certificato verrà crittografato con tali credenziali, in modo che possa essere decodificato e utilizzato per leggere i dati da questo sistema remoto. Non posso cambiare il sistema operativo che l'utente avrà.