Защита софта в ARM

Nov 29, 2006 Last reply: 19 years ago 112 Replies

Привет!

Wed Dec 06 2006 10:43, Andrey Thibulnik wrote to Jurgis Armanavichius:

JA>> Она совершенно недостаточна и дизассемблирования тут совсем не нужно JA>> :-) Речь ведь о чем идет? Содрали ваше устройство (вместе с JA>> градусником) и хотят тиражировать, верно? Так они добавят между ARM'ом JA>> и градусником наидешевейший микроконтроллер, который прочитает JA>> градусник, подставит правильный серийный номер и "надует" ваш ARM JA>> самым наглым образом :-) Он-то, бедненький, будет уверен, что JA>> градусник подлинный, а узнать правду у него нет никаких JA>> возможностей... AT> Для этого нужно апpиоpно ЗHАТЬ, что этот гpадусник именно кодоноситель, AT> а не контpоль заpядника батаpеи. Это совсем дpугой уpовень сдиpания, от AT> котоpого не помогут и более сложные телодвижения.

В общем, да. Hо мы не знаем, о каком девайсе идет речь. Если его стОит содрать, то сдерут и не подавятся :-)

Я лет 15 назад ломал одну интересную защиту программы на Паскале. Эта программа круто привязывалась к компьютеру, считывала 4-5 параметров материнки и винчестера, создавала закодированный файл-ключ, определяла диапазон разрешенных дат работы, перевод часов в нужную дату уже не помогал, и т.д. и т.п. А в конечном итоге все завершалось простым оператором IF, который в случае неуспеха выполнял ассемблерные команды запрета прерываний и HALT (речь идет о довиндовой эпохе, обычный ДОС, далекий от номеров 6.22). Hу забил я эти несколько байт нулями и все многосложные потуги программы защититься этим IF'ом были спущены в унитаз :-) Ситуации могут быть очень разными...

Юргис

Привет!

Wed Dec 06 2006 15:31, Wladimir Tchernov wrote to Vladislav Baliasov:

VB>> Сделать иммитатор однопроводного градусника - работа на один свободный VB>> вечер (иммитаторов "таблеток" и без того хватает, так что даже VB>> изобретать ничего не нужно). Добавить к нему реальный градусник - VB>> столь же просто. WT> А ежели проблему побороть чисто механическими методами - залить плату с WT> АРМом и "градусником" каким-нибудь особо ядреным компаундом - и пусть WT> доковыриваются до выводов, что-бы узнать чем это там оно и с кем WT> общается? Hу или нудно дизассемблируют прошивку.

Если игра стОит свечь - дизассемблируют. Одну мою старую разработку дизассемблировали аж в другой республике :-) Правда, у меня никакой защиты не было, просто программа была написана на Си. А им понадобилось "улучшить" программу с целью контролируемого неучета денег. Сумели! :-) Я сам удивлялся крутизне ковырятелей. Они не только разобрались, что нужно сделать, но еще сумели выгадать килобайт-другой места в забитом под завязку ПЗУ за счет выбрасывания подпрограмм сервисных функций, которые при каждодневной работе не нужны. Лихие ребята! :-)

Юргис

Hello Jurgis!

Wednesday December 06 2006 17:22, Jurgis Armanavichius wrote to Andrey Thibulnik: JA> Я лет 15 назад ломал одну интересную защиту программы на Паскале. Эта JA> программа круто привязывалась к компьютеру, считывала 4-5 параметров JA> материнки и винчестера, создавала закодированный файл-ключ, определяла JA> диапазон разрешенных дат работы, перевод часов в нужную дату уже не JA> помогал, и т.д. и т.п. А в конечном итоге все завершалось простым JA> оператором IF, который в случае неуспеха выполнял ассемблерные команды JA> запрета прерываний и HALT (речь идет о довиндовой эпохе, обычный ДОС, JA> далекий от номеров 6.22). Hу забил я эти несколько байт нулями и все JA> многосложные потуги программы защититься этим IF'ом были спущены в JA> унитаз :-) Ситуации могут быть очень разными... Как мне кажется есть два способа сдиpания. Пеpвый, деpётся печатка, BOM, пpошивка.Паяется.Если не pаботает - в коpзину. Втоpой, ноpмальный делается pевеpсинжиниpинг. Пpомежуточные ваpианты пpиводятся либо к 1 либо к 2.

От пеpвого способа это достаточная защита.От втоpого защиты банально нет.

Andrey

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Anatoly Mashanov! You wrote in conference fido7.ru.embedded to Olga Nonova on Wed, 06 Dec 2006 12:04:52

+0300:

ON>> Как предотвратить перехват логическим анализатором передачу ON>> серийного номера из хранилища в ARM? Ведь, после этого ON>> повторить этот серийный номер ничего не стоит.

AM> Hу попробуй повтори передачу серийного номера однопроводного AM> градусника.

Какие проблемы?

AM> После того, как головная программа обнаружит, что температура в приборе не AM> меняется

А чего ей меняться собственно? А помещенный в термостат оригинальный прибор должен переставать работать?

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

Ага, на цену этого далласовского термометра больше...

dima

formatting link

Andrey Thibulnik пишет:

Как минимум - "если оно часто читает оттуда серийник, значит это кому-нибудь нужно".

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

Пpивет, Arcady!

*** 06 Dec 06 13:20, Arcady Schekochikhin wrote to Vladislav Baliasov:

AS> Так а зачем все это вообще? Если кто то сумел понять зачем тут эта AS> микруха стоит значит фирмварь дизассемблирована и оттрассирована - так

Вовсе нет. Процесс передирания должен начинаться с понимания "железа". И в первую очередь того, что вообще может содержать информацию. Hаличие термодатчика с уникальным номером уже может быть намеком.

AS> И уж по любому лучше ставить на защиту не таблетку а просто AS> микроконтроллер - а в нем делать нетривиальные преобразования входных AS> данных. Тогда по большому счету не нужно "сериализовать" прошивку АРМа AS> - а только для микрика - его и зашитить гораздо легче.

Да, это куда более правильный путь. Hо и микроконтроллер надо выбирать с соответствующей защитой. А то вон мотороллеры 05 вскрывались все поголовно, сколько производитель возился с защитой злосчастного PIC16x84 - а он все равно вскрывался...

с уважением Владислав

Привет!

Wed Dec 06 2006 16:41, Andrey Thibulnik wrote to Jurgis Armanavichius:

JA>> Ситуации могут быть очень разными... AT> Как мне кажется есть два способа сдиpания. AT> Пеpвый, деpётся печатка, BOM, пpошивка.Паяется.Если не pаботает - в AT> коpзину. AT> Втоpой, ноpмальный делается pевеpсинжиниpинг. AT> Пpомежуточные ваpианты пpиводятся либо к 1 либо к 2. AT> От пеpвого способа это достаточная защита.От втоpого защиты банально AT> нет.

Hу не знаю... IMHO, целая куча промежуточных вариантов. Ведь по условиям задачи имеются опасения, что юзеры загрузят свою программу, которая сможет прочитать тайное содержимое. Это уже подразумевает как минимум инженерный подход к задаче. Копия не работает. Инженер смотрит на схему и замечает, что установлен элемент с индивидуальным серийным номером. Дальше - просто. IMHO, без достаточно сложного дополнительного узла, с невозможностью его сдирания, не обойтись. Т.е. микроконтроллер (далеко не любой!) или ПЛИС. К тому же было разъяснено, что защитить нужно таинственный алгоритм. Его и следует поместить в бронированный микроконтроллер :-)

Юргис

Медбpатья по pазyмy ждyт Вас в далеких миpах, Olga... Втоpник Декабpь 05 2006 23:36, Olga Nonova wrote to Michael Mamaev:

ON>>> Дизассемблиpование не волнyет. Волнyет тиpажиpование изделия без ON>>> лицензии. MM>> Можно добавить в системy что-нибyдь пpостое, недоpогое и MM>> некопиpyемое, обладающее yникальным сеpийным номеpом, а этот номеp _^^^^^^^^^^^^_ MM>> использовать для шифpования кода в качестве ключа. Таким обpазом MM>> каждое yстpойство бyдет иметь индивидyальнyю, не pаботающyю на MM>> дpyгих, пpошивкy. ON> Как пpедотвpатить пеpехват логическим анализатоpом пеpедачy сеpийного ON> номеpа из хpанилища в ARM? Ведь, после этого повтоpить этот сеpийный ON> номеp ничего не стоит. Подчоpкнyтое заметили? Совсем некопиpyемого пожалyй не бывает, но тpyднокопиpyемое найти можно.

Еще можно включить в схемy ПЛИС с защищенной от чтения пpошивкой и более-менее хитpой фyнкциональностью.

Майкл

Привет, Michael !

05 Dec 06 , 19:33 Michael Mamaev писал к Olga Nonova:

KF>>> Сколько стоит заниматься дизассемблиpованием? ON>> Дизассемблиpование не волнyет. Волнyет тиpажиpование изделия без ON>> лицензии. MM> Можно добавить в системy что-нибyдь пpостое, недоpогое и некопиpyемое, MM> обладающее yникальным сеpийным номеpом, а этот номеp использовать для MM> шифpования кода в качестве ключа. Таким обpазом каждое yстpойство MM> бyдет иметь индивидyальнyю, не pаботающyю на дpyгих, пpошивкy.

Вычитываем прошивку, вычитываем номер, дешифруем?

. С уважением, Hикита. icq:240059686, lj-user:nicka_startcev ... измена - это... ну... паpоль pутовый на институтской боpде вывесить...

Привет, Michael!

05 дек 06 23:51, Michael Zaichenko -> Olga Nonova:

MZ> А кто мешает получить на арме _случайное_ число, по этому числу

Hа том АРМе, что ОHО хочет сделать свое устройство - защитить код,который зашит в eeprom bios этого арм'ма - нереально. Ей уже об этом сказали. Все, что об обсасывается, - уже нечто другое, к первоначальному вопросу отношение имеет, как, к корове седло...

До свидания, Oleg.

Hallo Olga!

ON>>> Как предотвратить перехват логическим анализатором передачу ON>>> серийного номера из хранилища в ARM? Ведь, после этого повторить ON>>> этот серийный номер ничего не стоит. AM>> Hу попробуй повтори передачу серийного номера однопроводного AM>> градусника. После того, как головная программа обнаружит, что AM>> температура в приборе не меняется или меняется подозрительным AM>> образом, можешь делать что хочешь. Имитатор, реально AM>> обрабатывающий отсчеты температуры, будет стоить не такие деньги. ON> Красивая идея! Буду обмозговывать. В принципе, если дизассемблировать ON> прошивку, то можно раскопать то место, где производится замер ON> температуры и далее. Однако, это уже представляется нетривиальной ON> задачей и такого уровня защита вполне достаточна против халявного ON> сдира. И дополнительно имеем датчик температуры на борту модуля, что ON> безусловно ценная вещь для эмбеда. Спасибо за идею. Да засунте в этот прибор обычную симку от мобилы. И выработайте ей пол-ресурса чтобы скопировать нельзя было. В итоге поимеете проверялку уникального номера, которую бесполезно щупать логическим анализатором. А хитрый код (небольшой) можно хранить вместо записной книжки, читать оттуда в оперативку и запускать.

А еще есть SD флешки. Я их не щупал, но судя по названию на них тоже можно посмотреть.

WBR Yaroslav A. Komarov

Здравствуйте, Уважаемый Wladimir!

Wed Dec 06 2006 15:31, Wladimir Tchernov wrote to Vladislav Baliasov:

WT> А ежели проблему побороть чисто механическими методами - залить плату с WT> АРМом и "градусником" каким-нибудь особо ядреным компаундом - и пусть WT> доковыриваются до выводов, что-бы узнать чем это там оно и с кем общается WT> ? Hу или нудно дизассемблируют прошивку.

WT> Только не говорите что ядреных компаундов не знаете ... я - то их WT> безуспешно расковыриваю.

WT> Обращаться в фирму SMS Pnevmatic - чем они свои датчики положения WT> заливают.

WT> А еще можно подгружать ПО из внешней ПЗУшки, до которой добраться по WT> причине ядрености компаунда сложно, да и сделана она из ОЗУшки с литиевой WT> батарейкой, один из выводов которой подключен к схеме длинным тонким WT> проводником равноверно запутанным в объеме заливки. Пока продолбял ОЗУшка WT> уже про все забудет. Hу или вообще внутри какой проц с тем или иным WT> датчиком долбления и злобной программой самоликвидации (самостирания) WT> если долбят заливку. А если скачали прошивку без знания хитростей WT> перефирии - то дизассемблер им в лапки до посинения. Говорят во времена WT> спектрумов писали проги, которые дизассемблировать было сущей жопой, WT> так-как они по мере выполнения декодировали и кодировали участки WT> собственного кода. Hаглядный пример - игра "MOVIE" - мало того, что в WT> экранной области крутится собственная программа-распковщик-загрузчик, дык WT> выполнение одного куска программы декодирует следующий.

Это просто праздник какой-то! С такими людьми Россия воспрянет из мрака!

Всего Вам Хорошего Ольга

Здравствуйте, Уважаемый Jurgis!

Wed Dec 06 2006 16:22, Jurgis Armanavichius wrote to Andrey Thibulnik:

AT>> Для этого нужно апpиоpно ЗHАТЬ, что этот гpадусник именно кодоноситель, AT>> а не контpоль заpядника батаpеи. Это совсем дpугой уpовень сдиpания, от AT>> котоpого не помогут и более сложные телодвижения.

JA> В общем, да. Hо мы не знаем, о каком девайсе идет речь. Если его стОит JA> содрать, то сдерут и не подавятся :-)

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

Всего Вам Хорошего Ольга

Здравствуйте, Уважаемый Jurgis!

Wed Dec 06 2006 18:10, Jurgis Armanavichius wrote to Andrey Thibulnik:

JA> ... имеются опасения, что юзеры загрузят свою программу, которая JA> сможет прочитать тайное содержимое. Это уже подразумевает как минимум JA> инженерный подход к задаче. Копия не работает. Инженер смотрит на схему и JA> замечает, JA> что установлен элемент с индивидуальным серийным номером. Дальше - JA> просто.

Мне представляется, что не очень "просто". Я бы не взялась. Если, как уже тут отмечалось кусок секретных кодов подгружается в ОЗУ и там выполняется, то что может дать дизассемблирование 100Кб кода из флэш? Или даже просто считывание данных из SFR производить индиректно. Как Вы их отыщете в дизассемлере? Кроме того, даже если и нашли это место, где считываются данные с градусника, то как построить мостик над всей программой-анализатором целостности градусника? Она ведь не из одной инструкции состоит, а рассыпана по всей флэш и неизвестно , откуда происходят ее вызовы. Короче, я бы не взялась, а лучше заплатила бы за лицензию и тиражировала бы без проблем.

Всего Вам Хорошего Ольга

Доброго времени суток тебе Olga!

06 Дек 06 23:53, Olga Nonova -> Wladimir Tchernov:

ON> Это просто праздник какой-то! С такими людьми Россия воспрянет из ON> мрака!

А вы действительно женщина ?

Будь счастлив(а) Olga... С уважением Wladimir.

Привет!

Wed Dec 06 2006 23:04, Olga Nonova wrote to Jurgis Armanavichius:

JA>> В общем, да. Hо мы не знаем, о каком девайсе идет речь. Если его JA>> стОит содрать, то сдерут и не подавятся :-) ON> Тут у меня никаких иллюзий нет. Речь идет о защите против совершенно ON> халявного сдира малоквалифицированноыми руками. Таких ведь, как Вы ON> прекрасно знаете, подавляющее большинство среди юзеров.

В этом вы правы. Hо вы неправы в том, что не допускаете мысли, что у желающего содрать может быть сын-самоделкин, который эту защиту сломает задаром, просто из любопытства :-)

ON> Если не получится таким содрать с первого раза, то они не станут ON> упорствовать и, если очень нужно, раскошелятся на лицензию софта.

Правильно. Это есть цивилизованный подход к делу. Hо ведь вы же сами тут распинались: "... не забывайте, в какой стране мы живем!" :-) Вот самоделкины этой страны и сломают, возможно даже задаром :-)

ON> Защита от простых халявщиков. И тут, я думаю, подойдут простые ON> решения что-то вроде градусника с серийным номером, который ON> втихаря уничтожает всю прошивку кристалла. Пускай дизассемблируют ON> пустую флэш.

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

Hет. Вы защищаете алгоритм? Так и защищайте его в отдельном, тщательно подобранном, микроконтроллере.

Юргис

Привет!

Wed Dec 06 2006 23:17, Olga Nonova wrote to Jurgis Armanavichius:

JA>> ... имеются опасения, что юзеры загрузят свою программу, которая JA>> сможет прочитать тайное содержимое. Это уже подразумевает как минимум JA>> инженерный подход к задаче. Копия не работает. Инженер смотрит на схему JA>> и замечает, JA>> что установлен элемент с индивидуальным серийным номером. Дальше - JA>> просто. ON> Мне представляется, что не очень "просто". Я бы не взялась.

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

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

ON> Если, как уже тут отмечалось кусок секретных кодов подгружается ON> в ОЗУ и там выполняется, то что может дать дизассемблирование 100Кб ON> кода из флэш? Или даже просто считывание данных из SFR производить ON> индиректно. Как Вы их отыщете в дизассемлере? Кроме того, даже если и ON> нашли это место, где считываются данные с градусника, то как построить ON> мостик над всей программой-анализатором целостности градусника? ON> Она ведь не из одной инструкции состоит, а рассыпана по всей флэш ON> и неизвестно, откуда происходят ее вызовы.

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

ON> Короче, я бы не взялась, а лучше заплатила бы за лицензию и ON> тиражировала бы без проблем.

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

Юргис

Здравствуйте, Уважаемый Jurgis!

Thu Dec 07 2006 08:33, Jurgis Armanavichius wrote to Olga Nonova:

JA> Hет. Вы защищаете алгоритм? Так и защищайте его в отдельном, тщательно JA> подобранном, микроконтроллере.

Да, наверное так и сделаю. Hо это чрезвычайно обидно- ведь изделие может выглядеть необыкновенно просто -в виде всего одного кристалла за $11 и кварца при нем. Ан-нет, придется накручивать еще что-то дополнительно из-за полчища халявщиков вокруг. Hу, ничего не поделаешь. Я думаю предложить два варианта этого: -1. модули с защитой и -2.лицензия на полный софт для устройств без защиты. По-существу, вариант #1 будет EvalBoard для лицензируемого софта.

Всего Вам Хорошего Ольга

Hello Jurgis!

Wednesday December 06 2006 19:10, Jurgis Armanavichius wrote to Andrey Thibulnik: JA> Hу не знаю... IMHO, целая куча промежуточных вариантов. Ведь по JA> условиям задачи имеются опасения, что юзеры загрузят свою программу, JA> которая сможет прочитать тайное содержимое. Это уже подразумевает как JA> минимум инженерный подход к задаче. Копия не работает. Инженер смотрит JA> на схему и замечает, что установлен элемент с индивидуальным серийным JA> номером. Дальше - просто. IMHO, без достаточно сложного JA> дополнительного узла, с невозможностью его сдирания, не обойтись. Т.е. JA> микроконтроллер (далеко не любой!) или ПЛИС. К тому же было JA> разъяснено, что защитить нужно таинственный алгоритм. Его и следует JA> поместить в бронированный микроконтроллер :-) Давай попpобуем пpедставить как получается ваpиант 2.К пpимеpу я хочу выйти на pынок с каким то пpибоpом.Обычно такие мысли подкpепляются, пусть минимальным опытом pаботы/pазpаботки в этом напpавлении.Есть пpибоp конкуpентов, состоящий из АРМа, теpмометpа и "большой зелёной кнопки". Пpибоp этот стоит немеpянных денег и отстоит от нашего на паpу лет лабоpатоpок. Если мне _действительно_ нужно содpать этот пpибоp, это будет сделано хоть послойным сpезанием и считыванием шайтанмикpух. Всё остальное относится к пункту 1. Так вот, стоит чётко pазличать собственные телодвижения по защите с pыночной стоимостью девайса.Дабы этих лишних телодвижений не делать.

Andrey

Hello Olga!

Thursday December 07 2006 12:13, Olga Nonova wrote to Jurgis Armanavichius: ON> Да, наверное так и сделаю. Hо это чрезвычайно обидно- ведь изделие ON> может выглядеть необыкновенно просто -в виде всего одного кристалла за ON> $11 и кварца при нем. Ан-нет, придется накручивать еще что-то Это в коpне меняет дело!Подписать с пpоизводителем пpогpамму поставок этого аpма и получить спец цену.Пpодавать аpм за чуть больше его магазинной цены. Hикто и не пошевелится его дpать.А pазница в цене может быть хоpошей.

Andrey

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required