Come vengono utilizzate le GPU negli attacchi a forza bruta?

51

Ho letto che le GPU possono essere utilizzate in attacchi a forza bruta? Ma come si può fare e c'è bisogno di altri dispositivi hardware (hard disk, per esempio)?

Nota: sono più interessato alla sicurezza delle applicazioni web, ma non voglio mettere i paraocchi. Mi dispiace se la mia domanda è ridicola per te, ma il mio background hardware non è molto buono. So solo come i componenti di base funzionano insieme e come combinarli.

    
posta Mahmud Muhammad Naguib 21.03.2016 - 20:50
fonte

7 risposte

55

Ho scelto di presumere che tu stia chiedendo perché è un rischio piuttosto che come hackerare.

Le GPU sono molto brave nel parallelizzare le operazioni matematiche, che è alla base sia della computer grafica che della crittografia. In genere, la GPU viene programmata utilizzando CUDA o OpenCL . Il motivo per cui sono buoni per gli attacchi a forza bruta è che sono ordini di grandezza più veloci di una CPU per determinate operazioni - non sono più intelligenti per l'interno.

Le stesse operazioni possono essere eseguite su una CPU, richiedono solo più tempo.

    
risposta data 21.03.2016 - 21:04
fonte
51

Le persone hanno dato grandi risposte qui che rispondono direttamente alla tua domanda, ma mi piacerebbe dare una risposta complementare per spiegare in modo più approfondito perché le GPU sono così potenti per questo e altre applicazioni.

Come alcuni hanno sottolineato, le GPU sono progettate appositamente per essere veloci con operazioni matematiche poiché disegnare oggetti sullo schermo è tutto matematico (tracciare posizioni di vertici, manipolazioni di matrici, miscelazione di valori RBG, lettura dello spazio texture ecc.). Tuttavia, questa non è la principale forza trainante dietro il guadagno in termini di prestazioni. La principale forza trainante è il parallelismo. Una CPU di fascia alta potrebbe avere 12 core logici, dove un high end GPU riempirebbe qualcosa come 3072.

Per semplificare, il numero di core logici è uguale al numero totale di operazioni simultanee che possono essere eseguite su un determinato set di dati. Ad esempio, voglio confrontare o ottenere la somma dei valori di due array. Diciamo che la lunghezza dell'array è 3072. Sulla CPU, potrei creare un nuovo array vuoto con la stessa lunghezza, quindi generare 12 thread che verrebbero ripetuti sui due array di input ad un passo uguale al numero di thread (12) e contemporaneamente si sta scaricando la somma dei valori nella terza matrice di output. Ciò richiederebbe 256 iterazioni totali.

Con la GPU, tuttavia, potrei caricare dalla CPU gli stessi valori nella GPU e scrivere un kernel che potrebbe generare contemporaneamente 3072 thread su quel kernel e completare l'intera operazione in un'unica iterazione.

Questo è utile per lavorare contro qualsiasi dato che, per sua natura, possa supportare il "lavoro" in modo parallelizzabile. Quello che sto cercando di dire è che questo non è limitato agli strumenti di hacking / evil. Questo è il motivo per cui GPGPU sta diventando sempre più popolare, cose come OpenCL, OpenMP e simili sono avvenute perché le persone hanno ci siamo resi conto che noi programmatori stiamo impantanando le nostre povere piccole CPU con il lavoro quando c'è una massiccia centrale elettrica nel PC a malapena utilizzata al contrario. Non è solo per software di cracking. Ad esempio, una volta che ho scritto un elaborato programma CUDA che ha preso la storia del lotto negli ultimi 30 anni e calcolato probabilità di vincita / vincita con biglietti di varie combinazioni di tutti i possibili numeri con numero variabile di giochi per biglietto, perché pensavo che fosse meglio idea di usare queste grandi capacità per ottenere un lavoro (questo è per le risate, ma purtroppo è anche vero).

Anche se non approvo necessariamente le persone che partecipano alla presentazione, questa presentazione offre una descrizione molto semplice, ma piuttosto illustrazione accurata del perché la GPU è così grande per tutto ciò che può essere parallelizzato, specialmente senza alcuna forma di blocco (che trattiene altri thread, diminuendo notevolmente gli effetti positivi del parallelismo).

    
risposta data 21.03.2016 - 22:19
fonte
13

Non hai bisogno di nessun altro dispositivo, solo una GPU adatta e un software. Ad esempio, cRARk può utilizzare la tua GPU per le password brute-force rar. E oclhashcat può utilizzare la tua GPU per potenziare la forza bruta di molte cose.

Perché le GPU sono molto più veloci della CPU nel cracking? Poiché cracking è qualcosa che puoi eseguire in parallelo (puoi utilizzare ogni singolo core per provare diverse password allo stesso tempo) e le GPU hanno molti core che possono essere utilizzati in in parallelo.

Ad esempio: GeForce GTX980 Ti, che è una GPU di fascia alta, ha 2816 core . Mentre nessuna CPU del PC ha più di 16 core (il massimo che conosco è 72-core ma per scopi di supercalcolo e server).

Ma perché le CPU hanno una piccola quantità di core rispetto alle GPU? Non possono creare CPU con molti core? Certo che possono, ma non è vantaggioso. Perché generalmente non è possibile elaborare in parallelo come grafica. Molti software devono essere elaborati in modo sequenziale e, anche se possono essere elaborati in parallelo, non è comune scrivere un software per l'elaborazione parallela, perché è più difficile per gli sviluppatori.

Vedi il grafico sottostante:

Supponendo che la media del 50% dell'elaborazione possa essere parallelizzata, l'accelerazione è solo 2x con 16 core. Quindi l'aumento dei numeri di core ha rendimenti molto inferiori per le CPU.

    
risposta data 21.03.2016 - 20:58
fonte
3

Al lavoro disponiamo di server speciali che risolvono "problemi di routing computazionale". Ogni host è abbastanza ben specificato con quattro socket e xeon quad core, quindi 16 core fisici e HT in aggiunta. Chiamalo 32 core.

Ogni scatola ha uno chassis di espansione PCIe, e ci sono più GPU NVidia di fascia alta e le grandi PSU per alimentarle. Poiché ogni scheda grafica ha circa 2000 core CUDA, funziona a circa 30.000 core CUDA per host.

Quindi, se gestiamo e chiamiamo un core CUDA l'equivalente di un core della CPU, questo server è lo stesso di un migliaio di server in esecuzione su normali CPU. C'è molto rumore perché i core CUDA non sono adatti ad alcuni compiti, ma molto buoni agli altri.

Immagina di risolvere il problema dei commessi viaggianti elencando tutti i possibili percorsi e scegliendo quello migliore. O enumerando tutte le possibili mosse di scacchi dalla scacchiera attuale, e scegli la singola mossa che porta alla più alta probabilità di successo per la tua prossima mossa.

Non hai bisogno di euristiche puzzanti quando sono state calcolate tutte le risposte possibili! E questa è la definizione di un attacco a forza bruta.

    
risposta data 23.03.2016 - 02:04
fonte
2

Un GPU brute forcer è semplicemente un PC con una o più GPU di fascia alta in. Esegue una qualche forma di software di cracking della password, che è ottimizzato per utilizzare la potenza di elaborazione GPU specializzata per operazioni matematiche ad alte prestazioni su grandi numeri.

Di solito ha bisogno di un alimentatore a potenza relativamente alta, perché le schede grafiche sono abbastanza potenti e un disco rigido di grandi dimensioni può aiutare con alcune attività, come tenere dizionari di grandi dimensioni per gli attacchi da utilizzare.

Tutto ciò che fa sono le cose hash molto rapidamente, sia dai dizionari, sia dai generatori che generano sequenze di caratteri per coprire l'intero spazio delle chiavi. Quindi confronta i risultati dell'hash con un hash di destinazione, che di solito è stato recuperato da un sistema sotto attacco.

    
risposta data 21.03.2016 - 21:06
fonte
2

Potresti vedere questo link link . Il vantaggio di una GPU consiste nel parallelizzare i massicci calcoli logaritmici necessari per craccare un crittosistema.

Abstract. Cryptanalysis of symmetric and asymmetric ciphers is computationally extremely demanding. Since the security parameters (in particular the key length) of almost all practical crypto algorithms are chosen such that attacks with conventional computers are computationally infeasible, the only promising way to tackle existing ciphers (assuming no mathematical breakthrough) is to build special-purpose hardware. Dedicating those machines to the task of cryptanalysis holds the promise of a dramatically improved cost-performance ratio so that breaking of commercial ciphers comes within reach. This contribution presents the design and realization of the COPACOBANA (Cost-Optimized Parallel Code Breaker) machine, which is optimized for running cryptanalytical algorithms and can be realized for less than US$ 10,000. It will be shown that, depending on the actual algorithm, the architecture can outperform conventional computers by several orders in magnitude. COPACOBANA hosts 120 low-cost FPGAs and is able to, e.g., perform an exhaustive key search of the Data Encryption Standard (DES) in less than nine days on average. As a real-world application, our architecture can be used to attack machine readable travel documents (ePass). COPACOBANA is intended, but not necessarily restricted to solving problems related to cryptanalysis. The hardware architecture is suitable for computational problems which are parallelizable and have low communication requirements. The hardware can be used, e.g., to attack elliptic curve cryptosystems and to factor numbers. Even though breaking full-size RSA (1024 bit or more) or elliptic curves (ECC with 160 bit or more) is out of reach with COPACOBANA, it can be used to analyze cryptosystems with a (deliberately chosen) small bitlength to provide reliable security estimates of RSA and ECC by extrapolation3 .

    
risposta data 23.03.2016 - 23:39
fonte
2

Tutte le risposte molto tecniche ma per metterla in un contesto più realistico.

Quando hai un semplice compito da fare dire di emettere un segnale acustico ai tuoi articoli fino al supermercato e pagare per loro è meglio avere un checkout o 1024? Certo, un checkout funzionerà, e puoi renderlo davvero sofisticato con un sacco di trucchi per accelerare le cose in modo che funzioni meglio di una normale. Ma alla fine della giornata le persone possono lavorare così velocemente e gli acquirenti spesso rallentano le cose. Quindi carichi di casse meglio.

Al contrario quando hai un lavoro molto difficile da fare come un intervento chirurgico. È meglio avere un chirurgo veramente abile supportato da una piccola ma buona squadra o un esercito di macellai che sono bravi in quello che fanno, ma fondamentalmente possono solo tritare roba?

    
risposta data 24.03.2016 - 16:16
fonte

Leggi altre domande sui tag