Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум разработчиков электроники ELECTRONIX.ru _ Работаем с ПЛИС, области применения, выбор _ Защита данных FPGA

Автор: prom Feb 1 2005, 14:52

Интересуют книги/статьи и т.п. по обеспечению защиты прошивки ПЛИС. Буду очень признателен также за дополнительные комментарии. Насколько слышал краем уха для защиты используется дополнительный CPLD. Я в этих вопросах новичок, так что просьба ногами не пинать blush.gif

Заранее спасибо

Автор: Maksim Feb 1 2005, 23:26

Обычно в FPGA и CPLD зашивают полином (очень длинный), а внутри FPGA потоки от этих полинов сравниваются. Но этот метод "колется" очень хорошо при малом основании полинома.
Сейчас есть более интересные решения Actel выпустила ПЛИС с внутренней FLASH. Это позволяет например при каждом включении ПЛИС (если её поставить вместо CPLD) писать напрмиер счётчик во флэш, а FPGA будет сообшаться только скажем номер, из которого по известному закону она внутри будет вырабатывать константу которую будет загонять в полином.
т.е. если при каждом включении питания смотреть обмен между ними, то он будет всегда разный.
Но в принципе лучше поставить маленький микркоонтроллер который тоже умеет шить свою память, и который и будет фиксировать каждый раз включение выключения схемы.

Автор: prom Feb 2 2005, 07:16

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

Неужели ни одна из компаний не заморачивалась по сабжу? Первое, что приходит в голову - внутри ПЛИС прописывается серийный номер, к которому привязывается все остальное. Ну вариантов может быть много...

Вопрос к корифеям, работающим в компаниях - как вы защищаете IP в ваших разработках? Неужели никак?

Автор: makc Feb 2 2005, 07:24

Цитата(prom @ Feb 2 2005, 10:16)
Неужели ни одна из компаний не заморачивалась по сабжу? Первое, что приходит в голову - внутри ПЛИС прописывается серийный номер, к которому привязывается все остальное. Ну вариантов может быть много...
*


Ну почему же ничего не сделано. Есть Actel ProASIC, у которых можно поставить бит защиты от чтения прошивки и все. После этого конфигурацию ПЛИС "сдуть" не получится. У них эта технология называется FlashLock.

А для ксайлинкса и альтеры можно придумать следующее решение: конфигурация прогружается в ПЛИС, причем чтение конфигурации аппаратно запрещено (соответсвующими управляющими данными в прошивке), а при выключении питания конфигурация ПЛИС поддерживается с помощью небольшой батарейки, которая осуществляет питание в отсутствии основного питания устройства. ПЛИС в режиме ожидания потребляет совсем немного, так что батарейки должно хватить на несколько лет, а ведь можно поставить аккумулятор, который будет заряжаться во время работы устройства.

Автор: Serega Doc Feb 2 2005, 07:42

Цитата(makc @ Feb 2 2005, 10:24)
А для ксайлинкса и альтеры можно придумать следующее решение: конфигурация прогружается в ПЛИС, причем чтение конфигурации аппаратно запрещено (соответсвующими управляющими данными в прошивке), а при выключении питания конфигурация ПЛИС поддерживается с помощью небольшой батарейки, которая осуществляет питание в отсутствии основного питания устройства. ПЛИС в режиме ожидания потребляет совсем немного, так что батарейки должно хватить на несколько лет, а ведь можно поставить аккумулятор, который будет заряжаться во время работы устройства.
*


А аккумулятор в BIOS тоже должен садится через несколько лет а я встречал потерю настроек даже на новых материнских платах.

Что произойдет если всетаки батарейка сядет и прошивка сотрется?
Как востанавливать устройство? Вести к производителю? Это не решение проблемы. Об этом должны заботится компании производители FPGA.

Скажите а что за технология у ALTERA - LogicLock?

Спасибо smile.gif

Автор: vetal Feb 2 2005, 07:45

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

Автор: Hilter Feb 2 2005, 07:46

У Xilinx в новых сериях (начиная с Virtex II Pro помоему) защита основавается на шифровании прошивки (Triple DES) , ключ для расшифровки хранится в самой ПЛИС. при прошивке сама плис декодирует поток. Ключ считать нельзя. Таким образом даже если снять образ флеши или промки с прошивкой - в другую ПЛИС без ключа ее не зашьеш и не декомпилируеш smile.gif. Минус технологии в необходимости внешней батарейки для потдержания памяти ключа.

Автор: Uuftc Feb 2 2005, 08:21

Цитата(Hilter @ Feb 2 2005, 10:46)
У Xilinx в новых сериях (начиная с Virtex II Pro помоему)
*

С Virtex II есть такая фича

Автор: Andy-P Feb 2 2005, 08:36

FPGA + (CPLD с битом защиты и полиномом), вполне достаточно, чтобы отбить охоту у желающих скопировать. twak.gif

Окончательно вопрос решается:

1. StratixII – во внешней памяти хранится криптованная прошивка. При загрузке в FPGA она декриптуется ключом (128 бит, если не ошибаюсь), который в свою очередь непосредственно прошивается во внутреннюю флэш FPGA. Ключ, разумеется, считать нельзя. Конечно, StratixII - для серьезных проектов

2. Попроще – MAXII (от 240 до 2210 LCELL, внутренняя флэш с битом секретности)

Как-то я задавал такой вопрос на семинаре. Суть ответа примерно такова: не актуально!

Автор: Igor_S Feb 2 2005, 08:38

Цитата(Serega Doc @ Feb 2 2005, 10:42)
Скажите а что за технология у ALTERA - LogicLock?

Спасибо  smile.gif
*


Eto ne w temu - LogicLock pozwoljaet "zamorozitj" otrabotannyj fragment proekta w FPGA, i ne menjatj ego trassirowku pri wseh posledujushih kompiljacijah proekta

Автор: Serega Doc Feb 2 2005, 09:02

Цитата(Andy-P @ Feb 2 2005, 11:36)
Попроще – MAXII (от 240 до 2210 LCELL, внутренняя флэш с битом секретности)
*


А кто подскажет пределы стоимости MAX II

Автор: Vitus Feb 2 2005, 09:12

Ко всему вышесказанному стоит добавить одну немалоавжную вещь (которую между прочим рекомендует Зайлинкс) - делать на печатной плате или непомредственно на ИМС содержащей битстрим надпись типа "все права на копирование битстрима принадлежат...". Не такой уж и глупый совет между прочим поскольку реинжениринг по битстриму вещь весьма затруднительная если вообще возможная а использовать чужой битстрим в чистом виде в коммерческих целях даже у нас не станут (тем более если он заCOPYRIGHTен)

Автор: yes Feb 9 2005, 15:09

кстати с полиномом совет весьма вредный -
есть так называемая рекурентная процедура Берликемпа-Месси (вроде так), да и вообще можно самому догадаться (пусть менее элегантным способом), которая восстанавливает полином длинны N по потоку 2N. с линейными вычислительными затратами (то есть удлиннение полинома не приводит к усложнению декодирования)

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

Автор: Maksim Feb 10 2005, 15:06

Цитата(yes @ Feb 9 2005, 18:09)
кстати с полиномом совет весьма вредный -
есть так называемая рекурентная процедура Берликемпа-Месси (вроде так), да и вообще можно самому догадаться (пусть менее элегантным способом), которая восстанавливает полином длинны N по потоку 2N. с линейными вычислительными затратами (то есть удлиннение полинома не приводит к усложнению декодирования)

по-хорошему - надо ставить какие-то готовые элементы (которые криптографически проверены)
минималистический - что-то типа Keloq
посерьезнее DES с каким-то генератором (хотя может это тоже плохо - нужно дать криптографам на анализ, если секретность - серьезная проблема)
*


А кто вам даст эти 2N? - если N~300 и сранение идёт по нескольким битам(которыми обмениваются микроконтроллер и FPGA), то как вы собираетесь востановить основание полинома? главное чтобы микрокнтроллер имел на каждое влючение питание новое значение на входе полинома, например,счётчик.

Автор: Wyvern Feb 21 2005, 09:47

Есть один способ, правда он не относится к проблеме защиты данных, а скорее, к борьбе с неплательщиками и пиратами smile.gif
Известно, что у ПЛИС фирмы Xilinx имеют так называемую шину с тремя состояниями(глобальную).
Далее:

Цитата
Неправильное функционирование общей шины, когда несколько источников с разными уровнями подключаются к шине, может вывести ПЛИС из строя. САПР ПЛИС тщательно проверяет, чтобы спроектированная общая шина функционировала правильно. Поэтому не рекомендуется ручное редактирование файла прошивки, так как случайная ошибка в коде может привести к неправильной работе общей шины и порче ПЛИС.

Так вот -если уж монтировать внешнюю микросхему для защиты кода(IMHO лучшее решение это не CPLD. а дешевый МК с битом защиты, на него мнооого функций можно еще привесить smile.gif ) то ничто не мешает поставить и счетчик запусков(времени работы и проч.) который, после запроса пароля-ключа и неправильного ответа, просто сожжет ПЛИС, загрузив , предварительно отредактированный вручную "неправильный" кусочек кода smile3046.gif
Особенно полезно при продаже не готовых изделий, а чистых программ и ядер... wink.gif

Ник

Автор: acex2 Feb 21 2005, 11:07

Цитата(Maksim @ Feb 10 2005, 12:06)
Цитата(yes @ Feb 9 2005, 18:09)
кстати с полиномом совет весьма вредный -
есть так называемая рекурентная процедура Берликемпа-Месси (вроде так), да и вообще можно самому догадаться (пусть менее элегантным способом), которая восстанавливает полином длинны N по потоку 2N. с линейными вычислительными затратами (то есть удлиннение полинома не приводит к усложнению декодирования)

по-хорошему - надо ставить какие-то готовые элементы (которые криптографически проверены)
минималистический - что-то типа Keloq
посерьезнее DES с каким-то генератором (хотя может это тоже плохо - нужно дать криптографам на анализ, если секретность - серьезная проблема)
*


А кто вам даст эти 2N? - если N~300 и сранение идёт по нескольким битам(которыми обмениваются микроконтроллер и FPGA), то как вы собираетесь востановить основание полинома? главное чтобы микрокнтроллер имел на каждое влючение питание новое значение на входе полинома, например,счётчик.
*



Алгоритм Берлекэмпа-Месси использует 2*N, а не 2^N бит, поэтому для восстановления полинома с длиной 300 бит необходимо всего лишь 600 бит последовательности. Что касается идеи с обновлением значения полинома с каждым новым включением, то не стоит забывать, что последовательность генерируется обоими устройствами: FPGA и МК в данном случае. А вот как вы собираетесь обновлять начальное значение полинома в FPGA с каждым включением, не совсем понятно. Разве что прошивку патчить каждый раз или добавлять фазу загрузки начального значения в FPGA после включения. Но это неэффективно, да и не нужно. Потому что для криптографически-стойкого алгоритма генерации ПСП единственный способ ее повторить, это записать ее в память и потом повторять каждый раз при включении устройства, что физически невозможно - каждую секунду на частоте 1 Мгц будет генерироваться 1 млн. новых бит.

Что касается полиномов, то тут необходимо использовать нелинейные генераторы, например каскад Голлмана или схему Stop-and-Go. Вариант из алгоритма A5 с увеличенными длинами полиномов тоже подойдет. Все они легко реализуются в железе и взломать их практически невозможно при большой разрядности используемых полиномов - проще будет CPLD "расковырять" под микроскопом.

Автор: Harbour Feb 21 2005, 15:13

Я использую полином как ключ к простому алгоритму (обычно rc4), которым шифруется тестовый запрос. Для проверки подлинности делаем посылку типа запрос-ответ. Правда придется раскошелится, например для rc4, на 258 байт.

Автор: acex2 Feb 21 2005, 16:42

Цитата(Harbour @ Feb 21 2005, 12:13)
Я использую полином как ключ к простому алгоритму (обычно rc4), которым шифруется тестовый запрос. Для проверки подлинности делаем посылку типа запрос-ответ. Правда придется раскошелится, например для rc4, на 258 байт.
*


А можно поподробнее, А то я себе что-то слабо представляют как это все работает в связке FPGA+uC. Кто генерирует тестовый запрос? На основании какой случайности этот запрос формируется? Как часто вы его посылаете?

Автор: Maksim Feb 21 2005, 20:57

Цитата(acex2 @ Feb 21 2005, 14:07)
Цитата(Maksim @ Feb 10 2005, 12:06)
Цитата(yes @ Feb 9 2005, 18:09)
кстати с полиномом совет весьма вредный -
есть так называемая рекурентная процедура Берликемпа-Месси (вроде так), да и вообще можно самому догадаться (пусть менее элегантным способом), которая восстанавливает полином длинны N по потоку 2N. с линейными вычислительными затратами (то есть удлиннение полинома не приводит к усложнению декодирования)

по-хорошему - надо ставить какие-то готовые элементы (которые криптографически проверены)
минималистический - что-то типа Keloq
посерьезнее DES с каким-то генератором (хотя может это тоже плохо - нужно дать криптографам на анализ, если секретность - серьезная проблема)
*


А кто вам даст эти 2N? - если N~300 и сранение идёт по нескольким битам(которыми обмениваются микроконтроллер и FPGA), то как вы собираетесь востановить основание полинома? главное чтобы микрокнтроллер имел на каждое влючение питание новое значение на входе полинома, например,счётчик.
*



Алгоритм Берлекэмпа-Месси использует 2*N, а не 2^N бит, поэтому для восстановления полинома с длиной 300 бит необходимо всего лишь 600 бит последовательности. Что касается идеи с обновлением значения полинома с каждым новым включением, то не стоит забывать, что последовательность генерируется обоими устройствами: FPGA и МК в данном случае. А вот как вы собираетесь обновлять начальное значение полинома в FPGA с каждым включением, не совсем понятно. Разве что прошивку патчить каждый раз или добавлять фазу загрузки начального значения в FPGA после включения. Но это неэффективно, да и не нужно. Потому что для криптографически-стойкого алгоритма генерации ПСП единственный способ ее повторить, это записать ее в память и потом повторять каждый раз при включении устройства, что физически невозможно - каждую секунду на частоте 1 Мгц будет генерироваться 1 млн. новых бит.

Что касается полиномов, то тут необходимо использовать нелинейные генераторы, например каскад Голлмана или схему Stop-and-Go. Вариант из алгоритма A5 с увеличенными длинами полиномов тоже подойдет. Все они легко реализуются в железе и взломать их практически невозможно при большой разрядности используемых полиномов - проще будет CPLD "расковырять" под микроскопом.
*


Берётся два полинома - предположим, длинный и короткий.
Начальное заполнение полиномов берём от датчика случайных чисел.
На вход длинного полниома заводим выход короткого.
Микроконтроллер при включении питания сообщает в FPGA номер
первого включения N=1(). FPGA полученный номер складывает с какой-то
секретной константой и результат на вход короткого полнинома и прокрутить его
M-тактов (M должно быть больше основания полинома (М=20, крутим 25-30 тактов и т.д.)).
Потом крутим короткий полином и результат подаём на вход длинного полинома,
и тоже прокручиваем энное количество тактов.Микроконтроллер тоже самое проделывает у
себя внутри, после чего результат сообщает в FPGA (в явном виде, с переставленными
битами и т.д.). После каждого включения питания при такой системе выдаваемые ответы
микроконтроллером будут "стоять" не рядом(имеет ввиду следующее значение полинома),а
сбиваться случайным образом за счёт короткого полинома.
Но это так что первое пришло в голову, а лучше я согласен - если есть место
то зашить туда шифратор с ключом и сообщать FPGA секретную константу для запуска, котороая
будет шифроваться гамированием, например (синхропосылка+зашифрованная константа).

Автор: eugene Feb 21 2005, 21:13

Конечно прошу прощения, но я так и не понял, почему же в FPGA в качестве мества для хранения конфигурации производители избрали SRAM а не FLASH sad.gif Хотя кажется так просто.... Да и с шифрованием напрягаться не надо было бы... Просто и для меня это вопрос достаточно актуальный. Заказчики требуют переходить c CPLD на FPGA именно из соображений "упрятать" внутрь процессор. А тут такие напряги с "открытостью" прошивки

Автор: Maksim Feb 21 2005, 21:25

Цитата(eugene @ Feb 22 2005, 00:13)
Конечно прошу прощения, но я так и не понял, почему же в FPGA в качестве мества для хранения конфигурации производители избрали SRAM а не FLASH sad.gif Хотя кажется так просто.... Да и с шифрованием напрягаться не надо было бы... Просто и для меня это вопрос достаточно актуальный. Заказчики требуют переходить c CPLD на FPGA именно из соображений "упрятать" внутрь процессор. А тут такие напряги с "открытостью" прошивки
*

Технологические трудности. Посмотрите Actel ведь у них нет таких больших кристаллов как у Xilinx, Altera, а это уже о чём-то говорит. Может кто более сведущий в технологии обяснить более подробно.

Автор: acex2 Feb 21 2005, 22:28

Цитата(Maksim @ Feb 21 2005, 17:57)
Берётся два полинома - предположим, длинный и короткий.
Начальное заполнение полиномов берём от датчика случайных чисел.
На вход длинного полниома заводим выход короткого.
Микроконтроллер при включении питания сообщает в FPGA номер
первого включения N=1(). FPGA полученный номер складывает с какой-то
секретной константой и результат на вход короткого полнинома и прокрутить его
M-тактов (M должно быть больше основания полинома (М=20, крутим 25-30 тактов и т.д.)).
Потом крутим короткий полином и результат подаём на вход длинного полинома, и тоже прокручиваем энное количество тактов.Микроконтроллер тоже самое проделывает у себя внутри, после чего результат сообщает в FPGA (в явном виде, с переставленными битами и т.д.). После каждого включения питания при такой системе выдаваемые ответы микроконтроллером будут "стоять" не рядом(имеет ввиду следующее значение полинома),а сбиваться случайным образом за счёт короткого полинома.
Но это так что первое пришло в голову, а лучше я согласен - если есть место то зашить туда шифратор с ключом и сообщать FPGA секретную константу для запуска, котороая будет шифроваться гамированием, например (синхропосылка+зашифрованная константа).


А чем не устраивают два синхронных нелинейных генератора на LFSR: один в CPLD, другой в FPGA? CPLD шлет выходную последовательность в FPGA по одной линии , в FPGA стоит простой XOR (с триггером на выходе во избежании глитчей) от двух последовательностей. Как только последовательности не совпали - происходит Reset (общий, или какого-нибудь локального автомата для скрытности). В итоге имеем простейшую схему внутри FPGA на нескольких SRL16 + пару LUT для проверки и организации нелинейности + только один дополнительный внешний пин.

Что касается посылок с шифрованием, то тут придется потрудиться над созданием генератора случайных чисел именно в FPGA, который после каждого ресета смог бы генерировать новое случайное число. Иначе можно будет один раз записать посылку от внешнего микроконтроллера со всеми "синхропосылками и гаммами" и затем просто ее тупо повторять при каждом перезапуске. И пусть там хоть 256-битный AES внутри FPGA - не поможет.

Автор: Maksim Feb 21 2005, 23:27

[quote=acex2,Feb 22 2005, 01:28]
А чем не устраивают два синхронных нелинейных генератора на LFSR: один в CPLD, другой в FPGA? CPLD шлет выходную последовательность в FPGA по одной линии , в FPGA стоит простой XOR (с триггером на выходе во избежании глитчей) от двух последовательностей. Как только последовательности не совпали - происходит Reset (общий, или какого-нибудь локального автомата для скрытности). В итоге имеем простейшую схему внутри FPGA на нескольких SRL16 + пару LUT для проверки и организации нелинейности + только один дополнительный внешний пин.
[/quote]
А за счёт чего нелинейность smile.gif Чего-то я не понял

Что касается посылок с шифрованием, то тут придется потрудиться над созданием генератора случайных чисел именно в FPGA, который после каждого ресета смог бы генерировать новое случайное число. Иначе можно будет один раз записать посылку от внешнего микроконтроллера со всеми "синхропосылками и гаммами" и затем просто ее тупо повторять при каждом перезапуске. И пусть там хоть 256-битный AES внутри FPGA - не поможет.

*

[/quote]
С шифрованием есть конечно проблемы.

Автор: acex2 Feb 22 2005, 00:35

Цитата(Maksim @ Feb 21 2005, 20:27)
А за счёт чего нелинейность smile.gif Чего-то я не понял


Я же писал чуть выше - LFSR лишь конструктивный блок. Для внесения нелинейности берется несколько LFSR и соединяются по нелинейной схеме. Самих схем очень много - они широко используются в потоковых криптосистемах. Я тут не поленился и нарисовал схему Stop-and-Go и упрощенный каскад Голлмана с 3-мя LFSR. Длины LFSR стоит выбирать разные и достаточно большие. Стандартное правило: сумма длин двух наименьших LFSR можно условно рассматривать с точки зрения brute-force взлома, как длину ключа в обычной блочной криптосистеме.

 

Автор: Harbour Feb 22 2005, 06:55

Цитата(acex2 @ Feb 21 2005, 19:42)
Цитата(Harbour @ Feb 21 2005, 12:13)
Я использую полином как ключ к простому алгоритму (обычно rc4), которым шифруется тестовый запрос. Для проверки подлинности делаем посылку типа запрос-ответ. Правда придется раскошелится, например для rc4, на 258 байт.
*


А можно поподробнее, А то я себе что-то слабо представляют как это все работает в связке FPGA+uC. Кто генерирует тестовый запрос? На основании какой случайности этот запрос формируется? Как часто вы его посылаете?
*


Народ отклонился от темы, мое IMHO :

1. В простом случае SRAM-based FPGA защитить (кроме имеющих внутренниий ключ Stratix-II и им подобные) невозможно, т.к. тупо можно повторить битовый поток конфигурации. Посему имеет смысл ставить мелкую CPLD/FPGA или uC с битами защиты, в которых реализуется _часть_ основной логики.
2. Flash-based FPGA защищать смысла не имеет - остается уповать на крепость бита защиты.
3. Другое дело - когда необходимо защитить свои изделия от попыток "некорректного" применения - то бишь необходимо гарантировать работу своих изделий только со своими - вот тут есть небольшой простор, о чем собственно, и был мой пост. Пока сделал просто :
- взял atmega8515, реализовал в нем 2 64-битные M-последовательности и rc4, одна M1 используется как отсчетная, вторая M2 используется как псевдо-ГСЧ
- все это ставится в двух девайсах, которые связаны какой-нить линкой
- периодически девайсы выбирают из M2 какой-нить "случайный" кусок, из M1 кусок и его индекс (тоже "случайный"), из куска M1 делаем rc4 ключ, шифруем этим ключом кусок M2 и посылаем той стороне индекс от M1 и данный зашифрованный кусок - та сторона сравнивает и делает соответствующие выводы

При небольшом усилии можно конечно все слегка наворотить - но мое изделие такой крутой защиты не требует (плата в розницу стоит порядка $100)

P.S. "Случайный" взято в кавычки так как генератор ентропии, который сделан в avr - весьма простенький - собирает там инфу внутри cpu, и т.д.

Автор: acex2 Feb 22 2005, 08:32

Цитата(Harbour @ Feb 22 2005, 03:55)
1. В простом случае SRAM-based FPGA защитить (кроме имеющих внутренниий ключ Stratix-II и им подобные) невозможно, т.к. тупо можно повторить битовый поток конфигурации. Посему имеет смысл ставить мелкую CPLD/FPGA или uC с битами защиты, в которых реализуется _часть_ основной логики.


Основную логику в FPGA практически всегда приходится "вылизывать", сражаясь за каждый мегагерц. И вынесение части логики во внешний CPLD, а уж тем более uC, этому ну никак не помогает. Поэтому остается только _вспомогательная_ логика.

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

Автор: Maksim Feb 22 2005, 11:53

Цитата(acex2 @ Feb 22 2005, 03:35)
Цитата(Maksim @ Feb 21 2005, 20:27)
А за счёт чего нелинейность smile.gif Чего-то я не понял


Я же писал чуть выше - LFSR лишь конструктивный блок. Для внесения нелинейности берется несколько LFSR и соединяются по нелинейной схеме. Самих схем очень много - они широко используются в потоковых криптосистемах. Я тут не поленился и нарисовал схему Stop-and-Go и упрощенный каскад Голлмана с 3-мя LFSR. Длины LFSR стоит выбирать разные и достаточно большие. Стандартное правило: сумма длин двух наименьших LFSR можно условно рассматривать с точки зрения brute-force взлома, как длину ключа в обычной блочной криптосистеме.
*



Теперь понятно.
Как говорится теже яйца только в профиль laugh.gif a14.gif

Автор: Андрей Харитонов Mar 31 2005, 01:44

я думаю так
если ценность вашей FPGA прошивки сравнима со стоимостью нового истребителя то не поможет ничего, т.к. все ваши дополнительные навешанные компоненты легко прочтуться даже с битами защиты специализирующимися на этом фирмами (чтение закрытого проца 1-5 тысяч $, закрытой CPLD 1-10 тысяч $). В этом случае можно говорить только о степени затруднения копирования проекта - поставить пару редко используемых в разработках процессоров разных производителей втом числе например наш КР1878ВЕ1, парочку CPLD опять таки разных производителей, наплевать на мучения покупателя товара по истечении гарантийного срока и поставить батарейку, на проци водрузить шифрованный обмен, в CPLD можно вынести жизненно важные куски схемы - и все равно стоимость истребителя перевесит (не поможет и батарейка). А уж если в копировании заинтересована американская сторона, да еще и вся элементная база у вас американская - вообще труба (у них на всех процах и плисах закладки стоят - че хочешь сделают и прошивку сдерут и из строя выведут, только что танцевать плисину не заставят, а на серьезном софте компиляторы в прошивку доп информацию с зашифрованным исходным кодом включают, так что и проблем с декомпиляцией особо не будет).

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

Автор: makc Mar 31 2005, 05:48

Цитата(Андрей Харитонов @ Mar 31 2005, 04:44)
А уж если в копировании заинтересована американская сторона, да еще и вся элементная база у вас американская - вообще труба (у них на всех процах и плисах закладки стоят - че хочешь сделают и прошивку сдерут и из строя выведут, только что танцевать плисину не заставят, а на серьезном софте компиляторы в прошивку доп информацию с зашифрованным исходным кодом включают, так что и проблем с декомпиляцией особо не будет).
*


А можно узнать, откуда вышеприведенная информация? Ссылочку?

Автор: acex2 Mar 31 2005, 07:31

Цитата(makc @ Mar 31 2005, 02:48)
Цитата(Андрей Харитонов @ Mar 31 2005, 04:44)
А уж если в копировании заинтересована американская сторона, да еще и вся элементная база у вас американская - вообще труба (у них на всех процах и плисах закладки стоят - че хочешь сделают и прошивку сдерут и из строя выведут, только что танцевать плисину не заставят, а на серьезном софте компиляторы в прошивку доп информацию с зашифрованным исходным кодом включают, так что и проблем с декомпиляцией особо не будет).
*


А можно узнать, откуда вышеприведенная информация? Ссылочку?
*



Это, похоже, из разряда детских страшилок. Хотя, кто его знает - может Винда такая большая, потому что идет с зашифрованным исходным кодом? smile.gif

Автор: makc Mar 31 2005, 08:18

Цитата(acex2 @ Mar 31 2005, 10:31)
Цитата(makc @ Mar 31 2005, 02:48)
Цитата(Андрей Харитонов @ Mar 31 2005, 04:44)
А уж если в копировании заинтересована американская сторона, да еще и вся элементная база у вас американская - вообще труба (у них на всех процах и плисах закладки стоят - че хочешь сделают и прошивку сдерут и из строя выведут, только что танцевать плисину не заставят, а на серьезном софте компиляторы в прошивку доп информацию с зашифрованным исходным кодом включают, так что и проблем с декомпиляцией особо не будет).
*


А можно узнать, откуда вышеприведенная информация? Ссылочку?
*



Это, похоже, из разряда детских страшилок. Хотя, кто его знает - может Винда такая большая, потому что идет с зашифрованным исходным кодом? smile.gif
*



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

Автор: myq Mar 31 2005, 08:31

Предлагается такой вариант реализации:

Во внешней FLASH хранится зашифрованная прошивка. CPLD - расшифровывает прошивку и посылает ее в FPGA. Секретный ключ шифрования хранится в защищенной прошивке CPLD.
Поскольку в CPLD ресурсов не так много, то полноценное шифрование (типа ГОСТ 28147-89) реализовать не удастся. Можно сократить число раундов, или использовать более простое поточное шифрование.

Одна контора таким образом защитила прошивку, которая составляет гостайну.

Автор: NeoN Mar 31 2005, 08:45

... на стыке CPLD-FPGA ставится логический анализатор, который благополучно запоминает декодированную прошивку в процессе конфигурирования FPGA. Детский сад smile.gif
ИМХО, единственное верное средство "антистыринга" - перенос части функций в CPLD либо FLASH based FPGA. Штучки типа "генератор ПСП в CPLD и сравнивалка в FPGA, не совпало - reprog" потенциально не надежны из-за возможных сбоев по клокам и рассинхронизации генераторов.

Автор: fake Mar 31 2005, 10:59

Цитата(myq @ Mar 31 2005, 12:31)
Во внешней FLASH хранится зашифрованная прошивка. CPLD - расшифровывает прошивку и посылает ее в FPGA. Секретный ключ  шифрования хранится в защищенной прошивке CPLD.
Поскольку в CPLD ресурсов не так много, то полноценное шифрование (типа ГОСТ 28147-89) реализовать не удастся. Можно сократить число раундов, или использовать более простое поточное шифрование.


А что мешает использовать новые Virtex-ы, шифруя прошивку DES-ом предусмотренным в ISE методом ?

Автор: makc Mar 31 2005, 11:21

Цитата(fake @ Mar 31 2005, 13:59)
Цитата(myq @ Mar 31 2005, 12:31)
Во внешней FLASH хранится зашифрованная прошивка. CPLD - расшифровывает прошивку и посылает ее в FPGA. Секретный ключ  шифрования хранится в защищенной прошивке CPLD.
Поскольку в CPLD ресурсов не так много, то полноценное шифрование (типа ГОСТ 28147-89) реализовать не удастся. Можно сократить число раундов, или использовать более простое поточное шифрование.


А что мешает использовать новые Virtex-ы, шифруя прошивку DES-ом предусмотренным в ISE методом ?
*



А если используется Spartan 2,3 или вообще не Xilinx? К тому же DES - это явно не самый современный алгоритм для защиты данных и совершенно неизвестно, как он там реализован.

Автор: acex2 Mar 31 2005, 11:25

Цитата(fake @ Mar 31 2005, 07:59)
Цитата(myq @ Mar 31 2005, 12:31)
Во внешней FLASH хранится зашифрованная прошивка. CPLD - расшифровывает прошивку и посылает ее в FPGA. Секретный ключ  шифрования хранится в защищенной прошивке CPLD.
Поскольку в CPLD ресурсов не так много, то полноценное шифрование (типа ГОСТ 28147-89) реализовать не удастся. Можно сократить число раундов, или использовать более простое поточное шифрование.


А что мешает использовать новые Virtex-ы, шифруя прошивку DES-ом предусмотренным в ISE методом ?
*



Похоже, не доверяет у нас народ устройствам с батарейками. Даже несмотря на заявленный срок работы в 10+ лет.

Автор: bbg Mar 31 2005, 11:28

Цитата(makc @ Mar 31 2005, 14:21)
К тому же DES - это явно не самый современный алгоритм для защиты данных и совершенно неизвестно, как он там реализован.


Там вроде 3DES..

Автор: acex2 Mar 31 2005, 11:30

Цитата(makc @ Mar 31 2005, 08:21)
А если используется Spartan 2,3 или вообще не Xilinx? К тому же DES - это явно не самый современный алгоритм для защиты данных и совершенно неизвестно, как он там реализован.
*


В Virtex2 используется 3DES, а не DES. А в Virtex4 AES.

Автор: yes Mar 31 2005, 12:05

2 mvq - лажа какая-то с гостайной

что мешает в этой схеме подключится к конфигурационным входам FPGA (я не первый, кто это заметил, просто дальше хочу вставить "мораль")

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

Автор: myq Mar 31 2005, 12:22

2yes
ну еще начнем с того, что они не продают свое изделие всем подряд. там завязки с ФСБ, речь не об этом.

(+ 2NeoN)Как ни крути, подключившись к конфигурационным ногам можно ВСЕГДА СЛИТЬ ЛЮБУЮ ПРОШИВКУ, совершенно неважно, что и чем шифруешь.

2acex2
2bbg
2fake
- какая разница, что там DES или AES. А где по вашему секретный ключ:
1) в САПРЕ и в ПЛИСе аппааратно зашит и не меняется
2) передается вместе с прошивкой smile.gif))
Ну и чего это за защита тогда??? *****, а не защита.

p.s.
тогда уж к слову.
использование CPLD тоже не гарантирует секретность прошивки (прошивки CPLD).

Автор: acex2 Mar 31 2005, 12:57

Цитата(myq @ Mar 31 2005, 09:22)
2yes
ну еще начнем с того, что они не продают свое изделие всем подряд. там завязки с ФСБ, речь не об этом.


Ну и зачем тогда вообще нужно было ставить защиту если там все так "подвязано"? Срубить лишние бабки, упомянув ключевое слово "шифрование"?

Цитата(myq @ Mar 31 2005, 09:22)
2acex2
2bbg
2fake
- какая разница, что там DES или AES. А где по вашему секретный ключ:
1) в САПРЕ и в ПЛИСе аппааратно зашит и не меняется
2) передается вместе с прошивкой smile.gif))
Ну и чего это за защита тогда??? *****, а не защита.


Ключи легко меняются, так как хранятся во внутренней RAM - для этого и нужна внешняя батарейка, чтобы они не пропали при отсутствии питания платы. Считать обратно из этой RAM ключи нельзя - только записать новые. Bit-файл прошивки шифруется после синтеза/разводки и записывается во внешнее EEPROM/Flash. При включении питания грузится в зашифрованном виде в FPGA и там расшифровывается. Какие здесь слабые места?

Автор: myq Mar 31 2005, 13:06

Цитата(acex2 @ Mar 31 2005, 12:57)
Ключи легко меняются, так как хранятся во внутренней RAM - для этого и нужна внешняя батарейка, чтобы они не пропали при отсутствии питания платы. Считать обратно из этой RAM ключи нельзя - только записать новые. Bit-файл прошивки шифруется после синтеза/разводки и записывается во внешнее EEPROM/Flash. При включении питания грузится в зашифрованном виде в FPGA и там расшифровывается. Какие здесь слабые места?
*


Те, о ком я упомянул, сделали это на Altere, а не на Xilinx-e.

К тому же у меня вопрос - как fpga расшифрует прошивку, если прошивки в ней еще никакой нет? (с xilinx знаком в большей степени теоретически, а отличие от altera)

Автор: _Sam_ Mar 31 2005, 13:17

Осложнить жизнь жаждущим вашу прошивку можно, используя ПЛИС и флэш в BGA корпусах.

Во-первых весьма затруднительно добраться до дорожек по которым ваша прошивка поступает в ПЛИС, а во вторых часть вашей разводки тоже будет спрятана.

Автор: acex2 Mar 31 2005, 14:10

2myq:

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

2_Sam_:

Так как алгоритм программирования известен, то прошивка из Flash легко снимается через JTAG, обычно выведенный на платах с FPGA (тем более в BGA корпусах).

Автор: Андрей Харитонов Mar 31 2005, 17:55

ну можете начать с www.semiresearch.com, www.microcode.ru немножко усилий и сами найдете еще десятки контор. Некоторые занимаются поджариванием, облучением, растворением в кислоте, микроскопированием и прочим рукоблудием, некоторые коммерческим использованием закладок в процессорах (Flash Pic Reader например для всеми любимых американских пиков ). если поусердствуйте, то найдете и способы чтения некоторых процев в домашних условиях.
по поводу секретиков винды начните знакомство с программ encase, ilook, ftk для начала, когда начнете вспоминать про детские страшилки, полазте по сайтам вирусописателей - там секретиков еще больше ну и т.д.
а про необъяснимые отключения связи в целых регионах в разгар некоторых наших военных компаний тоже не слышали? ладно пусть это будут детские страшилки, вспомните про них когда нибудь. Может вам страшилок myq подкинет - он тут громкие названия из трех букв пишет smile.gif
а вообще Neon прав - одна дружественная myqу контора могла бы еще более усилить защиту проекта, выкинув дорогую CPLD и прилепив на FPGAшку более дешевую бумажку с надписью "гостайна" и еще три магические буквы.
а продавать только в контору это конечно хорошо, сразу Калугин вспоминается smile.gif

Автор: acex2 Mar 31 2005, 19:07

Вот и я говорю - страшилки! Причем детские. Потому что вместо ссылок по поводу "у них на всех процах и плисах закладки стоят - че хочешь сделают и прошивку сдерут и из строя выведут, только что танцевать плисину не заставят, а на серьезном софте компиляторы в прошивку доп информацию с зашифрованным исходным кодом включают, так что и проблем с декомпиляцией особо не будет" только общие фразы и "притянутые за уши" программы для анализа логов, кукисов и удаленных файлов. Что касается semiresearch.com и др., то если бы они использовали заведомо установленные производителями чипов закладки, то не требовали бы несколько копий чипа для взлома.

Автор: Андрей Харитонов Apr 4 2005, 18:23

в обсуждении мелькал еще один способ:
3) конфигурация прогружается в ПЛИС, причем битстрим защищен от считывания, а при выключении питания конфигурация ПЛИС поддерживается с помощью аккумулятора
Достоинства:
- сильная защита данных
Недостатки:
- всякие геморрои с возможной потерей прошивки в процессе эксплуатации изделия

Автор: Андрей Харитонов Apr 4 2005, 18:39

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

Автор: 3.14 Apr 4 2005, 19:33

Я просто не понял почму содержимое FPGA при этом нельзя через JTAG прочитать?

Автор: acex2 Apr 4 2005, 19:49

Цитата(3.14 @ Apr 4 2005, 16:33)
Я просто не понял почму содержимое FPGA при этом нельзя через JTAG прочитать?
*


А вы поставьте FPGA в BGA корпусе и TDO на разъем не выводите wink.gif

Автор: 3.14 Apr 6 2005, 14:45

Итак, повтоюсь.

Эта тема возникает не в первый раз, поэтому предлагаю выделить, в качестве рекомендуемых, варианты. Добавить к этому опрос, кто как делал(делает) ну или кому какой вариант более симпатичен.

Способы защиты содержимого FPGA:
1) Использование семейств ПЛИС, в которых предусмотрена защита содержимого.
Достоинства:
Наивысшая степень защиты содержимого.
Недостатки:
(возможная) Смена производителя (среды разработки), большая стоимость.
2) Питание ядра всегда поддерживать (батарея, аккамулятор), ограничить доступ до JTAG пинов (использовать BGA или откусывать пины).
Достоинства:
Степень защиты близка к п.1.
Недостатки:
А вы сможете обеспечить такое питание?
3) Не закрывать прошивку FPGA, использовать внешнее "закрытое" устройство либо как часть проекта. либо как генератор ПСП, на основании работы которого принимать решение.
3.1) В качестве внешнего устройства использовать CPLD.
3.2) В качестве внешнего устройства использовать микроконтроллер.
У третьего метода возможна тьма вариантов, но в любом случае, они сводятся к тому, что в FPGA входит N линий, а выходит M линий. Если предположить что имеем ПСП которую "невозможно" вычислить, все равно, можно записать состояние этих линий. Нужно учитывать объем данных передаваемых через эти линии, следить за тем чтоб он не был слишком маленький.
Достоинства:
Можно применить к любой FPGA.
Недостатки:
Меньшая степень защиты, время на разработку "закрывашки".

Кто что добавит, исправит?

Автор: makc Apr 6 2005, 14:55

Цитата(3.14 @ Apr 6 2005, 17:45)
Итак, повтоюсь.

Эта тема возникает не в первый раз, поэтому предлагаю выделить, в качестве рекомендуемых, варианты. Добавить к этому опрос, кто как делал(делает) ну или кому какой вариант более симпатичен.

Способы защиты содержимого FPGA:

[skipped]

2) Питание ядра всегда поддерживать (батарея, аккамулятор), ограничить доступ до JTAG пинов (использовать BGA или откусывать пины).
  Достоинства:
    Степень защиты близка к п.1.
  Недостатки:
    А вы сможете обеспечить такое питание?

[skipped]

Кто что добавит, исправит?
*


Хочу добавить, что для этого способа возможно ограничение доступа к JTAG-принам при задании конфигурации некоторых видов ПЛИС. Так для Spartan 2 в опциях конфигурации пошивки есть возможность запретить Readback and Reconfiguration. (Хотя об этом в даташите ничего не написано).

Автор: Андрей Харитонов Apr 7 2005, 12:00

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

Возможно конечно идея не выдержит критики

Автор: 3.14 Apr 7 2005, 12:35

2 Андрей Харитонов
А как Вы себе представляете подмену блока?
Нужный блок, может быть распылен по всему битстрейму.
Скорее всего все сведется к огромному количеству битстреймов, исходя из вариантов нужных/ненужных блоков.

Автор: Андрей Харитонов Apr 10 2005, 08:59

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

Автор: 3.14 Apr 10 2005, 11:45

2 Андрей Харитонов

1. Вариант относится к категории 2.1
2. Если хотите его утвердить как имеющим шансы на существование, то укажите алгоритм "выделения" блока.

Автор: Vitus Apr 11 2005, 07:35

Под №1 все-таки следует назвать (С)!

Автор: FAE Apr 28 2005, 14:17

Используйте ACTEL !!! Там этой проблемы вообще не возникает, т.к. ПЛИС не требуется загружать каждый раз при включении питания, и , таким образом, нельзя перехватить поток данных. (www.actel.com)

Автор: des00 Apr 29 2005, 03:17

Цитата(FAE @ Apr 28 2005, 09:17)
Используйте ACTEL !!! Там этой проблемы вообще не возникает, т.к. ПЛИС не требуется загружать каждый раз при включении питания, и , таким образом, нельзя перехватить поток данных.  (www.actel.com)
*


Это то можно, но архитектура этих плис не совсем подходит для некоторых задач sad.gif((

Автор: alexr22b May 7 2005, 19:42

Очень скоро Xilinx выпустит Spartan 3 с внутренним флашем. Будет на $.70 дороже обичного в серии. Да и lattice уже имеет fpga's с встроенным флашем

Автор: makc May 7 2005, 20:04

Цитата(alexr22b @ May 7 2005, 22:42)
Очень скоро Xilinx выпустит Spartan 3 с внутренним флашем. Будет на $.70 дороже обичного в серии. Да и lattice уже имеет fpga's с встроенным флашем
*


А откуда такая информация? Можно ссылочку?

Автор: alexr22b May 8 2005, 17:08

Цитата(makc @ May 7 2005, 23:04)
Цитата(alexr22b @ May 7 2005, 22:42)
Очень скоро Xilinx выпустит Spartan 3 с внутренним флашем. Будет на $.70 дороже обичного в серии. Да и lattice уже имеет fpga's с встроенным флашем
*


А откуда такая информация? Можно ссылочку?
*



Информация от xilinx rep. ссылочки нету потому как рано еше smile.gif

Автор: BSV May 10 2005, 21:57

А зачем держать под батарейкой ПЛИС? Если необходимо защитить не плату, а устройство (в корпусе), то достаточно питать лишь FLASH и стереть ее при попытке вскрытия/включения без корпуса.

Что касаемо гостайны - основным объектом секретности во всех системах являются ключи. На них базируется стойкость системы (поскольку алгоритм рано или поздно становится известен противнику) - закон Кирхгофа, если не ошибаюсь. А если прошивка, которую необходимо зашивать при производстве имеет гриф, то такой же гриф будет и у устройства - следовательно, возникнут проблемы с его производством, хранением, перевозкой и т.п.

Промелькнула еще здравая идея с частичным перепрограммированием ПЛИС, хотя непонятно, как это использовать (может ли ПЛИС программировать сама себя без участия внешних ног, например, через JTAG?).

Хотя, если подумать, даже если FLASH будет внутри корпуса, наверняка найдутся методы, как оттуда отковырять прошивку, все дело лишь в цене!

Автор: Shread May 20 2005, 21:02

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

Цитата
Промелькнула еще здравая идея с частичным перепрограммированием ПЛИС, хотя непонятно, как это использовать (может ли ПЛИС программировать сама себя без участия внешних ног, например, через JTAG?).

Хотя, если подумать, даже если FLASH будет внутри корпуса, наверняка найдутся методы, как оттуда отковырять прошивку, все дело лишь в цене!

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

Автор: kas May 23 2005, 13:18

Тут уже мелькало подобное. У меня, например, сделано так: в прошивке есть возможность доконфигурировать ее из вне - не критичные к быстродействию, но несомненно, влияющие на работоспособность блоки. В общем, накладных расходов не так уж и много. Осталось только защитить обмен между ПЛИС и другим управляющим устройством. В соответствии с заданными требованиями к мерам по обеспечению секретности.

И еще, тут, по моему неучли человеческий фактор. Криптостойкость, скорее всего, будет расти. И очень скоро окажется что человека "сломать" окажется проще/дешевле.

P.S. Если вы хотите надежно защитить свой сервер, то отключите его от всего, спрячьте в сейф, поставте кучу охраны... и все равно сломают.

Автор: makc May 23 2005, 13:46

Цитата(kas @ May 23 2005, 16:18)
Тут уже мелькало подобное. У меня, например, сделано так: в прошивке есть возможность доконфигурировать ее из вне - не критичные к быстродействию, но несомненно, влияющие на работоспособность блоки.  В общем, накладных расходов не так уж и много. Осталось только защитить обмен между ПЛИС и другим управляющим устройством. В соответствии с заданными требованиями к мерам по обеспечению секретности.
*


Не могли бы Вы рассказать по-подробнее, каким образом реализуется возможность доконфигурации ПЛИС?

Автор: Shread May 24 2005, 03:38

А есть какие-нибудь варианты, переконфигурировать плис, с помошью уже залитого в нее микрокода: Т.е в обычную sram плис залить прошивку, которая будет управлять загрузкой туда же, реальной прошивки(а-ля BSL)?

Автор: kas May 24 2005, 03:43

Цитата(makc @ May 23 2005, 21:46)
Цитата(kas @ May 23 2005, 16:18)
Тут уже мелькало подобное. У меня, например, сделано так: в прошивке есть возможность доконфигурировать ее из вне - не критичные к быстродействию, но несомненно, влияющие на работоспособность блоки.  В общем, накладных расходов не так уж и много. Осталось только защитить обмен между ПЛИС и другим управляющим устройством. В соответствии с заданными требованиями к мерам по обеспечению секретности.
*


Не могли бы Вы рассказать по-подробнее, каким образом реализуется возможность доконфигурации ПЛИС?
*



Все очень просто. Делаю схему с избыточными связями. Например, генератор ПСП. В генераторе предусмотрена возможность задавать любой полином, любое начальное состояние, любое состояние по достижению которого регистр примет начальное состояние и снимать ПСП с любого отвода регистра. После конфигурации кристала я прогружаю регистры которые отвечают за те или иные параметры. Тем самым получаю нужную мне ПСП. Которую, при необходимости, достаточно легко изменить.

Автор: des00 May 24 2005, 03:47

Цитата(kas @ May 23 2005, 22:43)
Цитата(makc @ May 23 2005, 21:46)
Цитата(kas @ May 23 2005, 16:18)
Тут уже мелькало подобное. У меня, например, сделано так: в прошивке есть возможность доконфигурировать ее из вне - не критичные к быстродействию, но несомненно, влияющие на работоспособность блоки.  В общем, накладных расходов не так уж и много. Осталось только защитить обмен между ПЛИС и другим управляющим устройством. В соответствии с заданными требованиями к мерам по обеспечению секретности.
*


Не могли бы Вы рассказать по-подробнее, каким образом реализуется возможность доконфигурации ПЛИС?
*



Все очень просто. Делаю схему с избыточными связями. Например, генератор ПСП. В генераторе предусмотрена возможность задавать любой полином, любое начальное состояние, любое состояние по достижению которого регистр примет начальное состояние и снимать ПСП с любого отвода регистра. После конфигурации кристала я прогружаю регистры которые отвечают за те или иные параметры. Тем самым получаю нужную мне ПСП. Которую, при необходимости, достаточно легко изменить.
*


а можно поподробнее ?? какова длина полинома, кол-во данных для его смены и т.д.? И ИМХО это те же яйца, только сбоку "Осталось только защитить обмен между ПЛИС и другим управляющим устройством" - чем это отличаеться от "осталось защитить обмен между конф. микросхемой и ПЛИС" ?

Автор: kas May 24 2005, 05:56

Цитата(des00 @ May 24 2005, 11:47)
"Осталось только защитить обмен между ПЛИС и другим управляющим устройством" - чем это отличаеться от "осталось защитить обмен между конф. микросхемой и ПЛИС" ?
*


ИМХО. Не совсем. В данном случае можно организовать шифрование/дешифрование информации уже с участием самой ПЛИС как готового устройства, а не конфигурируемого.

В случае обмена между ПЛИС и конф. микросхемой структура данных и контакты известны.

А в моем случае надо знать структуру управляющих кадров/контактов. Сложность получения этих данных многократно выше сложности получения "прошивки" ПЛИС.

Автор: des00 May 24 2005, 06:49

Цитата
ИМХО. Не совсем. В данном случае можно организовать шифрование/дешифрование информации уже с участием самой ПЛИС как готового устройства, а не конфигурируемого.

Хмм а вот здесь можно поподробнее ?? Какий именно алгоритм и с какой длинной ключа вы собираетесь пользовать ? А прикидывали ли вы во что это выльеться ?

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


Хмм может мы спорим о разных вещах, но если меня будет интеросовать копирование именно вашего устройства, то я солью прошивку вашей фпга и коды управления фпга., именно с этой прошивкой. И какая мне разница чем они закодированны и какой формат они имеют.
Или вы имеете в виду накинуть на все это еще и алгоритм динамической смены ключа ?? то собираетесь ли вы менять весь ключ ? как вы синхронизируете смену ключа в ФПГА и МК и т.д. ?

Автор: makc May 24 2005, 06:49

Цитата(kas @ May 24 2005, 08:56)
Цитата(des00 @ May 24 2005, 11:47)
"Осталось только защитить обмен между ПЛИС и другим управляющим устройством" - чем это отличаеться от "осталось защитить обмен между конф. микросхемой и ПЛИС" ?
*


ИМХО. Не совсем. В данном случае можно организовать шифрование/дешифрование информации уже с участием самой ПЛИС как готового устройства, а не конфигурируемого.

В случае обмена между ПЛИС и конф. микросхемой структура данных и контакты известны.

А в моем случае надо знать структуру управляющих кадров/контактов. Сложность получения этих данных многократно выше сложности получения "прошивки" ПЛИС.
*



Если я правильно понял, то в описываемом Вами случае ПЛИС выполняет роль шифратора, параметры которого (ключ и пр.) прогружаются уже после того, как прошла конфигурация самой ПЛИС. Как Вы правильно заметили, при обмене между ПЛИС и конфигурационной памятью все известно - и структура, и контакты, т.е. можно совершенно спокойно снять дамп прошивки ПЛИС. При этом получается, что вся секретность строится лишь на структуре управляющих кадров и контактов. Но я не могу понять, почему Вы считаете, что "Сложность получения этих данных многократно выше сложности получения "прошивки" ПЛИС."? Ведь если есть возможность получить прошивку ПЛИС, которая получает эти кадры, из нее можно будет выяснить через какие контакты эти кадры приходят и как они обрабатываются. Т.е. останется только перехватить поток этих ключевых кадров...

Да, я согласен, что это несколько затрудняет исследование ПЛИС. Но все-таки это не решает основной проблемы - защиты данных конфигурации ПЛИС. Это, скорее, описание решения задачи защиты других данных, не относящихся к ПЛИС и ее конфигурации.

Автор: kas May 24 2005, 10:24

Цитата(des00 @ May 24 2005, 14:49)
Хмм может мы спорим о разных вещах, но если меня будет интеросовать копирование именно вашего устройства, то я солью прошивку вашей фпга и коды управления фпга., именно с этой прошивкой. И какая мне разница чем они закодированны и какой формат они имеют.
Или вы имеете в виду накинуть на все это еще и алгоритм динамической смены ключа ?? то собираетесь ли вы менять весь ключ ? как вы синхронизируете смену ключа в ФПГА и МК и т.д. ?
*


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

Автор: des00 May 24 2005, 10:49

Цитата(kas @ May 24 2005, 05:24)
Цитата(des00 @ May 24 2005, 14:49)
Хмм может мы спорим о разных вещах, но если меня будет интеросовать копирование именно вашего устройства, то я солью прошивку вашей фпга и коды управления фпга., именно с этой прошивкой. И какая мне разница чем они закодированны и какой формат они имеют.
Или вы имеете в виду накинуть на все это еще и алгоритм динамической смены ключа ?? то собираетесь ли вы менять весь ключ ? как вы синхронизируете смену ключа в ФПГА и МК и т.д. ?
*


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



Ну в таком случае, ваш вариант за уши притянут к теме обсуждения smile.gif)
Т.к. в вашем случае вопрос стоит не о в защите прошивки ПЛИС, а в защите всего програмно аппаратного блока. Так стоит ли огород городить ??
А тема взлома мк это отдельный разговор.....

Автор: kas May 25 2005, 05:14

Цитата(des00 @ May 24 2005, 18:49)
Ну в таком случае, ваш вариант за уши притянут к теме обсуждения smile.gif)
Т.к. в вашем случае вопрос стоит не о в защите прошивки ПЛИС, а в защите всего програмно аппаратного блока.  Так стоит ли огород городить ??
А тема взлома мк это отдельный разговор.....
*



Вопрос стоял о защите интелектуальной собственности. В какой-то степени мне удалось защитить свою систему от простого копирования.
Если попытаться развивать дальше данное направление, но уже в сторону защиты исключительно аппаратной части (прошивки ПЛИС), то неисключено, что можно найти способ, который в значительной степени усложнит жизнь так называемым "копирам". В конечном итоге все будет определяться ценой и временем затраченными на подготовку к копированию продукта.

В принципе можно вообще залить всю плату "эпоксидкой" или чем-нибудь покрепче, тогда копировать даже прошивку ПЛИС станет несколько сложнее.

Автор: des00 May 25 2005, 06:06

Цитата(kas @ May 25 2005, 00:14)
Вопрос стоял о защите интелектуальной собственности. В какой-то степени мне удалось защитить свою систему от простого копирования.
Если попытаться развивать дальше данное направление, но уже в сторону защиты исключительно аппаратной части (прошивки ПЛИС), то неисключено, что можно найти способ, который в значительной степени усложнит жизнь так называемым "копирам". В конечном итоге все будет определяться ценой и временем затраченными на подготовку к копированию продукта.

В принципе можно вообще залить всю плату "эпоксидкой" или чем-нибудь покрепче, тогда копировать даже прошивку ПЛИС станет несколько сложнее.
*

хмм вопрос стоял " Защита данных FPGA. ...". Я конечно понимаю что это входит во множество "защита интелектуальной собственности", но тем не менее согласитесь что это разные вещи.
Вам удалось защитить свою систему как говориться "от дурака", т.е. от грубого, не интелектуального копирования,причем ценой не нужного усложнения и использования ресурсов ПЛИС и МК. (почему я уже говорил).
Начет заливки платы чем нибудь - это пройденый этап, не работает.

А насчет цен так давно известно что основное правило взлома :
"Стоимость взлома информации должна быть много меньше стоимости самой информации " , иначе это не имеет комерческого смысла
smile.gif)

Автор: kas May 25 2005, 10:17

Цитата(des00 @ May 25 2005, 14:06)
Вам удалось защитить свою систему как говориться "от дурака", т.е. от грубого, не интелектуального копирования,причем ценой не нужного усложнения и использования ресурсов ПЛИС и МК. (почему я уже говорил).
Начет заливки платы чем нибудь - это пройденый этап, не работает.
*


Вы считаете что можно защитить систему без усложнения программной и/или аппаратной части?

Автор: des00 May 25 2005, 10:54

Цитата(kas @ May 25 2005, 05:17)
Вы считаете что можно защитить систему без усложнения программной и/или аппаратной части?
*


Нет я так не считаю, но мое ИМХО "стоимсть защиты информации должна быть ниже стоимостьи самой информации" иначе сие не имеет практического смысла.
ИМХО в вашем случае вы навернули сложную систему защиты(как по алгоритму, так и по ресурсам), в качестве системы защиты от дурака. ИМХО это не есть нерациональный подход. smile.gif

Автор: kas May 26 2005, 05:45

Цитата(des00 @ May 25 2005, 18:54)
Нет я так не считаю, но мое ИМХО "стоимсть защиты информации должна быть ниже стоимостьи самой информации" иначе сие не имеет практического смысла.
ИМХО в вашем случае вы навернули сложную систему защиты(как по алгоритму, так и по ресурсам), в качестве системы защиты от дурака. ИМХО это не есть нерациональный подход. smile.gif
*


ИМХО. Ничего сложного в этой защите нет, и аппаратные ресурсы потрачены не зря. В добавок ко всему я получил достаточно гибкую систему (что являлось одним из требований ТЗ).

Автор: Андрей Харитонов May 26 2005, 09:15

если я правильно понял, то kas просто рассказал нам как он реализовал метод 3.2

Цитата
3) Не закрывать прошивку FPGA, использовать внешнее "закрытое" устройство либо как часть проекта. либо как генератор ПСП, на основании работы которого принимать решение.
3.1) В качестве внешнего устройства использовать CPLD.
3.2) В качестве внешнего устройства использовать микроконтроллер.

по преложенной ранее 3.14 классификации
и естественно ни о какой "доконфигурации" здесь речи быть не может.

Автор: Pruga Jun 3 2006, 11:16

Насущная потребность заставила меня поднять из под спуда эту тему. А тема актуальна и по сей день. Постановка задачи остается той же: необходимо обеспечить защиту прошивки ПЛИС, желательно более простыми методами. Немного поискав на сайте Xilinx'а обнаружил следующий документ: http://electronix.ru/redirect.php?http://direct.xilinx.com/bvdocs/appnotes/xapp780.pdf

В документе описан способ защиты от копирования с использованием внешней EEPROM памяти, в которой хранится секретный ключ. Если говорить кратко то суть способа в следующем: на стадии разработки проекта в EEPROM записывается 64-бит секретный ключ, который считать обратно невозможно. В проект на FPGA добавляется некоторое устройство (IFF), которое хранит такой же ключ. После загрузки по открытому каналу, открытой прошивки в FPGA, IFF посылает некторую случ. послед. в EEPROM и шифрует ее же на секретном ключе (который зашивается вместе с прошивкой). EEPROM также шифрует принятую послед. на том же секретном ключе (используется алгоритм SHA-1) и возвращает обратно. IFF сравнивает полученную от EEPROM последовательность с вычисленной ранее, если они сходятся - выдает сигнал глобального разрешения работы проекта.
Примеры кода на VHDL для такого способа организации защиты также приводятся. http://electronix.ru/redirect.php?http://www.xilinx.com/bvdocs/appnotes/xapp780.zip

Итак в качетсве дополнительного ресурса для защиты используется одна микросхема с возможностью шифровки данных (в очень миниатюрном корпусе - 2 вывода) и некоторый ресурс FPGA (100 Slices+1кб блочной памяти+1пин). Остается только оценить степень защищенности такого способа. Сможет ли гипотетический РЭинженер перехватив зашифрованную послед. расшифровать ключ?? Или подключив логический анализатор и перехватив конфигурационную прошивку извлечь ключ оттуда??

Автор: Maksim Jun 3 2006, 12:38

Цитата(Pruga @ Jun 3 2006, 15:16) *
Насущная потребность заставила меня поднять из под спуда эту тему. А тема актуальна и по сей день. Постановка задачи остается той же: необходимо обеспечить защиту прошивки ПЛИС, желательно более простыми методами. Немного поискав на сайте Xilinx'а обнаружил следующий документ: http://electronix.ru/redirect.php?http://direct.xilinx.com/bvdocs/appnotes/xapp780.pdf

В документе описан способ защиты от копирования с использованием внешней EEPROM памяти, в которой хранится секретный ключ. Если говорить кратко то суть способа в следующем: на стадии разработки проекта в EEPROM записывается 64-бит секретный ключ, который считать обратно невозможно. В проект на FPGA добавляется некоторое устройство (IFF), которое хранит такой же ключ. После загрузки по открытому каналу, открытой прошивки в FPGA, IFF посылает некторую случ. послед. в EEPROM и шифрует ее же на секретном ключе (который зашивается вместе с прошивкой). EEPROM также шифрует принятую послед. на том же секретном ключе (используется алгоритм SHA-1) и возвращает обратно. IFF сравнивает полученную от EEPROM последовательность с вычисленной ранее, если они сходятся - выдает сигнал глобального разрешения работы проекта.
Примеры кода на VHDL для такого способа организации защиты также приводятся. http://electronix.ru/redirect.php?http://www.xilinx.com/bvdocs/appnotes/xapp780.zip

Итак в качетсве дополнительного ресурса для защиты используется одна микросхема с возможностью шифровки данных (в очень миниатюрном корпусе - 2 вывода) и некоторый ресурс FPGA (100 Slices+1кб блочной памяти+1пин). Остается только оценить степень защищенности такого способа. Сможет ли гипотетический РЭинженер перехватив зашифрованную послед. расшифровать ключ?? Или подключив логический анализатор и перехватив конфигурационную прошивку извлечь ключ оттуда??


А, где, вы, в FPGA собрались брать "некторую случ. послед"???

Автор: 3.14 Jun 3 2006, 12:50

2 Maksim
Дык ее должна генерировать корка-закрывашка, да даже если и самому прийдется, в чем особо сложность родить M-последовательность.

Автор: des00 Jun 3 2006, 12:54

Все зависит от длинны ключа и длинны последовательности

Автор: Maksim Jun 3 2006, 13:03

Цитата(3.14 @ Jun 3 2006, 16:50) *
2 Maksim
Дык ее должна генерировать корка-закрывашка, да даже если и самому прийдется, в чем особо сложность родить M-последовательность.


Это уже не случайность smile.gif
Случайность, будет если при каждом загрузки FPGA последовательность будет разной, а для этого надо иметь память в FPGA , чтобы хотя-бы помнить что было раньше (или счётчик, на худой конец)
Или я чего-то не догоняю.... cranky.gif

вся защита тут держится на даласовской таблетке, а не на ПЛИСине.

Автор: 3.14 Jun 3 2006, 13:27

2 Maksim
Как это нет случайности smile.gif ...
После включения питания FPGA рожает, насколько я успел понять, псевдослучайную последовательность адресов, на основе ключа который "забит" в корке. На основе этого же ключа рождена прошивка EEPROM. После чтения данные сверяются и ...
Хотя может я чего сам не понял, потому как получается, записываем поток между FPGA<->EEPROM, отыскиваем данные которые вываливаются из EEPROM, потом контроллером имитируем саму EEPROM подставляя записанные двнные.
С другой стороны, "закрывашка" основана на PicoBlaze так что можно еще "сюрпризы" добавить.

А защиту, кроме как у виртекса, в самой FPGA не реализуешь.

Автор: Pruga Jun 3 2006, 17:21

Цитата(Maksim @ Jun 3 2006, 15:38) *
А, где, вы, в FPGA собрались брать "некторую случ. послед"???
Случайную последовательность генерирует FPGA, для этого в устройстве, добавляемого к проекту есть ГСЧ. В файле с VHDL кодами сказано "This module generates a serial stream of random (not pseudorandom) bits" т.е что он генерирует не псевдослучайную а "true random" - "истинно" случайную (такое бывает?). Я пока не разобрался как работает этот генератор, прилагаю его код ниже.

Цитата(3.14 @ Jun 3 2006, 16:27) *
Хотя может я чего сам не понял, потому как получается, записываем поток между FPGA<->EEPROM, отыскиваем данные которые вываливаются из EEPROM, потом контроллером имитируем саму EEPROM подставляя записанные двнные.
При включении питания ПЛИС выдает каждый раз разную последовательность (генерируется ГСЧ). Следоваетельно и EEPROM возвращает каждый раз разный хэш. Поэтому идея с контролером сработает только если ГСЧ повторится, что по идеи должно быть исключено (или вероятность близка к 0).

 RND.rar ( 2.27 килобайт ) : 373
 

Автор: Maksim Jun 3 2006, 20:54

to 3.14

Ключ есть, полином есть, а сколько тактов это крутится?? Я так думаю каждый раз одинаковое количество раз. smile.gif

to Pruga

код я посмотрел - там полином и... указание и маршрут разводки 2-х цепей cranky.gif
и, что там есть неопределённость?
и ещё ... cRING1<=transport TO01(RING1) after tNET1+tILOX-100 ps;
это как понимать? blink.gif

Автор: des00 Jun 4 2006, 06:55

Цитата(Maksim @ Jun 3 2006, 15:54) *
to 3.14

Ключ есть, полином есть, а сколько тактов это крутится?? Я так думаю каждый раз одинаковое количество раз. smile.gif

to Pruga

код я посмотрел - там полином и... указание и маршрут разводки 2-х цепей cranky.gif
и, что там есть неопределённость?
и ещё ... cRING1<=transport TO01(RING1) after tNET1+tILOX-100 ps;
это как понимать? blink.gif


ХММ по идее это для моделирования, похоже они, ручной разводкой, играют на нарушении tsu, th тригеров и получают рандом smile.gif

Автор: makc Jun 4 2006, 07:41

Цитата(des00 @ Jun 4 2006, 10:55) *
ХММ по идее это для моделирования, похоже они, ручной разводкой, играют на нарушении tsu, th тригеров и получают рандом smile.gif


Да, где-то уже мелькала идея реализации ФДСЧ в ПЛИС с помощью игры на задержках элементов. Там, если мне не изменяет память, предлагалось сделать генератор на ЛЯ ПЛИС и использовать его колебания периода (он будет нестабилен), для получения битов случайной последовательности. Но на сколько это будет качественная случайная последовательность сказать сложно.

Автор: Maksim Jun 4 2006, 11:23

остаётся только загнать этот код в ПЛИСину - и вытащить наружу эти биты, а потом обсчитать - и будет ясно насколько случайна эта последовательность smile.gif

Автор: makc Jun 4 2006, 11:34

Цитата(Maksim @ Jun 4 2006, 15:23) *
остаётся только загнать этот код в ПЛИСину - и вытащить наружу эти биты, а потом обсчитать - и будет ясно насколько случайна эта последовательность smile.gif


Боюсь, что качество последовательности может меняться в зависимости от конкретного экземпляра ПЛИСины. sad.gif Но для рассматриваемых целей защиты прошивки ПЛИС это не будет иметь решающего значения, т.к. на сколько я понимаю, для решения этой задачи нужно иметь каждый раз разные вектора для проверки и разрешения работы прошивки ПЛИС.

Автор: Maksim Jun 4 2006, 11:45

Цитата(makc @ Jun 4 2006, 15:34) *
Боюсь, что качество последовательности может меняться в зависимости от конкретного экземпляра ПЛИСины. sad.gif Но для рассматриваемых целей защиты прошивки ПЛИС это не будет иметь решающего значения, т.к. на сколько я понимаю, для решения этой задачи нужно иметь каждый раз разные вектора для проверки и разрешения работы прошивки ПЛИС.


это даже хорошо, что оно будет меняться от ПЛИСа к ПЛИСу - это даже очень хорошо. Главное в этом деле непредсказуемость tongue.gif
.... но надо провести эксперимент, у меня есть парочка отладочных плат на Спартане-3, попробую что-нибудь сделать, но не гарантирую что ответ будет в ближайшую неделю unsure.gif
вообщем, кто заинтересован - может распределить фронт работ smile.gif
На неделе узнаю у математиков сколько им надо случайного числа, чтобы оценить его качество для такой задачи

Автор: DmitryR Jun 5 2006, 11:15

Послушайте, а почему не использовать встроенный в, например Virtex/Stratix/ProASIC алгоритм? Ставится батарейка (а в ProASIC и без батарейки), с помощью нее в ПЛИС поддерживаются ключи декодирования, зашитые туда разработчиком. Прошивка кодируется парным ключом и зашивается в обычное конфигурационное PROM. Перехватывайте на здоровье, ключ - 128 бит. Батарейки хватает на десятилетия. Или я пропустил место в обсуждениях, где это было отметено?

Автор: Maksim Jun 5 2006, 13:07

Цитата(DmitryR @ Jun 5 2006, 15:15) *
Послушайте, а почему не использовать встроенный в, например Virtex/Stratix/ProASIC алгоритм? Ставится батарейка (а в ProASIC и без батарейки), с помощью нее в ПЛИС поддерживаются ключи декодирования, зашитые туда разработчиком. Прошивка кодируется парным ключом и зашивается в обычное конфигурационное PROM. Перехватывайте на здоровье, ключ - 128 бит. Батарейки хватает на десятилетия. Или я пропустил место в обсуждениях, где это было отметено?

Всё дело в цене микросхем (для Xilinx) - Actel это несколько другая архитектура.
Посмотрите цены на Spartan-3E и Virtex - и всё станет ясно wink.gif

Автор: v_mirgorodsky Jun 6 2006, 07:31

Степень "случайности" генерируемой последовательности для конкретно этой задачи значения не имеет. Если два соседних числа отличаются хотя бы одним битом, то SHA1 даст абсолютно разные решения. Даже если генерируемая последовательность будет не вполне "случайна", то период ее все равно будет много больше реально "перебираемых" вариантов.

Гораздо более серьезным вопросом является возможность считывания кода из EEPROM под электронным микроскопом. Если верить моим знакомым, то http://electronix.ru/redirect.php?http://www.semiresearch.com/ за ATmega с битом защиты у них просили около 10-12k$ - не думаю, что далласовская EEPROM-ка будет стоить намного дороже.

Автор: Pruga Jun 6 2006, 15:00

Сегодня разбирался с ГСЧ (RND.vhd). Загрузил весь проект в ISE, создал тестбенч для RND.vhd, на вход клока подал 50 МГц, а с выхода снимал случайную последовательность. При функциональном моделировании получается некоторая последовательность, (на случайность не проверял).

Цитата(Maksim @ Jun 3 2006, 23:54) *
to 3.14

Ключ есть, полином есть, а сколько тактов это крутится?? Я так думаю каждый раз одинаковое количество раз. smile.gif

to Pruga

код я посмотрел - там полином и... указание и маршрут разводки 2-х цепей cranky.gif
и, что там есть неопределённость?
и ещё ... cRING1<=transport TO01(RING1) after tNET1+tILOX-100 ps;
это как понимать? blink.gif
Похоже эти задержки моделируют реальные, для выполнения функционального моделирования. В комментарии написано: "--timing simulation values for 2VP-6"

Вообщем работу этого генератора я себе представляю следующим образом: генерация случайных чисел базируется на создании М-последовательности (20-ти разрядный регистр (соответствующий примитивному полиному x^20+x^3+1), с обратными связями от 20 и 3 разряда, заведенными на вход через XOR4 элемент (выполненным на LUT)). Однако регистры с линейными обратными связями генерируют псевдослучайные последовательности, с периодом 2^n-1 (n-число разрядов), и то если соответсвующий многочлен примитивен, поэтому как я понял к обратной связи (2 оставшимся входам элемента XOR), подсоединяются 2 сигнала Ring1 и Ring2, которые представляют собой замкнутые петли (сигнал с выхода инвертора подается на его вход), о чем мне и сообщил синтезатор. Цепи Ring1 и Ring2 оттрасированы специальным образом (наверно для того, чтобы задержка была примерно известна). Таким образом к М-последовательности подмешиваются 2 сигнала, состояние которых в каждый момент времени неизвестно, чем видимо и обеспечивается "истинно" случайная последовательность.


Цитата(DmitryR @ Jun 5 2006, 14:15) *
Послушайте, а почему не использовать встроенный в, например Virtex/Stratix/ProASIC алгоритм? Ставится батарейка (а в ProASIC и без батарейки), с помощью нее в ПЛИС поддерживаются ключи декодирования, зашитые туда разработчиком. Прошивка кодируется парным ключом и зашивается в обычное конфигурационное PROM. Перехватывайте на здоровье, ключ - 128 бит. Батарейки хватает на десятилетия. Или я пропустил место в обсуждениях, где это было отметено?
Однако в Спартанцах никаких встроенных средств защиты нет. Поэтому приходится мудрить. Кстати Вы пробовали метод с батарейкой на практике?? Не было ли сбоев, связанных с порчей прошивки??


Цитата(v_mirgorodsky @ Jun 6 2006, 10:31) *
Степень "случайности" генерируемой последовательности для конкретно этой задачи значения не имеет. Если два соседних числа отличаются хотя бы одним битом, то SHA1 даст абсолютно разные решения. Даже если генерируемая последовательность будет не вполне "случайна", то период ее все равно будет много больше реально "перебираемых" вариантов.

Гораздо более серьезным вопросом является возможность считывания кода из EEPROM под электронным микроскопом. Если верить моим знакомым, то http://electronix.ru/redirect.php?http://www.semiresearch.com/ за ATmega с битом защиты у них просили около 10-12k$ - не думаю, что далласовская EEPROM-ка будет стоить намного дороже.
Это значит, что если стоимость защищаемой информации меньше, чем эта сумма то защита хорошая smile.gif

Автор: Maksim Jun 6 2006, 18:56

проект с полином работает - проверил на 3-х платах со Спартаном-3 (200т.вентилей)
на выходе при каждом включении-выключении -появляются разные значения smile.gif
"качество" шума не обсчитывал, еепромку не подключал...
...так, что ... работает cool.gif мона пользовать

Автор: 3.14 Jun 6 2006, 19:30

Ребята, дык в любом случае, по проволочке будет бпродить как адрес так и сами "секретные" данные. Тут никакого микроскопа не надо, чтобы за "миллион" включений платы всю ПЗУ скопировать.

Автор: Maksim Jun 6 2006, 19:46

Цитата(3.14 @ Jun 6 2006, 23:30) *
Ребята, дык в любом случае, по проволочке будет бпродить как адрес так и сами "секретные" данные. Тут никакого микроскопа не надо, чтобы за "миллион" включений платы всю ПЗУ скопировать.

по каким проводам?
Вместо далласовской еепромки, можно свой микроконтроллер ставить со своим алгоритмом аутентифткации

Автор: 3.14 Jun 6 2006, 19:54

Цитата
по каким проводам?
Это шарада такая smile.gif ?
Цитата
Вместо далласовской еепромки, можно свой микроконтроллер ставить со своим алгоритмом аутентифткации
Прелесь сего, что ничего изобретать самому не надо. Если уж контроллер ставить, дык и такой метод не к чему. Ну а "истинное" случайное зерно можно другими способами рожать, например фиксировать значение счетчика (тактирующегося от глобальной тактовой) по активации LOCK у DLL/DCM ...

Автор: Maksim Jun 6 2006, 20:10

Цитата(3.14 @ Jun 6 2006, 23:54) *
Цитата
по каким проводам?
Это шарада такая smile.gif ?
blink.gif
Цитата
Вместо далласовской еепромки, можно свой микроконтроллер ставить со своим алгоритмом аутентифткации
Прелесь сего, что ничего изобретать самому не надо. Если уж контроллер ставить, дык и такой метод не к чему. Ну а "истинное" случайное зерно можно другими способами рожать, например фиксировать значение счетчика (тактирующегося от глобальной тактовой) по активации LOCK у DLL/DCM ...


Лучше иметь случайность которая не зависит от внешних воздействий (частота и т.д.) -
температура тут не всчёт, так как такой генератор наверное будет от неё зависить

Автор: des00 Jun 7 2006, 04:04

Цитата(3.14 @ Jun 6 2006, 14:30) *
Ребята, дык в любом случае, по проволочке будет бпродить как адрес так и сами "секретные" данные. Тут никакого микроскопа не надо, чтобы за "миллион" включений платы всю ПЗУ скопировать.


почему ? ИМХО все дело будет в длинне ключа и длинне последовательности, которая для этого используеться.
Хотя я солидарен с фразой

Если стоимость защищаемой информации меньше, чем эта сумма на взлом информаци, то можно считать что задача выполнена.

Автор: 3.14 Jun 7 2006, 12:43

2 Maksim
Время за которое DLL "захватывает" входной сигнал, зависит и от напряжения и от температуры и от фазы луны smile.gif

Цитата
почему ? ИМХО все дело будет в длинне ключа и длинне последовательности, которая для этого используеться.
Хотя я солидарен с фразой
Разве EEPROM может чего то шифровать? Она просто выдает свое содержимое (или я что упустил?) ...

Автор: Pruga Jun 7 2006, 16:12

Цитата(Maksim @ Jun 6 2006, 21:56) *
проект с полином работает - проверил на 3-х платах со Спартаном-3 (200т.вентилей)
на выходе при каждом включении-выключении -появляются разные значения smile.gif
"качество" шума не обсчитывал, еепромку не подключал...
...так, что ... работает cool.gif мона пользовать
Скажите пожалуйста какую тактовую частоту Вы подавали на вход?? И какой длины получалется выходная последовательность??

Цитата(3.14 @ Jun 7 2006, 15:43) *
2 Maksim
Время за которое DLL "захватывает" входной сигнал, зависит и от напряжения и от температуры и от фазы луны smile.gif

Цитата
почему ? ИМХО все дело будет в длинне ключа и длинне последовательности, которая для этого используеться.
Хотя я солидарен с фразой
Разве EEPROM может чего то шифровать? Она просто выдает свое содержимое (или я что упустил?) ...
Может. EEPROM имеет на борту блок, осуществляющий шифрование по алгоритму SHA-1. На нем все и держится.

Автор: 3.14 Jun 7 2006, 18:46

Упс, извиняюсь за клевету smile.gif
Жалко только что стоят они ~3$

 auth.rar ( 1.6 мегабайт ) : 494
 

Автор: Maksim Jun 7 2006, 18:52

2 'Pruga'
частота 50 мгц, но это не важно - главное что на входе полинома постоянно меняющиеся данные.
Длину съёма обычно берут 2N (N-степень полинома), т.е. чтолько тактов крутят в пустую полином, а потом делают съём данных. Количество данных берут - кому сколько надо smile.gif
Полином можно тоже любой брать - и с большим основанием

Автор: Евгений Николаев Jun 9 2006, 11:28

Почему-то ни разу не задавался этим вопросом, хотя работаю с ПЛИСками постоянно.
Если бы делать, выбрал бы такой путь:
1. FPGA+CPLD (flash внутри). Допустим, Cyclone и MAXII 240-ая. (цена этой CPLDшки около 6-7 у.е.)
2. FPGA грузится свободно, т.е. открыто и сразу начинает работать. (это важно для быстро стартующих систем).
3. Через некоторое время FPGA начинает читать последовательность из внутренней flash CPLD, одновременно передавая в CPLD некие данные, 99% которых - функция обычного ГенСлЧисл (шум, проще говоря), а 1% - управляющие команды (для чего они нужны - позже).
4. В FPGA и в CPLD реализованы несколько рекурсивных функций. В процессе чтения последовательности одинаковые алгоритмы определяют - по какому из заложенных законов были сгенерированы интервалы последовательности.
5. Важно, чтобы интервалы, полученный рекурсивными функциями были намного короче периода распозоваемости самих функций.
6. После обработки последовательности, в FPGA и в CPLD формируются наборы из номеров распознанных функций.
6. В CPLD полученный набор пропускается через функцию, которая была распознана первой(например) и пересылается в FPGA.
7. FPGA внутри делает тоже самое и сравнивает. Если совпало - первый этап пройден.
8. В п.3 было сказано про передачу из FPGA в CPLD управляющих команд. Это номера функций, которыми надо обработать исходную последовательность и перезаписать её, что делается одновременно с последующим чтением.
9. Затем читается перезаписанная последовательность, проверяется и если всё совпало - второй этап пройден.
10. Прохождение двух этапов означает, что идентификация прошла успешно. При непрохождении в 2 раза в CPLD передаётся команда - запрета дальнейшего обмена, которая записивается во внутреннюю flash и в дальнейшем FPGA, загрузившись и проработав несколько секунд, повисает.
---
-) требуется внешняя CPLD
+) последовательность всегда разная
+) при сбоях в последовательности (внезапное отключение питания) - система самовосстанавливается, причём используя испорченную последовательность.
+) никаких ключей не передается, передаются только указатели на них
+) нет возможности подсунуть внешний тест, т.к. CPLD проверяет исходящие данные, а FPGA запоминает - какие указания давала CPLD и сверяет на втором этапе.
+) в процессе идентификации идёт постоянный по скорости двухсторонний обмен, что осложняет отделение управляющих директив от данных.
+) дешево

Автор: Pruga Jun 12 2006, 13:05

Вообщем метод с EEPROM имеет право на жизнь и дальнейшую аппробацию. Собираюсь использовать его в проекте со Spartan3-400. Кстати, можно добавить его в классификацию, предложенную ранее 3,14 под пунктом 3.3.

2 Евгений Николаев.
Насколько я понял, преимущество этого метода по сравнению с предложенным выше от Xilinx'a в возможности самому реализовать алгоритм шифровки и проверки шифрованных данных, что возможно усложнит работу взломщику??

Автор: HardJoker Aug 11 2006, 13:35

Цитата(Андрей Харитонов @ Mar 31 2005, 05:44) *
я думаю так
если ценность вашей FPGA прошивки сравнима со стоимостью нового истребителя то не поможет ничего, т.к. все ваши дополнительные навешанные компоненты легко прочтуться даже с битами защиты специализирующимися на этом фирмами (чтение закрытого проца 1-5 тысяч $, закрытой CPLD 1-10 тысяч $). В этом случае можно говорить только о степени затруднения копирования проекта - поставить пару редко используемых в разработках процессоров разных производителей втом числе например наш КР1878ВЕ1, парочку CPLD опять таки разных производителей, наплевать на мучения покупателя товара по истечении гарантийного срока и поставить батарейку, на проци водрузить шифрованный обмен, в CPLD можно вынести жизненно важные куски схемы - и все равно стоимость истребителя перевесит (не поможет и батарейка). А уж если в копировании заинтересована американская сторона, да еще и вся элементная база у вас американская - вообще труба (у них на всех процах и плисах закладки стоят - че хочешь сделают и прошивку сдерут и из строя выведут, только что танцевать плисину не заставят, а на серьезном софте компиляторы в прошивку доп информацию с зашифрованным исходным кодом включают, так что и проблем с декомпиляцией особо не будет).

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



Sorry, даже не смешно, скорее грустно...

Уже упомянутый выше LatticeXP позиционируется фирмой производителем как схема, способная обеспечить адекватную защиту заказных IP-ядер. Если учесть, что цены на sabj порядка 70k$, делайте выводы. Цифирь подсмотрел на www.xilinx.com в разделе партнеров. Аппаратно защита строится на трех физических уровнях и методом снятия крышки с последующим подсоединением к внутренним шинам задача не решается. Деблокировать защиту или снимать информацию надо по объему, а не по площади поверхности. Это раз...
Во-вторых, сами буржуи заинтересованы в корректном функционировании sabj и без всяких закладок. У них с этим просто - зарплата адвокатов много раз превышает зарплату инженеров.

Автор: HardJoker Aug 11 2006, 14:15

Цитата(acex2 @ Apr 4 2005, 23:49) *
Цитата(3.14 @ Apr 4 2005, 16:33)
Я просто не понял почму содержимое FPGA при этом нельзя через JTAG прочитать?
*


А вы поставьте FPGA в BGA корпусе и TDO на разъем не выводите wink.gif


Пара пустяков: выпаиваем FPGA, восстанавливаем шарики, запаиваем на свою плату, где подано питание и есть JTAG... Всех дел - минут сорок. Примочка для восстановления шариков - 150...200$. Ссылку дать?

Автор: acex2 Aug 11 2006, 16:03

Цитата(HardJoker @ Aug 11 2006, 18:15) *
Цитата(acex2 @ Apr 4 2005, 23:49) *

Цитата(3.14 @ Apr 4 2005, 16:33)
Я просто не понял почму содержимое FPGA при этом нельзя через JTAG прочитать?
*


А вы поставьте FPGA в BGA корпусе и TDO на разъем не выводите wink.gif


Пара пустяков: выпаиваем FPGA, восстанавливаем шарики, запаиваем на свою плату, где подано питание и есть JTAG... Всех дел - минут сорок. Примочка для восстановления шариков - 150...200$. Ссылку дать?


Вы лучше тему внимательнее прочитайте, особенно на два поста выше моего, который вы процитировали, прежде чем вырывать фразы из контекста. Заодно обратите внимание что значок wink.gif подразумевает наличие у собеседника чувства юмора.

Автор: tyro Oct 21 2006, 16:12

Интересуют книги/статьи и т.п. по обеспечению защиты прошивки ПЛИС. Буду очень признателен за дополнительные комментарии. Насколько слышал краем уха для защиты используется дополнительный CPLD. Я в этих вопросах новичок, позтому прошу ногами не пинать blush.gif.

На самом деле, на мой взляд, защиты нет вообще не от чего, имею ввиду что у Вас есть подходящее считывающее устройчтво, которое может зафиксировать поток информации на интересующее Вас время на определенном устройстве, например, на время инициализации FPGA от CPLD. При любом алгоритме кодирования, как я понимаю, Вас интересует возможность как минимум повторения кода поступающим на FPGA. Если Вы его считали правильно, то на конкретном объекте повторить его не проблема, поскольку .... код загрузки Вы уже считали. Прочитать многослойную плату нет проблем, если это надо, ... INTEL8080, в общем-то размывали.
P.S. Если вопрос в модификации кода, то ИХМО вряд-ли этим кто-то будет заниматься, конечно при условии что у Вас нет "Пионерских" решений тянущих на Nobel.., и то их наверное "другие" решат по своемую. Все мы люди, а значит Мыслящие.

Автор: dxp Oct 23 2006, 05:47

Цитата(tyro @ Oct 21 2006, 23:12) *
На самом деле, на мой взляд, защиты нет вообще не от чего, имею ввиду что у Вас есть подходящее считывающее устройчтво, которое может зафиксировать поток информации на интересующее Вас время на определенном устройстве, например, на время инициализации FPGA от CPLD. При любом алгоритме кодирования, как я понимаю, Вас интересует возможность как минимум повторения кода поступающим на FPGA. Если Вы его считали правильно, то на конкретном объекте повторить его не проблема, поскольку .... код загрузки Вы уже считали. Прочитать многослойную плату нет проблем, если это надо, ... INTEL8080, в общем-то размывали.

Stratix II. На борту есть мелкая энергонезависимая память, где хранится длинный ключ, зашитый туда разработчиком. Загрузочный поток закодирован и раскодируется внутри. Вы считали этот поток. Что будете с ним делать. Ключа не знаете. Сможете повторить устройство?

Автор: tyro Oct 23 2006, 06:47

To dxp

[/quote]
Stratix II. На борту есть мелкая энергонезависимая память, где хранится длинный ключ, зашитый туда разработчиком. Загрузочный поток закодирован и раскодируется внутри. Вы считали этот поток. Что будете с ним делать. Ключа не знаете. Сможете повторить устройство?
[/quote]
В этом случае я однозначно нет. Из области предположений: мне кажется, что разработчики оставили для себя недокументированную лазейку, чтобы добраться до содержимого этой памяти.
На всякий случай перекрестился, но все равно кажется.

Автор: dxp Oct 23 2006, 07:20

Цитата(tyro @ Oct 23 2006, 13:47) *
В этом случае я однозначно нет. Из области предположений: мне кажется, что разработчики оставили для себя недокументированную лазейку, чтобы добраться до содержимого этой памяти.
На всякий случай перекрестился, но все равно кажется.

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

На всякий случай уточню: тот упомянутый ключ зашивает не фирма-производитель микросхемы, а разработчик, который использует микросхему. Т.е. при генерации загрузочного потока, оный генерится в закодированном виде и генерится тут же ключ для этого потока. Сам поток разработчик (или на производтсве) помещает в микросхему-загрузчик (или в хост, если загрузка производится с хоста), а ключ зашивает в упомянутую FPGA. Ключ можно стереть, перезаписать новый. Но не прочитать. Таким образом, не зная ключа, устройство повторить крайне сложно (если не сказать невозможно). Недостаток этого подхода в том, что такая фишка есть только у очень ограниченного на сегодняшний день, ряда ПЛИС, я кроме того Стратикса больше не знаю (варианты с внутренней ПЗУ или с внешней батарейкой не в счет smile.gif ).

Автор: tyro Oct 23 2006, 10:06

To dxp
Мысли в догонку: после окончания ЛИКБЕЗА работал в одном институте, тогда, если память не изменяет, ломали коды с 24 битами защиты, причем эти биты были не константами, а сами модифицировались в процессе шифрования. С тех пор прошло лет 30, думаю криптография за это время продвинулась. (Сам я занимюсь железом, а не математикой, поэтому за развитием криптографии не слежу). Есть и второй путь: подойти как к черному ящику, задать свой поток данных, посмотреть на отклик, новый поток ... в конце концов есть большая вероятность получить искомый результат. У нас этот курс назывался "Управление Большими Системами".

Автор: vleo Nov 2 2006, 13:28

Паранойа кругом... Сразу оговорюсь, что я сторонник технологии и идеологии GNU/Linux.

1) Если Вы разработчик крутой, уникальной, дорогой IP, и работает она на крутых, штучных, дорогих FPGA - в этом случае используйте Stratix, это реальная потребность рынка, и она удовлетворяется Altara-ой, и Xilinx тоже что-нибудь предложит.

2) Если Вы разработчик достаточно типовой IP, что-то вроде PCI контроллеров (на крякнутых корках, кстати), и цена чипов на которые вы ориентируетесь на уровне $10-20, то данная проблема будет интересовать только параноидальных инженеров, которые видят себя Биллами Гейтсами в молодости, но забывают о том, что папа у него был начальником юридического отдела корпорации IBM. То есть Вам это не грозит (создать IP и немеренно обагатиться на ней).

Потому что:

В реальной жизни, IP для FPGA это очень маленькая часть общей картины. Даже если Вы произиодитель решений платного уровня (board level solutions), то есть еще код для MCU, есть гербера плат, есть драйвера системного уровня для целевой ОС. И это только по железу как таковому. Далее идет маркетинг, раскрутка брэнда, организация дистрибуторской сети и техническая поддержка заказчиков. По хорошему, продукт должен быть и электронным образом интегрирован в Вашу сеть поддержки, то есть обновления драйверов, той же прошивки FPGA и MCU должны регулярно доставляться платящим заказчикам и автоматически обноляться на их системах.

В этом случае возникновение клонов Вашего продукта будет говорить только о том, что Вы достигли немеренного успеха, и как говорят бывалые инвесторы - "это проблемы, которые мы хотим иметь". А Вы, при условии постоянного вложения сил и средств в дальнейшее развитие продукта все равно будете иметь элитный сектор рынка, по Вашему продукту, а производители клонов будут обслуживать те сектора, которые Вам по большому счету и не нужны.

Вот так.

Автор: klop Nov 2 2006, 13:43

Цитата(vleo @ Nov 2 2006, 16:28) *
Паранойа кругом... Сразу оговорюсь, что я сторонник технологии и идеологии GNU/Linux.

1) Если Вы разработчик крутой, уникальной, дорогой IP, и работает она на крутых, штучных, дорогих FPGA - в этом случае используйте Stratix, это реальная потребность рынка, и она удовлетворяется Altara-ой, и Xilinx тоже что-нибудь предложит.

2) Если Вы разработчик достаточно типовой IP, что-то вроде PCI контроллеров (на крякнутых корках, кстати), и цена чипов на которые вы ориентируетесь на уровне $10-20, то данная проблема будет интересовать только параноидальных инженеров, которые видят себя Биллами Гейтсами в молодости, но забывают о том, что папа у него был начальником юридического отдела корпорации IBM. То есть Вам это не грозит (создать IP и немеренно обагатиться на ней).


Золотые слова. Полностью присоединяюсь и поддерживаю a14.gif
И кстати если проеект так безумно крут то почему бы не сделать ASIC. И 3/4 воплей сразу исчезают.

Автор: Al Volovich Nov 22 2006, 15:20

У Lattice есть очень симпатичная серия LFXP - FPGA со встроенной защищаемой флэш. Стоит подешевле Actel.
http://electronix.ru/redirect.php?http://www.latticesemi.com/products/fpga/xp/index.cfm

Автор: Tornado-Alex Dec 8 2006, 15:13

Некоторое время назад был вынужден озадачиться эти вопросом, но почитав это:

Цитата(vleo @ Nov 2 2006, 13:28) *
Потому что:
В реальной жизни, IP для FPGA это очень маленькая часть общей картины. Даже если Вы произиодитель решений платного уровня (board level solutions), то есть еще код для MCU, есть гербера плат, есть драйвера системного уровня для целевой ОС. И это только по железу как таковому. Далее идет маркетинг, раскрутка брэнда, организация дистрибуторской сети и техническая поддержка заказчиков. По хорошему, продукт должен быть и электронным образом интегрирован в Вашу сеть поддержки, то есть обновления драйверов, той же прошивки FPGA и MCU должны регулярно доставляться платящим заказчикам и автоматически обноляться на их системах.


пришёл к выводу, что vleo даже очень прав, за что большой a14.gif ему!
Максимум, что можно сделать, так это натыкать "простеньких" защиточек, но во все элементы системы, чтобы как минимум принудить злоумышленника прибегнуть к поиску специалистов разных направлений деятельности от PCB-дизайнера до программера верхнего уровня (или выше).
А если он (злоумышленник) сможет собрать такую команду, то смысл чего-то "ломать"? уже проще свою систему сделать biggrin.gif

Автор: Styv Jan 5 2007, 13:19

А ктонибудь использовал микросхему DS2432 Secure EEPROMs для защиты проектов на ПЛИС?

 xapp780.pdf ( 113.89 килобайт ) : 249
 

Автор: Curious Feb 6 2007, 04:24

Цитата(Styv @ Jan 5 2007, 13:19) *
А ктонибудь использовал микросхему DS2432 Secure EEPROMs для защиты проектов на ПЛИС?


Но ведь ключ также находится и в ПЛИС-ке...? Кто мешает поправить её на выходе IFF? Это лишь защита от бездумного копирования.

Автор: Raimis Feb 19 2007, 20:58

Случайно наткнулся на интересный фич спартана 3а. Хилинх утверждает, что онная FPGA имеет серийный номер и на той основе можно зделать защиту от копирования прошивки! Но на ихнем сайте ненашел толком описанного способа защиты. На новом Импакте есть опция 'Spartan 3an - data protect', но как она работает - неясно. Может кто нибудь интересовался этим вопросом и сможет просветить? И еще не очень понятно продается уже s3a или нет?

Автор: Мастер-Ломастер Feb 28 2007, 22:05

новьё от Xilinx

The new Spartan™-3AN FPGA platform signifies a breakthrough marriage of uncompromised SRAM FPGA and leading-edge Flash technologies. With highly advanced on-chip security features, the Spartan-3AN platform provides a cost-effective solution to help prevent reverse-engineering, cloning, and unauthorized overbuilding. Furthermore, designers can achieve superior system flexibility with up to 11Mb of integrated user Flash

Автор: RHnd Apr 28 2007, 11:42

В догонку к пункту 3.1 приведу картинку, которая распространяется в рамках Altera Training Courses:

Автор: Chudik Jun 4 2007, 17:18

Я правильно понимаю, что я задаю ключ в FPGA (Virtex 4 с батарейкой) и потом могу пересылать заказчику битстрим, шифрованный этим ключом? На плате, куда я зашил в ПЛИС этот ключ мой битстрим будет работать без проблем, но ни для чего больше он не будет годен. Так?

Автор: Maksim Jun 10 2007, 11:17

Цитата(Chudik @ Jun 4 2007, 21:18) *
Я правильно понимаю, что я задаю ключ в FPGA (Virtex 4 с батарейкой) и потом могу пересылать заказчику битстрим, шифрованный этим ключом? На плате, куда я зашил в ПЛИС этот ключ мой битстрим будет работать без проблем, но ни для чего больше он не будет годен. Так?

Правильно

Автор: mASIC Jul 7 2007, 20:57

Цитата(vleo @ Nov 2 2006, 16:28) *
...

Потому что:

В реальной жизни, IP для FPGA это очень маленькая часть общей картины. Даже если Вы произиодитель решений платного уровня (board level solutions), то есть еще код для MCU, есть гербера плат, есть драйвера системного уровня для целевой ОС. И это только по железу как таковому. Далее идет маркетинг, раскрутка брэнда, организация дистрибуторской сети и техническая поддержка заказчиков. По хорошему, продукт должен быть и электронным образом интегрирован в Вашу сеть поддержки, то есть обновления драйверов, той же прошивки FPGA и MCU должны регулярно доставляться платящим заказчикам и автоматически обноляться на их системах.

...
Вот так.


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

Автор: Евгений Николаев Aug 20 2007, 05:43

Простенький вариант для защиты, например, FPGA серии Cyclone, загружающихся с конфигурационной микросхемы.
Используем в проекте мегафункцию altasmi_parallel, которая может читать ID-код конфигурационной микросхемы. В проекте создаем функцию чтения этого ID и сравнения с константой.
Перед прошивкой, читаем этот ID, закладываем его в качестве константы в проект, компилируем, прошиваем. Выходит, что эта же прошивка с другой конфигурационной микрухой работать не будет.
+) программная простота решения (готовая мегафункция).
+) отсутствие дополнительных схемных наворотов (штатный вариант AS-конфигурирования).
+) внешняя незаметность защиты (на первый взгляд, конечно).
-) индивидуальный подход к каждой прошивке (мелочь, но неприятно).
-) возможность обхода, путём установки промежуточной ПЛМ, которая будет при чтении ID подсовывать значение, снятое с оригинальной прошивки, вместо читаемого с любой другой микросхемы.
-) затраты логической структуры ПЛИС на функцию чтения и сравнения.

Автор: Gate Aug 20 2007, 10:18

Цитата(Евгений Николаев @ Aug 20 2007, 09:43) *
Простенький вариант для защиты, например, FPGA серии Cyclone, загружающихся с конфигурационной микросхемы.
Используем в проекте мегафункцию altasmi_parallel, которая может читать ID-код конфигурационной микросхемы. В проекте создаем функцию чтения этого ID и сравнения с константой.
Перед прошивкой, читаем этот ID, закладываем его в качестве константы в проект, компилируем, прошиваем. Выходит, что эта же прошивка с другой конфигурационной микрухой работать не будет.

Такой метод будет работать, если ID задается производителем, уникален для каждой микросхемы и не может быть изменен пользователем. У альтеровских флешей (они же ST) такого нет. Раз так, что мешает скопировать содержимое полностью?
Если в качестве ID используется 3 байта, выдаваемых по команде RDID, то они одинаковы для микросхем одного типа одного производителя.

Автор: cupertino Aug 20 2007, 20:57

Цитата(mASIC @ Jul 7 2007, 13:57) *
Пожалуй не соглашусь, по вот какой причине:
Производители апаратуры защиты информации реализуют на FPGA свои криптоалгоритмы. Анализ этих алгоритмов может выявить их слабость. Реализовать криптоалгоритм на ПЛИСах не сложно, гораздо сложнее его защитить от анализа.
Наилучшие криптоалгоритмы не надо анализировать путем вскрытия ПЛИСов. Они опубликованы (например, AES).

Автор: mASIC Oct 23 2007, 20:37

Цитата(cupertino @ Aug 20 2007, 23:57) *
Наилучшие криптоалгоритмы не надо анализировать путем вскрытия ПЛИСов. Они опубликованы (например, AES).

Для стандартизированых алгоритмов типа AES есть специальные микросхемы, которые и защищать то не надо. А вот фирменные алгоритмы реализуют либо на стандартных контролерах (10%), либо на ASIC(60%), либо на FPGA(30%). Кстати, хорошо что Ты знаешь такой замечательный алгоритм как AES, я их знаю около 3 сотен. И поверь некоторые из них имеют ДЫРЫ, при этом широко используются и реализованы на ПЛИС. На самом деле, даже системы со стойкими алгоритмами (умышленно или случайно) оказываются хлипкими в т.ч. благодаря FPGA.

Автор: cupertino Oct 23 2007, 21:45

Цитата(mASIC @ Oct 23 2007, 13:37) *
Для стандартизированых алгоритмов типа AES есть специальные микросхемы, которые и защищать то не надо. А вот фирменные алгоритмы реализуют либо на стандартных контролерах (10%), либо на ASIC(60%), либо на FPGA(30%).
Что такое "фирменный алгоритм"?
Цитата
Кстати, хорошо что Ты знаешь такой замечательный алгоритм как AES, я их знаю около 3 сотен.
Я AES знаю очень хорошо, и причем один: http://electronix.ru/redirect.php?http://csrc.nist.gov/archive/aes/index.html. Пожалуйста, поделитесь Вашими знаниями о 299 остальных (можно не обо всех. хотя бы один пример smile.gif )

Автор: mASIC Oct 24 2007, 20:09

Цитата(cupertino @ Oct 24 2007, 00:45) *
Что такое "фирменный алгоритм"? Я AES знаю очень хорошо, и причем один: http://electronix.ru/redirect.php?http://csrc.nist.gov/archive/aes/index.html. Пожалуйста, поделитесь Вашими знаниями о 299 остальных (можно не обо всех. хотя бы один пример smile.gif )

Например фирма BusinessSecurity AB (Швеция). У них на страничке
http://electronix.ru/redirect.php?http://www.businesssecurity.com/products/technology.php
есть
"Hardware Features
Our cryptographic hardware is based on programmable gate array technology (FPGA circuits), which are not only efficient but also make it suitable for custom-designed solutions. FPGA circuits are considered the most secure technology for encryption algorithms...",
"Symmetric Proprietary Algorithms
To take one modern example, Business Security excels in the development of symmetric proprietary algorithms..."
или же "Proprietary bit stream feedback cipher with expansion and automatic synchronization 256-bit key" в SecuriFax из Point-to-Point Products, а вот и атака на этот алгоритм называемый SBLH
http://electronix.ru/redirect.php?http://www.springerlink.com/index/PYQ4KHEVTR7DE525.pdf

Автор: cupertino Oct 24 2007, 20:58

Цитата(mASIC @ Oct 24 2007, 13:09) *
Например фирма BusinessSecurity AB (Швеция). У них на страничке
http://electronix.ru/redirect.php?http://www.businesssecurity.com/products/technology.php
есть
"Hardware Features
Our cryptographic hardware is based on programmable gate array technology (FPGA circuits), which are not only efficient but also make it suitable for custom-designed solutions. FPGA circuits are considered the most secure technology for encryption algorithms...",
"Symmetric Proprietary Algorithms
To take one modern example, Business Security excels in the development of symmetric proprietary algorithms..."
или же "Proprietary bit stream feedback cipher with expansion and automatic synchronization 256-bit key" в SecuriFax из Point-to-Point Products, а вот и атака на этот алгоритм называемый SBLH
http://electronix.ru/redirect.php?http://www.springerlink.com/index/PYQ4KHEVTR7DE525.pdf
1. Уважаемый mASIC, я все-таки, так и не понял, какой из приведенных Вами примеров является альтернативным (одним из 299 которые Вы знаете в дополнение к стандарту) AES?

2. Примеров нестандартных security algorithms можно привести очень много, но ни у одного из них нет никаких серьезных преимуществ перед стандартными. В наше время практически все серьезные пользователи используют стандартные алгоритмы.

Автор: mASIC Oct 24 2007, 21:04

Цитата(cupertino @ Oct 24 2007, 00:45) *
Пожалуйста, поделитесь Вашими знаниями о 299 остальных ...

P.S. Говоря о трех сотнях, я имел ввиду не варианты AES, а общее количество алгоритмов. Sorry за фамильярность, ибо ВАШЕ замечание, как мне показалось, отдавало зеленостью и молодостю.

Автор: cupertino Oct 24 2007, 21:15

Цитата(mASIC @ Oct 24 2007, 14:04) *
P.S. Говоря о трех сотнях, я имел ввиду не варианты AES, а общее количество алгоритмов. Sorry за фамильярность, ибо ВАШЕ замечание, как мне показалось, отдавало зеленостью и молодостю.
Извинение принято. Насчет молодости - увы, а с "зеленостью" все в порядке - на знании AES (в том числе) я заработал сотни тысяч долларов biggrin.gif .

Автор: mASIC Oct 24 2007, 21:21

Цитата(cupertino @ Oct 24 2007, 23:58) *
2. Примеров нестандартных security algorithms можно привести очень много, но ни у одного из них нет никаких серьезных преимуществ перед стандартными. В наше время практически все серьезные пользователи используют стандартные алгоритмы.

1. Здесь обсуждаются вопросы защиты проектов в FPGA, а не преимущества тех или иных криптоалгоритмов. А криптоалгоритмы возникли лишь как пример того, что есть реализации, которые нуждаються в серьезной защите.

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

Автор: cupertino Oct 24 2007, 22:13

Цитата(mASIC @ Oct 24 2007, 14:21) *
"Серьезные пользователи" порой и не догадываются, что стойкость зависит не от алгоритма, а от ключей. Если ключи плохо генерируются или каким-либо образом выползают наружу, то грош цена таким стандартным алгоритмам.
"Серьезные пользователи" на то и серьезные, что не только догадываются, но даже знают. И даже стандарты более высокого уровня, в которых все это предусмотренно, применяют.

Какие-то у Вас очень странные представления о "серьезных пользователях", абстрактно-академические. Вы на практике имели с этим дело?

Автор: mASIC Oct 26 2007, 21:03

Цитата(cupertino @ Oct 25 2007, 01:13) *
Какие-то у Вас очень странные представления о "серьезных пользователях", абстрактно-академические. Вы на практике имели с этим дело?

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

Автор: Xenix Nov 16 2007, 18:12

Цитата(dxp @ Oct 23 2006, 10:20) *
, а ключ зашивает в упомянутую FPGA. Ключ можно стереть, перезаписать новый. Но не прочитать.

Перезаписать??? Там же вроде однократно прожигаемые фьюсы стоят или я что-то пропустил?

Автор: cupertino Nov 17 2007, 00:54

Цитата(Xenix @ Nov 16 2007, 10:12) *
Перезаписать??? Там же вроде однократно прожигаемые фьюсы стоят или я что-то пропустил?
Нет, там либо NVM. либо память с отдельной батарейкой

Автор: Xenix Nov 19 2007, 09:23

Цитата(cupertino @ Nov 17 2007, 03:54) *
Нет, там либо NVM. либо память с отдельной батарейкой

+1

The polyfuses used to store the security key are non-volatile and
one-time programmable. No battery is needed. After the Stratix II or
Stratix II GX device is programmed with the key, it can only be
configured with configuration files encrypted with the same key.
Attempts to configure the Stratix II or Stratix II GX device with an
unencrypted configuration file or a configuration file encrypted with
the wrong key result in configuration failure. Therefore, tampering
of the design file can be detected.

altera.com/literature/an/an341.pdf

а то аж испужался )) если можно опять переписывать, то зачем же ключ нужен?!

Автор: Aprox Dec 18 2007, 10:45

Цитата(Tornado-Alex @ Dec 8 2006, 18:13) *
Некоторое время назад был вынужден озадачиться эти вопросом, но почитав это:
пришёл к выводу, что vleo даже очень прав, за что большой a14.gif ему!
Максимум, что можно сделать, так это натыкать "простеньких" защиточек, но во все элементы системы, чтобы как минимум принудить злоумышленника прибегнуть к поиску специалистов разных направлений деятельности от PCB-дизайнера до программера верхнего уровня (или выше).
А если он (злоумышленник) сможет собрать такую команду, то смысл чего-то "ломать"? уже проще свою систему сделать biggrin.gif


Я думаю, vleo прав только теоретически. Он рассматривает идеальную модель производственного процесса, когда творческий коллектив полностью заодно и выступает только против внешнего мира. К сожалению, такого не бывает. Внутри производственного коллектива обязательно зреют противоречия, например, между хозяином и наемным исполнителем. Последнего просто могут кинуть, или заменить на блатного родственника...всякое бывает. Поэтому защита интеллектульного труда, проекта FPGA в частности, нужна прежде всего от своих же коллег по работе и нанимателей. Защищаться же от "внешних врагов" смысла не имеет никакого.

Автор: Бэд Feb 18 2008, 10:06

Цитата(Aprox @ Dec 18 2007, 16:45) *
Я думаю, vleo прав только теоретически. Он рассматривает идеальную модель производственного процесса, когда творческий коллектив полностью заодно и выступает только против внешнего мира. К сожалению, такого не бывает. Внутри производственного коллектива обязательно зреют противоречия, например, между хозяином и наемным исполнителем. Последнего просто могут кинуть, или заменить на блатного родственника...всякое бывает. Поэтому защита интеллектульного труда, проекта FPGA в частности, нужна прежде всего от своих же коллег по работе и нанимателей. Защищаться же от "внешних врагов" смысла не имеет никакого.

"когда в товарищах согласья нет - на лад их дело не пойдёт, а выйдет из него не дело - только мука. Однажды лебедь, рак и щука..." Мне кажется что работать в атмосфере взаимной паранойи - это значит неуважительно относиться как минимум к себе самому. А вообще по-моему самый правильный подход в вопросах защиты прошивок - ничего вообще не защищать! Ибо даже если кто-то что-то сворует - это как минмум для меня неплохая реклама. И если у кого-то хватило мозгов понять как всё это работает и хватило квалификации всё это спереть - огромный ему от меня "респект и уважуха". Пусть ворует дальше - будет мне бесплатная реклама! Но такой подход применим видимо только в области коммерческих проектов, в области вояк, правительственных структур и прочих параноидальных монстров видимо так поступать нельзя, ибо в данном случае возникает вопрос - а зачем нам вообще нужны эти монстры если они не раздувают в обществе атмосферу взаимной подозрительности...

Автор: vetal Apr 10 2008, 17:59

хм...подниму-ка тему.
Практически все варианты защиты информации, обрабатываемой и выдаваемой с помощью SRAM FPGA вызывают у меня большие сомнения.
В голову пришла одня мысля :
1. В загрузочном ПЗУ висит типовая прошивка, работающая в открытом режиме буз ограничений на продажу.
2. Для специальных заказчиков существует специальная прошивка, загружаемая в плиску с какой-нибудь машины под управлением МСВС(или переносного бластера), сожержащая дополнительные функциональные узлы smile.gif

Таким образом защита закрытого функционала лежит на плечах потребителя закрытой информации. Основным приципом защиты информации будет являться отсутствие защищаемой информации smile.gif

Автор: makc Apr 10 2008, 19:10

Цитата(vetal @ Apr 10 2008, 21:59) *
2. Для специальных заказчиков существует специальная прошивка, загружаемая в плиску с какой-нибудь машины под управлением МСВС(или переносного бластера), сожержащая дополнительные функциональные узлы smile.gif

Таким образом защита закрытого функционала лежит на плечах потребителя закрытой информации. Основным приципом защиты информации будет являться отсутствие защищаемой информации smile.gif


Подобное решение уже используется. cool.gif
Тут основной защитой является специфика заказчика + гриф на дополнительную прошивку.

Автор: rv3dll(lex) May 22 2008, 08:32

Цитата(dxp @ Oct 23 2006, 11:20) *
На всякий случай уточню: тот упомянутый ключ зашивает не фирма-производитель микросхемы, а разработчик, который использует микросхему. Т.е. при генерации загрузочного потока, оный генерится в закодированном виде и генерится тут же ключ для этого потока.


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


самая наилучшая защита - низкая цена и обслуживание
или делать вещи, которые никто не сможет подделать - самолёт например))))

Автор: disel May 22 2008, 08:38

Цитата(rv3dll(lex) @ May 22 2008, 12:32) *
самая наилучшая защита - низкая цена и обслуживание
или делать вещи, которые никто не сможет подделать - самолёт например))))


http://electronix.ru/redirect.php?http://www.lenta.ru/news/2008/02/21/copy/

Автор: Splice Sep 18 2008, 19:15

На мой взгляд самый лучший способ защиты ПЛИС это использование их по назначению. Т.е. отработать проект на ПЛИС и потом заказать чип. Другие способы мало эфективны, благо существуют фирмы предлогающие считывание проекта даже с установленным битом секретности. Да и вообще всё что сделано руками человека можно сломать руками человека!

Автор: blackfin Sep 19 2008, 02:34

Статья по теме: http://electronix.ru/redirect.php?http://electronicdesign.com/Articles/Print.cfm?AD=1&ArticleID=19283

Автор: zombi Oct 16 2008, 23:04

Народ! А расскажите про защиту в MAX II пожалуйста поподробнее.
Я в англицком не силен и не уверен что правильно понимаю че там в даташитах пишут. crying.gif

Автор: Quater Jan 13 2009, 21:03

Если кто слышал про Actel то их ФПГА не возможно скопировать Это подтверждает армия какой европейской страны не помню но анализ ИС это фирмы я видел сам.

Автор: Gate Jan 14 2009, 10:25

Цитата(Quater @ Jan 14 2009, 00:03) *
Если кто слышал про Actel то их ФПГА не возможно скопировать Это подтверждает армия какой европейской страны не помню но анализ ИС это фирмы я видел сам.

Где нам, дуракам, чай пить! (с)
Вы бы сравнили быстродействие к примеру второго циклона от альтеры и актеловского проасика. И цену.

Автор: vetal Jan 14 2009, 10:41

Цитата
Вы бы сравнили быстродействие к примеру второго циклона от альтеры и актеловского проасика. И цену.

Здесь, скорее всего, речь идет о радиационно толерантных/стойких микросхемах семействе (RT)AX /RH. Вопрос цены в данном случае неуместен(наши микросхемы тоже недешево стоят).

Автор: SM Jan 19 2009, 08:39

А кто нибудь обладает реальными знаниями по поводу LFXP и LFXP2 - в части того, в каких там металлизациях идут данные загрузки флеш-срам, т.е. на сколько сложно их снять после вскрытия?

Автор: Waldemarius Jan 28 2009, 10:22

На счет защиты данных в Xilinx, будут полезны следующие ссылки:

http://electronix.ru/redirect.php?http://www.xilinx.com/support/documentation/user_guides/ug191.pdf (Virtex-5 Configuration User Guide)
see the "Bitstream Encryption" section

http://electronix.ru/redirect.php?http://www.xilinx.com/publications/xcellonline/xcell_52/xc_pdf/xc_v4security52.pdf (Lock Your Designs with the Virtex-4 Security Solution)
Useful for battery concerns (though the encryption algorithm is different):

http://electronix.ru/redirect.php?http://www.xilinx.com/support/documentation/application_notes/xapp766.pdf (Using High Security Features in Virtex-II Series FPGAs)

For a general overview (the approached are different per product family), you may find this useful:

http://electronix.ru/redirect.php?http://www.xilinx.com/products/design_resources/security/ (Design Security Solutions)

Автор: S_Hawk Aug 15 2009, 17:17

А слышал ли кто-нибудь о наличии уникального номера в Альтеровских ПЛИСах (Циклонах, к примеру), который был бы доступен заливке? Или это только слухи?
Понятно, что в новых циклонах III LS есть уже поддержка шифрования заливки, а вот как бы в обычном III найти какую-нибудь уникальность?

Автор: leva87 Dec 3 2009, 06:35

Есть ли в циклонах что-то наподобии как у ксайлинкса читать DNA. Т.е. можно ли прочитать номер плисины внутренними ресурсами?
Тогда можно было бы в прошивке указать диапазон номеров с которыми эта прошивка дружит.

Автор: Aprox Apr 12 2010, 16:53

Я конечно дико извиняюсь, но напоминаю о преимуществах совместного использования готовых кристаллов MCU, например на базе ARM, и собственно FPGA. Мало того, что это более эффективно как в денежном, так и во временном отношении, - такой подход позволяет защитить проект целиком с разумной степенью надежности. Hе надо лепить SoC. SoС- это плохо. Достаточно разделить проект на две параллельно работающие части,- одна в FPGA, другая в MCU. А MCU- закрыть битами секретности. И все! На 99,999% защита обеспечена. А больше по практике дел- и не нужно.

Автор: zombi Aug 31 2010, 11:29

Китайцам глубоко пофигу любые биты секретности что в FPGA что в MCU. Гланое приклеить к себестоимости пару-тройку баксов и продавать тысчамыи или лымонами!

Автор: essev Sep 22 2010, 09:26

А если рассматривать простое и недорогое (примерно 3000-4000 рублей) устройство логика, которого не сильно сложна, но тем не менее нужно его защитить от тупого копирования.


Если взять Циклон + МК (АВР).

И реализовать следующий алгоритм:

1) FPGA генерит число (берет меняющиеся данные со входной шины и подмешивает туда данные от ген. псевдослуч. последовательности).
2) полученное число из п.1 пропускает через секретный ключ.
3) посылает число из п.2 в МК
4) МК пропускает полученное число через такой же секретный ключ как и в пункте 2.
5) МК возвращает число из п.4 в FPGA
6) FPGA сравнивает число из п.5 с числом из п.2 и производит сравнение.





Или еще усложнить алгоритм:


1) FPGA генерит число (берет меняющиеся данные со входной шины и подмешивает туда данные от ген. псевдослуч. последовательности).
2) полученное число из п.1 пропускает через секретный ключ_1.
3) посылает число из п.2 в МК
4) МК пропускает полученное число через ключ_1 как и в пункте 2.
5) МК пропускает число еще через один ключ_2
6) FPGA декодирует данные ключом_2 ,а потом уже ключом_1 и производит сравнение.



Данный алгоритмы запускать в разные моменты времени и при несовпадении п.6 устройство отключается.
Чтобы не усложнять логику - разрядность задать = 32/64 бита.


А еще всю схему залить эпоксидкой.



Надолго ли такие методы защитят устройство от копирования и сделают ли стоимость копирования соизмеримым с новой разработкой?










Автор: zombi Sep 24 2010, 17:03

Цитата(essev @ Sep 22 2010, 12:26) *
А если рассматривать простое и недорогое
.
.
.
А еще всю схему залить эпоксидкой.
.
.
.
Надолго ли такие методы защитят устройство от копирования и сделают ли стоимость копирования соизмеримым с новой разработкой?


Я то точно не скопирую!

А вот китайцам пофиг все выкрутасы с ключами и прочей байдой. Они гады копируют на уровне кристалла и то что делает оригинал то же и также делает и копия!
А в алгоритмы и протоколы они не лезут (нафих нуна)!
Что касается Вашей цены на изделие: думаю им пофиг, у них своя цена. Гланое скоко мона прыклеить к сыбыстоимости и скока сразу продать шоб заработать.

А про эроксидку мне нравится! Тока гдеж стока эпоксидки взять?


Автор: Aprox Oct 5 2010, 17:49

Цитата(zombi @ Sep 24 2010, 21:03) *
А вот китайцам пофиг все выкрутасы с ключами и прочей байдой. Они гады копируют на уровне кристалла и то что делает оригинал то же и также делает и копия!
Думаю, это разговор имеет смысл про тиражи многими тысячами. Очень редкий случай, большинству россиян далек донельзя. У россиянина другой мотив поведения- как бы его не бортанул свой же заказчик, который обещал отстегивать авторские от каждой продажи мелкой партии. Поэтому защита делается не от китайцев, а от своего же начальника.

Автор: MHC Oct 6 2010, 19:40

Цитата(Vitus @ Feb 2 2005, 12:12) *
Ко всему вышесказанному стоит добавить одну немалоавжную вещь (которую между прочим рекомендует Зайлинкс) - делать на печатной плате или непомредственно на ИМС содержащей битстрим надпись типа "все права на копирование битстрима принадлежат...". Не такой уж и глупый совет между прочим поскольку реинжениринг по битстриму вещь весьма затруднительная если вообще возможная а использовать чужой битстрим в чистом виде в коммерческих целях даже у нас не станут (тем более если он заCOPYRIGHTен)


Копирайты -- эт да, штука полезная. но только для особо крупных контор, где продажи конвейером идут и вложен уже не один милли[подставьте_сами] каких-нибудь денег. А по поводу деинженеринга -- абсолютно согласен. в 95%-тах случаев гораздо дешевле будет самому сделать, нежели ковыряться в битстримах smile.gif одно дело разобраться: что к чему?.. так ведь еще и дорабатывать нужно, а-ля "почувствуй себя Neo" smile.gif Такшта, подозреваю, особого смысла в ЭТОМ нет, а автор данного топика начал слишком уж преждевременно бояться за сохранность IP smile.gif Надеюсь, хотя бы обоснованно? smile.gif

Автор: essev Oct 8 2010, 11:35

то есть скопировать в "свое" конф. ПЗУ чей-то битстрим не легко?

Автор: stalker123 Oct 12 2010, 16:40

А возможно ли вообще декомпилировать прошивку?

Суть вот в чем:

1. Ставим ROM с серийным номером на плату с плис
2. Пишем Tcl-скрипт для квартуса, который:
- читает этот серийный номер через jtag ПЛИС;
- генерит файлик *.v с этим серийным номером;
- пересобирает проект и шьет ПЛИС;
3. Логика прошитая в ПЛИС при включении сравнивает
считанный номер с прошитым, и если не они совпадают, блокирует работу
основной программы.

По идее, если нельзя в битовом потоке подменить этот номер, то копировать
устройство не получится.

Автор: VladimirB Oct 12 2010, 20:53

Цитата(stalker123 @ Oct 12 2010, 20:40) *
2. Пишем Tcl-скрипт для квартуса, который:
- читает этот серийный номер через jtag ПЛИС;
- генерит файлик *.v с этим серийным номером;
- пересобирает проект и шьет ПЛИС;


Ну да - пересобирать в кактусе проект для каждого экземпляра устройства. Такое пойдёт только если устройств 10 штук в месяц выпускается smile.gif.
А самое главное, что считать код из РОМ и записать его в РОМ клона не проблема - тут даже китайцев нанимать не нужно.


Автор: Rocky89 Oct 19 2010, 07:18

Кто подскажет формат sof файла.

Автор: _Макс Oct 29 2010, 12:28

Меня также заинтересовала эта тема. Читал про DNA от Xilinx в Startan-3A и Spartan-6 (последний по большому счету интересуют). Как я понял там конфигурация жестко привязываться к некоему серийному номеру чипа, который можно прочитать (как снаружи так и изнутри), но нельзя изменить. Мое понимание верно? Нужно ли для каждого чипа пересобирать проект для соответствия конфигурации с уникальным номером чипа?

Автор: FAE_SKV Nov 2 2010, 10:34

Цитата(essev @ Sep 22 2010, 13:26) *
А если рассматривать простое и недорогое (примерно 3000-4000 рублей) устройство логика, которого не сильно сложна, но тем не менее нужно его защитить от тупого копирования.
...


Если нужно недорогое устройство с защитой от копирования, но не хочется заморачиваться со сложными алгоритмами и процедурами защиты, то возьмите FLASH ПЛИС Актел. В них встроена аппаратная защита от копирования.

Автор: skilful Nov 4 2010, 12:44

а что делать если раньше только работал с альтерой? smile.gif. обидно что альтера "подкинула" проблем. хоть бы маленькую флеш встроили внутрь с защитой от чтения

Автор: Shtirlits Nov 4 2010, 13:39

если раньше работал только с альтерой, то не стоит переживать - это как паровоз, если видел один, то считай, что видел все.

Автор: VladimirB Nov 4 2010, 14:19

Цитата(_Макс @ Oct 29 2010, 15:28) *
Меня также заинтересовала эта тема. Читал про DNA от Xilinx в Startan-3A и Spartan-6 (последний по большому счету интересуют). Как я понял там конфигурация жестко привязываться к некоему серийному номеру чипа, который можно прочитать (как снаружи так и изнутри), но нельзя изменить. Мое понимание верно? Нужно ли для каждого чипа пересобирать проект для соответствия конфигурации с уникальным номером чипа?

Можно, например, использовать Microblaze и обновлять только содержимое его памяти в bit файле утилитой data2mem.
Для пущей секретности DNA в коде лучше в явном виде не хранить, а хранить его зашифрованную версию, а алгоритм дешифрации и сравнения с DNA реализовать аппаратно или вообще весь код программы шифровать.




Автор: Shtirlits Nov 4 2010, 14:25

Для меня удивительно, почему так пугает перспектива менять прошивку ради каждого экземпляра.
Даже переразводка делается без участия человека. Накупил (арендовал) компьютеров, зарядил скрипт, изготовил сколько нужно экземпляров прошивки и применяй для контроля производства.

Автор: DW0 Nov 9 2010, 21:48

Цитата(Shtirlits @ Nov 4 2010, 16:25) *
Для меня удивительно, почему так пугает перспектива менять прошивку ради каждого экземпляра.
Даже переразводка делается без участия человека. Накупил (арендовал) компьютеров, зарядил скрипт, изготовил сколько нужно экземпляров прошивки и применяй для контроля производства.


а если проект критичен к расстановке и трассировке???
то добавляются проблемы с тестированием, гарантии того что после очередного пересобирания проекта все заработает все меньше и меньше. Такая вариативность конечно рано или поздно найдет все баги в проекте, но кому это нужно.

Про актель можете и не говорить, пытался с альтеры перелезть на актель, с ихним глючным и тупым сапром поразвлекался, плюс правило что все триггеры нужно сбрасывать внешним ресетом, а если забыл какой сбросить, то может быть как в 1 так и в 0, в общем не определен после подачи питания. В актеле хотите память чем-то проинициализировать, а не получится, так что актель безнадежно отстал. И главное их купило микросеми и будет сворачивать производство ПЛИСов которые болжны были конкурировать с альтерой и ксаилинксом.

Автор: Shtirlits Nov 10 2010, 00:33

QUOTE (DW0 @ Nov 10 2010, 00:48) *
а если проект критичен к расстановке и трассировке???

То как он у вас работает? Чудом?
Такое видел на fpga Atmel, у них САПР глючный и о коммерческой разработке речь идти не может.
Вся прелесть технологии в том, чтобы функционально отлаженная схема разводилась в всегда работающую, либо выдавались нарушения констрейнов. Ну да, их придется сделать. Переразводить и тыкать осциллографом каждый раз - не годится.

Ладно, допустим, что разводка не является проблемой: констрейны 100%, компьютеры арендуются, можно сгенерить прошивок столько, сколько экземпляров и это будет дешевле утечки прошивки.
Как защищаться? Что может отличаться от экземпляра к экземпляру на плате и в fpga, что трудно скопировать?
Только номерные микросхемы (DNA, http://electronix.ru/redirect.php?http://www.maxim-ic.com/products/1-wire/authentication.cfm) ?
Вот бы найти что-то очень дешевое, но неповторимое!

Автор: dvladim Nov 15 2010, 08:11

Цитата(Shtirlits @ Nov 10 2010, 03:33) *
Как защищаться? Что может отличаться от экземпляра к экземпляру на плате и в fpga, что трудно скопировать?
Только номерные микросхемы (DNA, http://electronix.ru/redirect.php?http://www.maxim-ic.com/products/1-wire/authentication.cfm) ?
Вот бы найти что-то очень дешевое, но неповторимое!

Незачем экземпляры делать разными. В приведенных микросхемах вся суть не в уникальном идентификаторе, а ключе, который работает только на запись и движке SHA. Если не хочется покупать у них микросхемы, сделайте такую же на любом грошовом контроллере.
В этой теме пробегала ссылка на документ от Xilinx по организации защиты и ИМХО это наиболее дешевый и действенный метод.

Автор: PVL Feb 23 2011, 12:11

Переведу на русский предыдущего оратора. Внутрь ПЛИС загоняется модуль генерирующий ключи. Снаружи ставится однократно программируемый микроконтроллер с аналогичным алгоритмом генерации. ПЛИС пишет числа в алгоритм генерации ключей как во внутренний модуль так и в микроконтроллер, периодически считывает ХЭШ из последнего и сравнивает с внутренним. Если ХЭШи не совпадают - баста. Для нормальной работы достаточно одного пина ПЛИС. Алгоритм генерации ключей должен иметь длину сходимости в несколько лет.

Автор: karatel2009 Mar 2 2011, 08:30

Все что создано человеком так или иначе будет взломано!!!! вопрос во времени!!!!

Автор: Reanimator++ Apr 22 2011, 13:50

Таким образом защита тиражирования переводится на МК, задача чтения прошивки которых решается в пределах нескольких тысяч зеленых..

Автор: FAE_SKV May 23 2011, 16:33

Цитата(Quater @ Jan 14 2009, 01:03) *
Если кто слышал про Actel то их ФПГА не возможно скопировать Это подтверждает армия какой европейской страны не помню но анализ ИС это фирмы я видел сам.


Да. На сегодня это самые защищенные ПЛИС. Их невозможно взломать.. ну разве, что за пару сотню лет.

Цитата(Gate @ Jan 14 2009, 14:25) *
Где нам, дуракам, чай пить! (с)
Вы бы сравнили быстродействие к примеру второго циклона от альтеры и актеловского проасика. И цену.


По быстродействию они может и медленне, при условии, что ПЛИС заполнена на половину. А ты забей Альтеру на 90%, если сможешь, и посмотрим какое быстродействие будет у Циклона!
Да и нужно ли всегда большое быстродействие. Как показывает мой опыт, есть много задач, для которых 100 Мгц больше чем достаточно.

А по цене Актел не дороже, чем Альтера или Xilinx

Цитата(karatel2009 @ Mar 2 2011, 12:30) *
Все что создано человеком так или иначе будет взломано!!!! вопрос во времени!!!!


Скорее уж вопрос " Где и как найти нужного человека"!
А жить вечно люди пока не могут!

Автор: des00 May 23 2011, 16:43

Цитата(FAE_SKV @ May 23 2011, 11:33) *
А ты забей Альтеру на 90%, если сможешь, и посмотрим какое быстродействие будет у Циклона!

99,8 % сыклона 3 ки, маслает на 192МГц и ведь даже констрейны сходятся %)

Автор: Eastern Jul 31 2011, 10:47

Как предпочтительно делать конфигурацию FPGA с точки зрения обсуждаемой здесь темы: через битстрим загружаемый через ПО, через конфигурационную Flash или прошивать саму FPGA ?

Автор: thinkerreed Aug 31 2011, 13:13

Цитата(Shtirlits @ Nov 10 2010, 04:33) *
Что может отличаться от экземпляра к экземпляру на плате и в fpga, что трудно скопировать?
Только номерные микросхемы (DNA, http://electronix.ru/redirect.php?http://www.maxim-ic.com/products/1-wire/authentication.cfm) ?
Вот бы найти что-то очень дешевое, но неповторимое!

В атмелевских DataFlash есть Unique 64-byte Device Identifier ( http://electronix.ru/redirect.php?http://www.atmel.com/dyn/products/devices.asp?category_id=162&family_id=668&subfamily_id=1805 ), одну такую можно поставить на плату, самую дешевую. И работать с ней на максимальной частоте, чтоб нельзя было её каким-нибудь дешёвым МК заменить... Но всё равно плохо, можно плиской заменить.

Похоже, единственно надёжный вариант - уникальный номер у самой FPGA. Придётся наверное переползать на Spartan 3A с третьего циклона. 05.gif И чего альтера такую фичу не сделает. crying.gif

Цитата(FAE_SKV @ May 23 2011, 20:33) *
А по цене Актел не дороже, чем Альтера или Xilinx

Ну это, мягко говоря, неправда... rolleyes.gif

Автор: =SSN= Aug 31 2011, 13:19

Цитата(thinkerreed @ Aug 31 2011, 17:13) *
Похоже, единственно надёжный вариант - уникальный номер у самой FPGA. Придётся наверное переползать на Spartan 3A с третьего циклона. 05.gif И чего альтера такую фичу не сделает. crying.gif

http://electronix.ru/forum/index.php?s=&showtopic=88268&view=findpost&p=906538

Автор: thinkerreed Aug 31 2011, 14:02

Цитата(=SSN= @ Aug 31 2011, 17:19) *
http://electronix.ru/forum/index.php?s=&showtopic=88268&view=findpost&p=906538

Не, в CycloneIII LS есть "Configuration security using advanced encryption standard (AES) with 256-bit volatile key", это совсем не то, что "Device DNA" у ксайлинкса. А у Cyclone IV и того нет (или я в упор не вижу blink.gif ).

Автор: Putnik Dec 8 2011, 13:27

Цитата(thinkerreed @ Aug 31 2011, 18:02) *
Не, в CycloneIII LS есть "Configuration security using advanced encryption standard (AES) with 256-bit volatile key", это совсем не то, что "Device DNA" у ксайлинкса. А у Cyclone IV и того нет (или я в упор не вижу blink.gif ).

в Cyclone IV я тоже ничего не нашел. либо эта функция сильно скрывается альтеровцами.
Присматриваюсь ко вторым арриям поэтому с возможностями Volatile и Non-Volatile Key.

Автор: bark Jan 27 2012, 10:13

Подскажите как собсно пользоваться этой Configuration security ? (Stratix IV)
сейчас пытаюсь сделать Volatile Key. батарейка присобачена.

что-то я совсем запутался с документацией.. в инструкции к стратиксу строчка:
Program the user-defined 256-bit AES keys to the Stratix IV device through the JTAG interface. и всё. а как и что и куда?

в документации к программеру тоже как-то не нашел толком нужной информации.

как я понимаю нужно сделать файл flash зашифрованный (незашифрованный уже делал через NiosII command Shell) и потом прошить этот же ключ в Стратикс.

но как понять не могу =(

___
update
нашел документ an556.pdf "Using the Design Security Feature in Stratix IV"
вроде оно.

Автор: bark Jan 27 2012, 15:54

Дополнение к предыдущему посту.

По инструкции альтеры можно зашифровать .sof файл в какой-то другой формат, пример .pof
А по инструкции к моей плате в неё надо заливать файл .flash

как скрестить эту ситуацию?

Как сконвертировать .sof файл в .flash с шифрщвкой данных?
Квартусовский Convert Programming Files этого не умеет.

плата программируется через командную строку Nios II EDS command shell.
там сначала используется команда sof2flash для конвертации, но в ней я не нашел вариантов для шифровки.
потом командой nios2-flash-programmer заливается .flash файл в железяку.

как всё это соглассовать?

и ещё в документации альтеры есть такая штука KEY_VERIFY JTAG instruction для проверки есть ли в FPGA зашитый ключ и в каком варианте он туда зашит.
как собсно вычитать эту информацию? не работал никогда с JTAG instruction.

Автор: SM Jan 27 2012, 16:23

Цитата(essev @ Sep 22 2010, 13:26) *
А если рассматривать простое и недорогое (примерно 3000-4000 рублей) устройство логика, которого не сильно сложна, но тем не менее нужно его защитить от тупого копирования.


Тогда уж точно не надо ставить лишних авров и делать геморройные аутентификации. А просто применить ПЛИС Lattice LatticeXP / LAtticeXP2, которые пока что даже от китайцев надежно защищены тем, что флеш и матрица на одном кристалле и недоступна для прямого считывания при помощи их чип-тестеров.

Цитата(Putnik @ Dec 8 2011, 17:27) *
в Cyclone IV я тоже ничего не нашел.


В пятом найдется, и non-volatile в том числе. Но конечно с точки зрения защищенности предпочтительнее Lattice и Actel.

Автор: Stewart Little Jan 27 2012, 17:06

Цитата(bark @ Jan 27 2012, 18:54) *
По инструкции альтеры можно зашифровать .sof файл в какой-то другой формат, пример .pof

Для создания шифрованного файла нужно иметь специальную фичу в лицензионном файле.

Автор: bark Jan 28 2012, 00:47

Цитата(Stewart Little @ Jan 27 2012, 19:06) *
Для создания шифрованного файла нужно иметь специальную фичу в лицензионном файле.

Это я понимаю. Она похоже есть тк генерировать поф с шифровкой я могу.

Проблема в том что в плату по инструкции могу зашить файл .flash а не pof.
А как получить .flash из .pof я не знаю.
Знаю только как получить .flash из .sof но в таком варианте не знаю как его зашифровать своими ключами.

Автор: nh4t Apr 6 2012, 03:59

Прошу совета .
Поставлена задача : защитить конфигурацию маленького Cyclone_2, 3, 4 от подмены ( anti-tampering).
При этом защита конфигурации от копирования для Cyclone-2,3,4 полагается невозможной и не рассматривается.
С3-LS-также не рассматривается.

Подскажите пожалуйста - насколько эффективно будет следующее решение :

1. В ПЛИС, помимо основной логики , встраивается генератор хеш-функции ( к примеру - SHA),
не имеющий с основной логикой никаких логических связей.

2.Оставшееся от основных функций свободное простанство ПЛИС по возможности максимально
заполняется ложной логикой , не имеющей отношения к основной функции.

3. Внешний по отношению к ПЛИС микроконтроллер периодически , со случайным интервалом ,
отправляет во встроеный в ПЛИС генератор хэш массив случайных чисел и получает результат.

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

Основа метода - перехваченую прошивку трудно отреверсить.

Автор: DAV Apr 6 2012, 12:05

Господа, а не кто не пробовал делать на DS28E01 от Максима.

 DS28E01_100.pdf ( 195.01 килобайт ) : 212
 ___________.pdf ( 394.54 килобайт ) : 104
 

Автор: Leka May 28 2012, 21:43

http://electronix.ru/redirect.php?http://forum.ixbt.com/topic.cgi?id=8:23617:2481#2481

Автор: MishaN Jun 2 2012, 20:09

Как на счет Lattice, есть встроенная Flash в XP2 и помладше XO2 сериях, при этом она еще и может быть использоваться как юзерская, или дажа для исполнения кода их 8 или 32 процессоров. Получается SoС
у XP2 есть встроенный AES128, так что прошивка надежно закрыта.
Если говорить о SRAM FPGA, тот же блок есть у ECP3 семейства, что обеспечивает безопасную работу с внешней SPI кофигурационной памятью.

Еще XO2 и XP2 семейства можно сделать OTP - тоесть запретить вобще менять прошивку(иногда полезно от подмены программы для банковского оборудования)


Автор: nh4t Jun 7 2012, 07:01

Цитата(MishaN @ Jun 3 2012, 05:09) *
Как на счет Lattice
начет Lattice все хорошо , за исключением :
- Diamond не Quartus;
- XO2 Z 4000 50% заполненый мах clock ~60MHz.

Автор: wolfman Jun 7 2012, 08:22

У нас делали удаленную загрузку ПЛИС.

Автор: MishaN Jul 14 2012, 23:33

Цитата(nh4t @ Jun 7 2012, 11:01) *
начет Lattice все хорошо , за исключением :
- Diamond не Quartus;
- XO2 Z 4000 50% заполненый мах clock ~60MHz.


XO2 Z это самые маленькие для батарейного питения. H версия уже ~150MHz
Но что мешает взять XP2 или ECP3 где в разы больше частоты. В ECP3 прошивается ключ во Fuse и загрузка идет в зашиврованном виде

Поробуйте Diamond, думаю что Вам пол дня - день чтобы в нем разобрать максимум нужно будет. Во много очень похож на квартус. В понедельник выходит Diamond 2.0 с поддержкой ECP4

Автор: Corner Jul 26 2013, 18:03

Цитата(Reanimator++ @ Apr 22 2011, 17:50) *
Таким образом защита тиражирования переводится на МК, задача чтения прошивки которых решается в пределах нескольких тысяч зеленых..

Если контроллер однократно программируемый, то ни чего у Вас не выйдет...

Автор: maklein May 27 2014, 23:21

Добрый день!

Пытаюсь найти решение вот по какому вопросу - есть Отладочный борд De1 CyClone II. Туда залита прошивка. руководство хочет слить оттуда прошивку, чтобы можно было мне на борде поиграться, а исходную прошивку если что - то можно было вернуть. Вот. А исходников конечно же нетsm.gif.

Ткните в каком направлении смотреть.

Автор: Stewart Little May 28 2014, 02:15

Цитата(maklein @ May 28 2014, 07:31) *
Пытаюсь найти решение вот по какому вопросу - есть Отладочный борд De1 CyClone II. Туда залита прошивка. руководство хочет слить оттуда прошивку, чтобы можно было мне на борде поиграться, а исходную прошивку если что - то можно было вернуть. Вот. А исходников конечно же нетsm.gif.

Так по идее на диске от DE1 должна присутствовать factory-прошивка этого кита.

Автор: Stepashka22 Oct 30 2014, 09:44

Второй день не могу найти инфу!!! Кто-нибудь знает есть ли защита от слива прошивки в CYCLONE IV???
Еще вопрос в программаторе QUARTUS стала не активна галка под security bit почему???

Автор: SM Oct 30 2014, 09:52

Цитата(Stepashka22 @ Oct 30 2014, 12:44) *
Кто-нибудь знает есть ли защита от слива прошивки в CYCLONE IV???


Нет. Из Cyclone защититься можно только в Cyclone III LS, и то, придется батарейку мастырить. Ну и в пятом.

http://electronix.ru/redirect.php?http://www.altera.com/devices/fpga/stratix-fpgas/about/security/stx-design-security.html

Автор: Stepashka22 Oct 30 2014, 09:56

Цитата(SM @ Oct 30 2014, 17:52) *
Нет. Из Cyclone защититься можно только в Cyclone III LS, и то, придется батарейку мастырить.

http://electronix.ru/redirect.php?http://www.altera.com/devices/fpga/stratix-fpgas/about/security/stx-design-security.html


Спасибо! Такой вариант находил тоже biggrin.gif

Автор: kuchynski Nov 20 2014, 06:20

Подскажите ленивому пожалуйста.
Что это за формат файла *.vhd, при открытии которого выводятся непонятные символы? И как такие файлики создаются. Спасибо.

Автор: Stewart Little Nov 20 2014, 07:12

Цитата(kuchynski @ Nov 20 2014, 09:20) *
Подскажите ленивому пожалуйста.
Что это за формат файла *.vhd, при открытии которого выводятся непонятные символы? И как такие файлики создаются. Спасибо.

Это обычный текстовый файл - исходник на VHDL. Такие файлы создаются в текстовых редакторах sm.gif
Чем Вы этот файл открываете? Какая кодировка используется?
bb-offtopic.gif И это... Вы веткой не ошиблись? Здесь другие вопросы обсуждаются.

Автор: lesha73 Nov 20 2014, 10:25

Цитата(kuchynski @ Nov 20 2014, 08:20) *
Что это за формат файла *.vhd, при открытии которого выводятся непонятные символы?

Рискну предположить, что Вы используете Vivado от хилых.
Отличий VHDL от encrypted VHDL по расширению никаких.
Делаю шаги в мир Altera. Это небо...

Цитата(Stewart Little @ Nov 20 2014, 09:12) *
Здесь другие вопросы обсуждаются.

Защита данных и encrypted VHDL звенит для кого-то одинаково.

Автор: sashko_g Nov 24 2014, 15:27

Опишу свой опыт защиты прошивки. Используется ПЛИС Xilinx Spartan-3AN. Корпус BGA, встроенная флешка. Как оказалось, никакой защиты это не дает: в прошивке предусмотрен бит запрещающий вычитывание этой прошивки из ПЛИСА (Disable Readback). В настройках флешки (которые указываются при заливке прошивки) есть бит запрещающий только перезапись флешки, но не вычитывание из нее. В результате прошивка никак не защищена.

В результате, пришлось для защиты использовать проверку DNA.

Вот тут, кстати, ответ самого Xilinx о защите прошивки: http://electronix.ru/redirect.php?http://www.xilinx.com/support/answers/40360.html

Автор: kkk-102 Nov 26 2014, 03:59

Добрый день!
Кто сталкивался с Actel A42MX16?
Подскажите можно ли выдернуть прошивку у неё?, если включена защита?

Автор: andrewkrot Dec 12 2014, 11:09

Сегодня попытался считать прошивку со своей "залоченной" платы с XC3S50AN-TQ144. К великому моему удивлению все получилось и считанное с успехом зашилось в другую плату.... wacko.gif так как прпоект свой то начал поиски косяков, и ничего не нашел. Все опции запретов доступа выставлены. Для экспериментов создал мигалово светиком в ISE92 и в ISE10 - других версий нет. И все подтвердилось - прошивку можно считать и прошить другой кристалл! Считывал WebPack-ом из LabTools 14.7. Программатор вот этот - http://electronix.ru/redirect.php?http://starterkit.ru/html/index.php?name=shop&op=view&id=17 Я в шоке!!! Пожалуйста, у кого проекты на XC3S50AN-TQ144 попробуйте считать прошивку. Я уж не знаю в какую сторону копать - может кристаллы попались паленые???

Автор: sashko_g Dec 12 2014, 11:45

Цитата(andrewkrot @ Dec 12 2014, 15:09) *
Сегодня попытался считать прошивку со своей "залоченной" платы с XC3S50AN-TQ144. К великому моему удивлению все получилось и считанное с успехом зашилось в другую плату.... wacko.gif так как прпоект свой то начал поиски косяков, и ничего не нашел. Все опции запретов доступа выставлены. Для экспериментов создал мигалово светиком в ISE92 и в ISE10 - других версий нет. И все подтвердилось - прошивку можно считать и прошить другой кристалл! Считывал WebPack-ом из LabTools 14.7. Программатор вот этот - http://electronix.ru/redirect.php?http://starterkit.ru/html/index.php?name=shop&op=view&id=17 Я в шоке!!! Пожалуйста, у кого проекты на XC3S50AN-TQ144 попробуйте считать прошивку. Я уж не знаю в какую сторону копать - может кристаллы попались паленые???


Прочитайте мое сообщение выше. Никакой "залочки" в FPGA Spartan-3AN не предусмотрено. Вы запретили readback с FPGA, но прошивку можно вычитать из флешки, что вы и сделали. Запретить чтение из флешки нельзя.

Автор: andrewkrot Dec 12 2014, 21:18

Спасибо.. Однако печально(

Автор: x736C Jan 21 2015, 14:23

История успеха :D ТС не смог расколоть защиту предыдущего спеца. Может и автор тут отпишется в итоге)

http://electronix.ru/redirect.php?http://radiokot.ru/forum/viewtopic.php?f=60&t=77157

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

Цитата(Quater @ Jan 14 2009, 00:03) *
Если кто слышал про Actel то их ФПГА не возможно скопировать Это подтверждает армия какой европейской страны не помню но анализ ИС это фирмы я видел сам.

Время идет, все меняется.
Actel ProASIC3 A3P250
http://electronix.ru/redirect.php?http://www.semiresearch.com/index.php/en/services/mcus-and-others-ics-which-code-data-can-be-read.html

Чтоб два раза не вставать, раз в списке есть DS2432, то, вероятно, DS28E01 они тоже могут сломать.
Напомню, что на DS28E01 в приведенной тут статье предлагалось недорогое решение для защиты проекта от копирования.

Автор: x736C Jan 21 2015, 19:00

Нашел буклет с выставки. Может кому-то информация будет полезной.
Inside Secure отпочковалось от Atmel

Например
http://electronix.ru/redirect.php?http://www.insidesecure.com/content/download/1233/7478/version/2/file/AT90SC9604RV.pdf
Security
• Dedicated Hardware for SPA/DPA/SEMA/DEMA Attacks
• Advanced Protection Against Physical Attack, Including Active Shield, EPO, Slope Detector, Parity Errors
• Environmental Protection Systems
• Voltage Monitor
• Temperature Monitor
• Light Protection

Автор: SM Jan 21 2015, 19:43

Цитата(x736C @ Jan 21 2015, 22:00) *
http://electronix.ru/redirect.php?http://www.semiresearch.com/index.php/en/services/mcus-and-others-ics-which-code-data-can-be-read.html

Lattice туда не попал... Это хорошо...

Автор: doc321 Jan 29 2015, 11:15

Цитата(SM @ Jan 21 2015, 19:43) *
Lattice туда не попал... Это хорошо...


К сожалению это скорее по недосмотру sad.gif . На предмет что ломается а что нет я обычно смотрю на китайцев, т.к. они ломают практически все что движется rolleyes.gif
Там у них более десяти сайтов предлагающих вытащить код из многих микроконтроллеров, но список очень похожий. Я ориентируюсь на этот сайт:
http://electronix.ru/redirect.php?http://www.break-ic.com/

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


Автор: Мур Dec 16 2015, 09:52

Шаловливые рученьки...
http://electronix.ru/redirect.php?http://www.eetimes.com/author.asp?section_id=36&doc_id=1327061

Автор: vladeg Mar 21 2016, 17:02

Кто знает, EPCS1 брутфорсить можно? Или она залочится после нескольких попыток?
Без кода, она даже не стирается. Данные из нее мне не нужны.
Хочу перепрограммировать устройство своей прошивкой, без замены флэш.
cranky.gif

Автор: dvladim Mar 21 2016, 19:49

Ничего не путаете?
EPCS пассивная и секретности там никакой.

Автор: vladeg Mar 31 2016, 22:10

9-й quartus как бы стирал и как бы писал, но ни верификация ни бланк чек не проходили. Я вспомнил, что залоченые мах2 так же себя вели, и вот, поспешил с выводами.

12-й quartus сразу сказал, что не может писать и стирать, так как есть защищенные сектора. Поставил галку в настройках, и все заработало. В 9-ом такой опции не нашел.

 

Автор: minervenumb Aug 16 2018, 05:26

Добрый день. Кто-нибудь пробовал использовать Altera (Intel FPGA) Design Security Features с OpenCL SDK? Устройство 20 nm.
Документ AN556 даёт понять, что нужно закодировать .rbf файл. Файл top.rbf, который создаёт компилятор OpenCL, является rbf для частичной реконфигурации, поэтому с ним не работает qcrypt. Закодировать его при помощи quartus_cpf не получается (создаётся незашифрованный файл), но Quartus GUI всё же создаёт, вроде бы, зашифрованный файл (на 1.5 Мб больше размером). Однако если я просто записываю содержимое получившегося "зашифрованного файла" в .aocx файл, программа спокойно работает с этой прошивкой, хотя в девайс никакой ключ не был закодирован.
Если я зашиваю ключ в девайс через quatus_pgm (.ekp) или quartus_jli (.jam), OpenCL перестаёт контактировать с девайсом: запуск приложения или команды aocl (diagnose) вызывают ошибку PCIe-to-fabric read test failed. Что с этим делать, я пока не представляю.
Интересно именно использование защиты с проектом, написанным на OpenCL.

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)