Saltar al contenido
ecdsa.com

Ataque de extensión de longitud

Un ataque contra hashes de Merkle–Damgård como MD5, SHA-1, SHA-256 y SHA-512 que calcula H(secreto ‖ m ‖ relleno ‖ m′) a partir de H(secreto ‖ m) y de la longitud de secreto ‖ m, sin conocer el secreto.
También se escribelength extension attackhash length extension

Un resumen de Merkle–Damgård es el estado interno completo tras el último bloque, así que un atacante puede cargarlo y seguir calculando el hash. Si un servicio autentica las solicitudes con SHA-256(secret ‖ params), cualquiera que vea una etiqueta válida puede añadir &admin=1 (tras los bytes de relleno) y calcular una etiqueta válida para el mensaje más largo. Las firmas de la API de Flickr, basadas en MD5, cayeron exactamente así en 2009.

No se ven afectados: HMAC (el hash exterior oculta el estado interno), SHA-3 y las funciones SHAKE (la capacidad nunca forma parte de la salida), BLAKE2 y BLAKE3, ni las variantes truncadas de SHA-2 como SHA-384 y SHA-512/256, cuya salida omite parte del estado. Los esquemas de firma calculan el hash del mensaje antes de firmar y no se ven afectados.

La regla es sencilla: nunca construyas un MAC como hash(key ‖ message) con SHA-1 o SHA-256; usa HMAC, KMAC o BLAKE2 con clave.

Estándares y referencias

Todos los términos