Glossario

Cos'è Derivazione della chiave?

La derivazione della chiave è il processo di trasformare un valore sorgente — tipicamente una password, una passphrase o un segreto condiviso — in una o più chiavi crittografiche ad alta entropia usando un algoritmo deterministico progettato per produrre materiale chiave di qualità.

Le password scelte dagli esseri umani sono intrinsecamente deboli come chiavi crittografiche. Sono corte, hanno set di caratteri limitati e seguono schemi prevedibili. Una funzione di derivazione della chiave (KDF) colma questo divario elaborando la password attraverso un algoritmo computazionalmente intensivo che produce una chiave di lunghezza fissa adatta alla cifratura.

Le funzioni di derivazione della chiave sono deliberatamente progettate per essere lente e ad alto consumo di risorse. Questo è controintuitivo per la maggior parte del software, dove la velocità è apprezzata, ma per le KDF la lentezza è una caratteristica di sicurezza. Un attaccante che cerca di indovinare una password a forza bruta deve eseguire la KDF per ogni tentativo. Se la KDF richiede 100 millisecondi per tentativo, provare un miliardo di password richiederebbe oltre tre anni — rispetto ai secondi con una funzione hash veloce.

Le KDF più comuni sono PBKDF2, bcrypt, scrypt e Argon2. Ognuna bilancia risorse diverse (tempo CPU, memoria, parallelismo) per resistere a diverse strategie di attacco. La scelta della KDF dipende dall'ambiente: le applicazioni basate su browser usano tipicamente PBKDF2 perché è disponibile tramite la Web Crypto API, mentre le applicazioni lato server possono preferire Argon2 per la sua resistenza alla memoria.

Come Vaulted usa Derivazione della chiave

Quando imposti una passphrase opzionale su un segreto, Vaulted usa la derivazione della chiave per trasformare quella passphrase in una chiave di wrapping. Nello specifico, esegue PBKDF2 con 100.000 iterazioni, SHA-256 e un salt casuale da 16 byte tramite la Web Crypto API. La chiave derivata viene usata con AES-KW per avvolgere (wrapping) la chiave di cifratura AES-256-GCM originale. Il destinatario deve inserire la stessa passphrase per derivare la stessa chiave di wrapping e sbloccare la chiave di cifratura prima di decifrare il segreto.