En 2021, El Salvador se convirtió en el primer país del mundo en adoptar el bitcoin como moneda de curso legal, una decisión que disparó el interés por las criptomonedas en toda Latinoamérica. Aunque bitcoin usa SHA-256 y no scrypt, ese mismo auge impulsó la minería de monedas basadas en scrypt como Litecoin y Dogecoin, cuyo algoritmo memory-hard hace que competir con hardware especializado (ASIC) sea mucho menos rentable que en bitcoin.
Qué es una función memory-hard
Un algoritmo memory-hard está diseñado deliberadamente para que calcular un solo hash requiera mantener una gran cantidad de datos intermedios en memoria. Intentar ahorrar memoria a costa de recalcular valores, en cambio, aumenta drásticamente el tiempo de cómputo, es decir, el atacante tiene que sacrificar memoria o velocidad.
Por qué esto dificulta los ataques con hardware especializado
Los chips ASIC y las GPU son muy eficientes para ejecutar en paralelo masivo operaciones aritméticas simples, pero añadir memoria a cada hilo de cómputo paralelo cuesta mucho más y escala peor. Scrypt hace que un ataque de fuerza bruta en ese hardware sea económicamente menos atractivo en comparación con las funciones hash clásicas.
Para qué se necesita esto
- Elegir un algoritmo de hasheo de contraseñas resistente a ataques con granjas de GPU.
- Entender el concepto de funciones memory-hard en el contexto de la criptografía.
- Comparar los compromisos de scrypt frente a bcrypt y Argon2 para un sistema concreto.
Cuánta memoria hace falta realmente
La cantidad de memoria para un solo cálculo de scrypt es aproximadamente 128 × N × r bytes. Con parámetros típicos (N=16384, r=8), son unos 16 megabytes por hash — insignificante para un solo inicio de sesión, pero si el servidor debe procesar miles de autenticaciones simultáneas, el volumen total de memoria se convierte rápidamente en una limitación real al elegir los parámetros, no solo en un requisito abstracto de seguridad.