ダブリンのトリニティカレッジからの興味深い論文:
コモディティグラフィックスプロセッシングユニットでのAES暗号化の実装と分析
彼らの手法では、openGLを使用してGPUを使用し、AESに必要な数値変換を実行します。
マネージド.NETライブラリを介してこの機能(ストリーム暗号化の実行)を公開することはどれほど難しいでしょうか?
どうすれば始められますか?ヒント?例?
編集:CUDAまたはアクセラレータを使用して関連する経験がある人はいますか?
ダブリンのトリニティカレッジからの興味深い論文:
コモディティグラフィックスプロセッシングユニットでのAES暗号化の実装と分析
彼らの手法では、openGLを使用してGPUを使用し、AESに必要な数値変換を実行します。
マネージド.NETライブラリを介してこの機能(ストリーム暗号化の実行)を公開することはどれほど難しいでしょうか?
どうすれば始められますか?ヒント?例?
編集:CUDAまたはアクセラレータを使用して関連する経験がある人はいますか?
MicrosoftのAcceleratorライブラリを使用できます。.NETを介してGPUにアクセスできます。
さらに必要な作業を調べた後、これは非常に簡単なことではありません(AESアルゴリズムを書き直すのが好きでない限り)。ただし、それは可能です。
他にもC#APIがあるかもしれませんが、私が出会ったのはBouncyCastleAPIでした。あなたがしなければならないことは、MicrosoftのAccelerator APIを利用して、AESアルゴリズムのソースコード内で数学演算が実行される場所ならどこでもそれを使用することです。
CUDA /(c ++ / cli)実装の周りにマネージラッパーを作成するか、cuda.netを使用してc#でカーネル自体以外のすべてを実行することをお勧めします。高水準言語で実際のカーネル実装を行う方法は実際にはありません。CUDAではcを使用する必要があり、opengl/directxではシェーダーを使用する必要があります。開始するには、cuda.netを参照するか、CUDA SDKと例をダウンロードして、gpgpuプログラミングの概要を確認してください。
もう1つのオプションはブラフマーです(WebサイトはATMでダウンしているようです)。
Webサイトの引用:
ブラフマーとは何ですか?
Brahmaは、.NET 3.5フレームワーク(C#3.0)用に作成されたオープンソースライブラリであり、さまざまなプロセッサでの並列ストリーミング計算への高レベルのアクセスを提供します。現時点でブラフマーにはGPUプロバイダーがありますが(その焦点はGPGPUです)、あらゆる種類のプロセッサーで実行するように適合させることができます。
ブラフマーで何ができますか?
Brahma 2.0は、C#3.0の新しいLINQ構文を使用して、データのストリーミング変換を指定します。Brahmaを使用すると、GPUで実行されるステートメントとCPUで実行されるステートメントを1つのメソッド内で混在させることができます。グルーコードがまったく必要ないため、CPU操作が介在する複雑なマルチパスGPU計算を、わずか数行のコードで実行できます。必要なすべての接着剤とシェーダーのコードは、ブラフマーによって自動的に生成されます。あなたがする必要があるのは、高レベルの.NETコードを書くことだけです。
私はそれを使ったことがありませんが、最近.NETrocksでそれについてのポッドキャストを聴きました。GPUシェーダー言語の学習に取り掛かりたくない場合は、使用するのに適したライブラリのように思えます。
これがsourceforgeのリンクです。
C#をGPUに統合するために使用するものは何でも、AESのCUDA実装を使用する必要があります。彼らはそこに最速です。最速の実装は、あなたがリンクしたのと同じ人たちから来ているように見えます-Trinitygroup。最新のグラフィックスハードウェアペーパーの実用的な対称鍵暗号を見てください。