La respuesta corta es: no . Eso no es lo que dije, ni lo que implicé.
Usando la compensación que identifiqué y mencioné, puedes intercambiar memoria por el tiempo de CPU. Entonces sí, puede reducir una derivación particular de 16MiB a 8KiB (aproximadamente). Sin embargo, hacerlo requerirá varios órdenes de magnitud más lógica para ser ejecutados por la CPU. Se gana cierta eficiencia por la localidad de caché, pero en general, debería ser mucho más lenta. (En promedio, aproximadamente 8,000 veces más lento que la versión de 16MiB, pero hasta 16,000 veces más lento, dependiendo de las distribuciones aleatorias exactas del algoritmo).
Sin embargo, hay una alternativa más interesante. Mi ataque fue un bais de todo o nada. Básicamente, elimine completamente la matriz V, a costa de aumentar la complejidad. Pero puedes hacer una compensación más matizada. Puede cortar la matriz a la mitad y volver a calcular el valor de todos los demás. O córtalo a cada tercer valor. Intercambio de espacio de almacenamiento para el espacio de la CPU. Pero en un grado variado. Esto se conoce comúnmente como un defeater TMTO (Time-Memory-TradeOff Defeater).
Hice un análisis más exhaustivo, incluida una corrección propuesta en este hilo . Vale la pena señalar que al menos una de las propuestas para la competencia de hash de contraseñas usa mi algoritmo aumentado.
Así que no, Scrypt sigue siendo increíblemente fuerte. Y para su caso de uso principal (como KDF), es bastante mejor que las alternativas.,
El punto que intentaba resaltar con mi publicación es que cuando no está optimizado de manera óptima (usado con configuraciones incorrectas) o con configuraciones muy rápidas, puede ser significativamente más débil que los algoritmos existentes. Específicamente para almacenamiento de contraseña . Donde conoce el resultado y está buscando el material de origen (contraseña).