
Генератор хэшей Onion на базе GPU
Scallion был хобби-проектом для изучения OpenCL и RSA. В настоящее время мы не поддерживаем scallion. Он устарел в двух важных аспектах:
При достаточном внимании и усилиях можно было бы преодолеть обе указанные выше проблемы. Мы могли бы реализовать поддержку алгоритма генерации ECDSA-ключей на GPU для получения поддержки Tor v3. Мы могли бы обновить OpenSSL и заменить математические функции другой библиотекой, или сделать собственную оболочку управляемого кода для библиотеки OpenSSL. Однако, вероятно, было бы лучше добавить поддержку v3 onion-адресов в поддерживаемый проект, например vanitygen-plus.
Scallion позволяет создавать кастомные GPG-ключи и .onion-адреса (для скрытых сервисов Tor) с помощью OpenCL.
Scallion работает на Mono (протестировано в Arch Linux) и .NET 3.5+ (протестировано на Windows 7 и Server 2008).
Scallion находится в стадии бета-тестирования и активно разрабатывается. Тем не менее, мы считаем, что он готов к использованию. Улучшения ожидаются в основном в производительности, пользовательском интерфейсе и простоте установки, а не в общем алгоритме генерации ключей.
Scallion распространяется под лицензией MIT. Если вы используете код из этого проекта в своих проектах, мы будем рады узнать об этом по адресу [email protected].
Вот несколько часто задаваемых вопросов и ответов на них:
Зачем генерировать GPG-ключи?
Scallion использовался для поиска коллизий для каждого 32-битного идентификатора ключа в сильном наборе Web of Trust, демонстрируя, насколько небезопасны 32-битные идентификаторы ключей. Был/есть доклад на DEFCON (видео), и дополнительную информацию можно найти на https://evil32.com/.
Какие символы допустимы?
Tor .onion-адреса используют Base32, состоящий из всех букв и цифр от 2 до 7 включительно. Они нечувствительны к регистру.
GPG-отпечатки используют шестнадцатеричную систему, состоящую из цифр 0-9 и букв A-F.
Можно ли использовать Bitcoin ASIC (например, Jalapeno, KnC) для ускорения этого процесса?
К сожалению, нет. Хотя процесс, используемый Scallion, концептуально похож (увеличение nonce и проверка хеша), детали различаются (SHA-1 против двойного SHA-256 для Bitcoin). Кроме того, Bitcoin ASIC так быстры именно потому, что они чрезвычайно заточены под майнинг Bitcoin. Например, вот даташит для CoinCraft A-1, ASIC, который так и не вышел, но, вероятно, показателен для общего подхода. Микроконтроллер отправляет работу в виде последних 128 бит блока Bitcoin, промежуточного состояния хеша предыдущих бит, целевой сложности и максимального nonce для перебора. ASIC выбирает место для вставки nonce и выбирает, какие блоки удовлетворяют хешу. Scallion должен вставлять nonce в другое место и проверять совпадение с шаблоном, а не просто "меньше чем XXXX".
Как использовать несколько устройств?
Запустите несколько экземпляров Scallion. 😄 Поиск Scallion вероятностный, поэтому вы не будете повторять работу на втором устройстве. Настоящая поддержка нескольких устройств не была бы слишком сложной, но и не принесла бы много пользы. Я успешно запускал несколько экземпляров scallion в tmux или screen. Вам просто нужно будет вручную остановить все задания, когда одно из них найдет шаблон (или написать скрипт оболочки для мониторинга выходного файла и завершения всех заданий при обнаружении результатов).
Просто хотите последнюю бинарную версию? Загрузите её здесь.
Предварительные требования
Получите последнюю версию mono для вашего дистрибутива Linux:
Установите общие зависимости:
sudo apt-get update
sudo apt-get install libssl-dev mono-devel
Сборка для AMD/OpenSource
sudo apt-get install ocl-icd-opencl-dev
Сборка для Nvidia
sudo apt-get install nvidia-opencl-dev nvidia-opencl-icd
Наконец
msbuild scallion.sln
Убедитесь, что у вас есть среда выполнения nvidia-docker контейнера
Соберите контейнер:
docker build -t scallion -f Dockerfile.nvidia .
Запустите:
docker run --runtime=nvidia -ti --rm scallion -l
Перезапуск Scallion во время поиска не приведет к потере "прогресса". Это вероятностный поиск, и Scallion не делает "прогресса"
Список устройств
$ mono scallion/bin/Debug/scallion.exe -l
Генерация хеша