martes, 25 de agosto de 2015

Inteligencia artificial

Algoritmos criptográficos

En computación y criptografía un algoritmo criptográfico es un algoritmo que modifica los datos de un documento con el objetivo de alcanzar algunas características de seguridad como autenticaciónintegridad y confidencialidad.Los algoritmos criptográficos se pueden clasificar en tres grupos:


¿Qué significa cifrar?
Aplicar un algoritmo de cifrado determinado junto con una clave, a una determinada información que se quiere transmitir confidencialmente.
Dentro del cifrado digital encontramos dos tipos de criptografía: simétrica y asimétrica.
En este artículo hablaremos sobre la Criptografía de clave simétrica
El cifrado mediante clave simétrica significa que dos o más usuarios, tienen una única clave secreta, esta clave será la que cifrará y descifrará la información transmitida a través del canal inseguro.
Es decir, la clave secreta la debe tener los dos usuarios, y con dicha clave, el usuario A cifrará la información, la mandará a través del canal inseguro, y a continuación el usuario B descifrará esa información con la MISMA clave que ha usado el usuario A.
Para que un algoritmo de clave simétrica sea fiable debe cumplir:
– Una vez que el mensaje es cifrado, no se puede obtener la clave de cifrado/descifrado ni tampoco el texto en claro.
– Si conocemos el texto en claro y el cifrado, se debe tardar más y gastar más dinero en obtener la clave, que el posible valor derivado de la información sustraída (texto en claro).
Debemos tener en cuenta que los algoritmos criptográficos son públicos, por lo que su fortaleza debe depender de su complejidad interna y de la longitud de la clave empleada para evitar los ataques de fuerza bruta.
La seguridad en clave simétrica reside en la propia clave secreta, y por tanto el principal problema es la distribución de esta clave a los distintos usuarios para cifrar y descifrar la información. La misión del emisor y receptor es mantener la clave en secreto. Si cae en manos equivocadas ya no podríamos considerar que la comunicación es segura y deberíamos generar una nueva clave.
Otro problema reside en que las claves secretas a guardar es proporcional al número de canales seguros que deseamos mantener. Esto no es un problema en sí, pero debemos administrar bien las llaves para no equivocarnos. Este problema no se va a presentar en los algoritmos asimétricos porque cada usuario tiene una pareja de claves, una pública y la otra privada, independientemente del número de canales seguros que queramos establecer. Únicamente debe proteger la clave privada.
La principal ventaja de los algoritmos simétricos es la velocidad de los algoritmos, y son muy usados para el cifrado de grandes cantidades de datos. TrueCrypt por ejemplo, usa algoritmos simétricos.
Si alguien se pregunta que cómo podemos transmitir por un medio inseguro la clave simétrica, la respuesta es que podemos crear unas claves asimétricas y así transmitir la información. Es lo que se hace en el cliente-servidor OpenVPN.
Os voy a presentar algunos algoritmos de clave simétrica, algunos ya no son seguros pero vamos a ver por qué.
DES (Data Encryption Standard):
Su arquitectura está basada en un sistema monoalfabético, donde un algoritmo de cifrado aplica sucesivas permutaciones y sustituciones al texto en claro. En un primer momento la información de 64bits se somete a una permutación inicial, y a continuación se somete a una permutación con entrada de 8 bits, y otra de sustitución de entrada de 5 bits, todo ello constituido a través de un proceso con 16 etapas de cifrado.
El algoritmo DES usa una clave simétrica de 64bits, los 56 primeros bits son empleados para el cifrado, y los 8 bits restantes se usan para comprobación de errores durante el proceso. La clave efectiva es de 56 bits, por tanto, tenemos 2⁵⁶ combinaciones posibles, por lo que la fuerza bruta se hace casi imposible.
Ventajas:
– Es uno de los sistemas más empleados y extendidos, por tanto es de los más probados.
– Implementación sencilla y rápida.
Inconvenientes:
– No se permite una clave de longitud variable, es decir, no se puede aumentar para tener una mayor seguridad.
– Es vulnerable al criptoanálisis diferencial (2⁴⁷ posibilidades) siempre que se conozco un número suficiente de textos en claro y cifrados.
– La longitud de clave de 56 bits es demasiado corta, y por tanto vulnerable. Actualmente DES ya no es un estándar, debido a que en 1999 fue roto por un ordenador.
3DES (Triple Data Encryption Standard)
Se basa en aplicar el algoritmo DES tres veces, la clave tiene una longitud de 128 bits. Si se cifra el mismo bloque de datos dos veces con dos llaves diferentes (de 64 bits), aumenta el tamaño de la clave.
El 3DES parte de una llave de 128 bits, que es divida en dos llaves, A y B.
Al recibir los datos, aplicamos el algoritmo DES con la llave A, a continuación se repite con la llave B y luego otra vez con la llave A (de nuevo).
3DES aumenta de forma significativa la seguridad del sistema de DES, pero requiere más recursos del ordenador.
Existe una variante del 3DES, conocida como DES-EDE3, con tres claves diferentes y una longitud de 192bits, consiguiendo un sistema mucho más robusto.
RC5
Se aplican operaciones XOR sobre los datos, pudiendo ser de 32, 64 o 128 bits. Permite diferentes longitudes de clave, y un número variable de iteraciones (la seguridad del cifrado aumenta exponencialmente cuanto mayor número de iteraciones), también funciona como un generador de número aleatorios, sumándoles a los bloques de texto rotados mediante la XOR.
IDEA (International Data Encriptión Algorithm)
Aplica una clave de 128 bits sin paridad a bloques de datos de 64 bits, y se usa tanto para cifrar como para descifrar.
Se alteran los datos de entrada en una secuencia de iteraciones parametrizadas, con el objetivo de producir bloques de salida de texto cifrado de 64 bits. IDEA combina operaciones matemáticas como XOR, sumas con acarreo de módulo 2¹⁶ y multiplicaciones de módulo 2¹⁶+1, sobre bloques de 16 bits.
Según numerosos expertos criptográficos, IDEA es el mejor algoritmo de cifrado de datos existente en la actualidad ya que existen 2¹²⁸ claves privadas que probar mediante el ataque de fuerza bruta.
AES (Advanced Encryption Standard)
Este algoritmo es el más conocido entre los usuarios de routers, ya que WPA opera con AES como método de cifrado. Este cifrado puede implementar tanto en sistemas hardware como en software. El sistema criptográfico AES opera con bloques y claves de longitudes variable, hay AES de 128bits, de 192 bits y de 256 bits.
El resultado intermedio del cifrado constituye una matriz de bytes de cuatro filas por cuatro columnas. A esta matriz se le vuelve a aplicar una serie de bucles de cifrado basado en operaciones matemáticas (sustituciones no lineales de bytes, desplazamiento de filas de la matriz, combinaciones de las columnas mediante multiplicaciones lógicas y sumas XOR en base a claves intermedias).
Seguridad de AES:
AES tiene 10 rondas para llaves de 128 bits, 12 rondas para llaves de 192 bits y 14 rondas para llaves de 256 bits. En el año 2006, los mejores ataques conocidos fueron el 7 rondas para claves de 128 bits, 8 rondas para llaves de 192 bits, y 9 rondas para claves de 256 bits.
Algunos criptógrafos muestran preocupación sobre la seguridad del AES. Ellos creen que el margen entre el número de rondas especificado en el cifrador y los mejores ataques conocidos es muy pequeño.
Otra preocupación es la estructura de AES. A diferencia de la mayoría de cifradores de bloques, AES tiene una descripción matemática muy ordenada.
Recordemos que AES es usado en los cifrados wireless de los routers de los hogares como método de cifrado (no clave) ya que en los routers podemos usar una clave estática o una dinámica mediante un servidor Radius.
AES también es usado por OpenSSL y por supuesto en OpenVPN (ya que usa las librerías OpenSSL).
Los algoritmos de cifrado de bloque como AES separan el mensaje en trozos de tamaño fijo, por ejemplo de 64 o 128 bits. La forma en que se gestionan estos bloques de mensaje, se denomina “modo de cifrado”.
Por ejemplo, existe el AES-CBC, AES-CFB y AES-OFB, os voy a explicar qué es exactamente esto que aparece en las librerías OpenSSL.
CBC (Cipher-block chaining): a cada bloque de texto plano se le aplica la operación XOR con el bloque cifrado anterior antes de ser cifrado. De esta forma, cada bloque de texto cifrado depende de todo el texto en claro procesado hasta este punto. Como no se dispone de un texto cifrado con el que combinar el primer bloque, se usa un vector de inicialización IV (número aleatorio que puede ser públicamente conocido). La desventaja es que el cifrado es de forma secuencial y por tanto no puede ser paralelizado.
OFB (Output feedback): se generan bloques de flujo de claves, que son operados con XOR y el texto en claro para obtener el texto cifrado. Al igual que con otras unidades de flujo de cifrado, al intercambiar un bit en el texto cifrado produce texto cifrado con un bit intercambiado en el texto plano en la misma ubicación. También se usa un vector de inicialización para el primer bloque.
CFB (Cipher feedback): se hace igual que en OFB, pero para producir el keystream cifra el último bloque de cifrado, en lugar del último bloque del keystream como hace OFB. Un bit erróneo en el texto cifrado genera 1+64/m bloques de texto claro incorrectos (siendo m la longitud del flujo en el que se divide el bloque). El cifrado no puede ser paralelizado, sin embargo el descifrado sí.
Hasta aquí hemos llegado con los algoritmos de cifrado de clave simétrica. Ya sabéis sus ventajas e inconvenientes, los tipos de cifrados que hay y los modos de cifrar la información.


No hay comentarios:

Publicar un comentario