sábado, 27 de junio de 2009

Encriptación

SQL SERVER 2005 soporta llaves criptográficas, certificados digitales y funciones criptográficas para aumentar el nivel de seguridad de la información .

Llaves simétricas
Es un valor que es usado para encriptar o desencriptar datos. Esta llave debe ser compartida entre el encriptador y el desencriptador.

La sintaxis para crear una llave simétrica es:

CREATE SYMMETRIC KEY key_name [ AUTHORIZATION owner_name ] WITH [ , ... n ] ENCRYPTION BY [ , ... n ] ::= CERTIFICATE certificate_name PASSWORD = 'password' SYMMETRIC KEY symmetric_key_name ASYMMETRIC KEY asym_key_name ::= KEY_SOURCE = 'pass_phrase' ALGORITHM = IDENTITY_VALUE = 'identity_phrase' ::= DES TRIPLE_DES RC2 RC4 RC4_128

Ejemplo:

CREATE SYMMETRIC KEY LlaveSimetrica
WITH ALGORITHM= AES_256
ENCRYPTION BY PASSWORD = 'SF$5454%&2DSF'


Llave asimétrica
Son un par de valores que están compuesto por una llave publica y una privada.
la llave publica es una llave compartida que se encarga de encriptar los datos y la llave privada se encarga de desencriptarlos .

Estas llaves son usadas para crear firmas digitales.

La sintaxis para crear una llave asimétrica es:

CREATE ASYMMETRIC KEY Asym_Key_Name [ AUTHORIZATION database_principal_name ] { [ FROM ] WITH [ ENCRYPTION BY ]::= FILE = 'path_to_strong-name_file' EXECUTABLE FILE = 'path_to_executable_file' ASSEMBLY Assembly_Name PROVIDER Provider_Name ::= ALGORITHM = PROVIDER_KEY_NAME = 'key_name_in_provider' CREATION_DISPOSITION = { CREATE_NEW OPEN_EXISTING } ::= { RSA_512 RSA_1024 RSA_2048 } ::= PASSWORD = 'password'

Ejemplo

CREATE ASYMETRIC KEY LlaveAsimetrica
WHIT ALGORITHM=RSA_2048
ENCRYPTION BY PASSWORD = 'SF$5454%&2DSF'


Certificados digitales
Los certificados asocian una llave publica con una persona

Los certificados contienen:

*Una llave publica del sujeto
*Información sobre el sujeto
*Tiempo de expiración
*Identificación del emisor y firma digital

CREATE CERTIFICATE certificate_name [ AUTHORIZATION user_name ] { FROM } [ ACTIVE FOR BEGIN_DIALOG = { ON OFF } ] ::= ASSEMBLY assembly_name { [ EXECUTABLE ] FILE = 'path_to_file' [ WITH PRIVATE KEY ( ) ] } ::= [ ENCRYPTION BY PASSWORD = 'password'] WITH SUBJECT = 'certificate_subject_name' [ , [ ,...n ] ] ::= FILE = 'path_to_private_key' [ , DECRYPTION BY PASSWORD = 'password' ] [ , ENCRYPTION BY PASSWORD = 'password' ] ::= START_DATE = 'mm/dd/yyyy' EXPIRY_DATE = 'mm/dd/yyyy'


Ejemplos:

CREATE CERTIFICATE Ventas ENCRYPTION BY PASSWORD = ''SF$5454%&2DSF' WITH SUBJECT = 'Certificado de ventas', EXPIRY_DATE = '10/31/2009';


Crear certificado desde archivo

CREATE CERTIFICATE Ventas FROM FILE = 'c:\DB\Ventas.cer' WITH PRIVATE KEY (FILE = 'c:\DB\Ventas.pvk', DECRYPTION BY PASSWORD = 'sldkflk34et6gs%53#v00');

Create certificado a un ensamblado

CREATE CERTIFICATE Ventas FROM ASSEMBLY AssemblyVentas

Para realizar una copia del certificado se debe utilizar la siguiente sintaxis

BACKUP CERTIFICATE Ventas
TO FILE = 'c:\DB\Ventas.cer'


Funciones de criptográficas

EncryptByKey y DecryptByKey: encripta y desencripta datos con llaves simétricas
EncryptByAsymKey y DecryptByAsymKey: encripta y desencripta datos con llaves asimétricas
EncryptByCert y DecryptByCert: encripta y desencripta datos con certificados digitales

Ejemplo

OPEN SYMMETRIC KEY SSN_Key_01 DECRYPTION BY CERTIFICATE HumanResources037;
EncryptByKey(Key_GUID('SSN_Key_01'), NationalIDNumber);

No hay comentarios:

Publicar un comentario