Расширенный стандарт шифрования на графическом процессоре с использованием CUDA - PullRequest
0 голосов
/ 09 марта 2012

Я разработчик CUDA, я помогаю студентам старших курсов в реализации AES на GPU. У них мало знаний о криптографии, и я впервые работаю над этим. У меня есть несколько вопросов, если кто-нибудь сможет на них ответить.

  1. Как мы реализуем AES, я имею в виду, какие должны быть лучшие данные для шифрования и ускорения на GPU? Должны ли мы зашифровать какой-нибудь CD? Или конфиденциальные данные, такие как номера кредитных карт? Короче говоря, каким должен быть наш источник данных?

  2. Какой режим работы AES хорошо подходит для GPU?

  3. Студентов спросили о входном битовом потоке, кто-нибудь пролил бы свет на этот? Потому что, как я думал, это должно зависеть от размера данных. И это сравнение можно провести между GPU и CPU на основе размера данных.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 09 марта 2012

Я не очень знаком с графическими процессорами, поэтому не могу ответить на вопрос 2. Однако для двух других:

Пункт 1. AES не волнует, что вы шифруете, это всего лишь биты. Просто найдите большой файл, чтобы вы могли показать статистически значимое ускорение. Вы не сможете доказать много о (возможном) ускорении вашей реализации, зашифровав несколько байтов. Конечно, это для «функциональной» скорости, в зависимости от того, насколько быстра ваша реализация, вы можете быть ограничены скоростью передачи ОЗУ или диска. Таким образом, вы также можете просто указать время, необходимое для шифрования данных, которые вы генерируете на лету (скажем, как счетчик), тем самым гарантируя, что данные не нужно считывать с диска / ОЗУ.

Точка 3. AES - это блочный шифр, размер входного файла фиксирован до 128 бит (16 байт), и вы ничего не можете сделать, чтобы это изменить. Скорость ввода данных будет зависеть исключительно от того, насколько быстро вы можете обрабатывать данные.

0 голосов
/ 09 марта 2012
  1. Вам все равно: обычно хорошо что-то большое, такое как iso или 600 МБ случайных

  2. Графический процессор использует распараллеливание, поэтому лучше всего придерживаться ECB. В противном случае алгоритм не может быть распараллелен

  3. скорость не зависит от размера данных: это размер / время обработки. В случае cuda, вы должны принять во внимание передачу на устройство / процесс / передачу обратно (копирование памяти далеко не мало в плане обработки) => если вы не можете сильно распараллелить, вы теряете время вместо победы.

...