Il metodo di KeePass per la derivazione delle chiavi è sicuro?

10

Ho familiarità con il modo in cui le funzioni di derivazione delle chiavi possono essere utilizzate per rallentare gli attacchi di forza bruta contro le password richiedendo notevoli risorse computazionali e / o di memoria per calcolare la chiave finale.

Common KDF di cui sono a conoscenza sono bcrypt, PBKDF2 e scrypt, ma KeePass sembra utilizzare un algoritmo completamente diverso che non conosco. In base al Centro assistenza di KeePass :

To generate the final 256-bit key that is used for the block cipher, KeePass first hashes the user's password using SHA-256, encrypts the result N times using the Advanced Encryption Standard (AES) algorithm (called key transformation rounds from on now), and then hashes it again using SHA-256. For AES, a random 256-bit key is used, which is stored in the database file.

[...]

By default, KeePass sets N to 6000 encryption rounds (full encryptions are meant; N has nothing to do with the internal encryption rounds of AES). This number has been chosen in order to provide compatibility with portable device versions (PocketPC processors are slower, therefore the key computation takes longer).

L'uso di AES come KDF è sicuro? Ci sono dei grossi difetti con questo approccio? Sono sufficienti 6000 iterazioni per rallentare in modo significativo un aggressore determinato?

Questa linea sui "processori PocketPC" è un po 'preoccupante, poiché implica che questa decisione su quale KDF utilizzare sia stata fatta un po' di tempo fa, prima che esistessero i telefoni con processori più potenti (e, per estensione, in un tempo in cui i processori desktop non erano altrettanto potenti).

    
posta Ajedi32 30.09.2015 - 17:56
fonte

2 risposte

9

Basato su un tweet del 2014 da Malik Mesellem , che ha creato un software di cracking della chiave master KeePass chiamato KeeCracker, stava ottenendo un po 'più di 1.000 password indovina un secondo con il suo strumento su una CPU Intel i7.

In una risposta a questa domanda simile su KeePass memoria chiave dal 2011, Tom Leek discute la possibilità di 32.000 tentativi di password al secondo con una CPU quad core. Potrebbe essere stata una stima del caso migliore che è ulteriormente degradata a causa delle inefficienze del software di cracking che gestisce tali operazioni AES, come vediamo con la figura di KeeCracker.

Ogni stima è piuttosto lenta per quanto riguarda il cracking delle password, dove si visualizzano regolarmente centinaia di milioni o miliardi di hash al secondo su una singola GPU con una cattiva scelta di algoritmi come MD5. L'implementazione di KeePass è un po 'più veloce di un'implementazione "tipica" moderna di bcrypt o scrypt, ma probabilmente non così tanto da considerarli in una classe completamente diversa.

Non sono a conoscenza di alcuna critica alla loro scelta di algoritmi o implementazione, e non sono realmente qualificato per valutarli da solo, ma sembra che non sia considerato una cattiva scelta. Penso che sia giusto chiedersi se sono sufficienti 6000 round se si desidera un archivio di password "future proofed", ma non sembra che questo sia necessariamente un numero irresponsabile da utilizzare oggi.

Quindi la più grande preoccupazione degli utenti di KeePass dovrebbe essere quella di scegliere una passphrase master (ad esempio non una password) che resista a tentativi di cracking più semplici. Non usare frasi conosciute, non renderlo troppo breve, non renderlo prevedibile basandoti sulla conoscenza personale di te, ecc. Se eviti correttamente queste cose diventa improbabile che la tua passphrase sia scoperta attraverso il dizionario, ibrido o attacchi di forza bruta.

    
risposta data 30.09.2015 - 20:18
fonte
4

Riguardo alla tua ultima domanda: hai ragione a preoccuparti della compatibilità con i processori PocketPC, come 6000 rounds è un'impostazione non sicura . È necessario impostare questo valore intorno a 5000000 circa. Lo svantaggio è che la crittografia / decrittografia dell'archivio delle password richiede più tempo, quindi dovresti cercare di trovare il valore più alto che causi un ritardo con cui ti trovi a tuo agio.

    
risposta data 01.10.2015 - 14:26
fonte