Glossario

Cos'è PBKDF2?

PBKDF2 (Password-Based Key Derivation Function 2) è un algoritmo di derivazione della chiave definito nell'RFC 8018 che applica iterativamente una funzione pseudocasuale — tipicamente HMAC-SHA-256 — a una password e a un salt per produrre una chiave derivata computazionalmente costosa da forzare.

Noto anche come: Password-Based Key Derivation Function 2, PBKDF, RFC 8018

PBKDF2 funziona applicando ripetutamente un codice di autenticazione del messaggio basato su hash (HMAC) alla combinazione di una password e un valore salt casuale. Il numero di iterazioni controlla quante volte viene eseguita questa operazione — più iterazioni significano più tempo CPU per ogni tentativo di derivazione della chiave, aumentando direttamente il costo per un attaccante che cerca di indovinare la password.

Il salt è un valore casuale univoco per ogni operazione di derivazione della chiave. Previene gli attacchi con lookup precalcolati (rainbow table) assicurando che la stessa password produca chiavi derivate diverse quando si usano salt diversi. Il salt non deve essere segreto — viene tipicamente archiviato insieme alla chiave derivata o al ciphertext.

PBKDF2 è stato standardizzato nel 2000 e rimane ampiamente supportato, in particolare nei browser tramite la Web Crypto API. Sebbene le KDF più recenti come Argon2 offrano una maggiore resistenza agli attacchi GPU e ASIC richiedendo grandi quantità di memoria, PBKDF2 rimane una scelta solida per le applicazioni basate su browser dove la compatibilità con la Web Crypto API è essenziale e il numero di iterazioni può essere impostato sufficientemente alto da garantire una sicurezza adeguata.

Come Vaulted usa PBKDF2

Vaulted usa PBKDF2 tramite la Web Crypto API quando viene aggiunta una passphrase a un segreto. L'implementazione usa 100.000 iterazioni con HMAC-SHA-256 e un salt casuale da 16 byte. La chiave derivata a 256 bit viene usata come chiave di wrapping AES-KW per cifrare la chiave AES-256-GCM principale. Il salt è incluso nel frammento dell'URL insieme alla chiave avvolta, così il browser del destinatario può ri-derivare la stessa chiave di wrapping dalla passphrase.