L'idea di sfruttare la tecnica PGP non è male. L'unico problema che
vedo è che devi gestire la ricifratura nel caso di cambio password del
singolo utente che accede al dato cifrato.

In generale non realizzerei delle soluzioni fatte in casa per
proteggere i dati nel DB, ma piuttosto vedrei se già il DBMS mette a
disposizione delle API per fare ciò. E' interessante sicuramente uno
sviluppo di questo tipo, ma una volta implementata la soluzione, ci si
rende conto di tutte le altre implicazioni che questa comporta e alla
fine la sicurezza si va a far benedire.

Altro punto: il dato è cifrato nel DB, ma se l'utente vi può accedere,
il dato ad un certo punto è visualizzato in chiaro nello strato
applicativo a disposizione dell'utente che ne ha accesso. Questo
implica che la cifratura del dato sul DB protegge solo da eventuali
fughe di dati massicce che agiscono direttamente sullo strato DB.
Quindi devi anche proteggere in modo opportuno lo strato applicativo:
sessioni non troppo lunghe, minimizzare i dati cifrati che vengono
visualizzati in chiaro nella WebApp all'utente, autenticazione
dell'utente ad ogni visualizzazione del dato cifrato, etc. etc.

La cifratura del dato risponde a certi requisiti di sicurezza, ma
l'autenticazione e autorizzazione opportunamente indirizzata ti
permette di gestire a tutto campo la sicurezza di tutta
l'infrastruttura applicativa e non solo dei dati NEL DB!

Ovviamente sarai tu a valutare quale sia il pericolo maggiore. Una
buona analisi di sicurezza ti permetterà di capire quali sono le
minacce e le relative contromisure da adottare. Anzi se fossi in te
un'analisi di questo tipo me la farei controfirmare dal cliente CON IL
SANGUE :-)

In ultimo: il dato cifrato è sicuramente importante ma è ben più
importante garantire che tale dato sarà sempre accessibile. Ovvero,
attenzione a non rischiare di perdere il dato per una cifratura non
ben fatta. Per questo propendo per utilizzate meccanismi di cifrature
fornite dal DBMS con relative API per utilizzarla dallo strato
applicativo. In questo modo potete ridurre la criticità del codice
sviluppato in casa e "fidarvi" delle API del DBMS (che magari se è
Oracle, per esempio, vi dà qualche garanzia anche in caso di
contestazioni).

Ovviamente IMHO :-)
________________________________________________________
http://www.sikurezza.org - Italian Security Mailing List

Rispondere a