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

Привет!

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'ом были спущены в унитаз :-) Ситуации могут быть очень разными...

Юргис

Reply to
Jurgis Armanavichius
Loading thread data ...

Привет!

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

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

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

Юргис

Reply to
Jurgis Armanavichius

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

Reply to
Andrey Thibulnik

 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

Reply to
Dmitry Orlov

Andrey Thibulnik пишет:

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

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

Reply to
Ivan Maximov

Пpивет, Arcady!

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

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

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

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

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

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

Reply to
Vladislav Baliasov

Привет!

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, без достаточно сложного дополнительного узла, с невозможностью его сдирания, не обойтись. Т.е. микроконтроллер (далеко не любой!) или ПЛИС. К тому же было разъяснено, что защитить нужно таинственный алгоритм. Его и следует поместить в бронированный микроконтроллер :-)

Юргис

Reply to
Jurgis Armanavichius

Медб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нкциональностью.

Майкл

Reply to
Michael Mamaev

Привет, 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де вывесить...

Reply to
Nickita A Startcev

Привет, Michael!

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

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

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

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

Reply to
Oleg Primakov

Hallo Olga!

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

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

WBR Yaroslav A. Komarov

Reply to
Yaroslav 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> выполнение одного куска программы декодирует следующий.

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

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

Reply to
Olga Nonova

Здравствуйте, Уважаемый 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> содрать, то сдерут и не подавятся :-)

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

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

Reply to
Olga Nonova

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

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

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

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

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

Reply to
Olga Nonova

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

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

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

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

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

Reply to
Wladimir Tchernov

Привет!

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ет. Вы защищаете алгоритм? Так и защищайте его в отдельном, тщательно подобранном, микроконтроллере.

Юргис

Reply to
Jurgis Armanavichius

Привет!

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> тиражировала бы без проблем.

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

Юргис

Reply to
Jurgis Armanavichius

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

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

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

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

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

Reply to
Olga Nonova

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

Reply to
Andrey Thibulnik

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

Reply to
Andrey Thibulnik

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.