Sunteți pe pagina 1din 13

TCNICAS DE

ENCRIPTACIN DE BASE
DE DATOS EN MYSQL
Ing. Cristian Garca Estrella

Definicin
La encriptacin es el proceso para volver ilegible

informacin considerada importante. La informacin una


vez encriptada slo puede leerse aplacndole una clase.

Caractersticas de la criptografa
Pequeas variaciones de textos llanos
Los tamaos de los textos planos deben ser comparables

con los cifrados.


Los textos cifrados deben calcularse eficientemente a
partir de los planos.

Tipos de Criptografa
Criptografa simtrica
La criptografa simtrica solo utiliza una clave para cifrar y
descifrar el mensaje.

Tipos de Criptografa

Criptografa asimtrica
La criptografa asimtrica se basa en el uso de dos claves: la
pblica y la privada .

Tipos de
Criptografa

Criptografa hbrida
Este sistema es la unin de las ventajas de los dos anteriores, El
proceso para usar un sistema criptogrfico hbrido es el siguiente
(para enviar un archivo):
Generar una clave pblica y otra privada (en el receptor).
Cifrar un archivo de forma sncrona.
El receptor nos enva su clave pblica.
Ciframos la clave que hemos usado para encriptar el archivo con la

clave pblica del receptor.


Enviamos el archivo cifrado (sncronamente) y la clave del archivo
cifrada (asncronamente y solo puede ver el receptor).

Implementar Opciones para Encriptacin de


Datos en Trnsito
El cifrado es una tecnologa madura, y la obtencin de base de datos

de las comunicaciones implica generalmente asegurar TCP / IP de


sesiones. Como resultado de ello, puede elegir entre un buen nmero
de opciones de ejecucin cuando se desea cifrar la base de datos
sesiones. Estos van desde la base de datos especfica de los
servicios de cifrado para el uso de los servicios bsicos prestados por
el sistema operativo. En concreto, vers las siguientes opciones que
ofrecen una muestra de la amplia gama de tcnicas:
Caractersticas especficas de la Base de datos (ejemplo, Oracle Advanced

Security).
Mtodos de conexin de base (ejemplo, usar protocolo Secure Sockets Layer
[SSL]).
Garantizar los tneles (ejemplo, mediante el sistema Secure Shell [SSH]
tneles).
Basndose en el sistema operativo (ejemplo, el cifrado IPSec).
Uso de SSL para conexiones de base de datos segura

Encriptacin de conexion
MySQL puede establecer conexiones seguras encriptndolas

mediante el protocolo SSL*; de esta manera, los datos que se


transmiten (tanto la consulta, en un sentido, como el resultado, en
el otro) entre el cliente y el servidor estarn protegidos contra
intrusos. Para especificar que un usuario debe conectarse
obligatoriamente con este protocolo, se utiliza la clusula requiere:
mysql> grant all
-> on *.*
-> to visitante@localhost
-> require ssl;

Encriptacin de contraseas
MySQL nos da diferentes herramientas para hacer

nuestras contraseas ms seguras, vamos a enumerarlas


desde la menos segura hasta la ms segura de todas:
1. MD5
2. SHA y SHA1: En MySQL 5.1 son iguales, pueden ser usadas

indiscriminadamente.
3. AES

MD5
Para guardar una contrasea encriptada con MD5 necesitaremos una tabla con

un campo de 32 caracteres, aunque se ha demostrado que el algoritmo MD5


puede ser vulnerado, la prctica es tan compleja que no merece la pena el
esfuerzo, el algoritmo MD5 no puede ser revertido, es decir, no se pueden
recuperar contraseas de este sistema.
Insertar una contrasea con MD5:

mysql> INSERT INTO usuarios VALUES('usuario',MD5('contrasea'));

SHA y SHA1
La funcin SHA y SHA1 son sinnimos, por lo que hacen el mismo efecto, al

igual que MD5 no puede ser revertido y este necesita un campo de 40


caracteres para su almacenamiento, es ms seguro que MD5 ya que calcula
el cheksum SHA de 160 bits de una cadena, mientras que MD5 la calcula de
128.
Insertar una contrasea con SHA:

mysql> INSERT INTO usuarios VALUES('usuario',SHA('contrasea'));

AES
El algoritmo AES es el ms completo y complejo, tiene posibilidad de

revertirse y se utiliza con una llave privada. Para almacenar estas


contraseas necesitamos que nuestro campo sea de tipo BLOB, ya que el
resultado de la operacin ser un dato binario muy aleatorio.
Insertar una contrasea con AES:
mysql> INSERT INTO usuarios
VALUES('usuario',AES_ENCRYPT('contrasea','llave'));
Para desencriptar:
mysql> INSERT INTO usuarios
VALUES('usuario',AES_DECRYPT('contrasea','llave'));

Para obtener o realizar un Query basta con usar la misma

funcin que encripto excepto en el caso de AES para el


cual deberemos usar:
SELECT AES_DECRYPT (password, my_secret_key_to_encrypt)

AS unencrypted FROM user_aes;

En los otros casos bastara con:


SELECT * FROM user WHERE user_name=member1 AND
password=MD5(secret password).

S-ar putea să vă placă și