Debe introducir al menos 3 caracteres en el buscador.
Inicio / Wikis / Cursos gratis / Curso de criptografía básica para principiantes - Criptografía Simétrica

Curso de criptografía básica para principiantes - Criptografía Simétrica

 ***** (10 opiniones)
Creative Commons Curso gratis de José de Jesús Angel Angel - 22 de Febrero de 2006
3. Criptografía Simétrica

La criptografía simétrica se refiere al conjunto de métodos que permiten tener comunicación segura entre las partes siempre y cuando anteriormente se hayan intercambiado la clave correspondiente que llamaremos clave simétrica. La simetría se refiere a que las partes tienen la misma llave tanto para cifrar como para descifrar.

Este tipo de criptografía se conoce también como criptografía de clave privada o criptografía de llave privada.

Existe una clasificación de este tipo de criptografía en tres familias, la criptografía simétrica de bloques (block cipher), la criptografía simétrica de lluvia (stream cipher) y la criptografía simétrica de resumen (hash functions). Aunque con ligeras modificaciones un sistema de criptografía simétrica de bloques puede modificarse para convertirse en alguna de las otras dos formas, sin embargo es importante verlas por separado dado que se usan en diferentes aplicaciones.

La criptografía simétrica ha sido la más usada en toda la historia, ésta a podido ser implementada en diferente dispositivos, manuales, mecánicos, eléctricos, hasta los algoritmos actuales que son programables en cualquier computadora. La idea general es aplicar diferentes funciones al mensaje que se quiere cifrar de tal modo que solo conociendo una clave pueda aplicarse de forma inversa para poder así descifrar.

Aunque no existe un tipo de diseño estándar, quizá el más popular es el de Fiestel, que consiste esencialmente en aplicar un número finito de interacciones de cierta forma, que finalmente da como resultado el mensaje cifrado. Este es el caso del sistema criptográfico simétrico más conocido, DES.

DES es un sistema criptográfico (ver referencias en:[47][29][52]), que toma como entrada un bloque de 64 bits del mensaje y este se somete a 16 interacciones, una clave de 56 bits, en la práctica el bloque de la clave tiene 64 bits, ya que a cada conjunto de 7 bits se le agrega un bit que puede ser usada como de paridad.

Dependiendo de la naturaleza de la aplicación DES tiene 4 modos de operación (ver referencias en: [48][54][56]) para poder implementarse: ECB (Electronic Codebook Mode) para mensajes cortos, de menos de 64 bits, CBC (Cipher Block Chaining Mode) para mensajes largos, CFB (Cipher Block Feedback) para cifrar bit por bit ó byte por byte y el OFB (Output Feedback Mode) el mismo uso pero evitando propagación de error.

En la actualidad no se ha podido romper el sistema DES desde la perspectiva de poder deducir la clave simétrica a partir de la información interceptada, sin embargo con un método a fuerza bruta, es decir probando alrededor de 256 posibles claves, se pudo romper DES en Enero de 1999. Lo anterior quiere decir que, es posible obtener la clave del sistema DES en un tiempo relativamente corto, por lo que lo hace inseguro para propósitos de alta seguridad. La opción que se ha tomado para poder suplantar a DES ha sido usar lo que se conoce como cifrado múltiple, es decir aplicar varias veces el mismo algoritmo para fortalecer la longitud de la clave, esto a tomado la forma de un nuevo sistema de cifrado que se conoce actualmente como triple-DES o TDES.

TDES

TDES El funcionamiento de TDES [53] consiste en aplicar 3 veces DES de la siguiente manera: la primera vez se usa una clave K1(azul) junto con el bloque B0, de forma ordinaria E (de Encription), obteniendo el bloque B1. La segunda ves se toma a B1 con la clave K2 (roja), diferente a K1 de forma inversa, llamada D (de Descencription) y la tercera vez a B2 con una clave K3 (verde) diferente a K1 y K2, de forma ordinaria E (de Encription), es decir, aplica de la interacción 1 a la 16 a B0 con la clave K1, después aplica de la 16 a la 1, a B1 con la clave K2, finalmente aplica una vez mas de la 1 a la 16 a B2 usando la clave K3, obteniendo finalmente a B3. En cada una de estas tres veces aplica el modo de operación más adecuado.

Este sistema TDES usa entonces una clave de 168 bits, aunque se ha podido mostrar que los ataques actualmente pueden romper a TDES con una complejidad de 2112, es decir efectuar al menos 2112 operaciones para obtener la clave a fuerza bruta, además de la memoria requerida [44].

Se optó por TDES ya que es muy fácil Inter-operar con DES y proporciona seguridad a mediano plazo.

En los últimos 20 años se han diseñado una gran cantidad de sistemas criptográficos simétricos, entre algunos de ellos están: RC-5 [37], IDEA [25], FEAL [40], LOKI’91 [16], DESX [33], Blowfish [39], CAST [11], GOST [18], etcétera. Sin embargo no han tenido el alcance de DES, a pesar de que algunos de ellos tienen mejores propiedades.

Podemos afirmar que el estado actual de la criptografía simétrica es la búsqueda de un nuevo sistema que pueda reemplazar a DES en la mayor parte de aplicaciones. Es así como se ha optado por convocar a un concurso de sistemas criptográficos simétricos y que este decida quien será el nuevo estándar al menos para los próximos 20 años.

El NIST (National Institute of Standards Technology) [74] convocó a un concurso para poder tener un sistema simétrico que sea seguro y pueda usarse al menos en los próximos 20 años como estándar. En la mitad del año de 1998 se aceptaron 15

candidatos, estos se han sometido a pruebas públicas y por parte del NIST. Actualmente se cuentan con 5 finalistas que son: MARS, RC6, Rijndael, Serpent, y Twofish, se espera que el candidato elegido se tenga a mediados del año 2000.

Las principales características que se pide a AES son que al menos sea tan seguro y rápido como TDES, es decir, que al menos evite los ataques conocidos. Además de que pueda ser implementado en una gran parte de aplicaciones. Una vez designado AES este podrá ser usado tanto como cifrador de bloques (block cipher), como cifrador de lluvia (stream cipher), como función resumen (hash function), y como generador de números seudoaleatorios.

Funciones de Flujo

Los cifradores de flujo o stream ciphers, son usados donde se cuente con un ancho de banda restringido (el número de bits que se transmiten a la vez), además de que se requiere independencia en los bloques transmitidos, entonces la mejor opción es cifrar bit por bit o byte por byte, este tipo de cifradores tiene la característica además de ser muy rápido. Los algoritmos más conocidos de este tipo están RC-4, SEAL [66] y WAKE.

Entre los ataques más potentes a la criptografía simétrica están el criptoanálisis diferencial [12] y lineal [28], sin embargo no han podido ser muy eficientes en la práctica por lo tanto, por el momento después de que un sistema criptográfico es publicado y se muestra inmune a estos dos tipos de ataques (y algunos otros más) la mayor preocupación es la longitud de las claves [26].

Funciones Hash

Una herramienta fundamental en la criptografía, son las funciones hash [60]. Son usadas principalmente para resolver el problema de la integridad de los mensajes, así como la autenticidad de mensajes y de su origen.

Una función hash es también ampliamente usada para la firma digital, ya que los documentos a firmar son en general demasiado grandes, la función hash les asocia una cadena de longitud 160 bits que los hace más manejables para el propósito de firma digital.

Esto es, un mensaje de longitud arbitraria lo transforma de forma “única” a un mensaje de longitud constante.

¿Cómo hace esto?

La idea general es la siguiente:

La función hash toma como entrada una cadena de longitud arbitraria, digamos 5259 bits, luego divide éste mensaje en partes iguales, digamos de 160bits; como en este caso y en general el mensaje original no será un múltiplo de 160, entonces para completar un número entero de partes de 160 bits al último se le agrega un relleno, digamos de puros ceros. En nuestro caso en 5259 caben 32 partes de 160 bits y sobran 139, entonces se agregarán 21 ceros más.

Posteriormente se asocia un valor constante a un vector inicial IV y H0=IV Ahora se obtiene H1 que es el resultado de combinar H0 con X1 usando una función de compresión f H1 = f(H0,X1) Posteriormente se obtiene H2, combinando H1 y X2 con f H2 = f(H1,X2) Se hace lo mismo para obtener H3 H3 = f(H2,X3) Hasta llegar a Ht Ht = f(Ht-1, Xt) Entonces el valor hash será h(M) = Ht

De alguna forma lo que se hace es tomar el mensaje partirlo en pedazos de longitud constante y combinar de alguna forma pedazo por pedazo hasta obtener un solo mensaje de longitud fija como muestra la figura siguiente:

Las funciones hash (o primitivas hash) pueden operar como: MDC (Modification Detection Codes) ó MAC (Massage Authentication Codes) [57][64].

Los MDC sirven para resolver el problema de la integridad de la información, al mensaje se le aplica un MDC (una función hash) y se manda junto con el propio mensaje, al recibirlo el receptor aplica la función hash al mensaje y comprueba que sea igual al hash que se envió antes.

Es decir, se aplica un hash al mensaje M y se envía con el mensaje (M, h(M)), cuando se recibe se le aplica una vez más el hash (ya que M fue enviado) obteniendo h’(M), si h(M)=h’(M), entonces se acepta que el mensaje se a transmitido sin alteración.

Los MAC sirven para autenticar el origen de los mensaje así como también su integridad, para hacer esto se combina el mensaje M con una clave privada K y se les aplica un hash h(M,K). Se envía esto y al llegar a su destino si se comprueba la integridad de la clave privada K, entonces se demuestra que el único origen del mensaje es el que tiene la parte propietaria de la otra clave K.

De forma simple se muestra en la siguiente figura el funcionamiento de un MAC.

Las propiedades que deben de tener las primitivas hash son:

1) Resistencia a la preimagen: significa que dada cualquier imagen, es computacionalmente imposible encontrar un mensaje x tal que h(x)=y. Otra forma como se conoce esta propiedad es que h sea de un solo sentido.

2) Resistencia a una 2° preimagen: significa que dado x, es computacionalmente imposible encontrar una x’ tal que h(x)=h(x’). Otra forma de conocer esta propiedad es que h sea resistente a una colisión suave.

3) Resistencia a colisión: significa que es computacionalmente imposible encontrar dos diferentes mensajes x, x’ tal que h(x)=h(x’). Esta propiedad también se conoce como resistencia a colisión fuerte.

Para ilustrar la necesidad de estas propiedades veamos los siguientes ejemplos:

Consideremos un esquema de firma digital con apéndice, entonces la firma se aplica a h(x), en este caso h debe ser un MDC con resistencia a una 2° preimagen, ya que de lo contrario un atacante C que conozca la firma sobre h(x), puede encontrar otro mensaje x’ tal que h(x) = h(x’) y reclamar que la firma es del documento x’.

Si el atacante C puede hacer que el usuario firme un mensaje, entonces el atacante puede encontrar una colisión (x, x’) (en lugar de lo más difícil que es encontrar una segunda preimagen de x) y hacer firmar al usuario a x diciendo que firmo x’. En este caso es necesaria la propiedad de resistencia a colisión.

Por último si (e,n) es la clave pública RSA de A, C puede elegir aleatoriamente un y y calcular z = ye mod n, y reclamar que y es la firma de z, si C puede encontrar una preimagen x tal que z = h(x), donde x es importante para A. Esto es evitable si h es resistente a preimagen.

Las funciones hash más conocidas son las que se crean a partir de un block cipher como: DES [29], MD5 [62], SHA-1, y RIPEMD 160 [65].

Actualmente se ha podido encontrar debilidades en las funciones hash que tienen como salida una cadena de 128 bits, por lo que se ha recomendado usar salidas de 160bits. Así mismo se han encontrado ataques a MD5 y SHA-0 (antecesora de SHA-1), esto ha dado lugar a que se dirija la atención sobre la función has RIPEMD-160.

El ataque más conocido (de fuerza bruta) a una función hash es conocido como “birthday attack” y se basa en la siguiente paradoja, si hay 23 personas en un local existe una probabilidad de al menos 1/2, de que existan dos personas con el mismo cumpleaños. Aunque parezca muy difícil esa posibilidad se puede mostrar que en general al recorrer la raíz cuadrada del número de un conjunto de datos, se tiene la probabilidad de al menos ½ de encontrar dos iguales.

Al aplicar esto a una función hash, es necesario recorrer entonces la raíz cuadrada de 2160 mensajes para poder encontrar dos con el mismo hash, o sea encontrar una colisión. Por lo tanto una función hash son salida 2160 tiene una complejidad de 280, y una función de 128 bits (38 dígitos) de salida tiene una complejidad de 264, por lo que es recomendable usar actualmente salida de 160 bits (48 dígitos).

Autor y licencia de 'Curso de criptografía básica para principiantes - Criptografía Simétrica'
José de Jesús Angel Angel

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Wikis relacionados con 'Curso de criptografía básica para principiantes - Criptografía Simétrica'

El objetivo de este curso es aprender a programar en el lenguaje Ada, desde sus... Más »
Excelente curso de iniciación a la astronomía para aquellos que quieran aprender sobre esta apasionante... Más »
La idea de este curso surgió de varias conversaciones entre amig@s de la cuadrilla y... Más »
Este es un curso tremendamente completo, guiado y con ejemplos y prácticas pensadas para convertirlo... Más »
Este tutorial presenta los conceptos básicos de líneas de transmisión (Transmission lines), así como una... Más »
Gente Wiki
Ricardo Gaitan
Nacionalidad: colombiana. Publicista. Experto en planeación estratégica de marca, marketing de alto impacto y gerencia de marca. Columnista de la...
Branding, Imagen corporativa,...
Cesar Edgardo
Lic. En economia y catedratico en ciencias sociales, origen: torreón coahuila,méxico. ,aficiones: multimedia,diseño,fotografia,video,musica.
Alejandra Feldman
Soy alejandra feldman y me dedico a la gastronomía casi desde que me acuerdo,y me encanta enseñar a cocinar. Actualmente...
Ayudante de cocina, Cocina,...
Alberto Salvia
Soy jefe de turno de bomberos y responsable de recursos humanos. Estoy realizando un trabajo de modernización organizativa, formación y...
Administración pública y educación, Antropología,...
Octavio Pino Mendez Parra
Ing. Civil que en los ultimos veinte años trabaje en el area de informatica dando mantenimiento a sistemas sobre todo,...
Luis Andrade
Desde hace más de 15 años en el mundo de la tecnología (i+d) en diferentes áreas, en este último tiempo...
Suscribirse
¿Estás seguro de que deseas eliminar este capítulo?