Могу ли я использовать графический процессор для шифрования AES из .NET? Если так, то как? - PullRequest
7 голосов
/ 03 августа 2009

Интересная статья из Тринити-колледжа Дублина:
AES Шифрование Внедрение и анализ в единицах обработки товарной графики

Их метод использует openGL для включения графического процессора для выполнения числовых преобразований, требуемых AES.

Насколько сложно было бы раскрыть эту возможность - выполнение потокового шифрования - через управляемую библиотеку .NET?

Как мне начать? Советы? Примеры?

РЕДАКТИРОВАТЬ : У кого-нибудь есть опыт общения с использованием CUDA или ускорителя?

Ответы [ 4 ]

4 голосов
/ 03 августа 2009

Вы можете использовать библиотеку Microsoft Accelerator . Это дает вам доступ к графическому процессору через .NET.

После изучения работы, требующей большего, это довольно нетривиальная вещь (если вы не любите переписывать алгоритмы AES). Это возможно однако.

Там могут быть и другие API C #, но я сталкивался с Bouncy Castle API . Что вам нужно сделать, это взять Microsoft Accelerator API и использовать его везде, где выполняется математическая операция в исходном коде алгоритма AES.

3 голосов
/ 03 августа 2009

Я предлагаю создать управляемую оболочку вокруг реализации CUDA / (c ++ / cli) ИЛИ с использованием cuda.net, чтобы сделать все , но само ядро ​​в c #. На самом деле не существует способа реализовать реализацию ядра на языке высокого уровня, с CUDA вам нужно использовать c, а с opengl / directx вам нужно использовать шейдеры. Для начала взгляните на cuda.net или скачайте CUDA SDK и примеры, чтобы получить представление о программировании gpgpu.

2 голосов
/ 04 августа 2009

Другой вариант - Брахма (веб-сайт, кажется, не работает).

Веб-сайт Цитата:

Что такое Брахма?

Brahma - это библиотека с открытым исходным кодом, написанная для платформы .NET 3.5 (в C # 3.0), для обеспечения высокоуровневого доступа к вычислениям параллельных потоков на различных процессорах. Обратите внимание, что в настоящее время у Brahma есть поставщик графических процессоров (и его основной задачей является GPGPU), его можно адаптировать для работы на любом типе процессора.

Что я могу сделать с Брахмой?

Brahma 2.0 использует новый синтаксис LINQ в C # 3.0 для определения потокового преобразования данных. Используя Brahma, вы можете смешивать операторы, которые выполняются на GPU, и операторы, которые выполняются на CPU, в одном методе! Без обязательного клея кода требуется сложное многопроходное вычисление на GPU с промежуточными операциями на процессоре с помощью всего лишь нескольких строк кода. Весь необходимый код клея и шейдера автоматически генерируется Brahma. Все, что вам нужно сделать, это написать высокоуровневый код .NET.

Я не использовал его, но я недавно слушал подкаст об этом на .NET-скалах. Это звучит как хорошая библиотека для использования, если вы не хотите изучать язык (ы) шейдеров GPU.

Вот ссылка sourceforge .

0 голосов
/ 26 августа 2009

Что бы вы ни использовали для интеграции C # в GPU, вам следует использовать реализацию AES в CUDA. Они самые быстрые там. Самая быстрая реализация выглядит так, как будто она от тех же парней, с которыми вы связаны - Trinity group Посмотрите на Практическую криптографию с симметричным ключом на бумаге современного графического оборудования.

...