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

Rispondere a