На конференции PasswordsCon Bergen 2013 хорватский хакер Катя Малвони (Katja Malvoni) представила интересный доклад о взломе парольных хэшей bcrypt. Эта тема интересна еще и для майнеров, поскольку bcrypt предлагают использовать для новых цифровых криптовалют.
Алгоритм хэширования bcrypt основан на использовании блочного шифра Blowfish. Этот шифр спроектирован с целью максимальной устойчивости перед брутфорс-атаками. Хэш-функция bcrypt предложена в 1993 году и с тех пор не найдено каких-либо слабостей, при этом она считается наиболее сложной с точки зрения применения вычислительных мощностей, не считая scrypt (та еще сложнее). Так, мощности обычного CPU стандартного компьютера хватает на вычисление всего нескольких хэшей bcrypt в секунду. Для сравнения, на том же CPU можно вычислить сотни тысяч хэшей SHA512 в секунду.
Студентка Загребского университета объяснила, что шифр Blowfish осуществляет множество быстрых 32-битных поисков и поэтому требует 4 КБ памяти на каждый инстанс. Такое использование памяти сильно усложняет распараллеливание брутфорса на стандартном CPU. Здесь и проблемы с адресацией памяти, и ограничения кэша L1 по объему.
Тем не менее, говорит Катя, возможно достичь гораздо большей эффективности по количеству операций в секунду на 1 ватт, если сделать специализированное оборудование. Это возможно и на базе ASIC, и на базе FPGA.
Катя написала программу брутфорса bcrypt на ассемблере для многоядерных акселераторов Epiphany. Программа совместима с известным инструментом для брутфорса John the Ripper и намного превосходит архитектуру x86 по эффективности расчета хэшей на ватт.
Презентация Кати Малвони