Перейти к содержанию
    

Защита программы от несанкционированного распространения

Привет всем! Мне необходимо написать свою программу для устройства на МК MSP430F249 так, чтобы она работала только в данном конкретном устройстве. Подскажите, как это можно сделать?

Получается, что программе надо каким то образом идентифицировать МК, в котором она выполняется, на признак "свой" или "чужой" (если "чужой", то прекратить работу). Припоминается, что где-то я читал информацию о том, что каждый МК указанной марки хранит в ПЗУ для загрузчика BSL некий номер, уникальный для данного МК. Или я это выдумал?.. Есть ли нечто подобное в указанных МК?

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

BSL через УАПП:

 

Access to the MSP430 flash memory via the BSL is protected by a 256-bit userdefined

password. For more details see the MSP430 Programming Via the Bootstrap Loader User's Guide

(SLAU319).

 

А фузы всё равно пережигать, потому как JTAGом вычитывается вся память.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

BSL через УАПП:

 

Access to the MSP430 flash memory via the BSL is protected by a 256-bit userdefined

password. For more details see the MSP430 Programming Via the Bootstrap Loader User's Guide

(SLAU319).

 

А фузы всё равно пережигать, потому как JTAGом вычитывается вся память.

 

Видимо Вы не поняли постановки задачи (почитайте первый пост внимательно).

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

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

Есть ли какие-то сображения по этому вопросу?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"Припоминается, …, что каждый МК указанной марки хранит в ПЗУ для загрузчика BSL некий номер, уникальный для данного МК."

 

Я привел из документации, что это за номер такой требуется BSL, это раз;

"серийного" номера проца на борту проца нет, это два;

есть некая TLV Structure с калибровочными данными, они должны по идее быть уникальными, но… короче, тут вам думать, это три.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я привел из документации, что это за номер такой требуется BSL, это раз;

Этот номер - таблица векторов прерываний. Он пароль для BSL. Мне он не подходит.

 

"серийного" номера проца на борту проца нет, это два;

Это плохо...

 

есть некая TLV Structure с калибровочными данными, они должны по идее быть уникальными, но… короче, тут вам думать, это три.

Уверен, что эта структура хранится в FLASH памяти. Ее можно скопировать. Значит тоже не подходит.

 

Буду, наверное, использовать внешнюю память.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вместо внешней памяти использовать недорогой микроконтроллер, подключаемый по SPI или I2C.

Протокол свой-чужой - подобный методе лицензирования IAR через интернет.

Т.е. основной контроллер пытается получить у "держателя лицензий" разрешение на работу.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вместо внешней памяти использовать недорогой микроконтроллер, подключаемый по SPI или I2C.

Протокол свой-чужой - подобный методе лицензирования IAR через интернет.

Т.е. основной контроллер пытается получить у "держателя лицензий" разрешение на работу.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ага, тогда понятно. У меня аналогичная ситуация, которая решилась пережигом JTAG и дальнейшей работой с BSL.

Если надо не защита, а примитивное ограничение доступа - прописывайте в INFO-сегменты серийные номера, хеши-CRC.

Делайте "индивидуальные" прошивки для каждого девайса.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ага, тогда понятно. У меня аналогичная ситуация, которая решилась пережигом JTAG и дальнейшей работой с BSL.

Если надо не защита, а примитивное ограничение доступа - прописывайте в INFO-сегменты серийные номера, хеши-CRC.

Делайте "индивидуальные" прошивки для каждого девайса.

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

А я думаю, что если Вы сами будете заливать прошивку дистанционно, то это шанс...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А я думаю, что если Вы сами будете заливать прошивку дистанционно, то это шанс...

Так так... Как залить дистанционно? Team Viewer?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот как раз сделать "индивидуальные" прошивки для каждого девайса мне и нужно. Однако эту прошивку я не сам буду заливать в МК.

Прошивка - в Ваших руках, все железо - в руках другого человека, правильно понял?

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прошивка - в Ваших руках, все железо - в руках другого человека, правильно понял?

Все правильно.

 

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

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так так... Как залить дистанционно? Team Viewer?

Только принцип... Ваш недруг должен поставить на машине UNIX, который Вы закажете, и дать Вам пароль суперпользователя. Как с Винд* - не знаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только принцип... Ваш недруг должен поставить на машине UNIX, который Вы закажете, и дать Вам пароль суперпользователя. Как с Винд* - не знаю.

Хорошо, дистанционный доступ есть. Я должен буду залить прошивку и прожечь JTAG. И никакой защиты мудить мудрить не надо. Верно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...