GPU- "Доказательство" Хэш-функции (ы)? - PullRequest
7 голосов
/ 26 июля 2011

Я думаю о разработке p2p-сети, которая требует определенного уровня проверки работы для проверки пользователей (аналог биткойнов) и регулирования спама / ddos. Из-за природы p2p единственная возможная архитектура POW, которую я видел, - это модель проверки решения. Другие модели (вызов-ответ) кажутся очень склонными к атаке Сибил, поэтому я не рассматриваю их.

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

Идеи? * * 1005

Ответы [ 3 ]

5 голосов
/ 18 февраля 2014

Схема проверки работоспособности My Cuckoo Cycle, кажется, отвечает всем требованиям, так как это 5% вычислений и 95% произвольного доступа к глобальной разделяемой памяти с большими задержками.Память графического процессора ограничена и имеет гораздо худшие задержки, и не хватает вычислений, чтобы занять более нескольких десятков ядер GPU.

Другие функции: для этого может потребоваться любой требуемый объем оперативной памяти, и его можно проверить мгновенно.

См. https://github.com/tromp/cuckoo для описания и реализации.

2 голосов
/ 26 июля 2011

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

Моя первая рекомендация состояла бы в том, чтобы приложение предоставило "наборы хешей", идентифицируемые положительным целым числом.Со временем вы можете переключиться на более новые и более дорогие операции, и новое программное обеспечение прекратит принимать доказательства из хеш-пакетов с меньшим номером.

Кроме того, будьте нетрадиционными.Возможно, используйте комбинацию всех новых кандидатов SHA-3 (все они в некоторых каскадных сериях).Используйте алгоритмы блочного шифрования-хэша (AES можно превратить в импровизированную хэш-функцию).Делайте большое количество раундов.Возможно, требуется подпись очень большими ключами RSA (4096 бит и более и требовать уникальных «одноразовых» ключей).

Вы выигрываете время, поэтому механизм устаревания существенно важнее, чем фактический выбор алгоритма..

0 голосов
/ 11 августа 2011

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

...