Va bene usare 6 come costo dell'algoritmo di bcrypt per 64 caratteri di stringa? [duplicare]

-1

Quale dovrebbe essere l' $cost ideale in questo caso per prevenire l'attacco brute force anche con ASIC o FPGA

$cost = '06';
$secret_key = bin2hex(random_bytes(64));
$store_data = crypt($secret_key, '$2a$.$cost.$'.bin2hex(random_bytes(16)).'$')

Scenerio

L'azienda dà all'utente $secret_key che viene generato dal codice precedente per consentire l'accesso a ritirare denaro e questa chiave segreta non dovrebbe mai essere indovinata dall'hacker.

$store_data è la stringa che abbiamo archiviato nel nostro database.

Quindi, se un utente malintenzionato accede al database e apprende la variabile $store_data , non dovrebbe essere in grado di ottenere $secret_key .

Ho usato l'algoritmo bcrypt per hash ma non sono sicuro che $cost = 6 sia abbastanza sicuro in questo caso.

Nota:

Non ho usato password_hash perché in futuro convertirò tutto il codice in Java e in Java non ci sarà l'equivalente di password_hash

    
posta Alex Robertson 06.02.2018 - 10:39
fonte

1 risposta

0

Se hai 64 byte veramente casuali (cioè crittografici casualmente), puoi utilizzare qualsiasi algoritmo di hashing che fornisce resistenza di preimage per memorizzarlo in modo sicuro e impedire a un utente malintenzionato di apprendere l'input.

Algoritmi come scrypt e bcrypt forniscono fattori di lavoro per rendere più difficile l'esecuzione di attacchi di dizionario contro gli hash. Questo perché le password selezionate dall'utente tendono ad avere molta bassa entropia, quindi è l'ideale per il loro caso d'uso.

Con 64 byte di dati casuali, puoi usare qualsiasi algoritmo di hashing crittografico con 256 bit di output senza alcuna preoccupazione sugli attacchi di forza bruta, perché è fisicamente impossibile a forza bruta un valore a 256 bit . L'iterazione su tutti i possibili valori a 256 bit richiede più energia di quella che il sole può produrre nel corso della sua vita.

L'enumerazione di tutte le chiavi a 128 bit possibili richiede l'utilizzo totale di energia della Spagna per 1 anno. Calcolare gli hash è ancora di più. Passare da 128 a 129 bit raddoppia il fabbisogno energetico, 256 bit richiedono più energia di quella che il sole può produrre. Questo è un limite minimo di accumulo di energia chiamato Limite di Landauer. (Vedi Come possiamo essere sicuri che nessuno crei una chiave a 128 bit e Wikipedia: Limiti teorici di forza bruta )

Il mio consiglio, quindi, è di usare SHA-256.

    
risposta data 07.02.2018 - 01:19
fonte

Leggi altre domande sui tag