Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Массивный брутфорс на FPGA
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
drop669
Настало время и мне сделать брутфорсер на FPGA.
В общем, девайс который бы перебирал все доступные ключи, подавал их на вход некоего крипто-алгоритма (в моем случае алгоритм это DES в режиме CBC + еще кое-что специфическое), сверял результат с эталонным, и если не сошелся, шел дальше.
Всё параллельно, блоков, которые проверяют свой ключ может быть много, вплоть до 100 и больше, сколько влезет в чип или в несколько чипов сразу.
То есть, чем больше блоков, тем больше ключей мы можем проверить за еденицу времени. Тут всё понятно.
Наступил вопрос, как это всё сделать наиболее дешево. Выяснилось, что по соотношению цена-скорость лучше всего Altera Cyclone или Xilinx Spartan.
При этом, в случае с Циклонами, наиболее оптимальны чипы EP3C40 и EP3C25, а остальные "выбиваются" из фен-шуя.
Например вот эти люди сделали на 120-и чипах Спартан:
http://www.copacobana.org/faq.html
... потому что подсчитали, что так будет дешевле всего.
Теперь, собственно, вопросы.
1. Зачем тогда вообще нужны high-end чипы вроде Stratix/Virtex? Только для тех дизайнов где нужно много ног или где дизайн нельзя "размазать" по нескольким чипам?
2. Тираж моих девайсов будет крайне небольшим, аж несколько штук, может 5 или 10.
Во сколько может оказаться заказ плат таким количеством, если туда нужно будет установить штук 8 Циклонов, DDR, флеш-память, MAX2 или EPCS для загрузки, DC-DC конвертор, прочая мелочь вроде USB-разьемов и пары светодиодов?
Правильно ли я думаю, что проще найти где-то готовые платы с нужными мне критериями чем заказывать свои?
Если да, то где их правильно искать?
И не получится ли так, что купить простой dev kit для Stratix II у Altera за килобакс будет дешевле чем городить "городуху" с пачкой Циклонов и заказывать плату для них?
Да, насчет бюджета на всю электронику - не более $1000. Хочется за эти деньги получить возможный максимум.
Извините зараннее если написал что не так.
SIA
Цитата(drop669 @ May 9 2008, 10:43) *
Да, насчет бюджета на всю электронику - не более $1000. Хочется за эти деньги получить возможный максимум.
Извините зараннее если написал что не так.

Стоимость только разработки многократно выше этой цифры. Обсуждать цену дивайсов при этом бессмысленно. Надо брать готовую плату.
drop669
Цитата(SIA @ May 9 2008, 11:07) *
Стоимость только разработки многократно выше этой цифры. Обсуждать цену дивайсов при этом бессмысленно. Надо брать готовую плату.

Допустим. Так что, лучше не морочить голову и сосредоточиться на какой-нибудь готовой плате с Stratix/Virtex или таки задуматься о пачке Cyclone/Spartan?
Postoroniy_V
Цитата(drop669 @ May 9 2008, 17:09) *
Допустим. Так что, лучше не морочить голову и сосредоточиться на какой-нибудь готовой плате с Stratix/Virtex или таки задуматься о пачке Cyclone/Spartan?

у меня дурацкий вопрос smile.gif
а может сначала помоделировать, посинтезировать под разные кристаллы и семейства
а потому уже определится что лучше и какой кристал и т.д.?
drop669
Цитата(Postoroniy_V @ May 9 2008, 12:09) *
у меня дурацкий вопрос smile.gif
а может сначала помоделировать, посинтезировать под разные кристаллы и семейства
а потому уже определится что лучше и какой кристал и т.д.?

Уже просинтезировал smile.gif Осталось выбрать оптимальную цену-качество.
Ну вот, например, в EP3C40 можно всунуть X блоков. И стоит она по онлайновому прайсу Альтеры, самая дешевая, $80
А вот есть EP3C80, туда можно всунуть 2*X блоков, грубо говоря. Но по тому же прайсу, самая дешевая, стоит $220. Таким образом, дешевле взять пару EP3C40 за $160 чем одну EP3C80.
Я пытаюсь решить: морочить ли мне голову с этой ценовой калькуляцией и дальше, а затем решать, искать ли готовую борду с пачкой Циклонов или заказать свою борду где-то. Или лучше и проще для головной боли забить на это и заюзать один Stratix II.
Кстати у Stratix II соотношение цена-скорость в контексте моей задачки еще хуже.
sazh
Цитата(drop669 @ May 9 2008, 13:36) *
Уже просинтезировал smile.gif Осталось выбрать оптимальную цену-качество.
Ну вот, например, в EP3C40 можно всунуть X блоков. И стоит она по онлайновому прайсу Альтеры, самая дешевая, $80
А вот есть EP3C80, туда можно всунуть 2*X блоков, грубо говоря. Но по тому же прайсу, самая дешевая, стоит $220. Таким образом, дешевле взять пару EP3C40 за $160 чем одну EP3C80.
Я пытаюсь решить: морочить ли мне голову с этой ценовой калькуляцией и дальше, а затем решать, искать ли готовую борду с пачкой Циклонов или заказать свою борду где-то. Или лучше и проще для головной боли забить на это и заюзать один Stratix II.
Кстати у Stratix II соотношение цена-скорость в контексте моей задачки еще хуже.


Критерий простой - все в одном кристалле. Вы же что то про DDR еще говорили. Протоколы обмена, возможность обменав по различным интерфейсам, наличие контактов ввода вывода по различные уровни сигналов, встроенное pll - циклоны не катят.
Если можно купить, дешевле купить, человеки часы при таких объемах все перевесят.
AlexandrY
Безусловно самомому сделать будет дешевле.
В 1000$ железо легко умещается.
Работу не считаем, хорошее дело можно и в кредит сделать biggrin.gif
На самом деле архитектура здесь примитивная до безобразия.

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


Цитата(drop669 @ May 9 2008, 11:13) *
Настало время и мне сделать брутфорсер на FPGA.
В общем, девайс который бы перебирал все доступные ключи, подавал их на вход некоего крипто-алгоритма (в моем случае алгоритм это DES в режиме CBC + еще кое-что специфическое), сверял результат с эталонным, и если не сошелся, шел дальше.
Всё параллельно, блоков, которые проверяют свой ключ может быть много, вплоть до 100 и больше, сколько влезет в чип или в несколько чипов сразу.
То есть, чем больше блоков, тем больше ключей мы можем проверить за еденицу времени. Тут всё понятно.
Наступил вопрос, как это всё сделать наиболее дешево. Выяснилось, что по соотношению цена-скорость лучше всего Altera Cyclone или Xilinx Spartan.
При этом, в случае с Циклонами, наиболее оптимальны чипы EP3C40 и EP3C25, а остальные "выбиваются" из фен-шуя.
Например вот эти люди сделали на 120-и чипах Спартан:
http://www.copacobana.org/faq.html
... потому что подсчитали, что так будет дешевле всего.
Теперь, собственно, вопросы.
1. Зачем тогда вообще нужны high-end чипы вроде Stratix/Virtex? Только для тех дизайнов где нужно много ног или где дизайн нельзя "размазать" по нескольким чипам?
2. Тираж моих девайсов будет крайне небольшим, аж несколько штук, может 5 или 10.
Во сколько может оказаться заказ плат таким количеством, если туда нужно будет установить штук 8 Циклонов, DDR, флеш-память, MAX2 или EPCS для загрузки, DC-DC конвертор, прочая мелочь вроде USB-разьемов и пары светодиодов?
Правильно ли я думаю, что проще найти где-то готовые платы с нужными мне критериями чем заказывать свои?
Если да, то где их правильно искать?
И не получится ли так, что купить простой dev kit для Stratix II у Altera за килобакс будет дешевле чем городить "городуху" с пачкой Циклонов и заказывать плату для них?
Да, насчет бюджета на всю электронику - не более $1000. Хочется за эти деньги получить возможный максимум.
Извините зараннее если написал что не так.
dvladim
Цитата(drop669 @ May 9 2008, 11:43) *
1. Зачем тогда вообще нужны high-end чипы вроде Stratix/Virtex? Только для тех дизайнов где нужно много ног или где дизайн нельзя "размазать" по нескольким чипам?

У вас задача очень специфичная. Части между собой практически не связаны. В большинстве дизайнов такого нет.

Цитата(drop669 @ May 9 2008, 13:36) *
Ну вот, например, в EP3C40 можно всунуть X блоков. И стоит она по онлайновому прайсу Альтеры, самая дешевая, $80
А вот есть EP3C80, туда можно всунуть 2*X блоков, грубо говоря.

Надеюсь вы учли стоимость дополнительных блоков. Например памяти.
Вот, к примеру, в вас на плате 4 ПЛИС, а ОЗУ к каждой своя? Или поток как-то шиной передается? Что будет ограничивать частоту устройства?

Цитата(sazh @ May 9 2008, 14:09) *
встроенное pll - циклоны не катят.

Вопрос не по теме, но почему "не катят"?

Цитата(AlexandrY @ May 9 2008, 14:54) *
Безусловно самомому сделать будет дешевле.
В 1000$ железо легко умещается.
Работу не считаем, хорошее дело можно и в кредит сделать biggrin.gif

Не так уж и безусловно.
Опять же память, частота работы с памятью, правильно развести все это хозяйство.
Работу в стоимости надо учитывать. Обязательно. А еще отладку. А еще ...

Кстати, если взлом разовый, то в время взлома надо включить и время разработки.
drop669
Цитата(dvladim @ May 9 2008, 20:52) *
Вот, к примеру, в вас на плате 4 ПЛИС, а ОЗУ к каждой своя? Или поток как-то шиной передается? Что будет ограничивать частоту устройства?

ОЗУ нужно только для софтпроцессора, Nios или MicroBlaze.
Да и то не обязательно DDR, и не обязательно большое, может что-то простое, может небольшая SRAM.
Часть флеш-памяти тоже для содержания в себе проги для софтпроца. Другая часть флеш-памяти для бута ПЛИС.
Софтпроцессор нужен для сервисных дел: решить в каких пределах перебирать ключ, "раздавать" каждому блоку свои ключи, ждать пока у какого-то блока сработает бит на выходе компаратора, который сравнивает то что выходит с блока с эталоном, ну и связь с юзером.
Софтпроцессор вообще может быть экономичный и медленный.
Частота устройства ограничивается временем (propagation delay) начиная от регистра содержащего ключ, затем через весь блок, затем до выхода компаратора.

Чтобы не морочить голову, поставлю вопрос так: сколько может стоить в RU или UA разводка платы где будет 6-8 ПЛИС в корпусах PQFP/TQFP от 100 до 200 контактов каждая + разная обвязка вроде памяти и разьемов и сколько будет стоить это всё туда запаять, если учитывать что нужно будет всего 10 или 20 экземпляров?
И сильно ли изменится цена, если корпуса будут FBGA?
AlexandrY
На вскидку будет стоить 1500-1600$ по нынешнему курсу.
Сюда войдет трассировка, изготовление PCB, шаблона, пайка. Корпуса чипов значения не имеют.
Может только у TQFP частотные характеристики будут похуже, разогнать будет сложнее.

ИМХО.
Удельно софтпроцессор на FPGA обойдется раза в два дороже и раза в 4-е медленнее
нормального ARM-а с нормальным JTAG отладчиком, эффективной средой разработки и наработанными либами.


Цитата(drop669 @ May 9 2008, 21:42) *
ОЗУ нужно только для софтпроцессора, Nios или MicroBlaze.
Да и то не обязательно DDR, и не обязательно большое, может что-то простое, может небольшая SRAM.
Часть флеш-памяти тоже для содержания в себе проги для софтпроца. Другая часть флеш-памяти для бута ПЛИС.
Софтпроцессор нужен для сервисных дел: решить в каких пределах перебирать ключ, "раздавать" каждому блоку свои ключи, ждать пока у какого-то блока сработает бит на выходе компаратора, который сравнивает то что выходит с блока с эталоном, ну и связь с юзером.
Софтпроцессор вообще может быть экономичный и медленный.
Частота устройства ограничивается временем (propagation delay) начиная от регистра содержащего ключ, затем через весь блок, затем до выхода компаратора.

Чтобы не морочить голову, поставлю вопрос так: сколько может стоить в RU или UA разводка платы где будет 6-8 ПЛИС в корпусах PQFP/TQFP от 100 до 200 контактов каждая + разная обвязка вроде памяти и разьемов и сколько будет стоить это всё туда запаять, если учитывать что нужно будет всего 10 или 20 экземпляров?
И сильно ли изменится цена, если корпуса будут FBGA?
avesat
Цитата(AlexandrY @ May 9 2008, 22:06) *
...Может только у TQFP частотные характеристики будут похуже, разогнать будет сложнее...


Это вы о чем? Кого и куда гнать? 07.gif
Doka
Цитата(drop669 @ May 9 2008, 11:43) *
Настало время и мне сделать брутфорсер на FPGA.
..
Всё параллельно, блоков, которые проверяют свой ключ может быть много, вплоть до 100 и больше, сколько влезет в чип или в несколько чипов сразу.
..
То есть, чем больше блоков, тем больше ключей мы можем проверить за еденицу времени. Тут всё понятно.
..
Тираж моих девайсов будет крайне небольшим, аж несколько штук, может 5 или 10.
..
Да, насчет бюджета на всю электронику - не более $1000.

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

а то может очень даже статься, что с таким бюджетом целесообразность заморачиваться с этим маленькая(((

(в своё время по просьбе занимался оценкой подобной задачи для keeloq - там что-то совсем невесёлое по ресурсам получалось (правда там ключ 64бита + *2 использование ресурсов из-за особенностей метода нахождения ключа - в итоге что-то такое же монстроидальное как copacobana вырисовывалось.. хотя сегодня, учитывая цены на low-cost FPGA, это уже не те деньги, что были тогда.. )
drop669
Цитата(AlexandrY @ May 9 2008, 22:06) *
На вскидку будет стоить 1500-1600$ по нынешнему курсу.
Сюда войдет трассировка, изготовление PCB, шаблона, пайка. Корпуса чипов значения не имеют.
Может только у TQFP частотные характеристики будут похуже, разогнать будет сложнее.

А сколько из этих денег - сама разработка, и сколько будет стоить изготовление каждой платы? Если учесть что тираж 10-20?
AlexandrY
Насколько знаю запросы наших трасировщиков меньше чем 900$ за две недели работы не попросят.
А цену PCB можно посчитать у каких нибудь китайцев.
Например у этих - http://www.pcbcart.com/
Думаю хватит 6-и слойной платы с нормой 0.1 мм и двумя классами межслойных via

Цитата(drop669 @ May 10 2008, 20:26) *
А сколько из этих денег - сама разработка, и сколько будет стоить изготовление каждой платы? Если учесть что тираж 10-20?
drop669
Цитата(AlexandrY @ May 10 2008, 22:45) *
Насколько знаю запросы наших трасировщиков меньше чем 900$ за две недели работы не попросят.
А цену PCB можно посчитать у каких нибудь китайцев.
Например у этих - http://www.pcbcart.com/
Думаю хватит 6-и слойной платы с нормой 0.1 мм и двумя классами межслойных via

Спасибо! Это я и хотел понять.
vetal
Цитата
Спасибо! Это я и хотел понять.

Рано радуетесь. При заказе 10 шт. стоимость платы+монтажа будет около 300-400$, вместе в описанной комплектацией примерно 1200$ на плату выйдет. Для 10 плат это 12к примерно.
Ориентируйтесь на 15к$ за 10 плат. Меньше делать не имеет смысла, т.к. платы получатся золотыми.
drop669
Цитата(vetal @ May 10 2008, 23:15) *
Рано радуетесь. При заказе 10 шт. стоимость платы+монтажа будет около 300-400$, вместе в описанной комплектацией примерно 1200$ на плату выйдет. Для 10 плат это 12к примерно.
Ориентируйтесь на 15к$ за 10 плат. Меньше делать не имеет смысла, т.к. платы получатся золотыми.

Я радуюсь потому что получается что проще просто купить готовый dev kit со Stratix II вместо создания своих плат.
С другой стороны, теперь вопрос риторический, продаст ли Альтера 10 дев-китов...
У них цены на дев-киты ниже чем цена стоящего на нем чипа.
Например вот кит:
http://altera.com/products/devkits/altera/...grity_s2gx.html
Заявлен со стоимостью $1300.
Иду искать в их же онлайн-магазине этот чип EP2SGX90EF1152C3: вариат с постфиксом N стоит $3,760, с постфиксом ES (Engineering sample?): $4,136.
Врядли я первый кто это заметил.
Может это у них такая политика за ради как можно более простого втягивания народа на их продукты.
В таком случае, продадут ли они одному лицу много китов?
per_aspera_ad_astra
Странно как-то, почему-то для увеличения производительности рассматриваете только распараллеливание алгоритма, но совсем не учитываете частоту, на которой все это дело работать будет. И еще в сравнении смотрите только на количество Slices, и не смотрите на количество Block RAM, или они в вашем алгоритме не используются?

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

Например, можно посмотреть вот на это http://www.xilinx.com/products/devkits/HW-V5GBE-DK-UNI-G.htm только он предназначен для проектов с Gigabit Ethernet, но зато подешевел! smile.gif
AlexandrY
По моему вы прикалываетесь.
Неужто трудно понять контекст?
Человек делает абсолютно примитивный брутфорс я так понимаю для коротких сессионных ключей симметричных криптоалгоритмов которые повсеместно применяются при связи через тот же SSL или по Wi-Fi
Или для ломки хешей типа SHA которые применяются для защиты прошивок скажем в мобилах, или игровых автоматах и т.д.
Ему нафик не нужна никакя память , никакие Gigaбит интернеты, а только чтоб как можно больше влезло IP-core того же DES-а. И какя нибудь дохлая шина для центрального менеджера.

Если уж искать альтернативы, то я бы предложил чипы из этого ряда:
http://multicore.ru/index.php?id=47
Там 36 одновременно инструкций за такт с 8-и битными операндами.
Удельная цена одного DES-а вполне могла бы быть там меньше чем на FPGA


Цитата(per_aspera_ad_astra @ May 12 2008, 10:02) *
Странно как-то, почему-то для увеличения производительности рассматриваете только распараллеливание алгоритма, но совсем не учитываете частоту, на которой все это дело работать будет. И еще в сравнении смотрите только на количество Slices, и не смотрите на количество Block RAM, или они в вашем алгоритме не используются?

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

Например, можно посмотреть вот на это http://www.xilinx.com/products/devkits/HW-V5GBE-DK-UNI-G.htm только он предназначен для проектов с Gigabit Ethernet, но зато подешевел! smile.gif
VslavX
Когда-то делал прикидки для обычного DES:
- ключ 56 бит - 2^56 вариантов
- конвееризованные дешифраторы за один такт проверяли 1 вариант ключа (в работе сразу несколько вариантов ключа на разных ступенях - по числу раундов, каждый такт на выходе один вариант)
- частота на Циклоне 2 - около 130Мгц - перебор 2^27 вариантов одним конвеером за 1 секунду, примерно 2^39 вариантов в час. Итого получалось для полного перебора 56-битного ключа нужно 2^17 дешифратор/часов. Если задать приемлемый срок месяц (2^10 часов), то получаем что достаточно 2^7 дешифраторов - навскидку получалось примерно 16-32 микросхем самых младших EP2C5.
Городить SDRAM, софт-процессор и прочее - смысла нет. ИМХО достаточно поставить на плату управляющий проц типа ARM (LPC/SAM), для загрузки FPGA и общего управления. Все FPGA на плате связать с контроллером интерфейсом типа SPI - скорость тут особо не нужна - нужно всего лишь загрузить исходный ключ/диапазон, а вот трассировка упрощается на порядки. Для каскадирования плат можно наружу вывести RS-485, ну или USB (потратившись на хабы можно приличную "елочку" собрать).
ИМХО, "железо" тут не самое сложное, гораздо сложнее/интереснее это все в согласованный кластер объединить.
per_aspera_ad_astra
Цитата(AlexandrY @ May 12 2008, 12:23) *
По моему вы прикалываетесь.
Неужто трудно понять контекст?
Человек делает абсолютно примитивный брутфорс я так понимаю для коротких сессионных ключей симметричных криптоалгоритмов которые повсеместно применяются при связи через тот же SSL или по Wi-Fi
Или для ломки хешей типа SHA которые применяются для защиты прошивок скажем в мобилах, или игровых автоматах и т.д.
Ему нафик не нужна никакя память , никакие Gigaбит интернеты, а только чтоб как можно больше влезло IP-core того же DES-а. И какя нибудь дохлая шина для центрального менеджера.

Если уж искать альтернативы, то я бы предложил чипы из этого ряда:
http://multicore.ru/index.php?id=47
Там 36 одновременно инструкций за такт с 8-и битными операндами.
Удельная цена одного DES-а вполне могла бы быть там меньше чем на FPGA


Изначально полагалось что брутфорсер на FPGA делаться будет!? А удельная цена разве основной критерий?

Да и понятно что киты универсальные и не все что там есть будет использоваться, но если покупать FPGA отдельную, то у нее цена не сильно различаться будет от стоимости готового кита. Хоть распаивай и на свои платы ставь! Как правильно заметил drop669 это политика такая, я не удивлюсь что фирмы которые свои чипы (интерфейсы, память, питание и т.д...) еще доплачивают чтобы их продукт на кит поставили.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.