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
