UTILS.
100% nel browser
🧂

Generatore e verificatore di hash scrypt KDF

Deriva una chiave scrypt da una password con costo N, r, p configurabile, o verifica una password rispetto a una stringa scrypt memorizzata. Funziona interamente nel tuo browser.

Le password sono sottoposte ad hashing al 100% nel tuo browser — nulla viene caricato.

— l'output appare qui —

Informazioni su questo strumento

Il Generatore e verificatore di hash scrypt KDF deriva e verifica output scrypt localmente nel tuo browser. scrypt, progettato da Colin Percival e standardizzato in RFC 7914, è una funzione di derivazione della chiave memory-hard: il suo costo è deliberatamente dominato dalla larghezza di banda della memoria così che l'hardware di cracking dedicato ottenga poco vantaggio. La pipeline è PBKDF2-HMAC-SHA256 per espandere la password, la funzione ROMix costruita su BlockMix e il core Salsa20/8 per forzare un ampio uso sequenziale della memoria, e un PBKDF2-HMAC-SHA256 finale per produrre la chiave derivata della lunghezza scelta.

La modalità di generazione legge 16 byte di salt casuali da crypto.getRandomValues ed esegue scrypt con tre parametri di costo: N è il costo CPU/memoria e deve essere una potenza di due (predefinito 16384 = 2^14), r è la dimensione del blocco (predefinito 8), e p è il fattore di parallelizzazione (predefinito 1). L'uso della memoria è all'incirca 128 · N · r byte — circa 16 MiB con i valori predefiniti — e lo strumento avvisa quando le tue impostazioni supererebbero i 256 MiB. L'output è una stringa auto-descrittiva $scrypt$ln=14,r=8,p=1$<salt base64>$<chiave base64> dove ln = log2(N), così che ogni parametro necessario per verificare sia trasportato con l'hash.

La modalità di verifica analizza ln, r, p, il salt e la chiave memorizzata da quella stringa, ricalcola la chiave derivata con la password candidata, ed esegue un confronto a tempo costante per riportare corrispondenza o nessuna corrispondenza. Il core scrypt viene eseguito come build WebAssembly priva di eval sotto la rigorosa policy di sicurezza del browser, quindi le password sono elaborate al 100% nel tuo browser e nulla viene caricato.

Domande frequenti

Perché N deve essere una potenza di due?
Il passo ROMix di scrypt indicizza una tabella di esattamente N blocchi e si basa sul fatto che N sia una potenza di due per il suo indirizzamento integerify-and-mask. Lo strumento rifiuta i valori che non sono potenze di due. Le scelte tipiche sono 16384 (2^14) per uso interattivo e 1048576 (2^20) per la cifratura di file.
Quanta memoria usa scrypt?
All'incirca 128 · N · r byte. Con i valori predefiniti N=16384, r=8 sono circa 16 MiB. Poiché il browser alloca realmente questa memoria, valori di N o r grandi possono essere lenti o fallire sui dispositivi con poca RAM — lo strumento avvisa oltre i 256 MiB.
Cosa controllano r e p?
r è la dimensione del blocco, che scala sia l'uso della memoria sia la quantità di lavoro sequenziale per blocco; aumentare r aumenta il costo di memoria insieme a N. p è il fattore di parallelizzazione, che esegue p calcoli scrypt indipendenti, il che aumenta il costo CPU senza aumentare l'ingombro di memoria per istanza.
Qual è il formato dell'hash generato?
Una stringa auto-descrittiva $scrypt$ln=<log2 N>,r=<r>,p=<p>$<salt base64>$<chiave base64>. Incorpora ogni parametro, quindi la modalità di verifica ha bisogno solo di quella stringa e della password. Tutti i calcoli sono locali — nulla viene caricato.

Altri strumenti