|
|
  |
Защита для прошивки |
|
|
|
Dec 23 2006, 02:20
|
Участник

Группа: Новичок
Сообщений: 20
Регистрация: 22-12-06
Пользователь №: 23 802

|
Здравствуйте, У меня такая ситуация: есть прошивка(в CodeVisionAVR под AtMega16), нужно передать её другому человеку, но так, чтоб он смог использовать её только для одного устройства.
Думаю сделать это так: при первом запуске контроллер генерит случайный код, записывает его в EEPROM и выводит на LCD.Код передаётся мне, я составляю ответный код, передаю его, он вводится в устройство, контроллер записывает его в EEPROM.Далее при каждом включении контроллер сверяет на правильность коды из EEPROM, при несоответствии работа устройства блокируется.
Но для этого думаю нужно контролировать что стоит фьюз защиты от чтения EEPROM(иначе не генерить первый код) и генератор реально случайных чисел(не псевдослучайных).
Посоветуйте как это можно реализовать, или может есть способы попроще
|
|
|
|
|
Dec 23 2006, 02:40
|
Участник

Группа: Новичок
Сообщений: 20
Регистрация: 22-12-06
Пользователь №: 23 802

|
Цитата(defunct @ Dec 23 2006, 01:29)  Да есть.. Продавать прошитые чипы. (хотя бы с Вашим бутлоадером)
А Ваш вариант к сожалению работать не будет, т.к. у Вашей прошивки не будет возможности ни залочить чип, ни проверить статус локов. Нельзя достучаться из прошивки к фузам и локам.. К сожалению передать прошитый чип нет возможности. Может всёже есть другие варианты защитить прошивку?
|
|
|
|
|
Dec 23 2006, 03:37
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(Alex@ndr @ Dec 23 2006, 02:40)  К сожалению передать прошитый чип нет возможности. Вырезать часть функциональности и дать как демо-версию. А там уж если заказчику понравится, может быть и появится возможность передать прошитый чип. Цитата Может всёже есть другие варианты защитить прошивку? Добавить в схему еще один чип, так чтобы оба чипа могли друг-друга программировать. Добавить межпроцессорный протокол. И тогда Ваш вариант заработает. Например так: Заказчик заливает прошивку в оба чипа. Первый чип (1) подает второму (2) команду залочить себя (2) лочит (1), после чего перезапускает и сообщает (1), что тот залочен. (1) пишет в EEPROM статул лока, для того чтобы больше не просить (2) себя лочить, и генерит некий код который надо сообщить Вам по телефону. Ну а дальше уже так как Вы описали в самом первом посте. Только самое важное, чтобы программа без второго чипа была неработоспособной.
|
|
|
|
|
Dec 23 2006, 12:12
|
Профессионал
   
Группа: Свой
Сообщений: 553
Регистрация: 17-02-05
Из: Свердловская обл.
Пользователь №: 2 712

|
Можно попробовать прочитать заводскую инфу из самого чипа (к примеру - калибровочную константу CLC, она для разных экземпляров чипов будет наверняка разной, хотя совпадения и возможны), и использовать ее как идентификатор. Ваш заказчик должен будет выслать Вам значение этой калибровочной константы, а дальше - Ваша задача написать загрузчик, который будет использовать при записи контроль содержимого чипа, с блокировкой записи при несовпадении данных.
--------------------
Закономерность: Чем больше узнаю, тем меньше знаю... Любые мнения, даже ошибочные, имеют право на существование. Чем лучше узнаю людей, тем больше нравятся собаки...
|
|
|
|
|
Dec 23 2006, 13:38
|
Участник

Группа: Новичок
Сообщений: 20
Регистрация: 22-12-06
Пользователь №: 23 802

|
Цитата(Валентиныч @ Dec 23 2006, 11:12)  Можно попробовать прочитать заводскую инфу из самого чипа (к примеру - калибровочную константу CLC, она для разных экземпляров чипов будет наверняка разной, хотя совпадения и возможны), и использовать ее как идентификатор. Ваш заказчик должен будет выслать Вам значение этой калибровочной константы, а дальше - Ваша задача написать загрузчик, который будет использовать при записи контроль содержимого чипа, с блокировкой записи при несовпадении данных. А как можно считать константу CLC(ну кроме как через програматор), сам контроллер может считать свою константу?
|
|
|
|
|
Dec 23 2006, 15:50
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(defunct @ Dec 23 2006, 07:37)  Цитата(Alex@ndr @ Dec 23 2006, 02:40)  К сожалению передать прошитый чип нет возможности.
Вырезать часть функциональности и дать как демо-версию. А там уж если заказчику понравится, может быть и появится возможность передать прошитый чип. Цитата Может всёже есть другие варианты защитить прошивку? Добавить в схему еще один чип, так чтобы оба чипа могли друг-друга программировать. Добавить межпроцессорный протокол. И тогда Ваш вариант заработает. Например так: Заказчик заливает прошивку в оба чипа. Первый чип (1) подает второму (2) команду залочить себя (2) лочит (1), после чего перезапускает и сообщает (1), что тот залочен. (1) пишет в EEPROM статул лока, для того чтобы больше не просить (2) себя лочить, и генерит некий код который надо сообщить Вам по телефону. Ну а дальше уже так как Вы описали в самом первом посте. Только самое важное, чтобы программа без второго чипа была неработоспособной. Взламывается на раз, два, плюнуть - достаточно умного слэйва-напарника вместо (2) для вычисления лок-бит, ну и, естественно, программиста для всей этой раскалбасни...Хотя, тогда ни вижу смысла всей этой галиматьи...
--------------------
|
|
|
|
|
Dec 23 2006, 15:51
|
Профессионал
   
Группа: Свой
Сообщений: 553
Регистрация: 17-02-05
Из: Свердловская обл.
Пользователь №: 2 712

|
Цитата(Alex@ndr @ Dec 23 2006, 15:38)  А как можно считать константу CLC(ну кроме как через програматор), сам контроллер может считать свою константу? Насколько я знаю, эту константу можно прочитать только через программатор (ИМХО).
--------------------
Закономерность: Чем больше узнаю, тем меньше знаю... Любые мнения, даже ошибочные, имеют право на существование. Чем лучше узнаю людей, тем больше нравятся собаки...
|
|
|
|
|
Dec 23 2006, 17:06
|
Участник

Группа: Новичок
Сообщений: 20
Регистрация: 22-12-06
Пользователь №: 23 802

|
Свой програматор написать несмогу, поставить второй чип наверно тоже неполучится. Может можно привязать прошивку к чему нибудь уникальному для каждого устройства, типа серийного номера или особенностей остальных элементов устройства?
|
|
|
|
|
Dec 23 2006, 18:50
|
Профессионал
   
Группа: Свой
Сообщений: 553
Регистрация: 17-02-05
Из: Свердловская обл.
Пользователь №: 2 712

|
Цитата(Alex@ndr @ Dec 23 2006, 19:06)  Свой програматор написать несмогу... А зачем писать программатор?! Нужно написать кусок кода, который при инициализации камня будет проверять значение заводской константы, прописанной в служебных битах, и при ее идентификации разрешать выполнение основной программы.
--------------------
Закономерность: Чем больше узнаю, тем меньше знаю... Любые мнения, даже ошибочные, имеют право на существование. Чем лучше узнаю людей, тем больше нравятся собаки...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|