Выполнение распределенного взлома паролей на основе CUDA / OpenCL - PullRequest
0 голосов
/ 28 ноября 2011

Есть ли способ выполнить распределенную (как в кластере подключенных компьютеров) атаку по словарю на основе CUDA / openCL?

Например, если у меня есть один компьютер с какой-нибудь картой NVIDIA, который разделяет нагрузку атаки по словарю с другим связанным компьютером и, таким образом, использует там второй массив графических процессоров?

Идея состоит в том, чтобы обеспечить возможность масштабирования для будущего расширения без необходимости замены всего набора оборудования, которое мы используем. (и скажем, облако не вариант)

Ответы [ 2 ]

1 голос
/ 28 ноября 2011

Это простая проблема делегирования основной / подчиненной работы.Главный рабочий сервер передает любому подключенному подчиненному процессу единицу работы.Рабы работают на одном устройстве и ставят в очередь одно устройство.Когда они завершают блок, они возвращаются на сервер.Рабочие единицы, которые тщательно проверены, используются для оценки операций в секунду.В зависимости от вашей настройки я бы настроил рабочие единицы так, чтобы они находились где-то в диапазоне 15-60 секунд.Все, что не получает отклика по 10-минутной отметке, возвращается в очередь.

Для очередей предложите текущий список хэшированных треков, диапазон словаря, который нужно проверить, и правила перестановки, которые нужноприменяется.Главный сервер должен иметь возможность адаптировать очереди для каждой машины и для каждого набора правил перестановки, чтобы все машины выполняли свою работу в течение минуты или около того друг от друга.

С другой стороны, кодирование может быть упрощено, если каждая единицаработы были одинакового размера.Даже в этом случае ни одна машина не будет простаивать дольше, чем время, необходимое самой медленной машине для выполнения одной единицы работы.Измените размеры своих рабочих единиц так, чтобы самая быстрая машина не попадала в ситуацию нехватки ресурсов (не должна завершать работу быстрее, чем пять секунд, всегда должна стоять в очереди вторая единица).Используя этот метод, мы надеемся, что ваша самая быстрая и самая медленная машины не будут отличаться более чем в 100 раз.

0 голосов
/ 28 ноября 2011

Мне кажется, что было бы довольно легко написать свой собственный сервис, который бы делал именно это.

Super Easy Setup

Допустим, у вас есть программа X с поддержкой графического процессора, которая принимает хеш h в качестве ввода и список слов словаря D, а затем использует слова словаря, чтобы попытаться взломать пароль. На одной машине вы просто запускаете X (h, D).

Если у вас N машин, вы разбиваете словарь на N частей (D_1, D_2, D_3, ..., D_N). Затем запустите P (x, D_i) на компьютере i.

Это легко сделать с помощью SSH. Главная машина разделяет словарь, копирует его на каждую из подчиненных машин, используя SCP, затем подключается к ведомым и говорит им запустить программу.

Немного умнее Настройка

Когда одна машина взломает пароль, они могут легко уведомить мастера, что они выполнили задачу. Затем мастер уничтожает программы, запущенные на других ведомых устройствах.

...