реклама на сайте
подробности

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Защита для прошивки
Alex@ndr
сообщение Dec 23 2006, 02:20
Сообщение #1


Участник
*

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



Здравствуйте,
У меня такая ситуация: есть прошивка(в CodeVisionAVR под AtMega16), нужно передать её другому человеку, но так, чтоб он смог использовать её только для одного устройства.

Думаю сделать это так: при первом запуске контроллер генерит случайный код, записывает его в EEPROM и выводит на LCD.Код передаётся мне, я составляю ответный код, передаю его, он вводится в устройство, контроллер записывает его в EEPROM.Далее при каждом включении контроллер сверяет на правильность коды из EEPROM, при несоответствии работа устройства блокируется.

Но для этого думаю нужно контролировать что стоит фьюз защиты от чтения EEPROM(иначе не генерить первый код) и генератор реально случайных чисел(не псевдослучайных).

Посоветуйте как это можно реализовать, или может есть способы попроще
Go to the top of the page
 
+Quote Post
defunct
сообщение Dec 23 2006, 02:29
Сообщение #2


кекс
******

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



Цитата(Alex@ndr @ Dec 23 2006, 02:20) *
Посоветуйте как это можно реализовать, или может есть способы попроще

Да есть.. Продавать прошитые чипы. (хотя бы с Вашим бутлоадером)

А Ваш вариант к сожалению работать не будет, т.к. у Вашей прошивки не будет возможности ни залочить чип, ни проверить статус локов. Нельзя достучаться из прошивки к фузам и локам..
Go to the top of the page
 
+Quote Post
Alex@ndr
сообщение Dec 23 2006, 02:40
Сообщение #3


Участник
*

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



Цитата(defunct @ Dec 23 2006, 01:29) *
Да есть.. Продавать прошитые чипы. (хотя бы с Вашим бутлоадером)

А Ваш вариант к сожалению работать не будет, т.к. у Вашей прошивки не будет возможности ни залочить чип, ни проверить статус локов. Нельзя достучаться из прошивки к фузам и локам..

К сожалению передать прошитый чип нет возможности.
Может всёже есть другие варианты защитить прошивку?
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Dec 23 2006, 03:15
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Цитата
К сожалению передать прошитый чип нет возможности.Может всёже есть другие варианты защитить прошивку?

Разве что написать свой программатор который будет заливать шифрованный код(бутлоадер) и тут же ставить бит защиты. Но программатор можно дизассемблировать, так что защита получится не очень надежной. Стопроцентнная защита - это только бутлоадер с шифрованием.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
defunct
сообщение Dec 23 2006, 03:37
Сообщение #5


кекс
******

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



Цитата(Alex@ndr @ Dec 23 2006, 02:40) *
К сожалению передать прошитый чип нет возможности.

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

Цитата
Может всёже есть другие варианты защитить прошивку?

Добавить в схему еще один чип, так чтобы оба чипа могли друг-друга программировать.
Добавить межпроцессорный протокол. И тогда Ваш вариант заработает. Например так:

Заказчик заливает прошивку в оба чипа.

Первый чип (1) подает второму (2) команду залочить себя
(2) лочит (1), после чего перезапускает и сообщает (1), что тот залочен.
(1) пишет в EEPROM статул лока, для того чтобы больше не просить (2) себя лочить, и генерит некий код который надо сообщить Вам по телефону.
Ну а дальше уже так как Вы описали в самом первом посте.
Только самое важное, чтобы программа без второго чипа была неработоспособной.
Go to the top of the page
 
+Quote Post
Валентиныч
сообщение Dec 23 2006, 12:12
Сообщение #6


Профессионал
****

Группа: Свой
Сообщений: 553
Регистрация: 17-02-05
Из: Свердловская обл.
Пользователь №: 2 712



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


--------------------
Закономерность: Чем больше узнаю, тем меньше знаю...
Любые мнения, даже ошибочные, имеют право на существование.
Чем лучше узнаю людей, тем больше нравятся собаки...
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Dec 23 2006, 12:15
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Alex@ndr @ Dec 23 2006, 02:20) *
Посоветуйте как это можно реализовать, или может есть способы попроще

Есть простой и надежный способ - работать на доверии.
А если не доверяешь - не работать.
smile.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Alex@ndr
сообщение Dec 23 2006, 13:38
Сообщение #8


Участник
*

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



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

А как можно считать константу CLC(ну кроме как через програматор), сам контроллер может считать свою константу?
Go to the top of the page
 
+Quote Post
prottoss
сообщение Dec 23 2006, 15:50
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 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) для вычисления лок-бит, ну и, естественно, программиста для всей этой раскалбасни...Хотя, тогда ни вижу смысла всей этой галиматьи...


--------------------
Go to the top of the page
 
+Quote Post
Валентиныч
сообщение Dec 23 2006, 15:51
Сообщение #10


Профессионал
****

Группа: Свой
Сообщений: 553
Регистрация: 17-02-05
Из: Свердловская обл.
Пользователь №: 2 712



Цитата(Alex@ndr @ Dec 23 2006, 15:38) *
А как можно считать константу CLC(ну кроме как через програматор), сам контроллер может считать свою константу?

Насколько я знаю, эту константу можно прочитать только через программатор (ИМХО).


--------------------
Закономерность: Чем больше узнаю, тем меньше знаю...
Любые мнения, даже ошибочные, имеют право на существование.
Чем лучше узнаю людей, тем больше нравятся собаки...
Go to the top of the page
 
+Quote Post
prottoss
сообщение Dec 23 2006, 16:28
Сообщение #11


Гуру
******

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



Цитата(beer_warrior @ Dec 23 2006, 07:15) *
Цитата
К сожалению передать прошитый чип нет возможности.Может всёже есть другие варианты защитить прошивку?

Разве что написать свой программатор который будет заливать шифрованный код(бутлоадер) и тут же ставить бит защиты. Но программатор можно дизассемблировать, так что защита получится не очень надежной. Стопроцентнная защита - это только бутлоадер с шифрованием.
Вы сами то пробовали дизассемблировать win32 приложение? Я не говорю, что это сложно для того, кто этим занимается часто, НО... Не такая уж тривиальная задача, если подойти к этому с умом.


--------------------
Go to the top of the page
 
+Quote Post
Alex@ndr
сообщение Dec 23 2006, 17:06
Сообщение #12


Участник
*

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



Свой програматор написать несмогу, поставить второй чип наверно тоже неполучится.
Может можно привязать прошивку к чему нибудь уникальному для каждого устройства, типа серийного номера или особенностей остальных элементов устройства?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 23 2006, 18:01
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Alex@ndr @ Dec 23 2006, 16:06) *
Может можно привязать прошивку к чему нибудь уникальному для каждого устройства, типа серийного номера или особенностей остальных элементов устройства?

Ну поставьте чего-нибудь однопроводное от Dallas - там уникальный серийник есть. Естественно эмулируется, естествено прошивка взламывается, но если оно того стоит. В противном случае лучше что-то, чем ничего.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Валентиныч
сообщение Dec 23 2006, 18:50
Сообщение #14


Профессионал
****

Группа: Свой
Сообщений: 553
Регистрация: 17-02-05
Из: Свердловская обл.
Пользователь №: 2 712



Цитата(Alex@ndr @ Dec 23 2006, 19:06) *
Свой програматор написать несмогу...

А зачем писать программатор?!
Нужно написать кусок кода, который при инициализации камня будет проверять значение заводской константы, прописанной в служебных битах, и при ее идентификации разрешать выполнение основной программы.


--------------------
Закономерность: Чем больше узнаю, тем меньше знаю...
Любые мнения, даже ошибочные, имеют право на существование.
Чем лучше узнаю людей, тем больше нравятся собаки...
Go to the top of the page
 
+Quote Post
chief_olimp
сообщение Dec 23 2006, 19:36
Сообщение #15


Местный
***

Группа: Участник
Сообщений: 249
Регистрация: 31-10-05
Из: Украина Нетешин
Пользователь №: 10 344



сделай так что бы устройство 10 мин работало а дальше циклилось. такое устройство точно не будут в комерческих целях использовать. А дизасемблировать? ну извините по моему лучше свое написать чем в чужом разбираться.
Go to the top of the page
 
+Quote Post

4 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 20:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01507 секунд с 7
ELECTRONIX ©2004-2016