RS First Dynamics NAV Blog


...from NAV 3.60 to NAV 2013
Archivio Posts
Anno 2015

Anno 2014

Anno 2013

Anno 2012

Anno 2011

Anno 2010

Anno 2009

Anno 2008

Anno 2007

Criptare i dati con Sql Server 2005

Per criptare i nostri dati possiamo utilizzare chiavi simmetriche (SYMMETRIC KEYS).

Una chiave di questo tipo assicura una protezione molto più elevata rispetto a quella fornita dalle funzioni di T-SQL (come EncryptByPassPhrase).

Ecco cosa possiamo utilizzare per rendere più sicuri i nostri dati (tramitre l’algoritmo TRIPLE DES):

-- Creare una chiave simmetrica
-----------------------------------------------------------------------
CREATE SYMMETRIC KEY TestKey

WITH ALGORITHM = TRIPLE_DES
ENCRYPTION BY PASSWORD = 'mia_password'

-- mia_password è la password che protegge la chiave simmetrica
-----------------------------------------------------------------------

 

-- Aprire una chiave simmetrica per decriptare i dati
----------------------------------------------------------------------

OPEN SYMMETRIC KEY TestKey
DECRYPTION BY PASSWORD = 'mia_password'

 

-- Chiudere una chiave simmetrica
-----------------------------------------------------------------------
CLOSE SYMMETRIC KEY TestKey

-- metodi di criptazione/decriptazione (negli sql statement)

----------------------------------------------------------------------

encryptByKey(Key_GUID('TestKey'), 'valore_da_criptare')

decryptByKey('valore_da_decriptare')

N.B. Nei metodi utili alla criptazione/decriptazione, il valore_da_decriptare/criptare può anche essere un’ espressione, come ad esempio il campo di una tabella o una variabile; eccone un esempio: 

-- creo una chiave simmetrica

CREATE SYMMETRIC KEY ConnectionKey
WITH ALGORITHM = TRIPLE_DES

ENCRYPTION BY PASSWORD = 'prova'

 

-- apro la chiave precedentemente creata

OPEN SYMMETRIC KEY ConnectionKey DECRYPTION BY PASSWORD = 'prova'

SELECT decriptByKey(Password) FROM Utenti

-- oppure supponiamo @password passato come parametro
-- criptiamo il parametro e lo inseriamo in tabella

INSERT INTO Utenti (Utente, Password)

SELECT 1, encryptByKey(@password)

-- chiudo la chiave simmetrica

CLOSE SYMMETRIC KEY ConnectionKey


Ovviamente TRIPLE_DES non è l’unico algoritmo possibile, abbiamo infatti anche
DES | RC2 | RC4 | DESX | AES_128 | AES_192 | AES_256

Tutto questo discorso, che va al di là di quello indicato in questo post, è ampiamente trattato in un articolo di Luca Bianchi di ASPItalia. Il link è il seguente:
http://www.visual-basic.it/articoli/lbSQLprotection.htm

articolo di Alessandro Alpi

Categoria: Sql Server ALL
giovedì, 17 mag 2007 Ore. 08.57

Messaggi collegati


Statistiche
  • Views Home Page: 468.859
  • Views Posts: 885.706
  • Views Gallerie: 0
  • n° Posts: 343
  • n° Commenti: 0
Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003