DES (Data Encryption Standard, estándar
de cifrado de datos)
Es
un algoritmo desarrollado originalmente por IBM a requerimiento del NBS
(National Bureau of Standard oficina nacional de estandarización en la
actualidad denominado NIST, Instituto Nacional de Estandarización y Tecnología)
de EE.UU. y posteriormente modificado y adoptado por EE.UU. en 1977 como
estándar de cifrado de todas las informaciones sensibles no clasificadas.
Posteriormente en 1980, el SNIT estandarizo los diferentes modos de operación
del algoritmo. Es el más estudiado y utilizado de los algoritmos de clave
simétrica.
El
nombre original del algoritmo, tal como lo denomino IBM, era Lucifer. Trabajaba
sobre bloques de 128 bits, teniendo la clave igual longitud. Se basa en
operaciones lógicas booleanas y podía ser implementado fácilmente, tanto en
software como hardware.
Tras
las modificaciones introducidas por el NBS, consistentes básicamente en la
reducción de longitud de clave y de los bloques, DES cifra bloques de 64 bits,
mediante permutación y sustitución y usando una clave de 64 bits, de los que 8
son de paridad (esto es, en realidad usa 56 bits), produciendo así 64 bits
cifrados.
DES
tiene 19 etapas diferentes.
La
primera etapa es una transposición, una permutación inicial (IP) del texto
plano de 64 bits, independientemente de la clave. La última etapa es otra
transposición (IP-1), exactamente la inversa de la primera. La penúltima etapa
intercambia a los 32 bits de la izquierda y los 32 de la derecha. Las 16 etapas
restantes son una red de Feistel de 16 rondas.
En
cada una de las 16 iteraciones se emplea un valor ki, obtenido a
partir de la clave de 56 bits y distinto en cada iteración.
Se
realiza una permutación inicial (PC-1) sobre la clave, y luego la clave
obtenida se divide en dos mitades de 18 bits, cada una de las cuales se rota a
izquierda en número de bits determinado que no siempre es el mismo ki
se deriva de la elección permutada (PC-2) de 48 de los 56 bits de estas dos
mitades rotadas.
La
función f de la red de Feistel se compone de una permutación de expansión (E),
que convierte el bloque correspondiente de 32 bits en uno de 48. Después
realiza una or-exclusiva con el valor ki, también de 48 bits aplica
ocho S-cajas de 6*4 bits, y efectúa una nueva permutación (P)
Para
descifrar basta con usar el mismo algoritmo empleando las ki en
orden inverso.
DES Múltiple
Cuando
se descubrió que una clave de 56 bits no era suficiente para evitar un ataque
de fuerza bruta, TDES fue elegido como una forma de agrandar el largo de la
clave sin necesidad de cambiar el algoritmo de cifrado. Este método de cifrado
es inmune al ataque por encuentro a medio camino, doblando la longitud efectiva
de la clave, pero en cambio es preciso triplicar el número de operaciones de
cifrado, haciendo este método de cifrado muchísimo más seguro que el DES.
La
clave utilizada por TDES es de 128 bits (112 de clave y 16 de paridad), es
decir dos claves de 64 bits (56 de clave y 8 de paridad). Otra forma de usar
TDES es con una clave de 192 bits (128 bits de clave y 24 de paridad). TDES
utiliza 48 rondas en sus cálculos, lo cual hace muy resistente al
criptoanálisis.
El
TDES permite aumentar de manera significativa la seguridad del DES, pero posee
la desventaja de requerir más recursos para el cifrado y descifrado. Por lo
general, se conocen diversos tipos o modos de cifrado del TDES, y el modo
escogido dicta el número de claves usadas y que funciones son llevadas a cabo,
estos modos son:
·
DES-EEE3:
cifrado triple DES con 3 claves diferentes, es decir, los datos se encriptan,
encriptan y encriptan.
·
DES-EDE3:
una clave diferente para cada una de las operaciones de triple DES (cifrado,
descifrado, cifrado), por lo tanto los datos son encriptados, desencriptados y
encriptados.
·
DES-EEE2
y DES-EDE2: similar al DES-EEE3, pero utiliza dos claves, para el primer y
tercer proceso de encriptación utiliza la misma clave. Esto quiere decir, que
la segunda operación utiliza una clave diferente.
IDEA (International Data Encryption
Algorithm, Algoritmo Internacional de Cifrado de Datos)
Después
de comprobar la debilidad del algoritmo DES en su forma simple, diversos
trabajos propusieron nuevos métodos de cifrado de bloques. Sin embargo el más
interesante e importante de los cifrados posteriores al algoritmo DES es el algoritmo
IDEA.
El
algoritmo IDEA es un algoritmo de clave privada que fue diseñado por dos
investigadores en suiza, usa una clave de 238 bits, lo que lo hará inmune
durante décadas a los ataques de fuerza bruta, la lotería china y los ataques
de encuentros a la mitad. No hay maquina o técnica conocida actualmente que se
crea puede descifrar el algoritmo IDEA.
La
estructura básica del algoritmo se asemeja al algoritmo DES en cuanto a que se
alteran bloques de entrada de texto normal de 64 bits en una secuencia de
iteraciones parametrizadas para producir bloques de salida de texto cifrado de
64 bits.
Dada
la extensa alteración de bits (por cada iteración, cada uno de los bits de
salida depende de cada uno de los bits de entrada), basta con 8 iteraciones.
Como con todos los cifrados de bloque, el algoritmo IDEA también puede usarse
en el modo de realimentación de cifrado y en demás modos del algoritmo DES. El
algoritmo IDEA usa tres operaciones, todas sobre números sin signo de 16 bits.
Estas operaciones son un or exclusivo, suma módulo 216 y
multiplicación módulo 216+1. Las tres operaciones se pueden efectuar
fácilmente en una microcomputadora de 16 bits ignorando las partes de orden
mayor de los resultados. Las operaciones tienen la propiedad de que ningunos dos
pares obedecen la ley asociativa ni la ley distributiva, dificultando el
criptoanálisis. La clave de 128 bits se usa para generar 52 subclaves de 16
bits cada una, 6 por cada una de las ocho iteraciones y 4 para la
transformación final. El descifrado es el mismo que el cifrado, solo que con
subclaves diferentes.
BlowFish
Es
un codificador de bloques simétricos, diseñado por Bruce Schneier en 1993 e
incluido en un gran número de conjuntos de codificadores y productos de
cifrado. Mientras que ningún analizador de cifrados de Blowfish efectivo ha
sido encontrado hoy en día, se ha dado más atención de la decodificación de
bloques con bloque más grandes.
Usa
bloques de 64 bits y claves que van desde los 32 hasta 448 bits. Es un
codificador de 16 rondas Feistel y usa llaves que dependen de las cajas-S.
Cada
línea representa 32 bits. El algoritmo guarda 2 arrays de subclaves: el array P
de 18 entradas y 4 cajas-S de 256 entradas. Una entrada del array P es usada
cada ronda, después de la ronda final, a cada mitad del bloque de datos se le
aplica un XOR con una de las 2 entradas del array P que no han sido utilizadas.
La
función divide las entradas de 32 bits en bloques de 8 bits, y usa los bloques
como entradas para las cajas-S. Las salidas deben estar en módulos de 232
y se aplica un XOR para producir la salida final de 32 bits.
Debido a que Blowfish está en red
Feistel, puede ser invertido aplicando un XOR entre P17 y P18
al bloque de texto codificado, y así sucesivamente se usan las P-entradas en
orden reversivo.
RC2
Ron´s Code o Rivert´s Cipher
Es
un algoritmo de cifrado en bloque desarrollado por Ron Rivest en 1987. RC2 es
un algoritmo de cifrado de bloques, es decir, subdivide los datos a cifrar en
bloques de 64 bits y les aplica una serie de transformaciones a cada bloque de
forma individual. La longitud de la clave es variable con un tamaño máximo de
40 bits.
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
tamaño de clave puede ser entre 8-128 bits, es decir, múltiplos de 8 bits.
Clave de 64 bits por default. Tamaño de bloque de 64 bits y rondas de 16 mixing
y 2 mashing.
Existen
dos partes.
·
Key
expansión.
Tiene como entrada una clave de
longitud variable (8-128bits) y da como resultado una clave expandida consiste
de 64 palabras k0… k63 (palabras=16 bits), cada ki
es una palabra de 16 bits. Durante este proceso operaciones a nivel de byte y
bit son usadas. Para las operaciones a nivel de bit, las posiciones del buffer
apuntaran al arreglo k[ ]. Para las operaciones a nivel byte el
arreglo de llaves será referenciado al arreglo L, L0… L127
donde cada Li son 8 bits o 1 byte. Siempre sabremos que ki=L2i+256*L[2i+1].
·
Encriptación
/ desencriptacion.
El algoritmo tiene como entrada bloques
de 64 bits que colocaremos en arreglos R0, …, R3. Al
final tendremos una palabra de 6 bytes. La encriptación esta definida por las
operaciones primitivas MIX y MASH.
RC4
Es
parte de los protocolos de cifrado como WEP, WAP y TLS.
Características:
·
Permitir
claves de diferentes longitudes.
·
Cifrado
de flujo de implementación es sencilla y rápida.
·
Orientado
a generar secuencias en unidades de un byte.
·
Inmune
al criptoanálisis diferencial y lineal.
Procesos:
Inicialización
1. Si=i, i=0… 255
2. Rellena el array ki i=0…
255 repitiendo la semilla de clave secreta.
3. f=0
4. Desde i=0 hasta 255, hacer f=(f+si+ki)
mod 256 intercambiar si y sf
Generación
de secuencia cifrante
1. i=(i+1) mod 256
2. f=(f+si) mod 256
3. intercambiar los valores de si y sf
4. t=(si+sf) mod 256
5. or=st
Descripción
·
consta
de una S-caja de 8*8
·
dos
contadores i y f que son iguales a cero
·
se
obtiene cada byte or de la secuencia
·
obtención
del criptograma utilizando la operación xor
RC5
Es
un algoritmo que opera por bloques desarrollado por Ron Rivest, de hecho es lo
que indican las siglas que dan nombre al algoritmo y en cuanto al número 5
corresponde a una secuencia de algoritmos de cifrado simétrico desarrollados
todos por Rivest y que fueron evolucionando donde RC5 se dio a conocer en 1995,
algoritmo que presenta las sig. Características:
·
Adecuado
para ser implementado en hardware o software: utiliza computación básica y
operaciones que comúnmente se encuentran en microprocesadores.
·
Rápido:
las operaciones básicas se trabajan en palabras completas simultáneamente.
·
Adaptable
a procesadores de diferentes tamaños de palabras: uno de los parámetros que utiliza es el tamaño de la palabra w(16,
32 o 64 bits), de manera que para diferentes longitudes de palabras produce
diferentes algoritmos y como cifra en bloques de dos palabras el cifrado es con
mensajes en claro de 32, 64 y 128 bits.
·
Número
variable de iteraciones: el número de vueltas, (0,1,…,255) es otro de los
parámetros que considera RC5 y permite negociar o acordar entre la velocidad y
alta seguridad.
·
Clave
de longitud variable: un parámetro más que considera el algoritmo es la clave
k(en octetos que van desde 1 hasta 255), y que da también la oportunidad de
moverse entre alta velocidad y alta seguridad.
·
Sencillo:
su estructura permite que sea fácilmente implementado y de igual manera da la
oportunidad de evaluar y determinar con facilidad la robustez del algoritmo.
·
Bajo
consumo de memoria: sus requerimientos de mínimo espacio de memoria hacen que
sean un algoritmo apropiado para su uso en tarjetas inteligentes o dispositivos
similares en cuanto a la disponibilidad del espacio.
·
Alta
seguridad: en general proporciona alta seguridad la cual puede oscilar
dependiendo de la selección de parámetros, de manera que eligiendo los
adecuados, la seguridad será sumamente elevada.
·
Rotaciones
con dependencias de datos: se incorporan rotaciones circulares de bits las
cuales dependen de los datos introducidos, esto hace que RC5 se más robusto
aun, por consiguiente, que sea prácticamente irrompible para cualquier
criptoanalista.
RC5 hace uso de tres parámetros
diferentes para operar asi que, para determinar de manera específica lo
seleccionado, el algoritmo se designa como RC5-w/r/b, por ejemplo, RC5-32/12/16
se trata de un RC5 que cifra mensajes de 64 bits, en 12 rondas y una clave de
16 bytes (128 bits).
AES (Advanced Encryption Standard,
estándar de cifrado avanzado)
Es
uno de los algoritmos más seguros y más utilizados hoy en día, disponible para
uso público.
Está
clasificado por la Agencia de Seguridad Nacional, National Security Agency
(NSA), de los Estados Unidos para la seguridad más alta de información secreta
“Top Secret”. Su historia de éxito comienzo en 1997, cuando el instituto
nacional de estándares y tecnología, anuncio la búsqueda de un sucesor para el estándar
de cifrado DES. Un algoritmo llamado “Rijindael”, desarrollado por los
criptologos belgas Joan Daemen y Vincent Rijmen, fue destacado en seguridad, así
como en el rendimiento y la flexibilidad.
El
algoritmo se basa en varias sustituciones, permutaciones y transformaciones
lineales, ejecutadas en bloques de 16 bytes, por lo que se llama blockcipher. Estas
operaciones se repiten varias veces, llamadas “rondas”. En cada ronda un único “roundkey”
se calcula de la clave de encriptación, y es incorporado en los cálculos. Basado
en la estructura de bloque de DES, el cambio de un solo bit, ya sea en la clave,
o en los bloques de texto simple y claro, resulta en un bloque de texto
cifrado/encriptado completamente diferente. La diferencia entre AES-128,
AES-192 y AES-256, es la longitud de la clave: 128, 192 y 256 bits, todos drásticamente
mejorados en comparación con la clave DES de 56 bits.
No hay comentarios:
Publicar un comentario