Vai al contenuto
pancalc
IT

Stima dei costi di hashing Bcrypt e Argon2

Lo stimatore di costo bcrypt e Argon2 mostra 2^cost, il prodotto memoria×iterazioni×parallelismo, e una durata bcrypt agganciata a 250 ms a cost 12.

Perché alzare il cost senza misurare rompe il login

Un cost bcrypt 16 su un Raspberry può far sembrare morto l’auth. Un Argon2 da 1 GiB su un worker da 256 MiB swap-pa. I campi Bcrypt cost, Argon2 memory (KiB), iterations, parallelism, Bcrypt work units, Argon2 relative work e Rough bcrypt ms esistono per vedere i raddoppi prima di toccare produzione.

A canone: cost 12, mem 65536, iters 3, parallel 4, bcryptWork 4096, argonWork 786432, bcryptMs 250. Allinea l’entropia delle password con lo stimatore a bit: 71,4504 bit su 12×62 non compensano un hash a cost 5.

Prima di iniziare

Leggi i default della libreria (spesso cost 10 o 12; Argon2id con 19 MiB o 64 MiB). Decidi se stai dimensionando un server o un dispositivo. Non copiare i parametri di un paper da 1 s/login su un’API pubblica senza coda.

Casi d’uso comuni

  • Canone 12 / 64 MiB / 3 / 4 → 4096, 786432, 250 ms
  • Vedere cost 13 → 500 ms sulla baseline
  • Alzare solo la memoria Argon2 e guardare 786432 che scala
  • Documentare i parametri in una RFC interna
  • Spiegare perché +1 di cost raddoppia il tempo
  • Confrontare un login mobile (cost più basso) e un vault (più alto)

Come utilizzare questa calcolatrice

  1. Bcrypt cost 12.
  2. Argon2 memory (KiB) 65536.
  3. Argon2 iterations 3.
  4. Argon2 parallelism 4.
  5. Leggi work e ms.

Procedura dettagliata passo dopo passo

Pietro deve proporre bcrypt 12 e Argon2id 64 MiB, 3 iter, 4 lane.

Risultato: 4096, 786432, 250 ms. Canone identico.

Controllo: 2^12=4096; 65536×3×4=786432; 250×2^(0)=250.

Cosa fa dopo: misura p50/p99 sul suo hardware, poi alza o abbassa. Non pubblica 250 ms come SLA.

Formula e metodo

bcryptWork = 2^bcryptCost

argonWork = memKiB × iters × parallel

bcryptMs = 250 × 2^(bcryptCost−12)

Comprendere ogni input

  • bcryptCost — esponente.
  • memKiB, iters, parallel — parametri Argon2 del modello.
  • Output: work e ms bcrypt grezzi.

Ipotesi

Baseline 250 ms a 12; Argon2 work come prodotto, senza tempo. Niente GPU, niente side-channel.

Errori comuni con Stima dei costi di hashing Bcrypt e Argon2

Mettere 64 in memKiB pensando a MiB; confrontare 4096 e 786432 come ms; alzare parallel oltre i core e credere di aver moltiplicato la sicurezza a costo zero; cost 4 “perché è più veloce” su password di 8 caratteri.

Esempi realizzati

  1. Canonico. 12, 65536, 3, 4 → 4096, 786432, 250.
  2. Primari identici.
  3. Cost 11: work 2048, ms 125 sulla stessa retta.

Un attacco offline su bcrypt 12 a 250 ms/hash è lento su CPU, meno su cluster. Argon2 con 64 MiB taglia le GPU che hanno poca memoria per lane. I 786432 non sono un benchmark: sono un promemoria che memoria e iterazioni si moltiplicano. Se scendi a 4096 KiB per “andare più veloce”, hai cambiato famiglia di minaccia. Documenta mem 65536.

Password lunghe e hashing forte si tengono insieme. 71,4504 bit su un hash cost 5 è uno spreco; un dice “correcthorsebatterystaple” su cost 12 è meglio di “P@ssw0rd” su cost 15. Policy + parametri. Il generatore non sostituisce l’hash.

DoS: un cost troppo alto su endpoint pubblico senza rate limit è un’arma contro di te. I 250 ms a login sono accettabili dietro 2FA e lockout, pericolosi su un form anonimo. Misura QPS. Questa pagina non lo fa.

Interpretare i risultati

CampoLettura
bcryptWork2^cost.
argonWorkProdotto relativo.
bcryptMsRetta 250 ms @ 12.

Registrazione e condivisione dei risultati

Salva 12, 65536, 3, 4, 4096, 786432, 250, CPU di test, libreria, data.

Consigli pratici

  • Bit di password: entropia.
  • Genera: generatore.
  • Dischi del vault: RAID.
  • Non copiare i ms del laptop sul server.
  • Argon2id vs i vs d: scegli in libreria, qui non c’è il variant.

Nel caso hash-cost, tieni insieme cost 12, 4096, 786432, 250 ms. Se qualcuno cita solo un pezzo, chiedi GPU. I limiti tipici restano DoS. Ripassa il canone ad alta voce prima di un ordine, un login, un getto o una mail: i numeri non si staccano dalle unità. Questa nota 1 è specifica di hash-cost e non va copiata su altri strumenti. Annota data, selettori e se il valore è misurato o copiato. Poi confronta con fornitori e, in costruzione, con i codici applicabili. Se il pannello dopo un aggiornamento non riproduce cost 12, 4096, 786432, 250 ms, fermati.

Nel caso hash-cost, tieni insieme cost 12, 4096, 786432, 250 ms. Se qualcuno cita solo un pezzo, chiedi GPU. I limiti tipici restano DoS. Ripassa il canone ad alta voce prima di un ordine, un login, un getto o una mail: i numeri non si staccano dalle unità. Questa nota 2 è specifica di hash-cost e non va copiata su altri strumenti. Annota data, selettori e se il valore è misurato o copiato. Poi confronta con fornitori e, in costruzione, con i codici applicabili. Se il pannello dopo un aggiornamento non riproduce cost 12, 4096, 786432, 250 ms, fermati.

Nel caso hash-cost, tieni insieme cost 12, 4096, 786432, 250 ms. Se qualcuno cita solo un pezzo, chiedi GPU. I limiti tipici restano DoS. Ripassa il canone ad alta voce prima di un ordine, un login, un getto o una mail: i numeri non si staccano dalle unità. Questa nota 3 è specifica di hash-cost e non va copiata su altri strumenti. Annota data, selettori e se il valore è misurato o copiato. Poi confronta con fornitori e, in costruzione, con i codici applicabili. Se il pannello dopo un aggiornamento non riproduce cost 12, 4096, 786432, 250 ms, fermati.

Nel caso hash-cost, tieni insieme cost 12, 4096, 786432, 250 ms. Se qualcuno cita solo un pezzo, chiedi GPU. I limiti tipici restano DoS. Ripassa il canone ad alta voce prima di un ordine, un login, un getto o una mail: i numeri non si staccano dalle unità. Questa nota 4 è specifica di hash-cost e non va copiata su altri strumenti. Annota data, selettori e se il valore è misurato o copiato. Poi confronta con fornitori e, in costruzione, con i codici applicabili. Se il pannello dopo un aggiornamento non riproduce cost 12, 4096, 786432, 250 ms, fermati.

Nel caso hash-cost, tieni insieme cost 12, 4096, 786432, 250 ms. Se qualcuno cita solo un pezzo, chiedi GPU. I limiti tipici restano DoS. Ripassa il canone ad alta voce prima di un ordine, un login, un getto o una mail: i numeri non si staccano dalle unità. Questa nota 5 è specifica di hash-cost e non va copiata su altri strumenti. Annota data, selettori e se il valore è misurato o copiato. Poi confronta con fornitori e, in costruzione, con i codici applicabili. Se il pannello dopo un aggiornamento non riproduce cost 12, 4096, 786432, 250 ms, fermati.

Nel caso hash-cost, tieni insieme cost 12, 4096, 786432, 250 ms. Se qualcuno cita solo un pezzo, chiedi GPU. I limiti tipici restano DoS. Ripassa il canone ad alta voce prima di un ordine, un login, un getto o una mail: i numeri non si staccano dalle unità. Questa nota 6 è specifica di hash-cost e non va copiata su altri strumenti. Annota data, selettori e se il valore è misurato o copiato. Poi confronta con fornitori e, in costruzione, con i codici applicabili. Se il pannello dopo un aggiornamento non riproduce cost 12, 4096, 786432, 250 ms, fermati.

Limitazioni e quando non utilizzarlo

Non è un benchmark, non simula GPU, non valida RFC. Solo aritmetica dei parametri.

Quando cercare un altro strumento

Entropia: password. Generazione: generatore. Storage: RAID.

Domande frequenti

Cosa significa bcrypt cost 12?
**Bcrypt work units** = 2^cost. A cost **12** ottieni **4096**. **Rough bcrypt ms** = 250 × 2^(cost−12), quindi **250** ms nel canone. È una baseline didattica, non il tuo CPU.
Argon2 memory 65536 KiB quanto è?
64 MiB. Con iters **3** e parallel **4**, argonWork = 65536×3×4 = **786432**. È un prodotto relativo, non millisecondi.
Posso confrontare 4096 e 786432 come tempi?
No. Sono unità diverse. Servono a vedere come scala un parametro alla volta, non a dire “Argon2 è 192 volte bcrypt”.
Cost 13 quanto dura?
2^13=8192 work; ms = 250×2 = 500 ms sulla stessa baseline. Ogni +1 di cost raddoppia. Verifica sul tuo hardware: la baseline 250 ms è un’ipotesi.
Questo sostituisce un test di login?
No. Timeout, DoS, GPU e librerie reali si misurano in staging. Qui è aritmetica dei parametri.
memory KiB o KB?
Il campo è **Argon2 memory (KiB)**, binario. 65536 KiB = 64 MiB. Non inserire 64 pensando ai KiB.