0Pricing
Cryptology Academy · Lezione

bcrypt: algoritmo e fattore di costo

Scopra i meccanismi interni di bcrypt, il work factor e come impostare correttamente il costo.

bcrypt: algoritmo e fattore di costo è una lezione Cryptology Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cryptology Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cryptology Academy include 4 lezioni in totale.

Benvenuto

bcrypt è un algoritmo di hashing delle password progettato nel 1999 specificamente per essere lento e resistente agli attacchi hardware. Rimane l'algoritmo di hashing delle password più ampiamente utilizzato.

Origini di bcrypt

È stato progettato da Niels Provos e David Mazières sulla base del cifrario Blowfish. La "b" sta per Blowfish. L'intuizione fondamentale è usare la costosa configurazione della chiave di Blowfish per ottenere una lentezza intenzionale.

Formato dell'hash bcrypt

$2b$12$saltsaltsaltsaltsaltsalthashhashhashhashhashhashhash $2b$: versione dell'algoritmo 12: fattore di costo (log2 delle iterazioni) salt: 22 caratteri Base64 (16 byte) hash: 31 caratteri Base64 (24 byte)

Fattore di costo

Costo 12 = 2^12 = 4096 iterazioni. Costo 13 = 8192 iterazioni. Ogni incremento raddoppia il tempo di calcolo. Lo configuri in modo che l'hashing richieda circa 100-300 ms sul proprio hardware. La velocità dell'aggressore scala nello stesso modo.

bcrypt in Python

import bcrypt password = b'my_password' salt = bcrypt.gensalt(rounds=12) # generates random salt hashed = bcrypt.hashpw(password, salt) # Verify: bcrypt.checkpw(password, hashed) # True

Salt integrato

bcrypt genera e memorizza sempre automaticamente il salt. gensalt() produce un salt crittograficamente casuale di 16 byte. Non è necessario gestire il salt separatamente: è incorporato nella stringa dell'hash.

Limite di 72 caratteri di bcrypt

bcrypt tronca l'input a 72 byte. Le password più lunghe di 72 caratteri vengono considerate identiche dopo i primi 72 byte. Soluzione alternativa: calcolare prima l'hash con SHA-512 e poi usare bcrypt, verificando però l'approccio.

Flusso di verifica della password

Accesso: 1. L'utente invia la password 2. Recuperare l'hash memorizzato dal DB 3. bcrypt.checkpw(submitted, stored_hash) 4. checkpw estrae il salt dall'hash memorizzato e ricalcola l'hash 5. Restituisce True/False Non memorizzi mai la password in chiaro.

Benchmark

Costo 12 di bcrypt: - CPU per uso comune: circa 150 ms per hash - GPU (RTX 4090): circa 50.000 hash/s (rispetto ai 10 miliardi di SHA-256) Il vantaggio dell'attaccante si riduce da un miliardo a circa 300 con il costo 12 di bcrypt.

Raccomandazioni per il fattore di costo

OWASP 2024: fattore di costo di bcrypt ≥ 10. Valore consigliato: 12. Verifichi il valore ogni anno: con il miglioramento dell'hardware, aumenti il fattore. Implementi il ricalcolo online dell'hash: durante l'accesso, verifichi l'hash e lo aggiorni se necessario.

Limitazioni di bcrypt

Punto debole di bcrypt: non è memory-hard. Gli attaccanti possono usare ASIC personalizzati ottimizzati per bcrypt. Per le nuove applicazioni, preferisca Argon2id, che è memory-hard e resistente agli ASIC.

Verifica rapida

Che cosa significa il fattore di costo 12 in un hash bcrypt?

Riepilogo

bcrypt è solido, ma non è memory-hard. Ora studieremo Argon2, il campione moderno dell'hashing delle password con requisiti di memoria configurabili.

Domande Frequenti

La lezione «bcrypt: algoritmo e fattore di costo» è gratuita?

Sì — il testo completo di «bcrypt: algoritmo e fattore di costo» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cryptology Academy, passa a CoddyKit PRO. Il corso Cryptology Academy include 4 lezioni in totale.

Cosa imparerò in «bcrypt: algoritmo e fattore di costo»?

Scopra i meccanismi interni di bcrypt, il work factor e come impostare correttamente il costo. Eserciti Cryptology Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Cryptology Academy?

Non è richiesta alcuna esperienza precedente. Cryptology Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «bcrypt: algoritmo e fattore di costo»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Cryptology Academy?

Sì. Ogni lezione Cryptology Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Perché SHA-256 semplice non è sufficiente per le password
  2. bcrypt: algoritmo e fattore di costo
  3. Argon2: hashing delle password memory-hard
  4. PBKDF2 e scelta dell'algoritmo giusto
← Torna a Cryptology Academy