Newsgroup: it.comp.sicurezza.crittografia
Titolo: Certificazione transazioni SQL (lunghetto);

Per lo sviluppo di una applicazione gestionale avrei bisogno di certificare
tutti le transazioni
sul DBMS ed associarle univocamente all'utente che le ha generate.
Tale sistema dovrebbe:
1) garantire la paternità delle istruzioni SQL;
2) consentire, dato un valore ed il nome del database.tabella.campo del DBMS
che contiene il valore,
di risalire alla cronologia certificata delle modifiche effettuate;
il tutto utilizzando RSA.
Io avrei un'idea, però cercavo documentazione o suggerimenti.
Grazie in anticipo.

 di risalire alla cronologia certificata delle modifiche effettuate;
Questa domanda è "parecchio" OT, ma per dirla in breve dubito
fortissimamente che tu possa associare una cosa del genere a un singolo
campo di un DB.
Piuttosto puoi aggiungere un SECONDO campo per ogni campo... ma comunque
niente vieterebbe a nessuno di usarlo "direttamente" senza aggiornare
l'altro...
A meno di fare qualche magia con i diritti di accesso e le stored
procedures...
Comunque ti consiglio caldamente di chiedere in un newsgroup di gente
che è pratica di DB, non in uno dove la gente è pratica di crittografia
^_^ (oddio per lavoro "faccio" e "gestisco" anche DB, ma comunque non
saprei molto come risponderti... o meglio secondo me "a livello di DB"
non si può fare e basta, quel tipo di controlli di accesso te li devi
gestire a livello di applicazione)
- --
L a p o   L u c h i n i
l a p o @ l a p o . i t
w w w . l a p o . i t /
http://www.megatokyo.it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (Cygwin)
Comment: Using GnuPG with Mozilla - 
http://enigmail.mozdev.org
iEYEARECAAYFAkCxrVYACgkQaJiCLMjyUvt05gCfe4910ARVxYkCAfURBxpecKaU
c3cAoNOXzKGsH8RER6oszGJ6AnUQ7Gt0
=diJz
-----END PGP SIGNATURE-----

il tutto utilizzando RSA.
Dipende molto dal sistema DBMS che usi, per esempio in Microsoft SQl
lo puoi fare con:
- trigger
- autenticazione nativa Windows
- chiamando una tua DLL per la crittografia
oppure aspetti il nuovo SQL con .Net
credo che tu possa fare qualcosa di analogo con Oracle.
Il vataggio Microsoft è quello di avere l'integrazione completa con
gli utenti di rete e quindi anche logon e smart card o simila.
Le CryptoAPI poi non sono così difficili, basta mettere un certificato
sul server che poi lo usa per crittografare univocamente i dati
archiviati in una tabella parallela che riporta la chiamata SQL.
i metodi sono tanti, occhio alle performances... un sistema potrebbe
essere quello della memorizzazione asincrona, ma questo è un altro
problema.
Certificare le query è una cosa, certificare i dati memorizzati un
altra, sono due cose differenti e la seconda è più difficile perché un
singolo comando SQL può modificare anche un intera tabella.
Andrea

> Questa domanda è "parecchio" OT, ma per dirla in breve dubito
<snip>
Chiedo scusa in anticipo se non sono stato molto chiaro:
è ovvio che si debba fare a livello applicazione . . .
ed infatti per questo credo non sia OT;
considera la stringa SQL come un documento su cui poi apponi
la tua firma digitale...

 singolo comando SQL può modificare anche un intera tabella.
Infatti. Io parlavo in effetti della prima.
La seconda è molto più complicata.
Grazie Andrea.