ALGORITMOS CRIPTOGRAFICOS
CLASIFICACIÓN DE LOS MÉTODOS
En función de su naturaleza
Sustitución : Sustituyen unos símbolos por otros.
Permutación : Cambian el orden de los simbolos.
Producto : Aplican 2 o más veces los métodos anteriores, cuantos más métodos se apliquen
más seguridad se tiene.
Según la clave
Simétricos o clave privada : La clave de cifrado o descifrado es la misma.
Asimétricos o clave pública : Las claves de cifrado y descifrado son diferentes, el
conocimiento de una no implica el conocimiento de la otra.
Según la clase de cifrado
Cifrado en bloque : Toman el texto en claro, lo dividen en bloques de igual longitud y
cifran cada bloque independientemente. Suelen emplearse bloques
de 64 bits.
Cifrado en flujo : El texto en claro se cifra bit a bit, cifrándose cada uno con clave
diferente.
ALGORITMOS DE CLAVE SIMÉTRICA
En el cifrado de la información mediante clave simétrica las dos partes que intervienen
poseen la misma clave para cifrar y descifrar el mensaje.
Existen muchos tipos de cifrado en bloque simétrico con clave secreta como son :
DES ( Data Encryption Standard ), RC2, GOST, RC4, CAST, SAFER-64 ( Secure
And Fast Encryption Routine ), BLOWFISH, IDEA ( International Data Encryption
Algorithm ), etc.
Los modos de operación de los algoritmos simétricos
Existen cuatro modos de operación definidos para DES (los cuales han sido
generalizados para cualquier cifrador de bloque). Estos modos fueron estandarizados
en 1980 por NIST. Se trata de los siguientes:
oECB (Electronic CodeBook): cifra cada bloque de 64 bits del mensaje en claro uno
tras otro con la misma clave de 56 bits. Un par de bloques idénticos de mensaje en
claro producen bloques idénticos de mensaje cifrado.
oCBC (Cipher Block Chaining): sobre cada bloque de 64 bits del mensaje en claro
se ejecuta un OR exclusivo con el bloque previo del mensaje cifrado antes de
proceder al cifrado con la clave DES. De este modo, el cifrado de cada bloque
depende del anterior y bloques idénticos de mensaje en claro producen diferentes
mensajes cifrados.
oCFB (Cipher FeedBack): el cifrado de un bloque de mensaje en claro procede de
ejecutar un OR exclusivo del bloque de mensaje en claro con el bloque previo
cifrado. CFB puede modificarse para trabajar con bloques de longitud inferior a 64 bits.
oOFB (Output FeedBack): Se generan una serie valores pseudoaleatorios de 64 bits
( normalmente, tantos como bloques de datos hay ). A cada uno de los bloques de
mensaje en claro se les aplica un OR exclusivo junto con uno de los valores aleatorios,
el resultado obtenido son los bloques de mensaje cifrado.
Explicación de varios algoritmos simétricos
Damos una explicación, de los algoritmos más importantes hablando de sus creadores,
funcionamiento, y situación actual.
DES
Es el más estudiado y utilizado de los algoritmos de clave simétrica, fue diseñado por
IBM y utilizado habitualmente desde los años 70. Es un método de cifrado altamente
resistente frente ataques criptoanalíticos diferenciales. Por desgracia, su tamaño de
clave (56 bits) la hace vulnerable a ataques de fuerza bruta.
El algoritmo de cifrado de clave secreta DES cifra bloques de información de 64 bits
con una clave de 56 bits, realmente la clave inicial es de 64 bits, pero los bits menos
significativos de cada byte se utilizan como bits de paridad, por ello se pueden eliminar
al no aportar ninguna información adicional, por lo que nos queda la clave de 56 bits.
A los 64 bits del mensaje en claro ( bloque ), se le aplica una permutación definida por
una tabla para mezclarlos en una fase inicial. A continuación de dividen en dos
sub-bloques de 32 bits cada uno (L.0,R.0), en estas condiciones el cifrado viene
definido por:
Li=Ri-1
Ri=Li-1 xor f(Ri-1,Ki)
para i=1..16 y f(..) es una función de los 32 bits de Ri-1 y de una clave Ki. Con todo
ello, al final de la vuelta 16 se aplica la permutación inversa a la inicial a los 64 bits
concatenados ( L16,R16), siendo la salida de esta permutación el cifrado del mensaje
inicial.
Naturalmente si el mensaje a cifrar excede de 64 bits se divide en sub-bloques de 64
bits ( el último se meten bits de relleno hasta llegar a los 64 bits) y se le aplica a cada
uno el proceso anterior. El mensaje cifrado ocupa lo mismo que el mensaje en claro.
El algoritmo ha sido descifrado varias veces, incluso se puede construir una máquina
descodificadora con un coste de alrededor de 250.000 dólares por todo ello, en la
actualidad ofrece protección contra el pirata informático habitual, pero no contra un
esfuerzo masivo por parte de un usuario con grandes recursos. En estos momentos
es un algoritmo débil, que se puede aplicar para codificar datos no muy importantes,
en un futuro no muy lejano, será totalmente vulnerable para todos.
Triple-DES (3DES)
Una mejora del algoritmo DES, que siempre había sido muy criticado debido a la
pequeña longitud de la clave, es Triple-DES. Con este procedimiento, el mensaje
es cifrado tres veces. Existen varias implementaciones:
1.DES-EEE3. Se cifra tres veces con una clave diferente cada vez.
2.DES-EDE3. Primero se cifra, luego se descifra y por último se vuelve a cifrar,
cada vez con una clave diferente.
3.DES-EEE2 y DES-EDE2. Similares a los anteriores con la salvedad de que la clave
usada en el primer y en el último paso coinciden.
Se estima que las dos primeras implementaciones, con claves diferentes, son las
más seguras. Si se quiere romper el algoritmo usando la fuerza bruta, la complejidad
asciende a O(2112) frente a la complejidad del DES básico O(255).
BLOWFISH
Blowfish fue creado por Bruce Scheiner, autor del libro Applied Criptography
(considerado por muchos como la "biblia" en cuestiones de criptografía). Utiliza
claves de hasta 448 bits y, hasta el momento, ha resistido con éxito todos los
ataques. Por ello y por su estructura se le considera uno de los algoritmos más
seguros, a pesar de lo cual no se utiliza masivamente. Tal vez se deba a la relativa
juventud del algoritmo. Su autor no ha patentado el método para que pueda ser
empleado sin limitaciones.
El autor indicó a la hora de diseñarlo que sus objetivos eran los de conseguir un
método de cifrado simétrico de bloque rápido, compacto, sencillo y seguro que
pudiera ser utilizado con una clave de longitud variable.
El cifrado se lleva a cabo mediante 16 vueltas en las que se opera con una función
sencilla, cada vuelta incluye una permutación en función de la clave y una sustitución
en función de la clave y de los datos. El resto de operaciones elementales son XOR
y la suma modular ( módulo 2^32 ).
Asimismo, en cada vuelta existen cuatro tablas de datos o cajas S con 236 entradas
cada una. El descifrado es equivalente sin más que aplicar las claves ( K1...K18 ) en
orden inverso.
De momento es un algoritmo del que nos podemos fiar.
CAST
CAST (Carlisle Adams y Stafford Taverns) tiene estructura similar a la de Blowfish.
Parece ser un buen algoritmo, aunque tampoco lleva el tiempo suficiente como
para haber sido atacado hasta la saciedad. De momento, sus posibilidades son
buenas. Se conocen ataques criptoanalíticos contra la versión de clave 64 bits,
aunque distan mucho de ser eficaces (requieren 2^17 textos sin cifrar y 2^48
cálculos diferentes).
No se conocen ataques contra la versión de 128 bits. Ha sido patentado por Entrust
Technologies, quienes permiten el uso libre de este algoritmo.
IDEA
IDEA (International Data Encription Algorithm) ha sido desarrollado por Xuejia Lay y
James Massey. A pesar de que solamente lleva unos años en uso, es probablemente
el mejor algoritmo de bloques existente. Utiliza texto en bloques de 64 bits y una clave
de 128 bits.
Ha sido diseñado de tal manera que el proceso de encriptado consiste en ocho pasos
de encriptación que son idénticos excepto en los sub-bloques de la clave utilizados,
terminando con una transformación de la salida. En cada paso se utilizan tres
operaciones: suma bit a bit, multiplicación bit a bit y OR exclusivo.
Se crean para cada paso de encriptación seis sub-bloques de 16 bits de la clave de
128 bits, además de otros cuatro para la transformación final, con lo cual tenemos 52
bloques. El proceso para crearlos es el siguiente: la clave de 128 bits es dividida en
ocho bloques de 16 bits, que serán los ocho primeros sub-bloques.
La clave es desplazada 25 posiciones a la izquierda, y vuelve a ser dividida en ocho
bloques, que serán los siguientes ocho bloques. Este proceso se repite hasta obtener
los 52 bloques.
En el primer paso de encriptación el bloque de texto de 64 bits se divide en cuatro
bloques de 16 bits, ya que todas las operaciones se harán con números de 16 bits.
Se comienza combinando los cuatro primeros sub-bloques de la clave con dos de los
bloques de texto sumándolos bit a bit, y con los otros dos multiplicándolos bit a bit.
Por último, se realiza el OR exclusivo entre los bloques resultado de las operaciones
anteriores y otros dos sub-bloques de la clave. Así, al final del primer paso se obtienen
cuatro bloques que serán la entrada del segundo paso con el orden cambiado
parcialmente.
Este proceso se repite en cada uno de los siete siguientes pasos utilizando diferentes
sub-bloques de la clave. Para terminar, los cuatro bloques resultado del octavo paso
son combinados con los cuatro sub-bloques que quedan sin utilizar sumándolos y
multiplicándolos bit a bit, obteniéndose finalmente cuatro bloques de 16 bits de texto
encriptado. En ningún punto del proceso de encriptado se usan contiguamente dos
operaciones iguales.
El proceso de desencriptación es prácticamente el mismo que el de encriptación, con
la diferencia de los 52 sub-bloques de la clave son los inversos de los empleados en
la encriptación respecto de la operación en la que fueron usados, además de utilizarse
en el orden inverso.
Tendencias :
Debido a la previsible retirada de DES, prestigiosos criptógrafos de todo el
mundo han estado trabajando desde los últimos años de la década de los ochenta
para encontrar algoritmos, de un lado compatibles con DES (debido al gran número
de productos basados en DES utilizados en todo el mundo), y de otro, lo
suficientemente robustos como para sustituirle con garantías.
Los programas actuales que implementan IDEA son tan rápidos como los que
implementan DES.
En estos momentos se cree que es resistente al criptoanálisis.
SAFER
SAFER es un algoritmo diseñado por Robert Massey (uno de los creadores de IDEA).
Tiene claves de hasta 128 bits y, a pesar de algunas debilidades en la primera versión
y de ciertos ataques, parece un algoritmo seguro. Este programa fue desarrollado para
la empresa Cylink.
RC2
RC2 es un cógido protegido bajo secreto comercial (aunque no patentado) por RSA
Data Security Inc. Existen ataques criptoanalíticos que, aunque requieren de gran
cantidad de texto cifrado, muestran las vulnerabilidades de RC-2.
RC-2 es un cifrador de bloque con una longitud de clave variable. Tiene definido los
mismos modos que DES y, con una clave de 64 bits, su implementación en software
es dos o tres veces más rápida que la de DES.
Existen versiones mejoradas, y hoy día RC2 tiende a utilizarse cada vez menos en
beneficio de su "hermano mayor" RC4.
RC4
RC4 es un intento de reemplazar RC2 por un algoritmo más sólido. También es un
secreto comercial, aunque (al igual que RC2) su código fuente ha sido publicado en
grupos de discusión.
RC-4, al igual que RC-2, tiene una longitud de clave variable. Sin embargo, se trata
de un cifrador de flujo.
No se conocen ataques contra él. Forma una parte vital del sistema de cifrado en
capas SSL, ampliamente utilizado en navegadores de Internet tales como Netscape
Navigator y Microsoft Internet Explorer. Por desgracia, la versión exportable de RC4
tiene una clave de solamente 40 bits, lo que lo hace altamente vulnerable a ataques
de fuerza bruta. La versión EEUU, con clave de 128 bits, es segura.
RC5
RC5 fue diseñado por Ron Rivest y se encuentra bajo patente de RSA Data Security
Inc. Es relativamente nuevo, y se conocen ciertos tipos de ataques contra él.
Asimismo existe un cierto número (pequeño) de claves débiles que no deben utilizarse.
A pesar de ello, se le considera un sistema seguro.
COMPARACION DE ALGORITMOS
Tabla comparativa, de los algoritmos considerados como más importantes:
DES BLOWFISH IDEA
Longitud de la clave 56 bits Variable hasta 448 bits 128 bits
Número de pasos 16 vueltas 16 vueltas 8 vueltas más transformación final
Funciones lógicas primitivas Xor Xor más suma mod 2^32 Xor más suma mod2^16 más multiplicación mod 2^16+1
ALGORITMOS ASIMETRICOS
FIRMA DIGITAL Y ALGORITMOS HASH
MENU :
SERVICIOS Y MECANISMOS DE SEGURIDAD
SSL
ALGORITMOS ASIMETRICOS
SHTTP
SET
ENLACES