Спорим, у тебя пальцев на руках больше, чем человек на этом форуме, способных это сделать (включая и ветки на других языках)? Так что свои "в принципе" оставь при себе.
я даже в своем маленьком городе знаю людей кто знает VHDL больше, чем у тебя всего пальцев, включая 21-й
(а в списке контактов их еще на порядки больше, так что не бином ньютона твой вхдл, уж поверь)
Другое дело что майнингом они не интересуются, это да...
А схема там предельно простая - похожа на CRC схемы, тока в отводках от регистра часть XOR заменена другими для придания нелинейности, вот и все.
Если ты знаешь одну единственную схему на сдвиговом регистре с обратной связью и отводами, это еще не значит, что весь мир на ней построен. Расширь свой кругозор. Почитай учебники.
SHA НЕ ОПИСЫВАЕТСЯ схемой, которая "похожа на CRC".
я знаю тока методов описания всяких кодов и их применений гораздо больше, чем ты можешь себе представить...
Даже знаю про "скрытый бит" из FPU DEC, и знаю почему его нет в ЕС ЭВМ(IBM).
(а ты знаешь? Особенность схемотехники построения АЛУ - уважающие себя аппаратчики должны знать про эту фичу)
Не считая всяких кодов вроде Фиббоначи из экспериментального многоразрядного ЦАП-а КАМАК,
кодов спутниковой связи, корректоров ошибок... АКФ, ВКФ, CDMA и много других страшных слов
(кстати умеешь спутниковые модемы настраивать? и знаешь почему qualcomm отымел моторолу по плотности сотовой связи? )
Но с этими кодами ты тут сильно прокололся - задан SHA не алгоритмом, а именно _логической битовой_ функцией!!!
(сюрприз: и вся математика этих кодов описана именно по этой базе, а не в арифметической форме алгоритма для CPU!
То есть криптоанализ ты похоже даже не знаешь как выглядит, и даже не видел исходных функций для него)
Есть класс арифметических кодов(про которые ты похоже не слышал, а я это прекрасно понимаю) и тп - вот их
может быть и можно задать сразу алгоритмом, хз. Но не SHA это точно - потому что у него вся база и исходная
математика описана именно в логических битовых функциях!..
То есть совершенно не важно что существует ускоренный алгоритм его расчета на CPU - это побочный отход оптимизации,
и никто сам этот алгоритм ковырять не будет. Для анализа надо смотреть именно исходную форму(а она побитовая - сюрприз)
этой функции тк под этот класс схем и создавалась вся математика и доказательства его устойчивости...
Хоть ты и непроходимый тупица,
но попытаюсь тебе втемяшить главное отличие от твоих crc-подобных схем - в "твоих" схемах на каждом такте изменение конкретных бит зависит от малого количества других бит. Например в одноканалке каждый бит зависит только от одного соседнего, и только один (первый или последний) от каких-то нескольких бит (обратной связи). Эти схемы очень легко реализуются на простой логической схемотехнике.
как самокритично
А ничего что в аппаратной схеме лог. элемент можно воткнуть хоть перед каждым триггером,
и можно хоть вообще все биты всего 256/512 бит регистра поменять за 1 такт?.. (сюрприз1?
)
А ничего что если внимательно посмотреть на схему SHA, там окажеться всего 2 отводки? (точнее подводки
)
Просто в алгоритме для CPU там за один проход пытаются сразу считать несколько битов - коли уж АЛУ CPU универсальное,
то почему бы не использовать все биты и не считать по 32 бита за раз.
То есть, один цикл оптимизированного алгоритма экв. 8-32 тактам последовательной схемы.
(но ковырять сам этот алготм довольно глупо - он уже в другой базе и у него другая математика, исходный битовый проще)
То есть, на каждом бите данных регистр может изменяться всего в паре мест - но после 32 битов эти изменения
распостраняются уже довольно далеко - потому тебе и кажеться что там лавинный эффект очень большой,
хотя этого нет. (и кстати по секрету скажу что если отводок сделать больше, то взломать его будет легче)
В современных же компьютерных криптоалгоритмах давно ушли от таких схем. Именно для того, чтобы усложнить построение специализированных крипто- акселераторов. В SHA2 - в том числе. В SHA2 есть биты, зависящие одновременно от более чем 60 входных бит даже после всех упрощений и оптимизаций. На обычной логике никакая неимоверная оптимизация эту схему упростить не может. Это принципиально и никак не зависит от твоей личной безграмотности и жопа-чувств. Если вдруг, ты "жопой чуешь", что здесь есть поле для оптимизации - чувствуй это втихаря, или доказывай (аргументируй) свой жопа-бред.
просто ты не понимаешь что один проход алгоритма для CPU экв. 32 проходам битового алгоритма.
(но базовый исходный которым описан SHA - именно битовый, это без вариантов, и вся математика под него)
То есть ты видешь результат от f(f(f(...f(x) ))) (32 раза - иногда в подобных математиках это записывают как 32 степень)
многократного применения этой функции за один вызов подпрограммы оптимизированного под CPU алгоритма, вот и все.
И думаешь что там что-то сложное - нифига просто это экв многократному вызову 1-бит функции, и там всего пара отводок,
ну а входы вообще никого не волнуют - это всего экв. 1 слою элементов от универсального АЛУ, который ты идиот
реализовал в своей fpga, тупо не думая взяв и перенеся преобразованный и оптимизированный алгоритм под CPU с мощным
универсальным АЛУ. Кстати один тока этот универсальный АЛУ занимает ячеек в десятки раз больше всего ядра
последовательного майнера...
Vladimir
PS возможно что на старших fpga(где уже есть целые готовые блоки АЛУ, RAM и тп) разницы особой не будет(но в asic
все немного иначе - там никто не заставляет лепить не нужные универсальные блоки), но ты все равно полный лох тк думаешь
что для аппаратного майнера нужна только большая матрица fpga - а это далеко не так тк несколько последовательных
ядер можно всунуть в любую маленькую матрицу, что учитывая халявность старого хлама все равно выгодно,
хоть и не бьет рекорды по пиковой производительности(что и не нужно для майна - важна тока цена 1 MH/s)...