¿Cómo se sustituyen los requisitos de memoria de SCrypt con más CPU?

0

He implementado scrypt con dos API separadas y en ambas no existía ninguna configuración que ofreciera una forma de sustituir la memoria por la CPU. Ambos estaban cerrados uno a uno con rondas y memoria.

Sin embargo, en las respuestas de los expertos de campo parece entenderse que scrypt puede sustituir la memoria por CPU.

De openwall :

¿Puede alguien explicar qué significa esta compensación y cómo se logra?

    
pregunta Andrew Hoffman 20.11.2014 - 16:55
fuente

1 respuesta

2

El uso de memoria de SCrypt proviene de su uso de una larga lista de números aleatorios psuedo. Como esta lista es pseudo -random, hay dos formas de tratarla:

  1. Calcule previamente toda la lista y guárdela en la memoria. Dado que se espera que se acceda a cada elemento muchas veces, esto reduce el costo de la CPU pero aumenta el costo de la memoria.

  2. Calcule cada elemento de la lista según sea necesario. Esto tiene muchas veces el costo de la CPU del cálculo previo, pero el uso de la memoria se reduce solo al elemento de la lista que realmente se está utilizando en el paso actual del proceso.

Es posible hacer un algoritmo híbrido en el que se precalifique parte de la lista y el resto se calcule según sea necesario, pero la mayoría de las implementaciones irán para un extremo u otro.

El objetivo es limitar la capacidad de las GPU para calcular muchos hashes en paralelo. Como la GPU típica tiene solo unos pocos megabytes de RAM por núcleo, un atacante necesita usar un algoritmo eficiente en algunos núcleos, o usar todos los núcleos pero un algoritmo altamente ineficiente.

    
respondido por el Mark 21.11.2014 - 04:15
fuente

Lea otras preguntas en las etiquetas