Per la situazione specifica a cui stai alludendo, utilizzando una chiave simmetrica e le chiavi RSA è la strada giusta. Vale a dire:
- I dati sono crittografati con la chiave simmetrica K (con AES o qualche altro algoritmo che fa il lavoro).
- Ogni utente che dovrebbe avere accesso ai dati ha una coppia di chiavi RSA. Ogni utente ha la sua coppia di chiavi propria , distinta da quella di qualsiasi altro utente. Chiamiamo Pu la chiave pubblica dell'utente u (e Su la chiave privata corrispondente).
-
K è crittografato asimmetricamente (RSA) con la chiave pubblica di ciascun utente. Ciò significa che il database contiene diversi valori E Pu (K) (crittografia di K con la chiave pubblica di utente u ).
- Quando un utente vuole accedere ai dati, usa la propria chiave privata Su (dalla sua flash drive) per decodificare il suo valore: D Su ( E Pu (K)) = K . Con K , l'utente può accedere ai dati crittografati.
- Quando si desidera aggiungere un nuovo utente v , si genera la nuova coppia di chiavi per quell'utente ( Pv , Sv ) con il chiave privata memorizzata su una nuova chiavetta USB che fornisci all'utente. Cifra anche K con Pv e aggiungi il nuovo E Pv (K) all'elenco di tali valori in il database.
Rimuovere un utente è complicato, a causa di un fatto generale: non puoi imporre l'oblio . Qualsiasi utente che avesse avuto accesso ai dati a un certo punto avrebbe potuto prendere una copia di tutti i dati (decodificati) e ricordarli ancora. Il meglio che puoi fare è assicurarti che l'utente rimosso non abbia accesso ai nuovi dati aggiunti dopo lo sfratto di quell'utente. Esistono quindi due metodi per revocare l'accesso ai dati u :
-
Il metodo veloce ma incompleto è semplicemente rimuovere E Pu (K) dall'elenco dei valori memorizzati. Questo sarà sufficiente per negare l'accesso successivo dall'utente u se quell'utente è onesto e non ha mantenuto un backup di E Pu (K) ( o, semplicemente, un backup di K ).
-
Il metodo completo consiste nel generare una nuova chiave master K ', decrittografare tutti i dati, ricodificarla con K' e crittografare K ' con le chiavi pubbliche di tutti gli utenti tranne u . Il database conterrà quindi E Pv (K ') per tutti gli utenti v tranne u . Ciò blocca efficacemente l'utente u da qualsiasi nuovo elemento dati.
Il sistema sopra descritto può ospitare smart card al posto di "flash drive". Non è necessario che nessuna entità oltre all'utente u acceda effettivamente alla chiave privata dell'utente u .
Nota: tutto quanto sopra riguarda il controllo dell'accesso lettura ai dati. Controllare l'accesso scrivi , rilevare alterazioni, duplicazioni o soppressioni è un'altra cosa.