Esistono librerie di crittografia (decrittografia?) che sfruttano l'API API GPU di Windows ?
Esistono librerie di crittografia (decrittografia?) che sfruttano l'API API GPU di Windows ?
Come giustamente dice Paulo nei commenti, molte operazioni di crittografia non si prestano bene alla parallelizzazione. Ad esempio, considerare le due modalità AES ECB e CBC. La BCE consiste nell'applicare le trasformazioni AES a ciascun punto di dati utilizzando vari elementi del programma chiave in base alla posizione del modulo dati la lunghezza del programma chiave. In sostanza, una volta generato il calendario chiave, potresti facilmente parallelizzare AES in modalità ECB.
Tranne che la BCE non è una grande modalità di sicurezza per la sicurezza, perché per grandi quantità di dati inizi a rivelare schemi nel tuo testo cifrato. Wikipedia spiega tutto questo molto meglio di me .
La modalità CBC può essere sostanzialmente descritta come "prendi l'output dell'ultima operazione, xo con il testo in chiaro e cripta il risultato". In genere, si avvia xorizzando il primo testo in chiaro con una IV. Per la crittografia, è necessario calcolare ogni blocco alla volta e quindi l'operazione non è affatto adatta per la parallelizzazione; tuttavia, per la decrittografia, è possibile parallelizzare il processo poiché una coppia di blocchi è tutto ciò che è necessario per decrittografare un blocco (ovvero se si ha il blocco 1 e il blocco 2, decrittografare il blocco 2 in base alla sua posizione nella pianificazione della chiave e xor con il blocco 1).
Questi sono solo alcuni esempi; alcuni algoritmi si prestano alla parallelizzazione. Considera che vuoi provare molte password con una password hash che hai. Ogni calcolo di hash è difficile da parallelizzare, poiché ogni blocco deve essere inserito nella funzione di hash per turno; tuttavia, ciò che puoi fare è eseguire molte operazioni di hash contemporaneamente: immagina di impostare un thread per ogni tentativo di hash. I processori grafici sono bravi in questo tipo di lavoro in quanto sono essenzialmente progettati per trasformare interi gruppi di coordinate nello spazio 3D secondo un risultato matematico, fondamentalmente per fare grafica 3D.
Un buon documento su questo argomento è Gpu compatibile con Cuda come acceleratore hardware efficiente per AES . Bruce Schneier copre accelerando il cracking delle password . strumenti di hash cracking distribuiti sono stati anche studiati e Google rivela una serie di implementazioni.
Mi aspetto che man mano che si lavori di più, si troveranno sempre più metodi per sfruttare la parallelizzazione, sia in termini di crittanalisi che in termini di crittografia. Tuttavia, non sono un ricercatore crittografico, quindi dovrai prenderlo con una dose molto ampia di diffidenza.
Ho appena aperto il codice che esegue la crittografia AES in modalità ECB e CTR e la decrittografia AES per la modalità ECB, CBC e CTR. Il codice specifico per GPU utilizza l'API Direct3D 10 (non DirectCompute).
Su una GeForce GTS 240 ho raggiunto ~ 300 MB / sec per la decrittografia CBC con chiave a 256 bit.
Puoi consultare la pagina del progetto qui: link
Leggi altre domande sui tag windows cryptography encryption