La sezione 2 di RFC 2104 definisce la chiave utilizzata in HMAC dovrebbe essere riempita con zero byte fino alla lunghezza del blocco dell'algoritmo di hash sottostante. Non si tratta di una vulnerabilità di sicurezza potenziale poiché ogni conclusione chiave in un byte zero produrrebbe lo stesso risultato di una chiave senza l'ultimo byte?
Il seguente codice PHP illustra l'esempio:
$key = "key";
$message = "message";
var_dump(hash_hmac("SHA256", $message, $key));
var_dump(hash_hmac("SHA256", $message, $key.chr(0x00)));
e produce il seguente output:
string(64) "6e9ef29b75fffc5b7abae527d58fdadb2fe42e7219011976917343065f58ed4a"
string(64) "6e9ef29b75fffc5b7abae527d58fdadb2fe42e7219011976917343065f58ed4a"
Sono consapevole che la sezione 3 della stessa RFC raccomanda chiavi di lunghezza minima, che eliminerebbero questo problema, così come una sorta di passaggio di generazione di chiavi con hash. Tuttavia, mi sembra che questo potrebbe essere un potenziale problema o sono eccessivamente paranoico?