In che modo i requisiti di memoria di SCrypt sono sostituiti con più CPU?

0

Ho implementato lo scrypt con due API separate e in entrambe non esistevano impostazioni che fornissero un modo per sostituire la CPU con la memoria. Entrambi sono stati bloccati uno a uno con round e memoria.

Tuttavia, nelle risposte degli esperti del settore sembra essere inteso che lo scrypt può sostituire la CPU per la memoria.

Da openwall :

Qualcuno può spiegare cosa significa questo compromesso e come viene raggiunto?

    
posta Andrew Hoffman 20.11.2014 - 16:55
fonte

1 risposta

2

L'utilizzo della memoria di SCrypt deriva dall'uso di una lunga lista di numeri psuedo-casuali. Poiché questa lista è pseudo -random, ci sono due modi per affrontarla:

  1. Calcola l'intero elenco e memorizzalo. Poiché ci si aspetta che ogni elemento sia accessibile molte volte, ciò riduce il costo della CPU ma aumenta il costo della memoria.

  2. Calcola ciascun elemento dell'elenco in base alle necessità. Questo ha molte volte il costo della CPU del pre-calcolo, ma l'uso della memoria è ridotto al solo elemento della lista che viene effettivamente utilizzato nel passaggio corrente del processo.

Potrebbe essere possibile eseguire un algoritmo ibrido in cui una parte dell'elenco è pre-calcolata e il resto viene calcolato in base alle necessità, ma la maggior parte delle implementazioni andrà per un estremo o l'altro.

L'obiettivo è limitare la capacità delle GPU di calcolare molti hash in parallelo. Poiché la GPU tipica ha solo pochi megabyte di RAM per core, un hacker deve utilizzare un algoritmo efficiente su alcuni core o utilizzare tutti i core ma un algoritmo altamente inefficiente.

    
risposta data 21.11.2014 - 04:15
fonte

Leggi altre domande sui tag