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

Técnicas de Encriptación de Base de Datos en Mysql

Feb 01, 2016

Download

Documents

Martin Jose

Universidad
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Técnicas de Encriptación de Base de Datos en Mysql

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

Ing. Cristian García Estrella

Page 2: Técnicas de Encriptación de Base de Datos en Mysql

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.

Page 3: Técnicas de Encriptación de Base de Datos en Mysql

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.

Page 4: Técnicas de Encriptación de Base de Datos en Mysql

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

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

Page 5: Técnicas de Encriptación de Base de Datos en Mysql

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 .

Page 6: Técnicas de Encriptación de Base de Datos en Mysql

• 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

Page 7: Técnicas de Encriptación de Base de Datos en Mysql

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

Page 8: Técnicas de Encriptación de Base de Datos en Mysql

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;

Page 9: Técnicas de Encriptación de Base de Datos en Mysql

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

Page 10: Técnicas de Encriptación de Base de Datos en Mysql

• 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

Page 11: Técnicas de Encriptación de Base de Datos en Mysql

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'));

Page 12: Técnicas de Encriptación de Base de Datos en Mysql

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'));

Page 13: Técnicas de Encriptación de Base de Datos en Mysql

• 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’).