Академический Документы
Профессиональный Документы
Культура Документы
import java.security.*;
import javax.crypto.*;
import javax.crypto.interfaces.*;
import javax.crypto.spec.*;
import java.io.*;
System.out.println("---------------------------------------------");
System.out.println("----------------------------------------------");
}
}
riptología - Algoritmos Simétricos Modernos (Llave Privada)
volver
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
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.
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:
IDEA
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.
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).
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.
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 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.
algoritmo de la Simétrico-llave
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.
Contenido
Velocidad
Gerencia dominante
Cryptosystem híbrido
Los sistemas que utilizan un acercamiento tan híbrido incluyen SSL, PGP y GPG, etc.
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
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.
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.
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.
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
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
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 )
Ejemplo Permutación P1
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
1 1 1 1 1 1 1 0
1 1 0 0 1 1 0 0
1 0 0 0 0 1 0 0
Sub-bloques iniciales
1.1.1. 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
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
32 Bits
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
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
Clave K: Santiago
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
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-bloques iniciales
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
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.
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))
Concatenando Ci, Di
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.
A B A B
0 0 0
0 1 1
1 0 1
1 1 0
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.
La salida del bloque 1 es: 3 (0011), el procedimiento se repite en las siguientes 7 cajas
obteniendo como resultado:
3 11 14 10 8 12 11 1
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
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.
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.
f(Ri-1 , Ki) = 0101 0011 0100 1001 0100 1111 0100 1111
L1 = R0
00000000111111101100110010000100 = 00000000111111101100110010000100
R1 = L0 f(R0 , K1)
10101100010101011001100010100101 =
11111111000110001101011111101010 01010011010011010100111101001111
La permutación inversa se define por la siguiente tabla, siendo la salida, el cifrado del
mensaje.
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.
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.
3 11 14 10 8 12 11 1
Retomando el ejemplo se realiza el ultimo paso de la f(Ri-1 , Ki), recordando que dicho
proceso se repite 15 veces mas.
f(Ri-1 , Ki) = 0101 0011 0100 1001 0100 1111 0100 1111
L15 = R16
00000000111111101100110010000100 = 00000000111111101100110010000100
11111111000110001101011111101010 =
10101100010100011001100010100101 01010011010010010100111101001111
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.
En la siguiente sección se definirán, los ataques activos y pasivos, se mencionarán los
ataques al algoritmo DES.
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.
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.
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
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
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.
Criptografía simétrica
De Wikipedia, la enciclopedia libre
Contenido
[ocultar]
1 Seguridad
2 Ejemplos
3 Inconvenientes
4 Alternativas
5 Referencias
[editar] Seguridad
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
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.
[editar] Alternativas