Domanda

Interessante articolo del Trinity College di Dublino:
Implementazione e analisi della crittografia AES sulle unità di elaborazione grafica dei prodotti

La loro tecnica utilizza openGL per arruolare la GPU per eseguire le trasformazioni numeriche richieste da AES.

Quanto sarebbe difficile esporre questa funzionalità - eseguendo la crittografia del flusso - tramite una libreria .NET gestita?

Come dovrei iniziare? Suggerimenti? Esempi?

MODIFICA : qualcuno ha esperienze di relazione con CUDA o Accelerator?

È stato utile?

Soluzione

È possibile utilizzare la Accelerator . Ti dà accesso alla GPU tramite .NET.

Dopo aver esaminato il lavoro richiesto di più, questa è una cosa piuttosto banale da fare (a meno che non ti piaccia riscrivere gli algoritmi AES). È possibile comunque.

Potrebbero esserci altre API C # là fuori, ma una che ho incontrato è stata API Bouncy Castle . Quello che dovresti fare è prendere l'API di Microsoft Accelerator e usarla ovunque venga eseguita un'operazione matematica all'interno del codice sorgente dell'algoritmo AES.

Altri suggerimenti

Suggerisco di creare un wrapper gestito attorno a un'implementazione CUDA / (c ++ / cli) O usare cuda.net per fare tutto ma il kernel stesso in c #. Non c'è davvero modo di fare l'implementazione del kernel in un linguaggio di alto livello, con CUDA devi usare c, con opengl / directx devi usare shader. Per iniziare, dai un'occhiata a cuda.net o scarica CUDA SDK ed esempi per ottenere un'introduzione alla programmazione di gpgpu.

Un'altra opzione è Brahma (il sito web sembra essere in rovina).

Citazione del sito Web:

  

Che cos'è Brahma?

     

Brahma è una libreria open source scritta per .NET 3.5 framework (in C # 3.0), per fornire accesso di alto livello ai calcoli dello streaming parallelo su una varietà di processori.   Si noti che al momento Brahma ha un fornitore di GPU (e il suo focus è GPGPU), può essere adattato per funzionare su qualsiasi tipo di processore.

     

Cosa posso fare con Brahma?

     

Brahma 2.0 utilizza la nuova sintassi LINQ di C # 3.0 per specificare la trasformazione in streaming dei dati. Usando Brahma, puoi mescolare istruzioni che girano sulla GPU e istruzioni che girano sulla CPU in un unico metodo! Senza assolutamente alcun codice di colla richiesto, è possibile eseguire un complesso calcolo GPU multipass con operazioni CPU intermedie con poche righe di codice. Tutto il codice di colla e shader richiesto viene generato automaticamente da Brahma. Tutto quello che devi fare è scrivere un codice .NET di alto livello.

Non l'ho usato ma di recente ho ascoltato un podcast a proposito su .NET Rock. Sembra una buona libreria da usare se non vuoi imparare le lingue dello shader della GPU.

Ecco il link sourceforge .

Qualunque cosa tu usi per integrare C # nella GPU, dovresti usare un'implementazione CUDA di AES. Sono i più veloci là fuori. L'implementazione più veloce sembra provenire dagli stessi ragazzi a cui sei collegato - Trinity group . Guarda la crittografia pratica chiave simmetrica su carta Hardware per grafica moderna.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top