C'è bisogno di PBKDF2 con AES quando si utilizza uno spazio chiave uniforme?

2

Sto guardando un codice che crittografa i dati in un database usando AES. Prima di farlo, la chiave di crittografia viene passata attraverso una funzione PBKDF2. Leggendo su questo, sembra che questo è per quando lo spazio della chiave può essere indovinato, cioè come la password di qualcuno che potrebbe utilizzare le parole di un dizionario inglese. La chiave di crittografia è puramente casuale, qualcosa del tipo:

M39UrEEveje3J#PB=jPG9+&eUSTJG*SAK&s_xHLRu$?Hrbg&7Vn5X^P298$W2z2#r6_!yfGQMQ@ArXjgefq-?9^b?y786ZL5cYcqE6#!c4@rE$scZxR$$e6cYPX$U-m7

In uno spazio chiave prevedibile, si desidera che ci sia un carico di lavoro maggiore per forzare la crittografia. Quindi, eseguendo l'hashing della password attraverso così tanti round di PBKDF2. Se lo spazio della chiave è completamente uniforme e non prevedibile, non è solo uno spreco di cicli della CPU? È buona pratica fare comunque?

    
posta Matt Molnar 10.08.2018 - 20:41
fonte

1 risposta

5

Se hai un valore casuale segreto di 128 bit (o 192 o 256 bit per AES-192 o AES-256), allora sì, puoi usarlo come tasto AES senza eseguirlo attraverso una funzione di derivazione della chiave.

Tuttavia, l'esempio che hai fornito non contiene byte casuali, contiene (presumibilmente) caratteri casuali da un certo spazio caratteri con almeno 56 caratteri e probabilmente non di più di 100. Un byte veramente casuale avrà uno di 256 valori con uguale probabilità, mentre un byte in questo segreto ha uno di 56-100 (ish) valori con (si spera) uguale probabilità.

Inoltre non è 128, 192 o 256 bit. In realtà sono 128 byte , il che mi suggerisce che qualcuno potrebbe aver frainteso le dimensioni della chiave di cui avevano bisogno e averlo generato in modo errato.

Se provi a usare il segreto direttamente come chiave, probabilmente succederà una di queste tre cose:

  • Il software esegue già la derivazione della propria chiave (non necessariamente una derivazione a chiave lenta come PBKDF2, ma alcuni una sorta di derivazione della chiave). Poiché la chiave (si spera) contiene significativamente più di 128 bit di entropia, va bene.
  • Il software ti avviserà che la chiave non è della lunghezza corretta e fallisce.
  • Il software troncherà la chiave alla lunghezza corretta e la userà. Questo può essere molto cattivo in alcuni casi, ma purtroppo succede.
risposta data 10.08.2018 - 21:08
fonte

Leggi altre domande sui tag