Программируемая логика - это не так уж и сложно. Разберемся вместе.
Ответить

Как работает эта защита прошивки ПЛИС Altera? Я в шоке...

Пт авг 24, 2012 20:09:44

Добрый день.

Кратко: в плис сделана защита прошивки, в самой прошивке, и если меандр 1герц как то отличается от эталона (КАК?), то выключается. НО КАК???? как это сделано???

Имеется очень старый проект:
Плис Altera Cyclone2 управляет всем, заодним делает обмен по усб 1.1 и тд,
конфигурация плисины расположена как и следует ожидать в конф-ной флешке EPCS4, подключение типовое, 1 в 1 из даташита на циклоны. EPCS4 можно заменить на любой аналог, всё работает. Прошивку в плис можно зашить другую версию для этого же устройства, всё ок, защита не сработает (раскажу пойзже). Можно сменить саму плис, раньше вроде вообще первый циклон или флекс стоял ... Т.е. привязки к самой прошивке нет. нет привязки к железу вообще кроме аттини13.

Рядом стоит Attiny13 она работает как WDT, если плис перестаёт мигать раз в секунду своим светодиодом который ещё подключен к аттини, то та перестаёт мигать своим светодиодом который так же подключен к плис. и через некоторое время дёргает ножкой nCONFIG для запуска переконфигурации плис. Аналогично плис сбрасывает аттини если та перестала отвечать. Зачем это сделано? плата управляет 10кв двигателями как то очень хитро и бывает помехи проходят через гальв. развязку и приводят к подвисонам и уже через пару секунд перезапускается и продолжает работать нормально без сбоев.
Вот такой вот костыль сброса. казалось бы на первый взгляд ...

т.е. имеется просто два светодиода которыми могут управлять и плис и аттинька, по ним идёт всего лишь меандр 1герц, данных там НЕТ ВООБЩЕ, сам меандр не модулируется ничем, всё ровно сек в сек, вплодь до 1мкс точно, насколько самые мощные осцилы позволяют измерить длительность 500мс импульса у 1с меандра, смотрел даже очень мощными осциллами на 2ггц полосой пропускания. НЕТ ТАМ ДАННЫХ НИКАКИХ, ни как по времени ни по напряжению микровольтами ничего не модулируется.
ну и соответственно ресеты взаимные от аттини к плис и от плис к аттини.
САМА АТТИНИ13 ЗАЩИЩЕНА, тинька тактируется от внутреннего тактового, прошивки нет, и не предвитится :( . Аттини13 уже зашитых всего коробок (около 100шт) осталось.

Но если в аттини залить свою прошивку функционально 1 в 1 (чуть ли не по тактам мерял тайминги), то плис выключается ... не сразу ... через бывет через пол часа минимум, максимум через день... и не всегда...
Если закоротить линии светодиодов то защита прошивки внутри плис срабатывает. Если подключить через RC цепочку светодиод из тини в плис, хотябы 100ом 100пф, то в плис срабатывает защита. Самое погание что защита срабатывает так что не сразу можно понять - двигатель начинает ОЧЕНЬ греться, а нагревается он не за миллисекунды...

Начальство постановило сделать защиту не хуже чем у моего предшественника .... НО КАК, ДАННЫЕ ЖЕ НЕ ПЕРЕДАЮТСЯ, КАК ПЛИС УЗНАЁТ ЧТО ТИНИ НЕ ОРИГИНАЛЬНАЯ? все схемы типовые. Всё просто и понятно ... все схемы типовые будто из даташитов или учебников по отказоустойчивым выч. средствам. но ничего не понятно? Я в мяуе ... :shock: Что делать? где копать?

Вопросы:
1. Как плис опознаёт оригинальную тиньку? есть догадки? ну пожалуйста .... я уже неделю бьюсь
2. Как взламать прошивку АТТини13? гугл не помог, простых средств без растворения пластика корпуса и микропайки не нашол.
3. Как конф-цию плис дизассемблировать чтоли? т.е. получить исходник
4. Что ещё проверить можно вообще? Как можно опозновательный знак или признак засунуть и в плис без АЦП передать. ПЛАТУ ПРОВЕРИЛ И ИЗРЕЗАЛ ВДОЛЬ И ПОПЕРЁК, НЕ КАНАЕТ, не влияет на детектирование вообще.

Извините за капслок, я в отчаянии

Re: Как работает эта защита прошивки ПЛИС Altera? Я в шоке..

Пт авг 24, 2012 20:23:03

извиняюсь. вот схема
Изображение

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

Re: Как работает эта защита прошивки ПЛИС Altera? Я в шоке..

Вс авг 26, 2012 12:34:46

Smirnov, Вы не пробовали определить "синхронность" ответов\запросов во время обмена?
Сброс после RCцепи показывает, что скорее всего определяется фронт - его не сложно вырезать и "привязать" к внутреннему корректируемому синхронизатору.
Дизассемблировать синтез ПЛИС скорее всего не получится.

Re: Как работает эта защита прошивки ПЛИС Altera? Я в шоке..

Вс авг 26, 2012 20:36:10

Meteor писал(а):Smirnov, Вы не пробовали определить "синхронность" ответов\запросов во время обмена?
Сброс после RCцепи показывает, что скорее всего определяется фронт - его не сложно вырезать и "привязать" к внутреннему корректируемому синхронизатору.
Дизассемблировать синтез ПЛИС скорее всего не получится.


спасибо, но они независимы, более того различаются в разных версиях или разных физ. чипах плис. ПЛИС выдаёт чуть больше на 10% частоту подтверждения (т.к. скорее всего поделена на степень двойки тактовая). Тини чуть меньше но приерно секунда +- несколько процентов, более того если нагреть феном тини до 100 градусов например частота импульсов съедет. но так можно весь день её "жарить" но защита в плис не сработает.

Более того, я умудрился запустить тактовые внешние для тиньки, и она заработала от них, и измерил в точности до такта период и длинну импульса - они равны константе +-1 такт. Но как плис их может измерить, они же плывут и при реальной работе девайс может прогреться существенно, от 10 градусов например до 40-50 (существенно горячий), при этом внутрений источник тактов уползает минимум на 0.5% - это за секунду разница будет существенная в несколько сотен тактов.

Далее что попробовал - попробовал подать всё таки внешнее тактирование и убедился что работает от него (измерив период с точностью до такта, при нагреве и охлаждении, период совпал 1 в 1 - тактирование внешнее).
Далее записал 2 часа миганий из тиньки в плис с точностью до такта (на другую плис) -
Заменил тиньку на генератор который подаёт мигания вместо тинький. Вроде работает ... час ... другой ... третий ... уже радуюсь ... хлоп сработала защита!!! .
Ещё раз запустил - через два с половиной часа сработала защита ...

Блин, ставить вместо тинький плис и флешь память на 10-20 тыщь байт???
Зато ясно что тинька никак не привязывается к миганию из плис. всё дело в том как она мигает В плис.

Всё таки не зря бывший разработчик заработал столько что щас уже может не работать и забил на работу давно. УВАЖАЮ

Вся проблема изначально не в защите, разраб редко берёт трубку, его и так задолбали, а когда я всё-таки дозвонился до него он сказал: "Это будет плохая защита если о ней будет знать более одного и она не будет обновляться, думай, лентяй!"

Re: Как работает эта защита прошивки ПЛИС Altera? Я в шоке..

Вс авг 26, 2012 23:08:58

А как вам такой вариант - сформировать таймер системного времени (скажем на 5 часов) и "вылавливать" (фиксировать) только фронты одногерцового меандра? В идеале, может получиться запись времен переходов и без лишних затрат памяти! Далее уже можно будет судить о закономерности срыва синхронизации

Re: Как работает эта защита прошивки ПЛИС Altera? Я в шоке..

Вс авг 26, 2012 23:25:53

Может и не в кассу, но можно попробовать усложнить измерение - и возможно выявить "комуникацию":
Как я понял вы все измерения делали в режиме логических значений, но ведь может быть ситуация в которой атини использует Аналоговый вход с режимом подтяжки к "+", а ПЛИС в свою очередь меняет режим: или 1 или "z" уровень - в таком случае логический тестер всегда покажет лог.1, а вот Атини сможет различить 3.3В или же 2.0 (падение на св.диоде при малом токе без свечения).
Детектор такого поведения сделать как понимаете не сложно, и тогда смотрим результат и изучаем...

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

И как ппонимаете это действие относится к обоим пинам - Аттини...

Re: Как работает эта защита прошивки ПЛИС Altera? Я в шоке..

Пн авг 27, 2012 00:21:36

Может оригинальный тини13 через несколько десятков тысяч секундных импульсов выдает специальный импульс через пол секунды или через две (условно). Возможно, даже проходит обмен такими импульсами.

Re: Как работает эта защита прошивки ПЛИС Altera? Я в шоке..

Пн авг 27, 2012 00:36:48

Подключить к лог анализатору всю тиньку, писать до появления сбоя.
А оригинальные тиньки и те, с которыми пытаемся наладить одной серии? Индексом А чаем не отличаются? Разводка сохранена?

Re: Как работает эта защита прошивки ПЛИС Altera? Я в шоке..

Пн авг 27, 2012 09:17:54

думается, для плис важна не частота/ длительность импульсов, а уровни.
попробуйте логикой развязать tiny и плис, если предположение верно, защита сработает

Re: Как работает эта защита прошивки ПЛИС Altera? Я в шоке..

Пн авг 27, 2012 21:31:08

sifun писал(а):Подключить к лог анализатору всю тиньку, писать до появления сбоя.
А оригинальные тиньки и те, с которыми пытаемся наладить одной серии? Индексом А чаем не отличаются? Разводка сохранена?

Там только тини13, с индексом А нет. Но платы разные (разные версии), разводка не влияет.

amp25 писал(а):думается, для плис важна не частота/ длительность импульсов, а уровни.
попробуйте логикой развязать tiny и плис, если предположение верно, защита сработает

Уровни импульсов не влияют. развязывал через буфер ЛН2, развязывал через два адума последовательно включенных (хотя они дают задержку в 120нс +-5 нс), не влияет, влияет только ел. линия из тини в плис. всё остальное можно порезать. саму тини можно запитать от развязаного адума, и обернуть в фольгу чтоб точно ничего по воздуху не пролезло. Я сразу приступил анализ с зависимостей, за три дня смог отсечь всё кроме этой долбанной связи. День стабильно проработала ... второй день ... всё ещё эта тестовая плата лежит и БЛИН МИГАЕТ СВЕТОДИОДОМ ... ключи не греются, защита не сработала.

y_kiyko писал(а):Может оригинальный тини13 через несколько десятков тысяч секундных импульсов выдает специальный импульс через пол секунды или через две (условно). Возможно, даже проходит обмен такими импульсами.

нет спец импульсов, записывал плисиной. просто сделал счётчик. проверил чтоб на 100мгц он ловил, т.е. полоса пропускания 100мгц, явно короче тинька не выдаст. и пустил считать, сколько раз мигнул светодиод, столько раз и насчитал счётчик. лог. анализатор тоже ничего не показал.

У меня есть подозрение что мигает раз в секунду, но то наодин такт раньше то на такт пойзже, проверял это ... бывает 2-3 часа такты проходят одни и те же... блин, рекорд был сегодня, с обеда и до вечера, до 7 часов мигало ровно в 16252928 тактов всподряд период, и 8126464 тактов длинна импульса, т.е. 5 с половиной часов вообще не изменялось количество тактов в мигании.

Как я понимаю в авр ядре вполне допустимы одно и двух тактные инструкции, например умножения или переходы ... разница в тактах мигания всего 1 такт ... явно мигание по таймеру и в основном цикле что то считается ... но КАК ... КАК ОНО ПЕРЕДАЕТСЯ???

Какие ёмоё армы, многоядерные процы если люди на 8битнике с кило памяти шедевры мозголомные делают ... :dont_know:

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

Re: Как работает эта защита прошивки ПЛИС Altera? Я в шоке..

Вт авг 28, 2012 07:03:02

1. Если подключить через RC цепочку светодиод из тини в плис, хотябы 100ом 100пф, то в плис срабатывает защита
2. Уровни импульсов не влияют
3. развязывал через буфер ЛН2, развязывал через два адума последовательно включенных (хотя они дают задержку в 120нс +-5 нс), не влияет.
в таком случае, имхо, остается только длительность/ соотношение импульса/ паузы.
причем связь может быть и двусторонней. например, плис выдает импульс чуть короче, тини в ответ меняет длительность.
наворотить тут могли такого...

Re: Как работает эта защита прошивки ПЛИС Altera? Я в шоке..

Вт авг 28, 2012 07:14:18

Кроме того может и "начальная" длительность меняться от включения к включению.

Re: Как работает эта защита прошивки ПЛИС Altera? Я в шоке..

Ср авг 29, 2012 12:08:48

Я сам использую защиту на МК с применением SHA-1 MAC. Принцип прост - в ПЛИС генерируется случайное число, отправляется МК, МК добавляет к числу секрктный ключик и вычисляет MAC, который возвращается ПЛИС. В ПЛИС тоже вычисляется MAC этой пары чисел и сравнивается с тем, что вернул МК. Если MAC-и совпадают - работаем, если нет - выключаемся. Взломать практически нереально. Если в Вашем устройстве применен подобный принцип защиты, а я думаю, что так и есть, то все потуги с анализаторами абсолютно бесполезны. Altera разработала reference design с применеием чипа DS28E01 который какраз и предназначен для реализации подобного метода защиты. Почитать можно здесь http://www.altera.com/support/refdesign ... 20security

Re: Как работает эта защита прошивки ПЛИС Altera? Я в шоке..

Ср авг 29, 2012 13:24:04

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

Re: Как работает эта защита прошивки ПЛИС Altera? Я в шоке..

Ср авг 29, 2012 15:26:28

Да, конечно, не важно кто инициирует обмен. Главное, чтобы МАС вычисленный в МК и ПЛИС совпал. Ну и секретная часть сообщения, на которое вычисляется MAC должна быть защищена надежно.
Немного о получения случайного числа в ПЛИС. Как правило ПЛИС получает тактовый сигнал от какого-либо генератора. Время сброса контроллера, особенно если используется RC-генератор, получается весьма случайное (относительно тактовой частоты). Можно использовать также другие входные сигналы ПЛИС. Способов получения случайного числа, в реальной системе, достаточно.
Для примера: на МК генерируем импульсы 1ГЦ и подаем их на вход ПЛИС. Меряем период этих импульсов в ПЛИС с заполнением в 200МГц. Вот вам и случайное число, тк источники от разных генераторов, особенно если один из них RC.

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

PS: Может, конечно, я зря влез в обсуждение и взлом описанной ТС системы защиты не составит труда. В таком случае - разработчик не сильно стремился защитить (или не смог по другим причинам) свое изделие. А может даже это и не защита от копирования.

Re: Как работает эта защита прошивки ПЛИС Altera? Я в шоке..

Ср авг 29, 2012 18:33:08

Опять таки:
- отделяли буферами только сигналы тактирования???
- в Аттини РЕСЕТ может быть запрограмирован на функцию ИО... и может там данные бегают :)

Re: Как работает эта защита прошивки ПЛИС Altera? Я в шоке..

Сб сен 01, 2012 11:25:57

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

последую очень хорошему умному совету сделать ген. случ чисел на плис. выдавать открыто и явно плисиной по простому протоколу в МК последовательности. та её крупным полиномом модифицирует (например несколько генераторов значений синуса с очень большим периодом с некратными частотами) и выдаёт обратно на плис отксорив передачу на плис. и та в свою очередь проверяет правильность.

Re: Как работает эта защита прошивки ПЛИС Altera? Я в шоке..

Пн сен 03, 2012 19:09:40

Омг, в тиньке оказывается есть само диагнастирование (находит непропаи и кз) и выдаёт через плис код самодиагнастирования. А так же версию. Причём в первые же секунды :shock:

Re: Как работает эта защита прошивки ПЛИС Altera? Я в шоке..

Пн сен 03, 2012 20:41:44

Значит есть все же полноценный обмен данными мижду плисиной и тинькой ?

Re: Как работает эта защита прошивки ПЛИС Altera? Я в шоке..

Вт сен 17, 2013 21:50:13

Может отвечу и позновато, но я с таким сталкивался :) ... Этот вариант защиты очень древний... практиковался еще на счетах :) ... незаметен для осциллографов и прочих логических анализаторов. весь смысл в том, что вход не всегда вход, а иногда еще и выход! ... то что выход перестал быть выходом, а стал входом маскируется оч просто, ну кто заметит, что вход посмотрел, на наличие сигнала - определил его отсутствие - и тут же снова стал выходом? и все это на импульсе длинной в пол-секунды! обычные приборы пока еще не научились определять какая из лапок сигнал выдает :) .
если, как писал автор, помеха проскочила, то можно и пару раз алгоритм замены входа выходом прогнать... несовпало два раза, ну тогда на шине точно чужой засел :).
Примерно так...
Ответить