Come usare "materiale chiave" in modo che più persone possano accedere a file protetti?

2

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à.

    
posta mmr 18.05.2012 - 19:32
fonte

2 risposte

2

Questi sono diversi livelli di sicurezza e hanno bisogno di soluzioni diverse:

  • Il file di crittografia garantisce che chiunque, senza la chiave corretta, possa rubarlo ma non leggerlo.
  • Avere un gruppo di utenti per accedere ad alcuni file con alcune credenziali è diverso.

Se un utente può accedere alla versione in chiaro di un file, non importa se quel file è stato mai crittografato come il sistema (e la crittografia dei file) è trasparente per l'utente. Quando accede, vede tutti i file a cui ha accesso e non saprà nemmeno se quei file sono crittografati o meno.

Un sistema linux può fornire tutto ciò che serve qui. Crea diversi utenti, persino impostali per accedere con il certificato, quindi permetti loro di accedere ai file con diritti utente / gruppo appropriati. Se un utente deve essere in grado di caricare file crittografati, creare una coppia di chiavi RSA e distribuire la chiave pubblica del server agli utenti. Con quella chiave possono crittografare un file e possono essere decodificati sul lato server.

    
risposta data 19.05.2012 - 00:54
fonte
1

Potrebbe sembrare un po 'fuori tema, ma ho partecipato a una conferenza aperta che spiega i fondamenti di un sistema che fornisce ciò di cui hai bisogno. Condividerò ciò che ho sentito.

C'erano diverse parti coinvolte:

Quindi diciamo che Bob vuole condividere un file per lui e Alice. Quello che fa è il seguente:

  • genera una chiave casuale, Kf ;
  • crittografa il file F con Kf una volta (viene utilizzata la crittografia simmetrica, ad esempio AES in modalità CBC o qualcosa di simile);
  • crittografa Kf con la propria chiave pubblica, la chiave pubblica di Alice e anche la chiave pubblica del deposito di chiavi;

Tutto ciò accade "offline", ad es. non c'è bisogno di contattare il key escrow o Alice. Ora Bob e Alice possono condividere lo stesso file decodificando Kf con le loro chiavi private. Se Bob viene licenziato, perde la sua password o le sue autorizzazioni devono essere revocate, l'escrow key viene inserito e cambia i record creati in precedenza (questo a volte può includere cambiare Kf e ricodificare il file).

    
risposta data 19.05.2012 - 08:35
fonte