|
Защита программы от несанкционированного распространения |
|
|
|
Aug 18 2015, 11:11
|
Местный
  
Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199

|
Привет всем! Мне необходимо написать свою программу для устройства на МК MSP430F249 так, чтобы она работала только в данном конкретном устройстве. Подскажите, как это можно сделать? Получается, что программе надо каким то образом идентифицировать МК, в котором она выполняется, на признак "свой" или "чужой" (если "чужой", то прекратить работу). Припоминается, что где-то я читал информацию о том, что каждый МК указанной марки хранит в ПЗУ для загрузчика BSL некий номер, уникальный для данного МК. Или я это выдумал?.. Есть ли нечто подобное в указанных МК?
P.S. Прожиг фьюза JTAG не предлагать, ибо программирование устройства будет делать другой человек, который заинтересован в использовании программы на нескольких устройствах (а я против этого). И еще: я понимаю, что любую защиту можно взломать, поэтому прошу не указывать на это и не говорить, что все попытки данной защиты бесполезны.
|
|
|
|
|
 |
Ответов
|
Aug 19 2015, 15:47
|
Местный
  
Группа: Участник
Сообщений: 356
Регистрация: 24-02-09
Пользователь №: 45 309

|
От программиста оснащённого JTAG-отладчиком, защитить программу в МК не получится никак. Но от тупого тиражирования того файла, что вы отправите покупателю прошивки - защититься можно. Прошивку надо отправлять на плате с контроллером и микросхемой памяти (24Сххх например). Прошивка хранится в частично закодированном виде, непригодном для прямого исполнения, а часть может работать. Ключ к раскодировке находится в микроконтроллере. Этот МК загружает прошивку в неизменном виде (зашифрованную), и запускает её в целевом устройстве. Незакодированная часть программы делает распаковку зашифрованных модулей, постоянно запрашивая ключ к их расшифровке у МК полученного по почте. После полной распаковки программы, в МК-загрузчик раппортуется об успешном завершении распаковки, и тот стирает содержимое 24Сххх, и какой-нить бит (байт) собственной памяти, чтоб больше функцию загрузки он выполнять не мог - может даже пускай самостирается весь. Этого достаточно, чтоб не дать тиражировать присланную по почте прошивку, т.к. она без сопровождающего МК не распакуется. А МК участвует в процессе распаковки программы только один раз, а потом блокируется. Но от программера с JTAG-отладчиком и дизассемблером, который сольёт вашу прошивку из целевого МК это не спасёт  Разве что МК, сопровождающий прошивку - как то ухитрится ещё и JTAG пережечь... Тогда было бы всё в порядке.
|
|
|
|
|
Aug 20 2015, 05:51
|
Местный
  
Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199

|
Цитата(controller_m30 @ Aug 19 2015, 18:47)  От программиста оснащённого JTAG-отладчиком, защитить программу в МК не получится никак. Но от тупого тиражирования того файла, что вы отправите покупателю прошивки - защититься можно. Прошивку надо отправлять на плате с контроллером и микросхемой памяти (24Сххх например). Прошивка хранится в частично закодированном виде, непригодном для прямого исполнения, а часть может работать. Ключ к раскодировке находится в микроконтроллере. Этот МК загружает прошивку в неизменном виде (зашифрованную), и запускает её в целевом устройстве. Незакодированная часть программы делает распаковку зашифрованных модулей, постоянно запрашивая ключ к их расшифровке у МК полученного по почте. После полной распаковки программы, в МК-загрузчик раппортуется об успешном завершении распаковки, и тот стирает содержимое 24Сххх, и какой-нить бит (байт) собственной памяти, чтоб больше функцию загрузки он выполнять не мог - может даже пускай самостирается весь. Этого достаточно, чтоб не дать тиражировать присланную по почте прошивку, т.к. она без сопровождающего МК не распакуется. А МК участвует в процессе распаковки программы только один раз, а потом блокируется. Но от программера с JTAG-отладчиком и дизассемблером, который сольёт вашу прошивку из целевого МК это не спасёт  Разве что МК, сопровождающий прошивку - как то ухитрится ещё и JTAG пережечь... Тогда было бы всё в порядке... Погодите-ка... Получается, после распаковки в устройстве заказчика будет находится работоспособная прошивка. С условием того, что JTAG у него рабочий, что мешает ему скопировать эту прошивку и заливать ее уже без моего участия? Не пойдет так! Но Ваше предложение об устройстве, заливающем прошивку, родило следующую идею. Можно изготовить устройство-загрузчик на основе лишь одного МК без микросхемы памяти. В этом МК будет хранится прошивка для заливки и загрузчик. Фьюз JTAG у этого МК должен быть пережжен. Заказчик, получив от меня устройство-загрузчик по обычной почте, подключает его к своему целевому МК. Что важно, подключение будет осуществлено по JTAG. После физического подключения, заказчик нажимает на устройстве-загрузчике кнопку, в результате чего оно начинает копировать в целевой МК прошивку. После завершения копирования, устройство-загрузчик прожигает фьюз целевого МК, а так же стирает собственную память. В результате у заказчика остается работоспособное устройство с моей прошивкой, но с невозможностью сделать копию, а так же мое устройство-загрузчик, которое уже не способно что-либо загрузить. Его он мне отсылает назад. Я через BSL загружаю в него прошивку и загрузчик и снова готов отправить ее для заливки. Вопрос: как осуществить "общение" по JTAG порту? Где взять протокол обмена?
|
|
|
|
Сообщений в этой теме
d7d1cd Защита программы от несанкционированного распространения Aug 18 2015, 11:11 Obam BSL через УАПП:
Access to the MSP430 flash memory... Aug 19 2015, 06:31 d7d1cd Цитата(Obam @ Aug 19 2015, 09:31) BSL чер... Aug 19 2015, 06:56 Obam "Припоминается, …, что каждый МК указанной ма... Aug 19 2015, 07:42 d7d1cd Цитата(Obam @ Aug 19 2015, 10:42) Я приве... Aug 19 2015, 08:01 k155la3 вместо внешней памяти использовать недорогой микро... Aug 19 2015, 08:46 d7d1cd Цитата(k155la3 @ Aug 19 2015, 11:46) вмес... Aug 19 2015, 08:51 k155la3 Ага, тогда понятно. У меня аналогичная ситуация, к... Aug 19 2015, 09:01 d7d1cd Цитата(k155la3 @ Aug 19 2015, 12:01) Ага,... Aug 19 2015, 11:23  Tanya Цитата(d7d1cd @ Aug 19 2015, 14:23) как м... Aug 19 2015, 11:38   d7d1cd Цитата(Tanya @ Aug 19 2015, 14:38) А я ду... Aug 19 2015, 11:41    Tanya Цитата(d7d1cd @ Aug 19 2015, 14:41) Так т... Aug 19 2015, 12:00     d7d1cd Цитата(Tanya @ Aug 19 2015, 15:00) Только... Aug 19 2015, 12:06      Tanya Цитата(d7d1cd @ Aug 19 2015, 15:06) Хорош... Aug 19 2015, 12:15  Abell Цитата(d7d1cd @ Aug 19 2015, 14:23) Вот к... Aug 19 2015, 11:43   d7d1cd Цитата(Abell @ Aug 19 2015, 14:43) Прошив... Aug 19 2015, 11:52 zltigo QUOTE (d7d1cd @ Aug 18 2015, 14:11) И еще... Aug 19 2015, 12:42 d7d1cd Цитата(zltigo @ Aug 19 2015, 15:42) А я т... Aug 19 2015, 12:56  zltigo QUOTE (d7d1cd @ Aug 19 2015, 15:56) Кроме... Aug 19 2015, 14:26  ASN d7d1cd
Как обстоят дела с MSP430 не знаю, но стары... Aug 19 2015, 14:49 Abell Может, глупость скажу, но тем не менее - может ест... Aug 19 2015, 13:57  Abell Цитата(d7d1cd @ Aug 20 2015, 08:51) Погод... Aug 20 2015, 06:23   d7d1cd Цитата(Abell @ Aug 20 2015, 09:23) Извиня... Aug 20 2015, 06:47    Abell Цитата(d7d1cd @ Aug 20 2015, 09:47) друго... Aug 20 2015, 08:07 Obam Тщета это всё…
Пару-тройку раз заказчик сымитирует... Aug 20 2015, 07:11 d7d1cd Спасибо. Прошу прощения, а на кириллице нет сего п... Aug 20 2015, 07:21 Obam Цитата(d7d1cd @ Aug 20 2015, 11:21) Спаси... Aug 20 2015, 07:38 digital Есть открытые библиотеки для работы с программатор... Aug 20 2015, 08:50 d7d1cd Бутлоадер - это программа в МК, которая может обно... Aug 20 2015, 08:57 digital Цитата(d7d1cd @ Aug 20 2015, 11:57) Бутло... Aug 20 2015, 09:06 d7d1cd Сколько работаю с MSP430, никогда нигде не видел, ... Aug 20 2015, 09:16 digital как добавить уникальности
можно измерять частоту ... Aug 20 2015, 09:26 d7d1cd Цитата(digital @ Aug 20 2015, 12:22) все ... Aug 20 2015, 09:26  digital Цитата(d7d1cd @ Aug 20 2015, 12:26) Проши... Aug 20 2015, 09:35
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|