3 Cifrado Múltiple
El cifrado múltiple se presenta en configuraciones en cascada, como la doble y triple encriptación. En estos esquemas, las claves pueden ser iguales o diferentes, y los algoritmos de cifrado pueden ser los mismos, distintos o incluso inversos, lo que añade capas de seguridad al proceso.
4 Cifradores Producto y Cifradores de Feistel
Cifradores Producto
Un cifrador producto es un tipo de cifrador que combina dos o más transformaciones criptográficas de manera secuencial. El objetivo es que el resultado del cifrado sea significativamente más seguro que cualquiera de sus componentes individuales, aprovechando las fortalezas de cada transformación.
Cifradores de Feistel
Un cifrador de Feistel es una construcción criptográfica que itera secuencialmente una serie de funciones, donde cada iteración se denomina función ronda. Estos cifradores suelen tener al menos tres rondas y un número par de ellas. En cada iteración, se utilizan redes de sustitución-permutación y se aplica una subclave específica, la cual ha sido derivada de la clave general del cifrador.
Los cifradores de Feistel se parametrizan a partir de:
- El número de rondas (
r
). - El tamaño del bloque (
n
). - El tamaño de la clave (
k
) de la clave maestra (K
), de la cual se derivan lasr
subclaves (Ki
) para cada ronda.
Funciones Hash Criptográficas
Una función hash criptográfica es un conjunto de algoritmos utilizados para generar una «huella digital» única que represente un documento o conjunto de datos. Es una operación matemática que se realiza sobre un conjunto de datos de cualquier longitud, y la salida es una huella digital de tamaño fijo e independiente de la dimensión del documento original.
Requisitos de Seguridad de las Funciones Hash
Para que una función hash sea considerada criptográficamente segura, debe cumplir con los siguientes requisitos:
- Unidireccionalidad (Resistencia a la Preimagen): Debe ser computacionalmente imposible obtener el texto original a partir de la huella digital (el resumen hash).
- Resistencia a la Segunda Preimagen: Dado un mensaje original
M
, debe ser computacionalmente imposible encontrar otro mensajeM'
diferente que produzca la misma huella digitalh(M)
. - Resistencia a Colisiones: Debe ser computacionalmente imposible encontrar dos conjuntos de datos diferentes que tengan la misma huella digital.
- Compresión: Debe poder transformar un texto de longitud variable en una huella de tamaño fijo.
- Facilidad de Cálculo: Debe ser fácil y eficiente computar la huella digital
h(M)
a partir de un mensajeM
. - Difusión (Efecto Avalancha): El resumen
h(M)
debe ser una función compleja de todos los bits del mensajeM
. Si se modificara un solo bit deM
, el hashh(M)
debería cambiar aproximadamente en la mitad de sus bits.
Propiedades Clave de las Funciones Hash
Además de los requisitos de seguridad, las funciones hash poseen las siguientes propiedades:
- Unidireccionalidad: Con un resumen
h(M)
, es computacionalmente imposible encontrar el mensaje originalM
a partir del resumen. - Compresión: Para mensajes de longitud
m
, el resumenh(M)
debe tener una longitud fijan
, donden < m
. - Facilidad de Cálculo: Debe ser fácil computar
h(M)
a partir del mensajeM
. - Difusión: El resumen
h(M)
debe ser una función compleja de todos los bits del mensajeM
. Si se modificara un bit deM
, el hashh(M)
debería cambiar aproximadamente en la mitad de sus bits. - Resistencia Débil a las Colisiones (o Colisión Simple): Conocido un mensaje
M
, será computacionalmente imposible encontrar otro mensajeM'
distinto tal queh(M) = h(M')
. - Resistencia a la Preimagen: Para cualquier imagen
y
(conocida), es computacionalmente irrealizable encontrar una preimagenx
(desconocida) tal queh(x)=y
. - Resistencia a la Segunda Preimagen: Dados una entrada
x
y su correspondiente imageny=h(x)
, es computacionalmente irrealizable encontrar otra entradax'
distinta ax
tal queh(x')=y
. - No Correlación: Los bits de entrada y salida no deben estar correlacionados. Cada cambio en un bit de entrada debe afectar significativamente la salida.
- Resistencia a la Casi Colisión: Debe ser difícil obtener dos entradas (
x
,x'
) para las cuales sus imágenes (y
,y'
) difieran solamente en unos pocos bits. - Resistencia a las Preimágenes Parciales: Debe ser igual de difícil recuperar una parte de la preimagen de un hash que recuperar la totalidad.
1 Aplicaciones de las Funciones Hash
Las funciones hash criptográficas tienen diversas aplicaciones en seguridad informática:
- Autenticación de Mensajes: Este servicio se utiliza para verificar la integridad del mensaje y su origen, asegurando que el contenido no se haya modificado, borrado o rechazado. Los mensajes así autenticados se denominan message digest.
- Firmas Digitales: Funciona de manera semejante a un Código de Autenticación de Mensajes (MAC). El valor hash del mensaje y la clave privada del usuario son cifrados. Quien conoce la clave pública del usuario podrá verificar su identidad y la integridad del mensaje.
- Otras Aplicaciones:
- Creación de contraseñas seguras para proteger archivos.
- Detección de intrusiones en sistemas.
- Detección de virus y malware.
- Generación de funciones y números pseudoaleatorios.
- Confirmación de conocimiento (ACK).
- Obtención de claves aleatorias.
- Almacenamiento seguro de contraseñas (nunca se almacenan en texto plano, sino sus hashes).
- Autenticación mutua en protocolos de enlace remoto.
- Autenticación de sistemas.
Concepto de Diagrama (Flujo de Procesamiento):
Un mensaje de entrada (por ejemplo, de 512 bits) se somete a un proceso que incluye fragmentación, permutación, rotación y compresión en ciclos (por ejemplo, 48, 64 u 80 ciclos por bloque), para finalmente producir un hash de tamaño fijo (como 128, 160 o 512 bits).
2 Clasificación de las Funciones Hash
Las funciones hash se pueden clasificar principalmente en:
- Con Clave:
- Autenticación de Mensajes (MACs).
- Otras aplicaciones que requieren una clave secreta compartida.
- Sin Clave (Detección de Modificación – MDCs):
- OWHF (Weak One-Way Hash Function): Funciones hash unidireccionales débiles.
- CRHF (Collision-Resistant Hash Function): Funciones hash resistentes a colisiones.
- Otras aplicaciones donde la clave no es un factor.
3 Funciones Hash Más Comunes
A continuación, se describen algunas de las funciones hash más conocidas:
MD5 (Message-Digest Algorithm 5)
MD5 produce un resumen de 128 bits. Aunque fue ampliamente utilizado, hoy se sabe que es vulnerable a ataques de colisión, lo que significa que es posible encontrar dos mensajes diferentes que produzcan el mismo hash MD5. Por lo tanto, su uso se desaconseja para aplicaciones que requieran alta seguridad, como firmas digitales o certificados SSL. Es importante recordar que MD5, al igual que otras funciones hash, no está diseñado para cifrar mensajes, sino para generar una huella digital unidireccional, lo que implica que no se puede recuperar la información original a partir de su hash.
SHA-1 (Secure Hash Algorithm 1)
SHA-1 es similar a MD5, pero produce un resumen de 160 bits. Su función de compresión es más compleja que la de MD5, lo que lo hace más lento (80 pasos frente a 64 en MD5). Al igual que MD5, SHA-1 ha demostrado ser vulnerable a ataques de colisión, por lo que su uso se desaconseja para nuevas aplicaciones y se recomienda migrar a algoritmos más robustos.
SHA-2 (Secure Hash Algorithm 2)
La familia SHA-2 representa una mejora significativa respecto a SHA-1, tanto en diseño como en los rangos de salida. Dentro de SHA-2, encontramos varias variantes:
- SHA-224
- SHA-256
- SHA-384
- SHA-512
Generalmente, cuanto mayor es el tamaño de salida, mayor es la seguridad ofrecida. Por ejemplo, SHA-512, con 80 rondas (pasos), se diferencia de SHA-1 en:
- Tamaño de salida: 512 bits (frente a 160 bits de SHA-1).
- Tamaño del bloque, tamaño de la palabra y tamaño interno: El doble que SHA-1.
Es crucial recordar que, como ocurre con todos los algoritmos criptográficos, un mayor nivel de seguridad a menudo implica un procesamiento más lento. Es fundamental encontrar un equilibrio óptimo entre seguridad y velocidad para cada aplicación específica.