Cos'è Web Crypto API?
La Web Crypto API è uno standard W3C che fornisce un'interfaccia JavaScript a un insieme di primitive crittografiche — tra cui cifratura, decifratura, generazione di chiavi, hashing e firma — implementate nativamente nel browser.
Prima della Web Crypto API, le applicazioni web che necessitavano di crittografia dovevano affidarsi a librerie JavaScript che implementavano gli algoritmi da zero. Queste librerie erano lente (girando nell'interprete JavaScript), potenzialmente vulnerabili agli attacchi di timing e non potevano sfruttare gli acceleratori hardware crittografici presenti nelle CPU moderne.
La Web Crypto API risolve questi problemi esponendo il motore crittografico nativo del browser a JavaScript. Operazioni come la cifratura AES, la generazione di chiavi e la derivazione di chiavi PBKDF2 girano come codice nativo compilato, beneficiando di implementazioni a tempo costante (resistenti ai side-channel di timing) e dell'accelerazione hardware tramite le istruzioni AES-NI sui processori moderni.
L'API è asincrona per design — tutte le operazioni restituiscono Promise invece di bloccare il thread principale. Gli oggetti CryptoKey creati dall'API sono opachi per default e non possono essere estratti dalla memoria a meno che non siano esplicitamente contrassegnati come esportabili, aggiungendo un ulteriore livello di protezione contro la fuoriuscita accidentale delle chiavi.
Come Vaulted usa Web Crypto API
Vaulted si affida esclusivamente alla Web Crypto API per tutte le operazioni crittografiche. Usa crypto.subtle.generateKey per creare chiavi AES-256-GCM, crypto.subtle.encrypt e decrypt per la cifratura effettiva, e crypto.subtle.deriveKey con PBKDF2 quando viene usata una passphrase. Dipendendo esclusivamente dalla crittografia nativa del browser, Vaulted evita dipendenze da librerie crittografiche di terze parti e beneficia di implementazioni a tempo costante e accelerate dall'hardware.