Como crear una columna encriptada en SQL Server (Encriptado, Cifrado, codificación) : Columna Cifrada SQL Server
Columna encriptada usando claves simétricas
Primero vamos a analizar el requerimiento de mi amiga Luisa (LU), tiene una tabla donde desea guardar contraseñas o números de tarjetas de crédito, lo cual son datos sensibles que no deberían poder verse con un simple select, un DBA no debería ver esos datos, como desarrolladores SQL debemos solucionar este requerimiento, existen muchos caminos para llegar a Roma, sin embargo nosotros usaremos cifrado simétrico SQL Server
Columna Cifrada
Paso 1:
Crear una base de datos
Paso 2:
Paso 4:
Paso 5:
Paso 6:
Paso 7:
Paso 8:
Aquí es donde nuestro ejemplo se pone interesante, debemos crear la clave simétrica la cual nos permitirá cifrar y descifrar los datos de nuestra columna a cifrar, esta clave es rápida en ambos sentidos y es la forma correcta de mejorar los tiempos de cifrado, si deseas saber que es una clave simétrica puedes leer un poco mas AQUÍ , adicional usaremos un algoritmo de encriptación tipo AES_128, para saber mas sobre este tipo de algoritmos podemos Leer AQUÍ
Paso 9:
Importante, para cifrar datos únicamente podemos realizarlo en columnas tipo de datos varbinary max, entonces para fines prácticos crearemos dos nuevas columnas a nuestra tabla con el prefijo cifrado por delante, nuestra tabla queda del a siguiente manera
Paso 10:
Para cifrar los datos vamos a utilizar el comando EncryptByKey,Tenga en cuenta que la clave debe abrirse para que podamos encriptar los datos y estar seguros de cerrar manualmente la clave de lo contrario permanecerán abiertas para la sesión actual.
Paso 11:
Aquí nuestro resultado final, donde podemos realizar un select usado nuestros datos cifrados y mirando tanto los cifrados como decifrados
Paso 12:
Creando un proceso automático en un trigger para cifrar nuestros datos
Paso 13:
Finalmente luego de tanto leer mis locuras disfrutamos de el resultado de cifrar los datos cuando Realizamos el insert
Muy bien compadre,
Gracias bro ?
Excelente nota Juan…
Juan cual es la finalidad del certificado SQL?
Excelente Juan el proceso de encriptado y desencriptado es importante, ya que el proceso no solo es el de encriptar, tambien es valido para desencriptar.