Accesso ai dati crittografati con più utenti

2

Sto creando un gestore di password autenticato da LDAP basato sul Web per uso interno.

Non vogliamo archiviare le password in testo normale nel database e vogliamo che più utenti possano accedere ai dati.

La mia domanda è: come possiamo proteggere i dati, consentendo al contempo utenti diversi che utilizzano credenziali di accesso diverse? L'unica cosa che mi viene in mente è l'archiviazione della chiave di crittografia così com'è, e quindi l'uso della logica (ovvero l'utente fa parte di un gruppo specifico) per decidere se l'app deve usarlo o meno per decodificare i dati. Questo ovviamente non è sicuro poiché chiunque abbia accesso al server Web potrebbe recuperare la chiave.

Qualcuno sa come ottenere una sicurezza come questa quando si utilizza un metodo di autenticazione esterno?

    
posta 08.01.2013 - 00:03
fonte

1 risposta

1

Per ogni record di dati (o set di record, se gli stessi utenti possono sempre accedere a tutti i record di un set), creare una chiave di crittografia casuale. Quindi crittografare una copia di questa chiave con la chiave di ciascun utente a cui è consentito accedere ai dati.

(Le chiavi utente possono essere derivate direttamente dalla password dell'utente utilizzando una funzione di derivazione chiave idonea come PBKDF2 , oppure puoi generare una chiave per utente casuale da ciascun utente e crittografarla con la chiave derivata dalla password. Quest'ultima opzione è un po 'più complicata, ma ha il vantaggio che hai solo bisogno di ricodificare una chiave quando un utente cambia la propria password.)

Per ulteriori informazioni, vedi ad es. questa domanda correlata su crypto.SE .

Modifica: ho appena notato la menzione di LDAP nella tua domanda. Non ho molta familiarità con LDAP, ma per quanto ne so, se la tua applicazione agisce come un client LDAP, in modo che l'utente inserisca la sua password per l'applicazione, che quindi interroga il server LDAP per convalidarlo, quindi puoi principalmente eseguirlo come descritto sopra.

L'unica cosa con cui avrai problemi è la modifica della password, a meno che tu non possa in qualche modo ottenere che il server LDAP ti informi su di loro e di includere la vecchia e la nuova password nella notifica. Un'opzione sarebbe avere la tua app anche controllare la password inserita contro il proprio database, ad es. memorizzando un hash della chiave di crittografia dell'utente (derivata dalla password con PBKDF2) nel database. Se la password supera la convalida LDAP ma fallisce questo controllo, significa che l'utente ha cambiato la sua password, nel qual caso devi chiedere loro di inserire anche la loro vecchia password in modo da poter ricodificare nuovamente la password i dati.

Tuttavia, la soluzione ideale sarebbe quella di memorizzare i dati crittografati (o almeno le chiavi per utente) sul server LDAP, se il server può essere configurato per farlo in modo sicuro. Basato su Google, almeno alcuni di essi possono essere

    
risposta data 08.01.2013 - 00:10
fonte

Leggi altre domande sui tag