Las Funciones Resumen
se basan en la idea de funciones de compresión que dan
como resultado bloques de longitud n a partir de bloques
de longitud m y dichas funciones se encadenan de forma
iterativa haciendo que la entrada en el paso i dependa del
bloque i–1 del mensaje y de la salida
del paso i–1, como se muestra en la
figura:
Se suele incluir en alguno de los bloques del mensaje
m al principio o al final información acerca de la longitud total del
mensaje, con lo cual se reducen las posibilidades de que 2
mensajes con diferentes longitudes den el mismo valor
HASH.
Uso de las funciones
HASH en criptografía
Una de las aplicaciones más interesantes de
la actual criptografía es la posibilidad real de
añadir en un mensaje una firma digital: La
autenticación completa.Todo esto comienza en el año 1976 cuando
Diffie y Hellman presentan un modelo de cifrado
asimétrico con clave pública, con los antiguos
sistemas de cifra de clave simétrica esto era inviable
o bien muy complejo.No obstante dado que los sistemas de clave
pública son muy lentos en vez de firmar digitalmente
el mensaje completo, en un sistema criptográfico se
incluirá como firma digital una operación de
cifra con la clave privada del emisor sobre un resumen o hash
de dicho mensaje representado por sólo una centena de
bits.
Funciones
HASH
En una función
HASH dicho valor será generado por una
función H de la forma: h=H(M)
donde:
M: Es una longitud variable del mensaje.
H(M): Es un valor HASH de longitud
finita.
El valor HASH es aparentemente para el mensaje de
la fuente de un tiempo cuando
el mensaje es asumido o conocido que esta correcto, donde el
Receptor autentifica dicho mensaje pero recalcula el valor porque
dicha función si no considera que el valor sea secreto.
Mensaje = M ( Función Resumen = h(M)
Firma (rúbrica): r = EdE{h(M)}
dE: Es la clave privada del emisor que firmará
h(M)
¿Cómo se comprueba la identidad en
destino?
Se descifra la rúbrica r con la clave
pública del emisor dE, al mensaje en claro recibido M" (si
viniese cifrado, se descifra) se le aplica la misma
función HASH que en emisión y si los valores
son iguales la firma es auténtica y el mensaje
integro:
Calcula: EdE(r) = h(M)
Compara: ¿h(M") = h(M)?
¿Qué seguridad nos da
un resumen de k bits?
Seguridad asociada a
una función HASH
Suponga que hemos creado una función HASH
de forma tal que el resumen es sólo de 4 bits,
independientemente del tamaño de dicho mensaje de entrada
y nos surge la pregunta:
¿Cuál es la probabilidad
de que dos mensajes distintos tengan igual función
HASH?
Si esta probabilidad fuese muy baja (en este caso 1/16:
HASH desde 0000 hasta 1111) y podría darse el
siguiente caso: Alguien modifica nuestro mensaje firmado y
envía ese mensaje falso con la firma del primero ya que en
ambos casos son los mismos 4 bits.
Mensaje 1: "Rechazamos el contrato por no
interesarnos nada" HASH: 1101.
Mensaje 2: "Firma todo lo que te pongan porque
nos interesa" HASH: 1101.
Observe que ambos mensajes tienen 47 caracteres,
así podríamos crear una gran cantidad de mensajes
diferentes que digan cosas distintas incluso con igual
número de caracteres, ¡Hasta que los dos HASH
coincidan!, y por este motivo para que las funciones HASH
sean interesantes en criptografía deben cumplir un conjunto de
propiedades, ellas son:
h(M) será segura si tiene las siguientes
características:
Unidireccionalidad: Conocido un
resumen h(M), debe ser computacionalmente imposible encontrar
M a partir de dicho resumen.Compresión: A partir de un
mensaje de cualquier longitud, el resumen h(M) debe tener una
longitud fija, lo normal es que la longitud de h(M) sea menor
que el mensaje M.Facilidad de cálculo: Debe
ser fácil calcular h(M) a partir de un mensaje
M.Difusión: El resumen h(M)
debe ser una función compleja de todos los bits del
mensaje M si se modifica un solo bits del mensaje
M y entonces el HASH h(M) debería
cambiar la mitad de sus bits aproximadamente.
Algoritmos de resumen
en criptografía
MD5: Ron Rivest 1992. Mejoras al MD4
y MD2 (1990), es más lento pero con mayor nivel de
seguridad, es un resumen de 128 bits.SHA-1: Del NIST, National Institute
of Standards and Technology, 1994. Similar a MD5 pero con
resumen de 160 bits, existen otras propuestas conocidas como
SHA-256 y SHA-512 posibles estándares.RIPEMD: Comunidad Europea, RACE,
1992. Resumen de 160 bits.N-Hash: Nippon Telephone and Telegraph, 1990.
Resumen: 128 bits.Snefru: Ralph Merkle, 1990.
Resúmenes entre 128 y 256 bits, el mismo ha sido
criptoanalizado y es lento.Tiger: Ross Anderson, Eli Biham,
1996. Resúmenes de hasta 192 bits. Optimizado para
máquinas de 64 bits (Alpha).Panama: John Daemen, Craig Clapp,
1998. Resúmenes de 256 bits de longitud, trabaja en
modo función HASH o como cifrador de
flujo.Haval: Yuliang Zheng, Josef Pieprzyk
y Jennifer Seberry, 1992. Admite 15 configuraciones
diferentes hasta 256 bits.
Función
Resumen SHA-1
Algoritmo:
Es muy similar a MD5 también trata bloques de 512
bits de mensaje con un total de 80 vueltas, pero en este caso el
vector inicial tiene una palabra más de 32 bits (E) por lo
que el resumen será de 160 bits.
Un resumen de 128 bits (MD5) tiene una complejidad
algorítmica de tan sólo 264 un valor en la
actualidad muy comprometido…
En cambio la
función SHA-1 (Secure Hash Algorithm) entregará un
resumen de 160 bits con una complejidad algorítmica de
280.
Esquema del resumen SHA-1.
Vueltas funciones F, G, H, I en SHA-1.
Las 80 vueltas en SHA-1.
Algoritmo y desplazamiento en SHA-1.
Comparativa entre MD5
y SHA-1
SHA-1 genera una salida de 160 bits de longitud
mientras que MD5 genera sólo 128 bits.
La dificultad de generar un mensaje que tenga un
resumen dado es del orden de 2128 operaciones para MD5 y 2160
para SHA-1.La dificultad de generar dos mensajes aleatorios
distintos y que tengan el mismo resumen (ataques basados en
paradoja del cumpleaños) es del orden de 264
operaciones para MD5 y 280 para SHA-1.
Esta diferencia de 16 bits a favor de SHA-1 lo
convierte en más seguro y resistente a ataques por
fuerza bruta que el algoritmo MD5, aunque es más lento
que MD5, SHA-1 es hoy el estándar como función
HASH.
Pasos y tasas de cifra en MD5 y SHA-1.
Ambos algoritmos
procesan bloques de 512 bits y emplean 4 funciones primitivas
para generar el resumen del mensaje, pero…
SHA-1 realiza un mayor número de pasos que
MD5: 80 frente a los 64 que realiza MD5.SHA-1 debe procesar 160 bits de buffer en
comparación con los 128 bits de MD5.Por estos motivos la ejecución del algoritmo
SHA-1 es más lenta que la de MD5 usando un mismo
hardware, por ejemplo un programa realizado en C entregaba en
un Pentium a 266 Mhz (no importa que esta velocidad sea tan
baja) una tasa del orden de 20 Mbits/seg para SHA-1 y para
MD5 esta tasa llegaba a los 60 Mbits/seg.
Diferencias entre MD5 y SHA-1.
La longitud máxima del mensaje para SHA-1
debe ser menor de 264 bits mientras que MD5 no tiene
limitaciones de longitud.MD5 emplea 64 constantes (una por cada paso)
mientras que SHA-1 sólo emplea 4. (una para cada 20
pasos)MD5 se basa en la arquitectura little-endian
mientras que SHA-1 se basa en la arquitectura big-endian y
por ello el vector ABCD inicial en MD5 y SHA-1 son
iguales:
A = 01234567 (MD5) ( 67452301 (SHA-1)
B = 89ABCDEF (MD5) ( EFCDAB89 (SHA-1)
C = FEDCBA98 (MD5) ( 98BADCFE (SHA-1)
D = 76543210 (MD5) ( 10325476 (SHA-1)
Últimos
ataques a las funciones HASH
A finales del año 2004 científicos
chinos de la Shandong University presentan trabajos en los
que se analizan las debilidades reales de las funciones
HASH como MD5 y SHA-1 ante colisiones.Aunque no está claro que este tipo de ataques
pudiese derivar en acciones de fraude, como sería
suplantar un hash por otro igual y que en recepción se
aceptase como válido si bien este último
proviene de un mensaje distinto, es un claro motivo de
preocupación actual.El problema de estas vulnerabilidades estriba en que
muchos servidores Web presentan un certificado digital X.509
firmado en el mejor de los casos a partir de una
función HASH SHA-1 y lo que es peor aún
todavía hay algunos que usan un HASH MD5….
este último mucho menos seguro que el
primero.
Conclusiones
Arribamos a las siguientes conclusiones, luego de haber
analizado las funciones HASH para la
autenticación.
Las funciones HASH (MD5, SHA-1, etc.) pueden
usarse además para autenticar a dos
usuarios.Como carecen de una clave privada no pueden usarse
de forma directa para estos propósitos, no obstante
existen algoritmos que permiten añadirles esta
función.Entre ellos está HMAC, una función que
usando los HASH vistos y una clave secreta autentica a
dos usuarios mediante sistemas de clave secreta, las
funciones MAC (Message Authentication Code) y HMAC se dedican
a la autenticación y firma digital.HMAC se usa en plataformas IP seguras como por
ejemplo en Secure Socket Layer, SSL.
Bibliografía
Stallings William, ¨Cryptography and network
security: Principles and practice¨, 2da
edición.Sklar Bernard, ¨Digital Comunications:
Fundamentals and application¨ Tomo1 y 2, 2da edition.
(Upper Saddle River, NJ:Prentice-Hall,2001)Curso Seguridad de Redes y Sistemas.
Autor:
Msc. Walter Baluja García. CUJAE.
Lucena López José Manuel,
¨Criptografía y Seguridad en computadores¨,
3ra edición. Marzo 2004. e-mail:Angel Angel José de Jesús,
¨Criptografía para principiantes.Dr. Ramió Aguirre Jorge, ¨ Libro
electrónico de seguridad informática y
criptografía. Versión 4.1¨, 6ta
edición Marzo 2006. Universidad Politécnica de
Madrid.
Autor:
Maytée Odette López
Catalá
Virgilio Zuaznabar Mazorra
Curso 2008
Página anterior | Volver al principio del trabajo | Página siguiente |