Skip to content

Glossary

Función memory-hard

Una función memory-hard exige una gran cantidad de RAM por intento, cerrando la ventaja de las GPU/ASIC que hace crackeables los hashes limitados por cómputo.

Una función memory-hard es un algoritmo de hash de contraseñas diseñado para que cada intento necesite una cantidad de RAM grande y difícil de reducir, no solo ciclos de CPU o GPU. Argon2 es el ejemplo de referencia actual: sus parámetros fijan un coste de memoria en kilobytes que cada cálculo de hash debe reservar, además de un coste de tiempo y un factor de paralelismo. scrypt introdujo la misma idea antes con sus parámetros N/r/p.

El objetivo es eliminar la ventaja que hace tan barato atacar un hash puramente limitado por cómputo como MD5 o SHA-1: una GPU integra miles de núcleos capaces de calcular esos hashes en paralelo casi gratis, pero las GPU tienen relativamente poca memoria por núcleo. Si se obliga a cada intento a reservar, digamos, 64 MB en memoria, un atacante ya no puede ejecutar miles de intentos en paralelo en la misma tarjeta — el requisito de memoria, no la aritmética, se convierte en el cuello de botella, y escalarlo resulta mucho más caro que escalar el cómputo puro.

La memory-hardness complementa, en lugar de sustituir, a un factor de coste: ambos parámetros suelen ajustarse juntos. Consulta Argon2 vs bcrypt vs scrypt para ver cómo interactúan la memoria, el tiempo y el paralelismo, y cómo ajustar hashcat para un rendimiento real de GPU para entender por qué los hashes memory-hard se crackean a una fracción diminuta de la velocidad de un resumen bruto.