Domanda:
Come vengono utilizzate le GPU negli attacchi di forza bruta?
Mahmood Muhammad Nageeb
2016-03-22 00:50:40 UTC
view on stackexchange narkive permalink

Ho letto che le GPU possono essere utilizzate negli attacchi di forza bruta? Ma come può essere fatto e sono necessari altri dispositivi hardware (ad esempio dischi rigidi)?

Nota: sono più interessato alla sicurezza delle applicazioni web, ma non voglio mettere sui 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 lavorano insieme e come combinarli.

Dato che non posso commentare: ad esempio, potrei calcolare circa 33 milioni di hash MD5 al secondo usando John the Ripper con la CPU e circa 11,8 miliardi di hash al secondo usando OclHashcat e la GPU. L'ho testato di recente come parte di un compito in un corso di sicurezza.
Aiuta ad ammazzare il tempo mentre la CPU fa forza bruta: P
Sette risposte:
#1
+56
Phil Lello
2016-03-22 01:04:21 UTC
view on stackexchange narkive permalink

Sto scegliendo di presumere che ti stia chiedendo perché è un rischio piuttosto che come hackerare.

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

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

Grazie! Non voglio sapere come hackerare, voglio solo capire l'idea. Quindi, il software utilizzato sta convincendo la GPU che sta funzionando su un computer?
@MahmudMuhammadNaguib Usa la GPU per un'operazione non grafica - che tende ad essere consentita dalla progettazione in questi giorni (era un hacker creativo). Il processo viene avviato da un normale programma.
Grazie! Questo è molto creativo e queste persone sono veri hacker! Pensi che le aziende modificheranno il design in futuro, quindi le GPU non possono essere utilizzate per questo scopo, ed è possibile (poiché le operazioni grafiche includono anche alcune operazioni matematiche)?
@MahmudMuhammadNaguib Assolutamente no! Sebbene possano essere utilizzati per la forza bruta, le stesse capacità possono essere utilizzate per tonnellate di altre cose utili. La tendenza è che le GPU stanno migliorando sempre di più nel fare cose che non sono grafiche in senso stretto. E questa tendenza esiste perché vengono sfruttati sempre di più per fare quelle cose.
@MahmudMuhammadNaguib Penso che la tendenza sia quella di aggiungere GPU al die con la CPU per supportare operazioni non grafiche altamente parallele. Non vedo come sarebbe utile ai produttori di GPU limitare le operazioni non grafiche. Però sono un po 'fuori dalla mia nicchia qui.
Capisco, rispetto le specializzazioni.
Giusto per sottolineare il commento di @Bakuriu's, l'API CUDA è stata creata da nVIDIA soprattutto per consentire agli sviluppatori di utilizzare le loro GPU per scopi non grafici. Incoraggiano fortemente gli usi creativi delle loro GPU perché sperano di venderne di più come acceleratori delle prestazioni del computer. Non dovrebbe essere considerato hacking, questo è tutto ormai un uso tradizionale delle GPU per eseguire calcoli massicciamente paralleli.
Dato che stiamo parlando di Nvidia, cerca alcune immagini delle loro schede Tesla - "[Queste sono costruite esclusivamente per il computer, quindi molte di queste non hanno nemmeno un'uscita video] (http://blog.goldenhelix.com / mthiesen / i-want-a-gpu-for-computational-analysis-which-one-should-get /) ". Le persone che lavorano con loro saranno abituate all'idea, ma una scheda video senza porte di uscita sul retro sembra così bella e diversa per me.
@MahmudMuhammadNaguib Perché impediresti deliberatamente a una GPU di elaborare cose che non sono grafiche? Il fatto che si chiamino PU "G" è solo inerzia storica.
@MahmudMuhammadNaguib O per usare un'analogia: stai guardando la gente lanciare bottiglie di plastica dai finestrini delle auto e stai chiedendo perché non modifichiamo il design dei finestrini in modo che solo i rifiuti biodegradabili possano attraversarli.
@immibies Chi ha detto che l'avrei fatto? Sto solo discutendo! E ho detto che questo è molto creativo e che queste persone sono veri hacker!
Vorrei solo sottolineare che questo è il motivo per cui le GPU sono considerate superiori per il mining di bitcoin: eccellono nell'eseguire un'attività ripetitiva di base in un formato massicciamente parallelo, come inviare un aggiornamento a ogni singolo pixel su un monitor HD.
La vera risposta al motivo per cui i produttori di GPU non prenderebbero nemmeno in considerazione di limitare questo uso del loro hardware è perché non renderebbe nulla di più sicuro. Le GPU sono generalmente disponibili e facili da installare su un computer generico, che è la loro principale attrattiva, ma è possibile costruire ASIC personalizzati che sono ancora più veloci e, a condizione che non ci siano altre considerazioni in gioco (come scrypt e utilizzo della memoria) non sono fuori linea in termini di costi, motivo per cui la maggior parte del mining di Bitcoin in questi giorni è passata agli ASIC personalizzati.
Oltre alla crittografia e alla grafica, niente in informatica richiede operazioni matematiche?
@DDPWNAGE Non sono operazioni matematiche in cui le GPU sono brave; è un tipo particolare di operazioni matematiche (quelle che parallelizzano molto bene). La maggior parte dei computer non fa molto con questo tipo di operazioni - la maggior parte di essi dice che un programma di posta elettronica o un server web è un codice squilibrato pieno di rami e condizioni - questi funzionano meglio sulla CPU.
In realtà di solito sono * più lenti * nel fare l'operazione matematica in questione, non * più veloci *, in quanto ci vuole più tempo per fare un'operazione matematica, ma solo * più di esse allo stesso tempo *. Le GPU vincono tramite il parallelismo, non tramite la velocità. In una serie di lavori, possono essere più veloci e gli attacchi cartografici spesso si basano sul controllo di un numero ridicolmente elevato di combinazioni di possibilità.
#2
+51
user7933
2016-03-22 02:19:47 UTC
view on stackexchange narkive permalink

Le persone qui hanno dato ottime risposte che rispondono direttamente alla tua domanda, ma vorrei dare una risposta complementare per spiegare più in profondità perché le GPU sono così potenti per questa e altre applicazioni.

Come alcuni hanno sottolineato, le GPU sono appositamente progettate per essere veloci con le operazioni matematiche poiché disegnare cose sullo schermo è tutta matematica (tracciare le posizioni dei vertici, manipolazioni di matrici, mescolare i valori RBG, leggere lo spazio delle texture ecc.). Tuttavia, questa non è davvero la principale forza trainante del miglioramento delle prestazioni. La forza trainante principale è il parallelismo. Una CPU di fascia alta potrebbe avere 12 core logici, dove una GPU di fascia alta potrebbe contenere qualcosa come 3072.

Per semplificare, il numero di core logici è uguale al numero totale di operazioni simultanee che possono essere eseguite su un dato set di dati. Diciamo ad esempio che 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 itererebbero attraverso i due array di input a un passo uguale al numero di thread (12) e contemporaneamente scaricando la somma dei valori nel terzo array di output. Ciò richiederebbe 256 iterazioni totali.

Con la GPU tuttavia, potrei dalla CPU caricare quegli stessi valori nella GPU quindi scrivere un kernel che potrebbe avere 3072 thread generati contro quello kernel contemporaneamente e completare l'intera operazione in una singola iterazione.

Questo è utile per lavorare su qualsiasi dato che, per sua natura, può supportare il "lavoro su" in modo parallelizzabile. Quello che sto cercando di dire è che questo non è limitato agli strumenti di hacking / malvagi. Questo è il motivo per cui GPGPU sta diventando sempre più popolare, cose come OpenCL, OpenMP e simili sono avvenute perché le persone si sono rese conto che noi programmatori stiamo impantanando le nostre povere piccole CPU con il lavoro quando c'è una potenza enorme pianta seduta nel PC a malapena utilizzata per contrasto. Non è solo per crackare software. Ad esempio, una volta ho scritto un elaborato programma CUDA che ha preso la storia del lotto negli ultimi 30 anni e ha calcolato le probabilità di vincita / vincita con biglietti di varie combinazioni di tutti i numeri possibili con un numero variabile di giocate per biglietto, perché pensavo che fosse un migliore l'idea di usare queste grandi capacità solo per trovare un lavoro (questo è per le risate, ma purtroppo è anche vero).

Anche se non sostengo necessariamente le persone che danno la presentazione, questa presentazione fornisce un'illustrazione molto semplice ma piuttosto accurata del motivo per cui la GPU è così eccezionale per tutto ciò che può essere parallelizzato, specialmente senza alcuna forma di blocco (che regge altri thread, riducendo notevolmente gli effetti positivi del parallelismo).

Forse la prossima domanda logica quindi: perché le CPU hanno così pochi core rispetto alle GPU? È semplicemente una considerazione dello spazio?
@DanPantry La risposta semplice è perché ogni core della CPU è molto più complesso di un core della GPU. I core della GPU sono progettati per eseguire molte operazioni (relativamente) semplici, molte delle quali avvengono in parallelo. I core della CPU sono generalmente molto più complessi e, in generale, le attività che stanno svolgendo sono molto più difficili da eseguire (facilmente / con successo) in parallelo (a causa di problemi con la sincronizzazione tra i core).
Quindi, il tuo programma del lotto ha avuto successo nell'evitare un lavoro?
@Mindwin Purtroppo no. Anche usando la serie 500 GTX per eseguire il mio programma, ho calcolato che sarei morto prima che finisse di sgranocchiare tutte le possibili combinazioni di 5 biglietti di linea (il mio budget massimo deciso per i biglietti), quindi ho optato per diventare un esperto di poltrona su stackexchange e di tanto in tanto bighellonare al centro commerciale locale con un cartello che dice "codificherà per cibo".
Eccellente tecnica di modifica: ho un voto positivo da parte mia
@DanPantry La maggior parte dei problemi generali di elaborazione non può essere facilmente parallelizzata. Le CPU sono progettate per essere generiche, quindi sono più veloci per la maggior parte delle cose. I problemi di grafica e cracking del codice tendono ad essere facilmente parallelizzati, quindi le GPU sono una buona soluzione. Le GPU impiegano più tempo per configurare e inviare singole operazioni, ma possono essere calcolate in parallelo più velocemente (vedi SIMD). I compromessi ei vantaggi della GPU non funzionerebbero bene per la maggior parte dei problemi di elaborazione.
@JustinMeiners grazie per aver sottolineato questo. Ho provato a trasmetterlo nel 5 ° paragrafo ma hai fatto un lavoro migliore.
Gratuito o complementare; )
#3
+13
ferit
2016-03-22 00:58:30 UTC
view on stackexchange narkive permalink

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

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

Ad esempio: GeForce GTX980 Ti, che è una GPU di fascia alta, ha 2816 core . Sebbene nessuna CPU per PC abbia più di 16 core (il massimo che conosco è 72 core ma per scopi di supercomputer 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 la grafica. Molti software devono elaborare in sequenza e, anche se possono elaborare in parallelo, non è comune scrivere un software per l'elaborazione parallela, perché è più difficile per gli sviluppatori.

Vedi il grafico sotto:

enter image description here

Supponendo che mediamente il 50% dell'elaborazione possa essere parallelizzato, la velocità è solo 2x con 16 core. Quindi l'aumento del numero di core ha rendimenti molto decrescenti per le CPU.

Grazie! Ma come posso eseguire questo software sulla mia GPU e in che modo questo software è in grado di far eseguire alla mia GPU le istruzioni di programmazione?
Non è necessario fare nulla in più, basta scaricare lo strumento ed eseguire. Se non sai come eseguire, dovresti leggere la documentazione dello strumento, come qualsiasi altro strumento. Non c'è differenza.
Le 3 risposte sono molto buone, ho ottenuto qualcosa per ciascuna. Non preoccuparti dei downvoters!
(Le CPU hanno più di 16 core - anche gli Intel Xeon vanno oltre, Sparc M7 è a 32.)
Bene, in realtà sono per i server, non per i PC. Ma sì, dovrei aggiornare la mia risposta.
#4
+3
Criggie
2016-03-23 06:04:17 UTC
view on stackexchange narkive permalink

Al lavoro abbiamo server speciali che risolvono "problemi di instradamento difficili dal punto di vista computazionale". Ogni host è abbastanza ben specificato con quattro socket e xeon quad core, quindi 16 core fisici e HT oltre a quello. Chiamalo 32 core.

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

Quindi se salutiamo manualmente e chiamiamo un core CUDA l'equivalente di un core CPU, questo server è lo stesso come un migliaio di server in esecuzione su normali CPU. Molto ingannevole perché i core CUDA non sono bravi in ​​alcuni compiti, ma molto bravi in ​​altri.

Immagina di risolvere il problema del venditore ambulante enumerando tutti i percorsi possibili e scegli quello migliore. O enumerando tutte le possibili mosse di scacchi dalla scacchiera corrente e scegli la singola mossa che porta alla più alta probabilità di successo per la tua prossima mossa.

Non c'è bisogno di una puzzolente euristica quando tutte le risposte possibili hanno stato calcolato! E questa è la definizione di un attacco di forza bruta.

+1, puoi inserire uno o due tesla in una macchina standard e avere un supercomputer.
#5
+3
Dendi Suhubdy
2016-03-24 03:39:39 UTC
view on stackexchange narkive permalink

Potresti voler vedere questo link https://www.iacr.org/archive/ches2006/09/09.pdf. Il vantaggio di una GPU è di parallelizzare i massicci calcoli logaritmici discreti necessari per violare un criptosistema.

Abstract. La crittoanalisi di cifrari simmetrici e asimmetrici è estremamente impegnativa dal punto di vista computazionale. Poiché i parametri di sicurezza (in particolare la lunghezza della chiave) di quasi tutti gli algoritmi crittografici pratici sono scelti in modo tale che gli attacchi con i computer convenzionali siano computazionalmente irrealizzabili, l'unico modo promettente per affrontare i cifrari esistenti (supponendo che non ci siano scoperte matematiche) è costruire hardware per scopi speciali . Dedicare queste macchine al compito della crittoanalisi mantiene la promessa di un rapporto costi-prestazioni notevolmente migliorato, in modo che la violazione dei codici commerciali sia a portata di mano. Questo contributo presenta la progettazione e la realizzazione della macchina COPACOBANA (Cost-Optimized Parallel Code Breaker), che è ottimizzata per l'esecuzione di algoritmi crittoanalitici e può essere realizzata per meno di US $ 10.000. Verrà dimostrato che, a seconda dell'effettivo algoritmo, l'architettura può superare i computer convenzionali di diversi ordini di grandezza. COPACOBANA ospita 120 FPGA a basso costo ed è in grado, ad esempio, di eseguire una ricerca completa delle chiavi del Data Encryption Standard (DES) in media in meno di nove giorni. In quanto applicazione del mondo reale, la nostra architettura può essere utilizzata per attaccare documenti di viaggio leggibili dalla macchina (ePass). COPACOBANA è inteso, ma non necessariamente limitato, alla risoluzione di problemi legati alla crittoanalisi. L'architettura hardware è adatta a problemi computazionali parallelizzabili e con bassi requisiti di comunicazione. L'hardware può essere utilizzato, ad esempio, per attaccare criptosistemi a curve ellittiche e per fattorizzare i numeri. Anche se la rottura di curve RSA a grandezza naturale (1024 bit o più) o ellittiche (ECC con 160 bit o più) è fuori portata con COPACOBANA, può essere utilizzata analizzare i sistemi crittografici con una lunghezza di bit ridotta (scelta deliberatamente) per fornire stime di sicurezza affidabili di RSA ed ECC mediante estrapolazione3.

#6
+2
Matthew
2016-03-22 01:06:52 UTC
view on stackexchange narkive permalink

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

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

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

#7
+2
chris scott
2016-03-24 20:16:07 UTC
view on stackexchange narkive permalink

Tutte risposte molto tecniche, ma per metterlo in un contesto più reale.

Quando hai un lavoro semplice da fare, dire suonare i tuoi articoli al supermercato fino alla cassa e pagarli è meglio averne uno checkout o 1024? Sicuramente un checkout funzionerà e puoi renderlo davvero sofisticato con molti trucchi per accelerare le cose in modo che funzioni meglio di uno normale. Ma alla fine della giornata le persone possono lavorare solo così velocemente e gli acquirenti spesso rallentano le cose. Quindi un sacco di lavori meglio.

Al contrario, quando hai un lavoro molto difficile da fare come la chirurgia. È meglio avere un chirurgo davvero esperto supportato da una piccola ma buona squadra o da un esercito di macellai che sono bravi in ​​quello che fanno, ma in pratica possono solo tagliare le cose?



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...