Più spesso ascolterai le dimensioni delle chiavi discusse a bit anziché a byte. Quindi, 32 byte = 256 bit. 16 = 128, 24 = 192.
In teoria, sì, le lunghezze delle chiavi più lunghe sono più sicure, poiché ci sono più permutazioni possibili della chiave. Ogni bit aggiuntivo significa il doppio delle chiavi possibili, quindi raddoppia la quantità di tempo necessaria per forzare la chiave. Detto questo, la fisica suggerisce che è impossibile persino forzare la forza bruta a 128 bit . Quindi, in realtà, situazioni in cui la crittografia a 256 bit viene utilizzata per una delle due ragioni: 1) vogliono un margine di sicurezza aggiuntivo se le debolezze (ma non un'interruzione completa) sono trovate in AES, o 2) vogliono essere in grado di commercializzalo come "cripto a 256 bit!" In altre parole, è spesso usato per la sensazione di caldo-e-fuzzy di criptaggio "migliore".
Molto più importante della lunghezza della chiave che scegli è come crei la tua chiave. Se le tue chiavi vengono create da un essere umano su una tastiera scegliendo una password, è altamente improbabile che vengano a creare 128 bit. Secondo NIST , basato su studi di password comune pratiche, una password scelta dall'uomo dovrebbe essere lunga 112 caratteri per fornire 128 bit di entropia. Dato che è improbabile che gli utenti digitino 112 caratteri, la strategia di generazione delle chiavi potrebbe essere il punto debole (anche in questo caso, assumendo le chiavi generate dall'utente). Prendi in considerazione l'utilizzo di qualcosa come PBKDF2 per rafforzare l'input dell'utente nei tasti.
Se stai generando le chiavi, assicurati di utilizzare una fonte di qualità di entropia, come /dev/urandom
o openssl_random_pseudo_bytes
in PHP. Non utilizzare rand
o mt_rand
, poiché questi non sono crittograficamente sicuri e sono prevedibili per un utente malintenzionato.