42
Ejemplo de Algoritmo Simétrico DES para des/encriptacion JAVA Escribe aquí el texto descargar import java.security.*; import javax.crypto.*; import javax.crypto.interfaces.*; import javax.crypto.spec.*; import java.io.*; public class EjemploDES { /* Ejemplo de uso de funciones de resumen Hash * carga el fichero que recibe como parametro y genera el resumen */ public static void main (String[] args) throws Exception { // Comprobar argumentos if (args.length !=1) { mensajeAyuda(); System.exit(1); } /* Cargar "provider" (sólo si no se usa el que viene por defecto) */ // Security.addProvider(new BouncyCastleProvider()); // Usa provider BC // /* PASO 1: Crear e inicializar clave */ KeyGenerator keyGen = KeyGenerator.getInstance("DES"); keyGen.init(56); SecretKey clave = keyGen.generateKey(); System.out.println("CLAVE:" + new String(clave.getEncoded()) + "\ n"); /* PASO 2: Crear cifrador */ Cipher cifrador= Cipher.getInstance("DES/ECB/PKCS5Padding"); // Algoritmo DES // Modo : ECB (Electronic Code Book) // Relleno : PKCS5Padding // /* PASO 3a: Inicializar cifrador en modo CIFRADO */

Ejemplo de Algoritmo Simétrico DES para des

  • Upload
    vahr614

  • View
    2.112

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Ejemplo de Algoritmo Simétrico DES para des

Ejemplo de Algoritmo Simétrico DES para des/encriptacion JAVA

Escribe aquí el textodescargar

import java.security.*;

import javax.crypto.*;import javax.crypto.interfaces.*;import javax.crypto.spec.*;

import java.io.*;

public class EjemploDES { /* Ejemplo de uso de funciones de resumen Hash * carga el fichero que recibe como parametro y genera el resumen */ public static void main (String[] args) throws Exception { // Comprobar argumentos if (args.length !=1) {

mensajeAyuda(); System.exit(1);

} /* Cargar "provider" (sólo si no se usa el que viene por defecto) */ // Security.addProvider(new BouncyCastleProvider()); // Usa provider BC // /* PASO 1: Crear e inicializar clave */ KeyGenerator keyGen = KeyGenerator.getInstance("DES"); keyGen.init(56); SecretKey clave = keyGen.generateKey(); System.out.println("CLAVE:" + new String(clave.getEncoded()) + "\n"); /* PASO 2: Crear cifrador */ Cipher cifrador= Cipher.getInstance("DES/ECB/PKCS5Padding"); // Algoritmo DES // Modo : ECB (Electronic Code Book) // Relleno : PKCS5Padding

// /* PASO 3a: Inicializar cifrador en modo CIFRADO */ cifrador.init(Cipher.ENCRYPT_MODE, clave); /* Leer fichero de 1k en 1k y pasar fragmentos leidos al cifrador */ byte[] bufferPlano = new byte[1000]; byte[] bufferCifrado; String textoCifradoTotal = new String(); FileInputStream in = new FileInputStream(args[0]); int bytesLeidos = in.read(bufferPlano,0, 1000);

Page 2: Ejemplo de Algoritmo Simétrico DES para des

while(bytesLeidos != -1) { // Mientras no se llegue al final del fichero

bufferCifrado = cifrador.update(bufferPlano, 0 , bytesLeidos); // Pasa texto claro leido al cifrador

textoCifradoTotal = textoCifradoTotal + new String(bufferCifrado); // Acumular texto cifrado

bytesLeidos = in.read(bufferPlano,0, 1000); } in.close(); bufferCifrado = cifrador.doFinal(); // Completar cifrado (puede devolver texto) textoCifradoTotal = textoCifradoTotal + new String(bufferCifrado);

System.out.println("--------------- TEXTO CIFRADO ---------------"); System.out.println(textoCifradoTotal); // Mostrar texto cifrado System.out.println("---------------------------------------------"); System.out.println("--------------- TEXTO DESCIFRADO -------------"); /* PASO 3b: Poner cifrador en modo DESCIFRADO */ cifrador.init(Cipher.DECRYPT_MODE, clave); byte[] textoDescifrado = cifrador.update(textoCifradoTotal.getBytes()); // Pasar texto al descifrador System.out.print( new String(textoDescifrado) ); textoDescifrado = cifrador.doFinal(); // Completar descifrado (puede devolver texto) System.out.print( new String(textoDescifrado) ); System.out.println("----------------------------------------------"); } public static void mensajeAyuda() { System.out.println("Ejemplo cifrado DES"); System.out.println("\tSintaxis: java EjemploDES fichero"); System.out.println(); } }

Page 3: Ejemplo de Algoritmo Simétrico DES para des

riptología - Algoritmos Simétricos Modernos (Llave Privada)

volver

La mayoría de los algoritmos simétricos actuales se apoyan en los conceptos de Confusión y Difusión vertidos por Claude Shannon sobre la Teoría de la Información a finales de los años cuarenta.

Estos métodos consisten en ocultar la relación entre el texto plano, el texto cifrado y la clave (Confusión); y repartir la influencia de cada bit del mensaje original lo más posible entre el mensaje cifrado (Difusión).

El objetivo del presente no es entrar en detalles de cada uno de los muchos algoritmos existentes, por lo que sólo se dará una idea de su funcionamiento y complejidad.

Redes de Feistel

Este algoritmo no es un algoritmo de cifrado per se, pero muchos de los vistos a continuación lo utilizan como parte vital en su funcionamiento. Se basa en dividir un bloque de longitud n (generalmente el texto a cifrar) en dos mitades, L y R. Luego se define un cifrado de producto iteractivo en el que la salida de cada ronda es la entrada de la siguiente.

DES

Data Encryption Standard es el algoritmo simétrico más extendido mundialmente. A mediados de los setenta fue adoptado como estándar para las comunicaciones seguras (Estándar AES) del gobierno de EE.UU. En su principio fue diseñado por la NSA (National Security Agency) (1) para ser implementado en hardware, pero al extenderse su algoritmo se comenzó a implementar en software.

DES utiliza bloques de 64 bits, los cuales codifica empleando claves de 56 bits y aplicando permutaciones a nivel de bit en diferentes momentos (mediante tablas de permutaciones y operaciones XOR). Es una red de Feistel de 16 rondas, más dos permutaciones, una que se aplica al principio y otra al final.

La flexibilidad de DES reside en que el mismo algoritmo puede ser utilizado tanto para cifrar como para descifrar, simplemente invirtiendo el orden de las 16 subclaves obtenidas a partir de la clave de cifrado.

Page 4: Ejemplo de Algoritmo Simétrico DES para des

En la actualidad no se ha podido romper el sistema DES criptoanalíticamente (deducir la clave simétrica a partir de la información interceptada). Sin embargo una empresa española sin fines de lucro llamado Electronic Frontier Foundation (EFF) (2) construyo en Enero de 1999 una máquina capaz de probar las 2 56 claves posibles en DES y romperlo sólo en tres días con fuerza bruta.

A pesar de su caída DES sigue siendo utilizado por su amplia extensión de las implementaciones vía hardware existentes (en cajeros automáticos y señales de video por ejemplo) y se evita tener que confiar en nuevas tecnologías no probadas. En vez de abandonar su utilización se prefiere suplantar a DES con lo que se conoce como cifrado múltiple, es decir aplicar varias veces el mismo algoritmo para fortalecer la longitud de la clave.

DES Múltiple

Consiste en aplicar varias veces el algoritmo DES (con diferentes claves) al mensaje original. El más conocidos de todos ellos el Triple-DES (T-DES), el cual consiste en aplicar 3 veces DES de la siguiente manera:

1. Se codifica con la clave K1.2. Se decodifica el resultado con la clave K2.3. Lo obtenido se vuelve a codificar con K1.

La clave resultante el la concatenación de K1 y K2 con una longitud de 112 bits.

En 1998 el NIST (National Institute of Standards Technology) convoco a un concurso para poder determinar un algoritmo simétricos seguro y próximo sustito de DES. Se aceptaron 15 candidatos y a principios del año 2000 los 5 finalistas fueron MARS, RC-6, Serpent y TwoFish y Rijndael (que en octubre sería el ganador).

IDEA

El International Data Encription Algorithm fue desarollado en Alemania a principios de los noventa por James L. Massey y Xuejia Lai.

Trabaja con bloques de 64 bits de longitud empleando una clave de 128 bits y, como en el caso de DES, se utiliza el mismo algoritmo tanto para cifrar como para descifrar.

El proceso de encriptación consiste ocho rondas de cifrado idéntico, excepto por las subclaves utilizadas (segmentos de 16 bits de los 128 de la clave), en donde se combinan diferentes operaciones matemáticas (XORs y Sumas Módulo 16) y una transformación final.

Page 5: Ejemplo de Algoritmo Simétrico DES para des

"En mi opinión, él es el mejor y más seguro algoritmo de bloques disponible actualmente al público." (3)

BlowFish

Este algoritmo fue desarrollado por Bruce Schneier en 1993. Para la encriptación emplea bloques de 64 bits y permite claves de encriptación de diversas longitudes (hasta 448 bits).

Generalmente, utiliza valores decimales de Π (aunque puede cambiarse a voluntad) para obtener las funciones de encriptación y desencriptación. Estas funciones emplean operaciones lógicas simples y presentes en cualquier procesador. Esto se traduce en un algoritmo "liviano", que permite su implementación, vía hardware, en cualquier controlador (como teléfonos celulares por ejemplo).

RC5

Este algoritmo, diseñado por RSA (4), permite definir el tamaño del bloque a encriptar, el tamaño de la clave utilizada y el número de fases de encriptación. El algoritmo genera una tabla de encriptación y luego procede a encriptar o desencriptar los datos.

CAST

Es un buen sistema de cifrado en bloques con una clave CAST-128 bits, es muy rápido y es gratuito. Su nombre deriva de las iniciales de sus autores, Carlisle, Adams, Stafford Tavares, de la empresa Northern Telecom (NorTel).

CAST no tiene claves débiles o semidébiles y hay fuertes argumentos acerca que CAST es completamente inmune a los métodos de criptoanálisis más potentes conocidos.

También existe una versión con clave CAST-256 bits que ha sido candidato a AES.

Rijndael (el nuevo estándar AES)

Page 6: Ejemplo de Algoritmo Simétrico DES para des

Rijndael, el nuevo algoritmo belga mezcla de Vincent Rijmen y Joan Daemen (sus autores) sorprende tanto por su innovador diseño como por su simplicidad práctica; aunque tras él se esconda un complejo trasfondo matemático.

Su algoritmo no se basa en redes de Feistel, y en su lugar se ha definido una estructura de "capas" formadas por funciones polinómicas reversibles (tienen inversa) y no lineales. Es fácil imaginar que el proceso de descifrado consiste en aplicar las funciones inversas a las aplicadas para cifrar, en el orden contrario.

Las implementaciones actuales pueden utilizar bloques de 128, 192 y 256 bits de longitud combinadas con claves de 128, 192 y 256 bits para su cifrado; aunque tanto los bloques como las claves pueden extenderse en múltiplo de 32 bits.

Si bien su joven edad no permite asegurar nada, según sus autores, es altamente improbable que existan claves débiles en el nuevo AES. También se ha probado la resistencia al criptoanálisis tanto lineal como diferencial, asegurando así la desaparición de DES.

Criptoanálisis de Algoritmos Simétricos

El Criptoanálisis comenzó a extenderse a partir de la aparición de DES por sospechas (nunca confirmadas) de que el algoritmo propuesto por la NSA contenía puertas traseras. Entre los ataques más potentes a la criptografía simétrica se encuentran:

Criptoanálisis Diferencial: Ideado por Biham y Shamir en 1990, se basa en el estudio de dos textos codificados para estudiar las diferencias entre ambos mientras se los está codificando. Luego puede asignarse probabilidades a ciertas claves de cifrado.

Criptoanálisis Lineal: Ideado por Mitsuru Matsui, se basa en tomar porciones del texto cifrado y porciones de otro texto plano y efectuar operaciones sobre ellos de forma tal de obtener probabilidades de aparición de ciertas claves.

Sin embargo, estos métodos, no han podido ser muy eficientes en la práctica. En el momento después de que un sistema criptográfico es publicado y se muestra inmune a estos dos tipos de ataques (y otros pocos) la mayor preocupación es la longitud de las claves.

Page 7: Ejemplo de Algoritmo Simétrico DES para des

algoritmo de la Simétrico-llave

algoritmos de la Simétrico-llave es una clase de algoritmos para criptografía ese uso se relacionó trivial, a menudo idéntico, llaves criptográficas para el desciframiento y el cifrado.

La llave del cifrado se relaciona trivial con la llave del desciframiento, en que pueden ser idénticos o hay un simple transforma para ir entre las dos llaves. Las llaves, representan en la práctica a secreto compartido entre dos o más partidos que se pueden utilizar para mantener un acoplamiento privado de la información.

Otros términos para el cifrado de la simétrico-llave son secreto-llave, solo-llave, compartir-llave, uno-llave y eventual privado-llave cifrado. El uso del último término está en conflicto con el término llave privada en criptografía de la público-llave.

Contenido

1 Tipos de algoritmos de la simétrico-llave 2 Simétrico contra algoritmos asimétricos

o 2.1 Velocidad o 2.2 Gerencia dominante o 2.3 Cryptosystem híbrido

3 Primitivos criptográficos basados en cifras simétricas 4 Construcción de cifras simétricas 5 Seguridad de cifras simétricas 6 Generación dominante 7 Notas

Tipos de algoritmos de la simétrico-llave

los algoritmos de la Simétrico-llave se pueden dividir en cifras de la corriente y cifras del bloque. Las cifras de la corriente cifran los pedacitos del mensaje uno a la vez, y las cifras del bloque toman un número de pedacitos y los cifran como sola unidad. Los bloques de 64 pedacitos han sido de uso general; Estándar avanzado del cifrado el algoritmo aprobó cerca NIST en diciembre 2001 aplicaciones 128 bloques del pedacito.

Algunos ejemplos de algoritmos simétricos populares y bien-respetados incluyen Twofish, Serpiente, AES (aka Rijndael), Blowfish, CAST5, RC4, TDES, y IDEA.

Simétrico contra algoritmos asimétricos

Desemejante de algoritmos simétricos, algoritmos dominantes asimétricos utilice una diversa llave para el cifrado que para el desciframiento. Es decir, un usuario que sabe la llave del cifrado de un algoritmo asimétrico puede cifrar mensajes, pero no puede derivar la

Page 8: Ejemplo de Algoritmo Simétrico DES para des

llave del desciframiento y no puede descifrar los mensajes cifrados con esa llave. Una comparación corta de estos dos tipos de algoritmos se da abajo:

Velocidad

los algoritmos de la Simétrico-llave son generalmente mucho menos de cómputo intensivos que algoritmos dominantes asimétricos. En la práctica, los algoritmos dominantes asimétricos son típicamente centenares a los algoritmos dominantes más lentamente que simétricos de los tiempos de los millares.

Gerencia dominante

Artículo principal: Gerencia dominante

Una desventaja de los algoritmos de la simétrico-llave es el requisito de a llave secreta compartida, con una copia en cada extremo. Para asegurarse asegure las comunicaciones entre cada uno en una población de la gente de n al total de n(n de las llaves del − 1) /2 es necesario, que es el número total de los canales de comunicaciones posibles.[1] Para limitar el impacto de un descubrimiento potencial de un adversario criptográfico, deben ser cambiados regularmente y ser guardados seguro durante la distribución y en servicio. El proceso de seleccionar, de distribuir y de almacenar llaves se conoce como gerencia dominante; es difícil alcanzar confiablemente y con seguridad.

Cryptosystem híbrido

Artículo principal: cryptosystem híbrido

En moderno cryptosystems los diseños, asimétricos (llave pública) y los algoritmos simétricos se utilizan para aprovecharse de las virtudes de ambos. Los algoritmos asimétricos se utilizan para distribuir simétrico-llaves al principio de una sesión. Una vez que una llave simétrica se sepa a todos los partidos de la sesión, algoritmos más rápidos de la simétrico-llave que usan esa llave se pueden utilizar para cifrar el resto de la sesión. Esto simplifica el problema dominante de la distribución, porque las llaves asimétricas tienen que ser distribuidas solamente auténtico, mientras que las llaves simétricas necesitan ser distribuidas de una manera auténtica y confidencial.

Los sistemas que utilizan un acercamiento tan híbrido incluyen SSL, PGP y GPG, etc.

Primitivos criptográficos basados en cifras simétricas

Las cifras simétricas son de uso frecuente alcanzar otros primitivos criptográficos que apenas el cifrado.

Cifrar un mensaje no garantiza que este mensaje no está cambiado mientras que está cifrado. Por lo tanto a menudo a código de la autentificación del mensaje se agrega a un texto cifrado para asegurarse de que los cambios al texto cifrado serán observados por el

Page 9: Ejemplo de Algoritmo Simétrico DES para des

receptor. Los códigos de la autentificación del mensaje se pueden construir de cifras simétricas (e.g. CBC-MAC). Sin embargo, estos códigos de la autentificación de los mensajes no se pueden utilizar para no-renegación propósitos.

Otro uso es construir funciones del picadillo de cifras del bloque. Vea función unidireccional de la compresión para las descripciones de varios tales métodos.

Construcción de cifras simétricasArtículo principal: Cifra de Feistel

Muchas cifras modernas del bloque se basan en una construcción propuesta por Horst Feistel. La construcción de Feistel permite para construir las funciones inversibles de otras funciones que sean sí mismo no inversibles.

Seguridad de cifras simétricas

Las cifras simétricas han sido históricamente susceptibles a ataques del saber-plaintext, ataques elegidos del plaintext, criptoanálisis diferenciado y criptoanálisis linear. La construcción cuidadosa de las funciones para cada uno poder redonda reduce grandemente las ocasiones de un ataque acertado.

Generación dominante

Cuando está utilizado con las cifras asimétricas para la transferencia dominante, generadores dominantes pseudorandom se utilizan casi siempre generar las llaves simétricas de la sesión de la cifra. Sin embargo, carencia de la aleatoriedad en esos generadores o en su vectores de la inicialización es desastroso y ha conducido a las roturas cryptanalytic en el pasado. Por lo tanto, es esencial que una puesta en práctica utiliza una fuente de la alta entropía para su inicialización.

Page 10: Ejemplo de Algoritmo Simétrico DES para des

1. Introducción 2. Descripción del algoritmo DES 3. Algoritmo de Cifrado 4. Generación de la subclave Ki 5. Función f (Ri-1 , Ki) 6. Suma Li Ri 7. Permutación P1-1 8. Descifrado 9. Ataques a la seguridad criptográfica 10. Bibliografía

En el presente trabajo se explica los distintos procesos que conforman el algoritmo de cifrado en bloques simétrico DES, los diferentes ataques que ha sufrido DES, con el propósito de dar una explicación general.

Data Encryption Standard (DES), es un algoritmo de cifrado en bloque simétrico, de longitud fija, el cual consiste de dos permutaciones, 16 vueltas en donde el mensaje de 64 bits es dividido en dos bloques de 32 bits, después de usar la primer permutación llamada P1, es cifrado 16 veces utilizando cada vez una subclave, la cual se genera 16 veces en un proceso paralelo. En el proceso para descifrar se utiliza el mismo algoritmo con las subclaves en orden inverso, dando como consecuencia, la simetría del algoritmo.

DES (Data Encryption Estándar), aparece en los años 70, cuando la National Bureau of Standards (NBS), publicó una convocatoria para nuevos sistemas criptográficos. IBM, presentó el sistema de cifrado DES como una modificación de un sistema anterior llamado lucifer. DES se convirtió en el estándar federal, para las comunicaciones seguras en los EE.UU. El algoritmo DES se hizo publico debido a una falla entre el NSA y la Oficina Nacional de Estandarización, cuando originalmente DES fue diseñado para ser implementado por hardware, en dicha publicación apareció información a detalle sobre el algoritmo para ser implementado por software.

Desde la aparición del algoritmo DES, se ha sometido a pruebas que realiza la National Institute of Standards and Technology (NIST), cada cuatro años, con el propósito de mantener o retirarle como estándar, DES ha sufrido serias criticas en cuanto a su fiabilidad por contar con una clave de 64 bits, siendo 56 bits los que se utilizan para obtener las 16 subclaves. En el año de 1998 se realizo un reto, con el propósito de romper el algoritmo DES, lo cual se logro. Considerando que el algoritmo DES fue diseñado en los años 70 ha tenido un camino largo sin haber sido vulnerado, el NIST, considerando el creciente aumento de la tecnología y la velocidad de los ordenadores, que cada 18 meses duplican su velocidad, el algoritmo DES ya no es computacionalmente seguro, por tal motivo el NIST ha trabajo en el algoritmo Triple-DES, con este algoritmo y la noticia publicada por el NIST "DES encryption inadequate", proponiendo retirar la certificación para uso en productos de software de venta para el gobierno de los EE.UU. el algoritmo DES tiene poco tiempo de uso comercial.

Introducción

Page 11: Ejemplo de Algoritmo Simétrico DES para des

En la historia de la humanidad siempre ha existido la necesidad de mantener información en secreto, por lo que existe dos etapas de la CriptografíaI, Criptografía Clásica y Criptografía Moderna. La etapa de la criptografía clásica se puede limitar en tiempo, cuando surge la necesidad de tener un canal seguro de comunicación, al surgimiento de la Criptografía Moderna en los años 70`s.

En la Criptografía clásica se utilizaba la Sustitución y Transposición para cifrar el mensaje, a continuación se presentan algunos métodos utilizados.

Método de Transposición de Escitalo. El método consistía en un aparato cilíndrico de madera al cual se le enrollaba una cinta de papiro y en el cual se escribía el mensaje a lo largo, una vez terminado el mensaje se desenrollaba la cinta de papiro, siendo la técnica de transposición de caracteres, era difícil comprender el mensaje sin el aparato cilíndrico.

Método de Sustitución, Mono-alfabético, Mono-grámico de Cesar. El nombre utilizado es debido a que se menciona la técnica, el tipo de alfabeto y la forma de ordenar las letras para realizar el cifrado. El método consistía en un desplazamiento (n), con el propósito de sustituir cada carácter del mensaje en claro por otro situado (n) posiciones después.

Método de Sustitución, Mono-alfabético, Poli-gramico de Playfair. Se hace referencia a la técnica, el tipo de alfabeto y la forma de ordenar las letras para realizar el cifrado. El método consistía en tomar sus caracteres en parejas, las letras del alfabeto se escribían en una matriz de 5x5, al tener los caracteres separados en parejas se procedía a realizar el cifrado, con ciertas reglas, para encontrar la pareja de letras que darían el cifrado posterior.

Método de Sustitución, Poli-alfabético, Periódicos de Vigenere. A diferencia de los métodos mencionados anteriormente, este método utiliza mas de un alfabeto para cifrar el mensaje, por tal motivo se considera Poli-alfabético, se considera Periódico debido a la clave utilizada para cifrar el mensaje. El método consistía en asignar a cada letra de cierto alfabeto un numero entero, y seleccionar una palabra clave de cualquier alfabeto y asignándole un numero entero a cada letra de la misma, sumada con el mensaje daría origen al mensaje cifrado.

La Criptografía clásica, conocida actualmente como Simétrica o de Clave secreta, tiene como características el algoritmo Oculto y la clave Secreta, siendo estas la diferencia con la Criptografía moderna, en la actualidad el algoritmo es Publico y la clave Secreta. La razón de conocer el algoritmo, es comprobar que realmente es seguro, a través de su criptoanálisisII, con el propósito de tener la certeza que aún continua siendo seguro, ésto a dado entre otras consecuencias nuevas líneas de investigación y poder seleccionar los algoritmos de cifrado para estándar.

Descripción del algoritmo DES

Page 12: Ejemplo de Algoritmo Simétrico DES para des

En la etapa de la Criptografía moderna existen dos modelos de cifrado, cifrado en flujo (Vernam) y cifrado en bloque (DES cifrado en bloque simétrico y RSA cifrado en bloque asimétrico).

1.1. Algoritmo de Cifrado

DES, es un algoritmo de cifrado en bloques simétrico, el tamaño del bloque es de longitud fija de 64 bits, el algoritmo consta de dos permutaciones, una al inicio conocida como P1, la cual se muestra a continuación:

Tabla antes la Permutación

1 2 3 4 5 6 7 8

9 10 11 12 13 14 15 16

17 18 19 20 21 22 23 24

25 26 27 28 29 30 31 32

33 34 35 36 37 38 39 40

41 42 43 44 45 46 47 48

49 50 51 52 53 54 55 56

57 58 59 60 61 62 63 64

Permutación Inicial (P1)

58 50 42 34 26 18 10 2

60 52 44 36 28 20 12 4

62 54 46 38 30 22 14 6

64 56 48 40 32 24 16 8

57 49 41 33 25 17 9 1

59 51 43 35 27 19 11 3

61 53 45 37 29 21 13 5

63 55 47 39 31 23 15 7

Al investigar información sobre DES, se puede encontrar la siguiente tabla:

Para ver la tabla seleccione la opción "Descargar" del menú superior

Después de recibir un bloque de entrada de 64 bits, el primer paso consiste en aplicar al bloque de entrada la permutación P1, teniendo como resultado un orden de salida que se identifica leyendo la tabla de izquierda a derecha y de arriba abajo. Significa que el bit del lugar 58 en el mensaje de entrada, después de la permutación, ocupara la posición 1 y así sucesivamente. Ejemplo:

Bloque de Entrada: Bloque de Salida:

Page 13: Ejemplo de Algoritmo Simétrico DES para des

0..1 ..0 ..1 ..0 ..1 ..1 ..0 0..1 ..1 ..0 ..1 ..0 ..1 ..0

2..10..18..26..34..42..50..58 58..50..42..34..26..18..10.. 2

Una vez realizada la permutación, los 64 bits se dividen en dos sub-bloques Left y Right (Li y Ri) de 32 bits, los bits que forma el sub-bloque Li se encuentra formado por los primeros 32 bits y los bits restantes forma el sub-bloque Ri. En estas condiciones, el cifrado DES esta definido por las ecuaciones:

Li = Ri-1

Ri = Li-1 f ( Ri-1 , Ki )

El valor de i = 16, representa el valor de las 16 vueltas del algoritmo. Lo anterior se explicará con un ejemplo, el cual se ira detallando a lo largo del trabajo, ejemplificando cada proceso del algoritmo.

Ejemplo Permutación P1

Mensaje a Cifrar = Denytamo

Para ver la tabla seleccione la opción "Descargar" del menú superior

Utilizando la tabla Permutación Inicial P1, tenemos:

Tabla antes la Permutación

0 1 0 0 0 1 0 0

0 1 1 0 0 1 0 1

0 1 1 0 1 1 1 0

0 1 1 1 1 0 0 1

0 1 1 1 0 1 0 0

0 1 1 0 0 0 0 1

0 1 1 0 1 1 0 1

0 1 1 0 1 1 1 1

Permutación Inicial (P1)

1 1 1 1 1 1 1 1

0 0 0 1 1 0 0 0

1 1 0 1 0 1 1 1

1 1 1 0 1 0 1 0

0 0 0 0 0 0 0 0

Page 14: Ejemplo de Algoritmo Simétrico DES para des

1 1 1 1 1 1 1 0

1 1 0 0 1 1 0 0

1 0 0 0 0 1 0 0

Se muestra el resultado de haber realizado la permutación P1, la parte superior se encuentra marcada con el fin de indicar cuales son los bits que forman el sub-bloque L0, los bits restantes forman el sub-bloque R0, dando como resultado:

L0 = 11111111 00011000 11010111 11101010

R0 = 00000000 11111110 11001100 10000100

Sub-bloques iniciales

1.1.1. Permutación E

La salida de R0 es de 32 bits, se utiliza la permutación E, con el propósito de expandir a 48 bits y así poder realizar la suma OR exclusiva con la clave Ki, lo anterior se encuentra esquematizado en la imagen. A continuación se muestra la tabla para realizar la permutación E.

Permutación E

32 1 2 3 4 5

4 5 6 7 8 9

8 9 10 11 12 13

12 13 14 15 16 17

16 17 18 19 20 21

20 21 22 23 24 25

24 25 26 27 28 29

28 29 30 31 32 1

Bits duplicados

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

17 18 19 20

21 22 23 24

25 26 27 28

Page 15: Ejemplo de Algoritmo Simétrico DES para des

29 30 31 32

En la tabla del lado izquierdo se encuentran marcados los bits utilizados para expandir a 48 bits en la permutación E. Al realizar la expansión de R0, se procede con la suma OR exclusiva que se explicara mas adelante.

Ejemplo Permutación E

Al tener la secuencia de R0 de 32 bits, es necesario aplicar la permutación E, la cual se muestra a continuación.

32 Bits

0 0 0 0

0 0 0 0

1 1 1 1

1 1 1 0

1 1 0 0

1 1 0 0

1 0 0 0

0 1 0 0

R0 = 0000 0000 1111 1110 1100 1100 1000 0100

Permutación E

0 0 0 0 0 0

0 0 0 0 0 1

0 1 1 1 1 1

1 1 1 1 0 1

0 1 1 0 0 1

0 1 1 0 0 1

0 1 0 0 0 0

0 0 1 0 0 0

 

El resultado de la permutación E(R0) es:

E(R0) = 000000 000001 011111 111101 011001 011001 010000 001000

Page 16: Ejemplo de Algoritmo Simétrico DES para des

1.2. Generación de la subclave Ki

La clave Ki tiene un valor inicial de 64 bits, su longitud es fija.

Tabla de 56 bits

1 2 3 4 5 6 7

9 10 11 12 13 14 15

17 18 19 20 21 22 23

25 26 27 28 29 30 31

33 34 35 36 37 38 39

41 42 43 44 45 46 47

49 50 51 52 53 54 55

57 58 59 60 61 62 63

Tabla de 64 bits Inicial

1 2 3 4 5 6 7 8

9 10 11 12 13 14 15 16

17 18 19 20 21 22 23 24

25 26 27 28 29 30 31 32

33 34 35 36 37 38 39 40

41 42 43 44 45 46 47 48

49 50 51 52 53 54 55 56

57 58 59 60 61 62 63 64

Permutación PC1

57 49 41 33 25 17 9

1 58 50 42 34 26 18

10 2 59 51 43 35 27

19 11 3 60 52 44 36

63 55 47 39 31 23 15

7 62 54 46 38 30 22

14 6 61 53 45 37 29

21 13 5 28 20 12 4

La tabla de la Permutación PC1, se utiliza para realizar la permutación inicial en la generación de la subclave Ki , para cada vuelta. Una vez realizada la permutación, los 56 bits se dividen en dos sub-bloques Ci y Di de 28 bits. En estas condiciones, la clave esta definida por las ecuaciones:

Page 17: Ejemplo de Algoritmo Simétrico DES para des

Ci = LS (Ci-1) Di = LS(Di -1)

Ki = PC2 (Ci , Di)

Ejemplo Permutación PC1

Clave K: Santiago

Decimal Carácter Binario

97 a 01100001

103 g 01100111

105 i 01101001

110 n 01101110

111 o 01101111

83 S 01010011

116 t 01110100

S 01010011

a 01100001

n 01101110

t 01110100

i 01101001

a 01100001

g 01100111

o 01101111

Utilizando la Permutación PC1 obtenemos:

Tabla de 64 bits de Ki Inicial

0 1 0 1 0 0 1 1

0 1 1 0 0 0 0 1

0 1 1 0 1 1 1 0

0 1 1 1 0 1 0 0

0 1 1 0 1 0 0 1

0 1 1 0 0 0 0 1

0 1 1 0 0 1 1 1

0 1 1 0 1 1 1 1

Tabla de 56 bits

Page 18: Ejemplo de Algoritmo Simétrico DES para des

0 1 0 1 0 0 1

0 1 1 0 0 0 0

0 1 1 0 1 1 1

0 1 1 1 0 1 0

0 1 1 0 1 0 0

0 1 1 0 0 0 0

0 1 1 0 0 1 1

0 1 1 0 1 1 1

Permutación PC1

0 0 0 0 0 0 0

0 1 1 1 1 1 1

1 1 1 1 1 1 1

1 1 0 0 0 0 0

1 1 0 0 0 1 0

1 1 1 0 0 1 1

0 0 1 0 0 1 0

1 0 0 1 0 0 1

Sub-bloque C0 = 0000000 0111111 1111111 1100000

Sub-bloque D0 = 1100010 1110011 0010010 1001001

Sub-bloques iniciales

1.2.1. Desplazamiento LS(…)

El desplazamiento LS(…) se aplica a los sub-bloques de longitud fija de 7 bits (Ci y Di), donde LS(…) es un desplazamiento circular a la izquierda de 1 o 2 bits del entero binario que toma el argumento de acuerdo a la siguiente tabla:

Vuelta 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

No. Bits desplazados. Izda. 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1

Con el propósito de comprender mejor el desplazamiento LS(…) se realizara el proceso.

Ejemplo Permutación LS(..)

Al tener los sub-bloques C 0 y D0, el siguiente paso es el desplazamiento LS, se marcan los dos primeros bits, con el propósito de poder identificar el resultado del desplazamiento.

Page 19: Ejemplo de Algoritmo Simétrico DES para des

Sub-bloque C0 = 0000000 0111111 1111111 1100000

Sub-bloque D0 = 1100010 1110011 0010010 1001001

Al ser la primer vuelta, el desplazamiento es de un bit a la izquierda como se indica en la tabla, dando como resultado C1 y D1.

Sub-bloque C1 = 0000000 1111111 1111111 1000000

Sub-bloque D1 = 1000101 1100110 0100101 0010011

Sub-bloques después del desplazamiento LS(..)

1.2.2. Permutación PC2

La permutación PC2 se conoce como permutación de compresión, dada por las operaciones de concatenar y permutar Ci y Di, se va a comprimir de 56 bits a 48 bits para obtener la clave Ki, posteriormente será utilizada en la función (f(Ri-1, Ki))

El orden de concatenar Ci y Di, es utilizando primero los 28 bits de Ci y posteriormente los 28 bits de Di, la tabla PC2 es una tabla de 8 x 6, dando como resultado 8 bloques de 6 bits.

Tabla ( Ci, Di)

1 2 3 4 5 6 7

8 9 10 11 12 13 14

15 16 17 18 19 20 21

22 23 24 25 26 27 28

29 30 31 32 33 34 35

36 37 38 39 40 41 42

43 44 45 46 47 48 49

50 51 52 53 54 55 56

Tabla de 8 x 6 bits

1 2 3 4 5 6

7 8 9 10 11 12

13 14 15 16 17 18

19 20 21 22 23 24

25 26 27 28 29 30

31 32 33 34 35 36

37 38 39 40 41 42

43 44 45 46 47 48

Page 20: Ejemplo de Algoritmo Simétrico DES para des

Permutación PC2

14 17 11 24 1 5

3 28 15 6 21 10

23 19 12 4 26 8

16 7 27 20 13 2

41 52 31 37 47 55

30 40 51 45 33 48

44 49 39 56 34 53

46 42 50 36 29 32

Ejemplo Permutación PC2

Continuando con el ejemplo se mostrará el proceso utilizado en la permutación PC2, para obtener la clave Ki.

Concatenando Ci, Di

0000000 1111111 1111111 1000000 1000101 1100110 0100101 0010011

Los 56 bits de entrada en la permutación PC2

Para ver la tabla seleccione la opción "Descargar" del menú superior 

El resultado de haber realizado la permutación PC2 es la generación de la clave K1 siendo:

K1 = PC2 (C1, D1) =

111000 001011 011001 100110 110111 010010 110100 000110

Clave K1

Las operaciones LS(..) y PC2, se repiten 15 veces para así obtener las 15 subclaves de cifrado restantes. Los procesos de cifrado y generación de claves se representan esquemáticamente en la siguiente imagen.

1.3. Función f(Ri-1 , Ki)

Al tener la clave Ki y la expansión de (R0), el siguiente paso es la función f(Ri-1 , Ki), la cual consta de tres procesos (Suma OR exclusivo, ocho funciones no lineales, Permutación P), siendo las ocho funciones lineales la mayor virtud del algoritmo, se han propuesto modificaciones en varios procesos, pero cualquier modificación realizada, en las funciones lineales hace débil al algoritmo. A continuación se explican los procesos.

Page 21: Ejemplo de Algoritmo Simétrico DES para des

1.3.1. Suma OR exclusiva

Con la clave Ki y E(Ri-1), se procede a realizar la suma OR exclusiva, al realizar la operación se tiene un 50% de certeza que el siguiente bit sea 1, con lo cual aumenta la dificultad de poder descifrar el mensaje. La operación OR exclusiva se ejemplifica en la siguiente tabla:

A B A B

0 0 0

0 1 1

1 0 1

1 1 0

Se encuentra definido por la ecuación.

E(Ri-1) Ki

La clave Ki y Ri-1 se encuentra formado por 8 bloques de 6 bits cada, con lo cual es posible realizar la suma OR exclusiva como se muestra a continuación.

Ejemplo Suma OR exclusiva

Retomando los bits de la expansión del sub-bloque R0 y la subclave K1, se procede a realizar la suma OR exclusiva.

E(R0) = 000000 000001 011111 111101 011001 011001 010000 001000

K1 = 111000 001011 011001 100110 110111 010010 110100 000110

111000 001010 000110 011011 101110 001011 100100 001110

Resultado de la suma OR exclusiva E(R0) K1

1.3.2. Funciones no lineales

La cadena de bits obtenida de la suma OR exclusiva, se subdivide en 8 bloques de 6 bits, como se puede apreciar en el ejemplo anterior, siendo cada bloque (b6b5b4b3b2b1) la entrada a una de las funciones no lineales, conocidas como cajas , el resultado de la operación es un numero con valor entre 0 a 15, representado con cuatro bits, concatenados forman una cadena de 32 bits, la cual será la entrada para la permutación P. La posición de los bits dentro de cada caja se encuentra definida por la fila b6b1 y la columna b5b4b3b2 de la caja, el orden de los valores numéricos de las cajas se puede ver en la siguiente imagen.

Page 22: Ejemplo de Algoritmo Simétrico DES para des

Ejemplo función no lineal (cajas)

E(R0) K1 = 111000 001010 000110 011011 101110 001011 100100 001110

En la Caja S1 se utiliza el primer bloque 111000, en la Caja S2 se utiliza el segundo bloque y así sucesivamente.

Para ver la tabla seleccione la opción "Descargar" del menú superior

La salida del bloque 1 es: 3 (0011), el procedimiento se repite en las siguientes 7 cajas obteniendo como resultado:

E(R0) K1 = 0011 1011 1110 1010 1000 1100 1011 0001

3 11 14 10 8 12 11 1

Resultado de las funciones no lineales

1.3.3. Permutación P

El ultimo paso de la función f(Ri-1 , Ki), es una permutación P, cuyo resultado se sumara con la salida del sub-bloque Li, dando origen a la entrada del sub-bloque Ri

Para ver la tabla seleccione la opción "Descargar" del menú superior

 Ejemplo Permutación P

Retomando el ejemplo se realiza el ultimo paso de la f(Ri-1 , Ki), recordando que dicho proceso se repite 15 veces.

E(R0) K1 = 0011 1011 1110 1010 1000 1100 1011 0001

Resultado de las funciones no lineales

Para ver la tabla seleccione la opción "Descargar" del menú superior

1.4. Suma Li Ri

El registro de bits obtenido por la función f(Ri-1 , Ki), es sumado con un OR exclusivo con el registro de bits de L0, dando como resultado la entrada para el siguiente sub-bloque de Ri. El registro de bits realizado en la permutación inicial P1, que origino al sub-bloque R0, es la entrada para el siguiente sub-bloque Li, el proceso se repite 15 veces, siendo el ultimo proceso la permutación P1-1.

Ejemplo Suma Li f(Ri-1 , Ki)

Page 23: Ejemplo de Algoritmo Simétrico DES para des

f(Ri-1 , Ki) = 0101 0011 0100 1001 0100 1111 0100 1111

L0 = 1111 1111 0001 1000 1101 0111 1110 1010

1010 1100 0101 0001 1001 1000 1010 0101

Resultado de la suma OR exclusiva L0 f(R0 , K1)

Obteniendo los registros de 32 bits para el siguiente sub-bloque Li y Ri como se muestra a continuación:

L1 = 0000 0000 1111 1110 1100 1100 1000 0100

R1 = 1010 1100 0101 0001 1001 1000 1010 0101

Donde se verifican las ecuaciones:

L1 = R0

00000000111111101100110010000100 = 00000000111111101100110010000100

R1 = L0 f(R0 , K1)

10101100010101011001100010100101 =

11111111000110001101011111101010 01010011010011010100111101001111

1.5. Permutación P1-1

La permutación inversa se define por la siguiente tabla, siendo la salida, el cifrado del mensaje.

Para ver la tabla seleccione la opción "Descargar" del menú superior

Ejemplo Permutación P1-1

Si tomamos los valores que tenemos de L1 y R1, suponiendo los valores de L16 y R16, podemos realizar el procedimiento, como muestra del resultado final, cabe mencionar si el mensaje es mayor de 64 bits, se utilizan los bloques necesarios para dividir el mensaje original, si un bloque formado por un mensaje, no tiene la longitud de 64 bits, se rellena utilizando 0.

L16 = 10101100 01010001 10011000 10100101

Page 24: Ejemplo de Algoritmo Simétrico DES para des

R16 = 00000000 11111110 11001100 10000100

Concatenando L16 , R16

10101100 01010001 10011000 10100101 00000000 11111110 11001100 10000100

Para ver la tabla seleccione la opción "Descargar" del menú superior

El cifrado del mensaje es: ◄(spacio){l4a8o

00010001 00100000 01101011 01101100 00110100 01100001 00111000 01101111

Decimal Carácter Binario

17 ◄ 00010001

32 (space) 00100000

123 { 01111011

108 l 01101100

52 4 00110100

97 a 01100001

56 8 00111000

111 o 01101111

1.6. Descifrado

El algoritmo se utiliza para obtener el mensaje original, con un sentido inverso al inicial, esto es, empezando con la entrada del mensaje cifrado de 64 bits, aplicando la permutación P1, dividir el mensaje en dos sub-bloques L16 y R16, teniendo la subclaves calculadas previamente, se realiza el procedimiento descrito anteriormente la f(Ri-1 , Ki), realizando las 16 vueltas hasta obtener el mensaje en claro.

Ejemplo Permutación P1 Descifrado

Mensaje a Descifrar = ◄(spacio){l4a8o

Para ver la tabla seleccione la opción "Descargar" del menú superior 

L16 = 10101100 01010001 10011000 10100101

R16 = 00000000 11111110 11001100 10000100

Ejemplo Permutación E Descifrado

Page 25: Ejemplo de Algoritmo Simétrico DES para des

Al tener la secuencia de R16 de 32 bits, es necesario aplicar la permutación E, la cual se muestra a continuación.

R16 = 00000000 11111110 11001100 10000100

Para ver la tabla seleccione la opción "Descargar" del menú superior

E(R16) = 000000 000001 011111 111101 011001 011001 010000 001000

Ejemplo Suma OR exclusiva Descifrado

La suma OR exclusiva se realiza utilizando la ultima clave generada (K16), en nuestro ejemplo utilizaremos la clave K1, como la clave K16.

E(R16) = 000000 000001 011111 111101 011001 011001 010000 001000

K16 = 111000 001011 011001 100110 110111 010010 110100 000110

111000 001010 000110 011011 101110 001011 100100 001110

Resultado de la suma OR exclusiva E(R16) K16

Ejemplo función no lineal (cajas) Descifrado

E(R0) K1 = 111000 001010 000110 011011 101110 001011 100100 001110

Como resultados de las operaciones no lineales (cajas) tenemos los siguientes:

E(R0) K1 = 0011 1011 1110 1010 1000 1100 1011 0001

3 11 14 10 8 12 11 1

Resultado de las funciones no lineales

Ejemplo Permutación P Descifrado

Retomando el ejemplo se realiza el ultimo paso de la f(Ri-1 , Ki), recordando que dicho proceso se repite 15 veces mas.

E(R0) K1 = 0011 1011 1110 1010 1000 1100 1011 0001

Para ver la tabla seleccione la opción "Descargar" del menú superior

Ejemplo Suma Li f(Ri-1 , Ki) Descifrado

Page 26: Ejemplo de Algoritmo Simétrico DES para des

f(Ri-1 , Ki) = 0101 0011 0100 1001 0100 1111 0100 1111

L16 = 1010 1100 0101 0001 1001 1000 1010 0101

1111 1111 0001 1000 1101 0111 1110 1010

Resultado de la suma OR exclusiva L0 f(Ri-1 , Ki)

Obteniendo los registros de 32 bits para el siguiente sub-bloque Li y Ri como se muestra a continuación:

L15 = 0000 0000 1111 1110 1100 1100 1000 0100

R15 = 1111 1111 0001 1000 1101 0111 1110 1010

Donde se verifican las ecuaciones:

L15 = R16

00000000111111101100110010000100 = 00000000111111101100110010000100

R1 = L16 f(R16 , K16)

11111111000110001101011111101010 =

10101100010100011001100010100101 01010011010010010100111101001111

Ejemplo Permutación P1-1 Descifrado

Si tomamos los valores que tenemos de L1 y R1, suponiendo los valores de L16 y R16, podemos realizar el procedimiento, como muestra del resultado final, cabe mencionar si el mensaje es mayor de 64 bits, se utilizan los bloques necesarios para dividir el mensaje original, si un bloque formado por un mensaje y este no tiene la longitud de 64 bits, se rellena utilizando 0.

L1 = 1111 1111 0001 1000 1101 0111 1110 1010

R1 = 0000 0000 1111 1110 1100 1100 1000 0100

Concatenando L1 y R1, da como resultado:

11111111 00011000 11010111 11101010 00000000 11111110 11001100 10000100

 Para ver la tabla seleccione la opción "Descargar" del menú superior

Page 27: Ejemplo de Algoritmo Simétrico DES para des

 En la siguiente sección se definirán, los ataques activos y pasivos, se mencionarán los ataques al algoritmo DES.

2.Ataques a la seguridad criptográfica

La seguridad criptográfica sufre, dos tipos de ataques pasivosIII y activosIV, la finalidad de realizar un ataque pasivo, es obtener información y evitar ser detectado, a diferencia de los ataques activos, cuya finalidad es captar la información, modificarla, obtener claves, entre otras actividades no legales.

Los ataques activos se dividen en Ataques a los Operadores Criptográficos y Ataques a los protocolos, a continuación se mencionan algunos ataques a los operadores criptográficos.

Ataque a partir del cifrado: El atacante tiene acceso al texto cifrado y de ahí trata de encontrar la clave secreta.

Ataque a partir del texto en claro: El atacante tiene acceso al texto en claro y al cifrado con los cuales intenta obtener la clave secreta.

Ataque a partir del texto en claro elegido: El atacante puede elegir un texto en claro y su cifrado.

Ataque a partir de texto en claro condicionado: El atacante puede elegir un texto en claro condicionado a los cifrados previamente obtenidos.

Ataques a los protocolos.

Ataque con clave conocida: El atacante obtiene algunas claves utilizadas en cifrados previos para determinar nuevas claves.

Reutilización del protocolo: El atacante, ataca utilizando una comunicación captada previamente, insertándola en la comunicación.

Suplantación de Identidad: El atacante toma la identidad de un usuario registrado en la red de comunicaciones.

Otros ataques.

Ataque de fuerza bruta: El ataque por fuerza bruta consiste en un ejercicio de combinación, donde se van cifrando todas las posibles contraseñas y comparándolas con las existentes en el registro, buscando también coincidencias. Este método, por definición, siempre consigue su meta, si bien el problema que tienen es de recursos y tiempo.

2.1 Ataques al Algoritmo DES

Criptoanálisis Diferencial

El criptoanálisis diferencial fue introducido por E. Biham y A. Shamir, es un ataque en texto claro escogido y esta basado en comparaciones del OR exclusivo de dos textos en claro escogidos con el OR exclusivo de sus correspondientes cifrados. Este método de

Page 28: Ejemplo de Algoritmo Simétrico DES para des

análisis permite romper el DES utilizando en teoría alrededor de 247 parejas de textos en claro seleccionados, siendo aproximadamente 236 las útiles para el criptoanálisis, con un tiempo de calculo equivalente a unos 237 cifrados. El problema básico de este ataque es obtener los cifrados de los textos en claro, ya que para obtenerlos es necesario engañar a la entidad que realiza el cifrado o violar la seguridad física del lugar donde se realiza el cifrado, lo cual en la practica es casi imposible.

Criptoanálisis Lineal

El criptoanálisis lineal fue introducido por M. Matsui, se basa en un ataque en texto en claro escogido y consiste en la obtención de ecuaciones lineales que representen la probabilidad existente entre algunos bits del mensaje en claro y otros del cifrado DES del mismo mensaje. La ecuación utilizada es la siguiente:

F(P[i1,...ip] , C[j1,...jp]) = k[k1, k2,…kk]

Donde F(…) es una función lineal y [i1,...ip] ,[j1,...jp]) ,[k1, k2,…kk] son bits que ocupan posiciones fijas respectivamente en P, C y K.

Page 29: Ejemplo de Algoritmo Simétrico DES para des

Criptografía simétricaDe Wikipedia, la enciclopedia libre

Saltar a navegación, búsqueda

La criptografía simétrica es un método criptográfico en el cual se usa una misma clave para cifrar y descifrar mensajes. Las dos partes que se comunican han de ponerse de acuerdo de antemano sobre la clave a usar. Una vez ambas tienen acceso a esta clave, el remitente cifra un mensaje usándola, lo envía al destinatario, y éste lo descifra con la misma.

Contenido[ocultar]

1 Seguridad 2 Ejemplos 3 Inconvenientes 4 Alternativas 5 Referencias

[editar] Seguridad

Un buen sistema de cifrado pone toda la seguridad en la clave y ninguna en el algoritmo. En otras palabras, no debería ser de ninguna ayuda para un atacante conocer el algoritmo que se está usando. Sólo si el atacante obtuviera la clave, le serviría conocer el algoritmo. Los algoritmos de cifrado ampliamente utilizados tienen estas propiedades (por ejemplo: GnuPG en sistemas GNU).

Dado que toda la seguridad está en la clave, es importante que sea muy difícil adivinar el tipo de clave. Esto quiere decir que el abanico de claves posibles, o sea, el espacio de posibilidades de claves, debe ser amplio. Richard Feynman fue famoso en Los Álamos por su habilidad para abrir cajas de seguridad; para alimentar la leyenda que había en torno a él, llevaba encima un juego de herramientas que incluían un estetoscopio. En realidad, utilizaba una gran variedad de trucos para reducir a un pequeño número la cantidad de combinaciones que debía probar, y a partir de ahí simplemente probaba hasta que adivinaba la combinación correcta. En otras palabras, reducía el tamaño de posibilidades de claves.

Actualmente, los ordenadores pueden descifrar claves con extrema rapidez, y ésta es la razón por la cual el tamaño de la clave es importante en los criptosistemas modernos. El algoritmo de cifrado DES usa una clave de 56 bits, lo que significa que hay 2 elevado a 56 claves posibles (72.057.594.037.927.936 claves). Esto representa un número muy alto de claves, pero un ordenador genérico puede comprobar el conjunto posible de claves en cuestión de días. Una máquina especializada puede hacerlo en horas. Algoritmos de cifrado de diseño más reciente como 3DES, Blowfish e IDEA usan claves de 128 bits, lo que

Page 30: Ejemplo de Algoritmo Simétrico DES para des

significa que existen 2 elevado a 128 claves posibles. Esto equivale a muchísimas más claves, y aun en el caso de que todas las máquinas del planeta estuvieran cooperando, tardarían más tiempo en encontrar la clave que la edad del universo.

[editar] Ejemplos

Como ejemplo de sistema simétrico está Enigma. Éste fue un sistema empleado por Alemania durante la Segunda Guerra Mundial, en el que las claves se distribuían a diario en forma de libros de códigos. Cada día, un operador de radio, receptor o transmisor, consultaba su copia del libro de códigos para encontrar la clave del día. Todo el tráfico enviado por ondas de radio durante aquel día era cifrado y descifrado usando las claves del día.

Inglaterra usó máquinas para descifrar las claves durante aquella guerra y aunque el citado sistema alemán, Enigma, estaba provisto de un amplio abanico de claves, los ingleses diseñaron máquinas de cómputo especializado, los Bombes, para comprobar las claves de modo mecánico hasta que la clave del día era encontrada. Esto significaba que algunas veces encontraban la clave del día pocas horas después de que ésta fuera puesta en uso, pero también que otros días no podían encontrar la clave correcta. Los Bombes no fueron máquinas de cómputo general, sino las precursoras de los ordenadores (computadoras) actuales.

Algunos ejemplos de algoritmos simétricos son DES, 3DES, RC5, AES, Blowfish e IDEA.

[editar] Inconvenientes

El principal problema con los sistemas de cifrado simétrico no está ligado a su seguridad, sino al intercambio de claves. Una vez que el remitente y el destinatario hayan intercambiado las claves pueden usarlas para comunicarse con seguridad, pero ¿qué canal de comunicación que sea seguro han usado para transmitirse las claves? Sería mucho más fácil para un atacante intentar interceptar una clave que probar las posibles combinaciones del espacio de claves.

Otro problema es el número de claves que se necesitan. Si tenemos un número n de personas que necesitan comunicarse entre sí, se necesitan n/2 claves para cada pareja de personas que tengan que comunicarse de modo privado. Esto puede funcionar con un grupo reducido de personas, pero sería imposible llevarlo a cabo con grupos más grandes.

[editar] Alternativas

Para solucionar este problema existen la criptografía asimétrica y la criptografía híbrida.

[editar] Referencias

Adaptado de la Guía de "Gnu Privacy Guard"

Page 31: Ejemplo de Algoritmo Simétrico DES para des