Quando brute-forzando una chiave privata memorizzata come binario, come fai a sapere di aver trovato una soluzione?

3

Dato il seguente scenario:

  • l'utente ha una password e una chiave simmetrica viene derivata da PBKDF2 o bcrypt
  • una chiave RSA privata è protetta dal suddetto tasto simmetrico
  • la chiave privata crittografata in formato binario è disponibile per l'autore di un attacco
  • tutti i dettagli dell'algoritmo KDF sono disponibili per l'autore dell'attacco (salt, no di iterazioni, codice sorgente)

La mia comprensione è che un utente malintenzionato che desidera decrittografare la chiave privata può eseguire un attacco di forza bruta indovinando le password e applicando il KDF.

In che modo l'hacker sa se un'ipotesi ha esito positivo?

Oltre alla forza bruta, ci sono altri approcci per decrittografare la chiave privata dato le informazioni di cui sopra?

Ci sono differenze significative tra PBKDF2 e bcrypt in questo scenario?

Grazie!

    
posta vidi 10.02.2017 - 22:29
fonte

3 risposte

2

How would the attacker know if a guess is successful?

Ci sono solo tanti formati in cui sono memorizzate le chiavi private. Come attaccante, se potessi supporre che non hai archiviato la tua chiave privata nel tuo formato home-grown, vedrei solo se la mia ipotesi di forza bruta decifra la chiave privata in uno dei formati che avrei aspettarsi che ci sia una chiave privata.

Ad esempio, se supponevo che la tua chiave privata fosse una chiave PGP con armatura ASCII, controllerei semplicemente se i primi pochi byte decodificati in

-----BEGIN PGP PRIVATE KEY BLOCK-----

e viceversa per altri formati.

Se l'autore dell'attacco aveva una lista di possibili candidati a chiave pubblica per la chiave privata, poteva anche confrontare il modulo della chiave privata decrittografata risultante contro il modulo delle chiavi pubbliche e, se ne combinava uno, sapeva che aveva un decrittazione corretta.

Besides the brute force, are there other approaches to decrypt the private key given the above information?

Nessuno che conosca, a patto che tu usi una cifratura simmetrica strong. Altre vie di attacco significherebbe che ci sono stati seri punti deboli nel codice simmetrico che si usa per crittografare la chiave privata.

Are there significant differences between PBKDF2 and bcrypt in this scenario?

Probabilmente no. Entrambi sono considerati forti per la derivazione delle chiavi, anche se le opinioni divergono sugli esatti vantaggi e svantaggi. Uno degli svantaggi che condividono entrambi è che non usano molta memoria per derivare le chiavi, quindi possono essere implementate su processori molto veloci e altamente paralleli (si pensi alle GPU e agli FPGA).

(modifica: aggiunta la parte relativa al confronto con il modulo della chiave pubblica per confermare una decrittazione corretta)

    
risposta data 10.02.2017 - 22:59
fonte
1

Dipende. In che modo esattamente la chiave RSA privata è protetta dalla chiave simmetrica?

Se la procedura di crittografia protegge anche l'integrità, ci sarà un tag o mac di autenticazione. Se questo mac è calcolato dalla chiave simmetrica semplice, rivelerà la soluzione corretta. Tuttavia, le procedure moderne utilizzano encrypt-than-mac, in cui il testo cifrato è sottoposto a hash, quindi non viene rivelata alcuna informazione sulla soluzione.

Dall'altro lato, se la chiave pubblica è nota all'attaccante, è possibile verificare la presenza di ciascuna chiave privata se corrisponde alla chiave pubblica. La conoscenza della chiave pubblica è una giusta ipotesi dato l'intero concetto di crittografia asimmetrica.

Si noti che in entrambi i casi deve essere eseguito un calcolo addizionale per verificare se un candidato è una soluzione. Questo è probabilmente più costoso per le informazioni al secondo posto, poiché la crittografia asimmetrica è in genere più impegnativa dell'hashing. Quindi ha senso usare una procedura di crittografia corretta.

    
risposta data 10.02.2017 - 23:17
fonte
1

Cerca la chiave pubblica

Una chiave privata RSA include la chiave pubblica RSA (vedi questa risposta per un esempio XML). Quindi, se l'hacker conosce la chiave pubblica, questo attacco diventa molto simile a un attacco in chiaro noto , tranne che a parte di il testo in chiaro è noto.

Quindi l'hacker avrebbe semplicemente bisogno di passare attraverso le chiavi simmetriche e controllare l'output per vedere se contiene una sequenza di byte che è la chiave pubblica.

C'è una possibilità molto, molto, molto piccola che la sequenza di byte della chiave pubblica appaia in un falso positivo, ma l'hacker dovrebbe solo crittografare e decodificare un breve nonce per verificare che sia una corrispondenza corretta.

    
risposta data 11.02.2017 - 00:35
fonte

Leggi altre domande sui tag