técnicas de encriptación de base de datos en mysql

13
TÉCNICAS DE ENCRIPTACIÓN DE BASE DE DATOS EN MYSQL Ing. Cristian García Estrella

Upload: martin-jose

Post on 01-Feb-2016

77 views

Category:

Documents


3 download

DESCRIPTION

Universidad

TRANSCRIPT

TÉCNICAS DE ENCRIPTACIÓN DE BASE DE DATOS EN MYSQL

Ing. Cristian García Estrella

Definición• La encriptación es el proceso para volver ilegible

información considerada importante. La información una vez encriptada sólo puede leerse aplacándole una clase.

Características de la criptografía

• Pequeñas variaciones de textos llanos• Los tamaños de los textos planos deben ser comparables

con los cifrados.• Los textos cifrados deben calcularse eficientemente a

partir de los planos.

Tipos de Criptografía• Criptografía simétrica

• La criptografía simétrica solo utiliza una clave para cifrar y descifrar el mensaje.

Tipos de Criptografía

• Criptografía asimétrica• La criptografía asimétrica se basa en el uso de dos claves: la

pública y la privada .

• Criptografía híbrida• Este sistema es la unión de las ventajas de los dos anteriores, El

proceso para usar un sistema criptográfico híbrido es el siguiente (para enviar un archivo):• Generar una clave pública y otra privada (en el receptor).• Cifrar un archivo de forma síncrona.• El receptor nos envía su clave pública.• Ciframos la clave que hemos usado para encriptar el archivo con la

clave pública del receptor.• Enviamos el archivo cifrado (síncronamente) y la clave del archivo

cifrada (asíncronamente y solo puede ver el receptor).

Tipos de Criptografía

Implementar Opciones para Encriptación de Datos en Tránsito

• El cifrado es una tecnología madura, y la obtención de base de datos de las comunicaciones implica generalmente asegurar TCP / IP de sesiones. Como resultado de ello, puede elegir entre un buen número de opciones de ejecución cuando se desea cifrar la base de datos sesiones. Estos van desde la base de datos específica de los servicios de cifrado para el uso de los servicios básicos prestados por el sistema operativo. En concreto, verás las siguientes opciones que ofrecen una muestra de la amplia gama de técnicas:• Características específicas de la Base de datos (ejemplo, Oracle Advanced

Security).• Métodos de conexión de base (ejemplo, usar protocolo Secure Sockets

Layer [SSL]).• Garantizar los túneles (ejemplo, mediante el sistema Secure Shell [SSH]

túneles).• Basándose en el sistema operativo (ejemplo, el cifrado IPSec).• Uso de SSL para conexiones de base de datos segura

Encriptación de conexion• MySQL puede establecer conexiones seguras encriptándolas

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 estarán protegidos contra intrusos. Para especificar que un usuario debe conectarse obligatoriamente con este protocolo, se utiliza la cláusula requiere:

mysql> grant all -> on *.* -> to visitante@localhost -> require ssl;

Encriptación de contraseñas• MySQL nos da diferentes herramientas para hacer

nuestras contraseñas más seguras, vamos a enumerarlas desde la menos segura hasta la más segura de todas:• 1. MD5• 2. SHA y SHA1: En MySQL 5.1 son iguales, pueden ser usadas

indiscriminadamente.• 3. AES

• Para guardar una contraseña encriptada con MD5 necesitaremos una tabla con un campo de 32 caracteres, aunque se ha demostrado que el algoritmo MD5 puede ser vulnerado, la práctica es tan compleja que no merece la pena el esfuerzo, el algoritmo MD5 no puede ser revertido, es decir, no se pueden recuperar contraseñas de este sistema.

• Insertar una contraseña con MD5:mysql> INSERT INTO usuarios VALUES('usuario',MD5('contraseña'));

MD5

SHA y SHA1• La función SHA y SHA1 son sinónimos, 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 más seguro que MD5 ya que calcula el cheksum SHA de 160 bits de una cadena, mientras que MD5 la calcula de 128.

• Insertar una contraseña con SHA:mysql> INSERT INTO usuarios VALUES('usuario',SHA('contraseña'));

AES• El algoritmo AES es el más completo y complejo, tiene posibilidad de

revertirse y se utiliza con una llave privada. Para almacenar estas contraseñas necesitamos que nuestro campo sea de tipo BLOB, ya que el resultado de la operación será un dato binario muy aleatorio.• Insertar una contraseña con AES:

mysql> INSERT INTO usuarios VALUES('usuario',AES_ENCRYPT('contraseña','llave'));Para desencriptar:mysql> INSERT INTO usuarios VALUES('usuario',AES_DECRYPT('contraseña','llave'));

• Para obtener o realizar un Query basta con usar la misma función 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’).