Consigli per la distribuzione delle chiavi

1

Ho pensato per giorni a questo problema! L'applicazione è basata su una gestione del sistema studente. Sto implementando la crittografia del database a livello di colonna e la crittografia avviene a livello di applicazione.

L'amministratore imposta le colonne che devono essere crittografate in un'app di vincita che farò. La crittografia AES viene utilizzata per crittografare le colonne. Nell'app win, utilizzo la chiave pubblica RSA per crittografare la chiave AES e memorizzare la chiave crittografata nel database. Quindi memorizzo la chiave privata in un'unità flash. L'utente autorizzato utilizzerà il file della chiave privata per decrittografare la chiave AES e quindi decrittografare le colonne.

Il mio problema è questo:

  1. Supponiamo di avere più di un utente che ha bisogno di accedere a queste colonne sensibili, quindi il mio piano non sembra molto produttivo perché come posso memorizzare la chiave privata su più unità flash allo stesso tempo, ad esempio 10 unità flash ??

  2. Inoltre, se decido di aggiungere un utente per accedere alle colonne, come dargli la chiave privata? O se rimuovo un utente, thrn dovrei cambiare la chiave privata di tutti gli altri utenti .....

Per favore aiuto! Ci ho pensato per giorni!

    
posta orange 24.02.2013 - 16:19
fonte

1 risposta

1

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.

    
risposta data 24.02.2013 - 16:51
fonte

Leggi altre domande sui tag