L'affermazione è strana, perché proviene da un riflesso ritualistico istintivo sulle lunghezze delle chiavi.
Il testo completo della pagina è:
Specifies the length in bytes of the output that will be generated. Typically, the key length should be larger than or equal to the output length of the underlying digest function, otherwise an attacker could simply try to brute-force the key. According to PKCS#5, security is limited by the output length of the underlying digest function, i.e. security is not improved if a key length strictly larger than the digest output length is chosen. Therefore, when using PKCS5 for password storage, it suffices to store values equal to the digest output length, nothing is gained by storing larger values.
C'è una certa confusione qui, davvero. Vediamo i dettagli:
-
PBKDF2 è un Key Derivation Function : il suo output può avere una lunghezza configurabile e deve essere una" chiave ".
-
La chiave per la crittografia non deve essere troppo piccola, per evitare di essere intrinsecamente debole. Ad esempio, un tasto DES, essendo lungo 56 bit (ok, 64 bit, ma 8 bit vengono ignorati, quindi 56 bit "reali"). Tuttavia, oltre i 100 bit, la ricerca esaustiva è così ridicolmente dispendiosa da smettere di diventare una minaccia.
-
Allo stesso modo, PBKDF2 può essere "attaccato" con uno sforzo di costo 2 n se la funzione di hash sottostante ha un output di n bit. Questo è totalmente irrealizzabile anche se si usa MD5 (128 bit sono già sufficienti per questo). Ma, in una certa luce burocratica , PBKDF2 ha "forza n bit".
Quindi il ragionamento vale: se usi PBKDF2 per generare una chiave che non sia almeno di n bit, allora la tua chiave è "più debole" di quanto avrebbe potuto produrre PBKDF2.
Ora sarebbe un po 'stupido rifiutarsi di generare una chiave a 128 bit con PBKDF2 / SHA-256 perché SHA-256 offre "sicurezza a 256 bit". Ma ha una sorta di senso distorto, se visto attraverso un prisma procedurale da un auditor frustrato che non ha la minima idea di cosa sia effettivamente .
Riepilogo: ignora questo strano passaggio del documento. Usa PBKDF2 con HMAC / SHA-256 o HMAC / SHA-512, a seconda di quale galleggia la tua barca (SHA-512 potrebbe essere leggermente più strong contro gli attaccanti che usano GPU come sono venduti all'inizio del 2013, perché la GPU attuale sono cattivi a fare aritmetica a 64 bit). Genera la lunghezza della chiave necessaria per l'algoritmo in questione. 128 bit sono comunque più che sufficienti per le chiavi simmetriche.