Ciao! Premesso che non sono un programmatore (leggo e scrivo accozzaglia di codice :) e che non sono un DBA, mi permetto di dire la mia.
Anche se in teoria usare API sul DB per permettere la crittografia potrebbe risultare simpatico, questo IMHO porta due problemi. Da un lato la possibilita' di non avere un vendor lock-in sui dati del DB, ovvero se si usano le API del DB sara' piu' difficile poter astrarre codice e dati da quel determinato vendor di RDBMS. L'altro che l'uso di un eventuale ORM, ad esempio hibernate (Java) o ActiveRecord (Ruby), ci permette di astrarre il codice dalla implementazione del DB, ma penso che ci introduca non poche difficolta' se vogliamo usare query SQL sepcifiche. Da quello che sto vedendo ultimamente, basandomi solo sulla esperienza personale, c'e' un certo proliferarsi di webapp che usino hibernate (o altri ORM) e personalmente lo trovo alquanto utile. Appoggio in pieno quello che dice Alor, cioe' l'uso di un sistema "pgp-like" per criptare la chiave simmetrica (K). La chiave K pero' deve essere ricodificata in caso l'utente cambi password, ma introduce nuove problematiche con eventuali sistemi di Web-SSO (es: Sitemider, Yale CAS). La cosa ideale IMHO e' quello che dice Fausto, cioe' l'uso del device crittografico che ha un utente (smartcard). Al momento pero' non mi risultano che esista nessun modo per "decodificare" in remoto, ovvero il fatto che via web posso demandare l'utente finale a decriptarmi un dato temporaneo via X.509. In realta' sto lavorando anche in questo senso, ma non penso ci siano implementazioni commerciali o OSS (ben felice di essere smentito pero'! :). Ritornando con i piedi per terra penso che dovresti criptare i risultati dei dati sensibili con una chiave simmetrica random, che sia essa "unlockata" per ogni utente (cosa migliore, see Alor), oppure run-time in qualche maniera sicura dall'applicativo in maniera simile a quanto avviene per la crittografia dei dischi (es: truecrypt o luks). Per le implementazioni Java IMHO e' molto interessante Bouncy Castle [1], che implementa anche OpenPGP in Java senza bisogno di appoggiarsi a GPG/PGP command line (come fanno in python/ruby tramite GPGME). Ciao ciao, Gippa [1] http://www.bouncycastle.org/ ________________________________________________________ http://www.sikurezza.org - Italian Security Mailing List
