SQL Server ed ALM su database


Il blog di Alessandro Alpi
Archivio Posts
Anno 2018

Anno 2017

Anno 2016

Anno 2015

Anno 2014

Anno 2013

Anno 2012

Anno 2011

Anno 2010

Anno 2009

Anno 2008

Anno 2007

Anno 2006

[SQL 2005] Come criptare/decriptare dati sensibili

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


 
 
 

Categoria: Transact-SQL
mercoledì, 24 mag 2006 Ore. 10.38
Statistiche
  • Views Home Page: 599.571
  • Views Posts: 1.065.348
  • Views Gallerie: 637.597
  • n° Posts: 484
  • n° Commenti: 273



















Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003