Social Icons

twitter facebook google plus linkedin

martes, 14 de febrero de 2012

Cifrando base de datos con TDE

Transparent Data Encryption es una característica que está disponible en SQL Server desde la versión 2008 y, obviamente, estará disponible en la futura versión 2012.

TDE realiza encriptacion y desencriptación de datos en tiempo real de los archivos de la base de datos (físicos) y de los archivos de log. La encriptación utiliza una clave de encriptación de base de datos (Desde ahora en adelante, DEK) que es almacenada en el registro de arranque de la base de datos, para que pueda estar disponible durante una recuperación.

Ejemplo:

Se tiene una base de datos llamada Prueba  con una tabla llamada Registro y tiene los siguientes datos:

[caption id="attachment_1215" align="alignnone" width="274" caption="Datos de la tabla Registro"]Datos de la tabla Registro[/caption]

Si realizo un respaldo de la base de datos:

  • Botón secundario en la base de datos

  • Tasks -> Back Up...


Y navego hasta la ruta C:Program FilesMicrosoft SQL ServerMSSQL11.MSSQLSERVERMSSQLBackup y abro el respaldo que recién generé con el bloc de notas, puedo encontrar la información:

[caption id="attachment_1216" align="alignnone" width="300" caption="Vista en Notepad"]<>Vista en Notepad[/caption]

Se puede ver los datos almacenados. Es más, entrega mucha información relevante sobre el sistema.

Ahora encriptemos la base de datos ( y de pasada, borramos el respaldo anterior). Para encriptar la base de datos se siguen los siguientes pasos:

  1. Crear la master key

  2. Crear u obtener un certificado protegido por la master key

  3. Crear un DEK y protegerla con el certificado

  4. Setear la base de datos para la encriptación.



USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD='[email protected]';
GO
CREATE CERTIFICATE MiCertificado WITH SUBJECT='Mi certificado DEK';
GO
USE prueba;
GO
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER CERTIFICATE MiCertificado;
ALTER DATABASE Prueba SET ENCRYPTION ON;
GO


TDE cifra hasta los respaldos que se pueden generar. Al crear uno y abrirlo con el notepad y buscar algun registro (como en el ejemplo anterior), arrojará un error:

[caption id="attachment_1217" align="alignnone" width="300" caption="Vista desde notepad del respaldo de una base de datos cifrada"]Vista desde notepad del respaldo de una base de datos cifrada[/caption]

Cabe recordar, que este proceso es transparente para las aplicaciones que funcionan sobre SQL Server.

Saludos!