PDA

Просмотр полной версии : защита прошивок



hilih
08.12.2009, 22:55
Доброго времени суток! Наверно тема поднималась не раз.
Хочу с вами поделиться мыслями.
Например поставлена задача для ПЛК 100.
Будет в цехе работать 50 шт. ПЛК 100 с одинаковой задачей.
Как заказчику передать готовый щит с ПЛК 100 и залитой в него программой, и быть уверенным, что его пряморукие программеры не зальют в остальные 49 шт. ПЛК 100 эту прошивку?
А заказчику надо "посмотреть", как будет работать установка.
Я давно придерживаюсь принципа: Программу, программно, не защитишь.
И, например мы, используем физический ключ. Программу нужно и можно защищать только аппараткой.

В RS232 ПЛК 100 устанавливаем заранее собранный типа "HASP" ключ.
Собран он на ATmega8 например. И он обменивается данными с ПЛК 100.
Для разгрузки СОМ порта контроллера, можно использовать АС3м, чтоб перевести ключ на RS485. И придать ему адрес. В программе контроллера прописывается периодическое обращение к ключу. Если его нет, программа останавливается.

При продаже следующих 49 шт. ПЛК 100, программа в контроллере меняется и он работает без ключа.

Такой "HASP" ключ легко изготовить самому.
Спасибо за внимание.

Кирилл Валюнин
08.12.2009, 23:02
достаточно интересный способ, спасибо за информацию.

nikita
09.12.2009, 14:10
Да, решение хорошее. Но есть один момент - ключ с плк работает по 232-му интерфейсу, соответственно, порт плк открываем с помощью syslibcom. Теперь, если плк и ключ работают длительное время, то, вытащив ключ из плк, обнаруживаем, что плк по-прежнему получает данные от ключа из порта, в течение приблизительно 30 секунд. Хотелось бы сократить этот интервал до минимума - вытащил ключ - передача пректратилась. Вопрос: что это, буфер порта или что-то другое? И как с этим бороться :)

Филоненко Владислав
09.12.2009, 14:17
??? что-то у вас не так. буфер в порте есть, но если вы его прочитали - он очистится. другое дело если читает вы реже чем приходят байты - но тут надо просто чаще читать :)

nikita
09.12.2009, 14:52
??? что-то у вас не так. буфер в порте есть, но если вы его прочитали - он очистится. другое дело если читает вы реже чем приходят байты - но тут надо просто чаще читать :) :eek:

Об этом мы не подумали :). Тогда другой вопрос: как читать чаще, если и так syscomread выполняется каждый цикл?

SergeyNG
10.12.2009, 05:15
Читайте несколько раз за скан

WHILE <здесь можно ограничить чтение, например, не более 20 байт за скан> DO
pbuf:=GetByte(id);
IF pbuf<>0
<сохраняем в буфер>;
ELSE EXIT;
END_IF;
END_WHILE

hilih
10.12.2009, 13:06
Толком, объясните, как обнулять буффер. Контроллер ждёт символ перевода каретки, для того, чтоб обнулить буфер?
Например у нас идёт с ключа бесконечный поток цифр.
1234567890123456789012345... и т.д. Контроллер, поймав например 45678, (строка приёма определена длиной 5 символов) по алгоритму смотрит, что в этой строке последущая цифра больше на 1 предыдущей. Если это так, программа продолжает работать по плану А.
Мы вынимаем ключ, за какой-то надобностью в этой строке по-прежнему остаётся 45678. И через, как nikita сказал, примерно 30 сек строка обнуляется. Программа далее работает, как нам надо, по плану В.
Вставляем в порт ключ, строка уже приобретает вновь, какое-то пойманное в порт значение, например 23456, всё повторяется заново.

Но эти 30 секунд не прибавляют нам настроения!

Дмитрий Артюховский
10.12.2009, 18:06
у вас явная ошибка алгоритма работы с портом. старайтесь читать весь аппаратный буфер, тогда там не будут накапливаться ошибки. при открытии порта вы явно указываете размер аппаратного буфера... нет смысла делать его очень большим, лучше читать чаще. когда вы читаете буфер порта в цикле будет лучше если все принятые символы заберуться из него и он очиститься, бог знает правильно ли устроена у него очередь и хватает ли времени в цикле на ее обслуживание.
далее, обрабатываете принятые символы и очищаете уже программный буфер.... в этом случае у вас ничего не накопиться лишнего никогда ))

(*Получаем данные из порта*)
bytes_read := SysComRead( com_num, ADR( BUFF_SERIAL ), 255, 0 ); (* СЧИТАТЬ СИМВОЛЫ ПОЛУЧЕННЫЕ МЕЖДУ ОПРОСАМИ *)

- т.е. если в аппаратном буфере меньше чем 255 символов, все они переносяться в программный буфер, а аппаратный очиститься.... а если в аппаратном больше чем 255, то очередь в нем должна сдвинуться.. а правильно ли она это сделает?

и не забывайте очищать программный буфер после вытаскивания из него значений... в выше приведенной строке при отсутствии новых символов содерживое массива BUFF_SERIAL меняться не будет!!! что похоже у вас и происходит... а по истечению какого-то времени порт ловит помеху и считывает ошибочный символ, которого вы не замечаете, но значение в буфере обновиться

K.I.V.
10.12.2009, 21:28
Доброго времени ........
готовый щит с ПЛК 100 и залитой в него программой, и быть уверенным, что его пряморукие программеры не зальют в остальные 49 шт. ПЛК 100 эту прошивку?
.................................................. ..............................................
Спасибо за внимание.

какая глупость :D
- это я вам скажу, как кустарь самоучка :cool:
если есть кто-то с какими-то прямыми руками, то два варианта:
1. сделать такой же ключик защиты - проше некуда. или Вы думаете, что ни кто не узнает "Ваш Уникальный обмен между плк-ключ", а после не подцепит PIC вместо вашей Atmeg-и?
2. зная алгоритм работы, не наклепает "свою" аналогичную программу ...........

DARNER
10.12.2009, 21:50
...
2. зная алгоритм работы, не наклепает "свою" аналогичную программу ...........

будет именно так, скажу я вам.:)

Дмитрий Артюховский
10.12.2009, 22:24
2. зная алгоритм работы, не наклепает "свою" аналогичную программу ............

... а он будет его знать? прослушав обмен ... дык все же просто: +1 и пошло... а если не +1 и если раз в месяц алгоритм будет меняться... динамические ключи не вчера придуманы... и за любой сбой отвечать будет уже не автор, а сам заказчик... с самоделкина то что взять )))
поверьте, страшна не защита а сам факт ее наличия! и потом, если самоделкин умеет перехватывать траффик и анализировать его - он быстрее задачу сам поднимет на плк ))) чем городить мостики

hilih
11.12.2009, 11:46
какая глупость :D
- это я вам скажу, как кустарь самоучка :cool:
если есть кто-то с какими-то прямыми руками, то два варианта:
1. сделать такой же ключик защиты - проше некуда. или Вы думаете, что ни кто не узнает "Ваш Уникальный обмен между плк-ключ", а после не подцепит PIC вместо вашей Atmeg-и?
2. зная алгоритм работы, не наклепает "свою" аналогичную программу ...........

Первое предложенное вами, сомневаюсь, что вы сможете подделать ключ. ИМХО просто трёп. Мы можем использовать алгоритм шифрования с разными ключами. Зашить несколько алгоритмов в эту мегу и менять их по беспорядочному принципу. Вы их никогда не увидите. Даже если вы разберёте схему ключа и попытаетесь слить прошивку в другую свою АТмегу, у вас ничего не получится. В ATmega есть возможность фьюзами устанавливать защиту от копирования.

Второе предложение имеет право на существование, но если программа писалась год, огромная программа, стоимостью в 200000-500000р. Ваши программеры могут, конечно, написать её заново, но тогда какой смысл "зная алгоритм" привлекать нас?Я имею ввиду программу тех. процесса. А не аддон ключ-плк.

nikita
12.12.2009, 15:42
дмитрию артюховскому спасибо за совет! после того, как я поменял 6 (так было у меня) символов на 255, задержки больше нет, выдёргиваем ключ из плк - данные из порта сразу же перестают появляться.
P. S. прошу прощения за написание имени и фамили не с заглавных, видимо, это проблема форума.

hilih
12.12.2009, 19:53
nikita, так мы можем залить туда шифр с ключом. Или вообще, используем протокол Zharikoff. Будет здорово. Только ключ надо распаять покомпактнее. :)
А Дмитрию реально спасибо. Помог нам.

Друзья, может кто шипко хитро мудрый, второй разряд по шахматам, там и т.д. мы можем запрогить ключик и выслать Вам по нашей любимой почте России. Если Вы разгадаете его будет шикарно и Вы молодец. Ежели нет, то трепаться не надо.

K.I.V.
21.12.2009, 04:22
Первое предложенное вами, сомневаюсь, что вы сможете подделать ключ. ИМХО просто трёп. Мы можем использовать алгоритм шифрования с разными ключами. Зашить несколько алгоритмов в эту мегу и менять их по беспорядочному принципу........

о "не нельзя упоминать в суе" ...
а ключик не подарите? (живу в Питере ... смотри далее ...)

:D ну если у вАС программа шифрования исполняется дольше, чем сам "тех. процесс" :D , то тут диагноз на лицо :cool:

итого:
1. про атмегу, мну знает достаточно, чтоб сделать модуль ввода/вывода + ещё алгоритм туда запихнуть :rolleyes:
... но это не рентабильно для повседневного использования + втюхивать этот девайс не этично, с профессиональной точки зрения ...
...............
и ни кто не собирался сливать прошивку :p

2. вЫ пишите МеГа программы годами, и не умеете заключчать договора ... нет, не то, что не умеете, а не знаете "Как и Что в них должно быть".
поясню, по всем нормам и правилам, программа для плк должна оплачиваться в опытном образце. т.е. в вашем первом сборочном устройстве ... со всеми последствиями
................. ну я же разговариваю с Административно-техническим персоналом :confused:

3. если договор писался вениками, и вЫ работали как веники ... то вашу фирму поставить в одну позу - довольно просто, т.к. "а что это за штучка такая?" и т.д. и т.п + знание нормативных док.

зы. и на последок...
делайте проекты (продовайте железо!!!) и не занимайтесь ерундой, так практика показывает :)

Николаев Андрей
21.12.2009, 10:12
уважаемый Kiv.
не смотря на то, что общение в курилке - прошу более уважительно составлять посты.
как говорили великие - каждый человек имеет право упорствовать в своей неправоте. правы и вы и остальные пользователи, если такая работа устраивает их самих и их клиентов.

Дмитрий Артюховский
21.12.2009, 12:16
для kiv....
это может и правильно для случая разработчик - конечный пользователь. А если заказчик собирается продавать серийное оборудование третьим лицам, и оплатив вам стоимость опытного экземпляра, он заинтересован в том чтобы его вложения не "прогорели" в случае если "ушлые" третьи лица станут дешево копировать дорогостоящую разработку... Докажите свою "не вениковость" и предложите вариант договора защищающий интересы сторон в этом случае...

hilih
21.12.2009, 14:25
друзья! тема про защиту прошивок!
трепитесь в курилке, пожалуйста.
и, убедительная просьба, не делайте ошибок, не удобно читать.
типа "продовайте" или "рентабильно". не пойму, в маскве и пидере все такие мудрые, чтоль. вроде культурные столицы.

0xBA0BAB
21.12.2009, 17:07
но если программа писалась год, огромная программа, стоимостью в 200000-500000р.

И работает на ПЛК? :eek:

nikita
21.12.2009, 17:59
2. вы пишите мега программы годами, и не умеете заключчать договора ... нет, не то, что не умеете, а не знаете "как и что в них должно быть".


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

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

hilih
23.12.2009, 15:01
баобабу!

а, почему она не может работать на плк?
чтож вы все, как дети малые.

K.I.V.
24.12.2009, 10:16
по теме...

добавив самопальный ключ аппаратной защиты к АСУ ... вы тем самым сильно снижаете надёжность и оперативную ремонтопригодность АСУ, как минимум до уровня своего девайса, а если смотреть шире – создавая ахиллесову пяту.


офф-топ:
ни кто случай не замил, под боком, одну страну :confused: :
китай называется ;)
так что, если есть необходимость скопировать - то это не проблема, было бы желание.

DARNER
24.12.2009, 10:54
по теме...

добавив самопальный ключ аппаратной защиты к АСУ ... вы тем самым сильно снижаете надёжность и оперативную ремонтопригодность АСУ, как минимум до уровня своего девайса, а если смотреть шире – создавая ахиллесову пяту.


офф-топ:
ни кто случай не замил, под боком, одну страну :confused: :
китай называется ;)
так что, если есть необходимость скопировать - то это не проблема, было бы желание.

+1.................

nikita
24.12.2009, 10:57
на самом деле, никакая это не ахиллесова пята, ставится он не навечно, а на конечный временной интервал; поработали на одном тех. аппарате, хотим поставить и на остальные - защита снимается

Дмитрий Артюховский
24.12.2009, 11:04
по теме...

добавив самопальный ключ аппаратной защиты к АСУ ... вы тем самым сильно снижаете надёжность и оперативную ремонтопригодность АСУ, как минимум до уровня своего девайса, а если смотреть шире – создавая ахиллесову пяту.


офф-топ:
ни кто случай не замил, под боком, одну страну :confused: :
китай называется ;)
так что, если есть необходимость скопировать - то это не проблема, было бы желание.

а почему именно АСУ? ... и потом, по своему опыту эксплуатации.. на 350-400 ПЛК за 3 года нет ни одной проблемы с "ключем"... с ПЛК статистика похуже. и чем "самопальность" моего "ключа" отличается "самопальности" ПЛК? (давайте еще сравним количество обновлений прошивки за это время... "ключ" стабилен с самой первой)

K.I.V.
29.12.2009, 14:57
а почему именно АСУ? ... и потом, по своему опыту эксплуатации.. на 350-400 ПЛК за 3 года нет ни одной проблемы с "ключем"... с ПЛК статистика похуже. и чем "самопальность" моего "ключа" отличается "самопальности" ПЛК? (давайте еще сравним количество обновлений прошивки за это время... "ключ" стабилен с самой первой)

какой ужас ... какой низкий уровень у технических специалистов со стороны ваших заказчиков :rolleyes:

1. какое право Вы имеете выпускать и продавать этот прибор?
2. какое право вы имеете предьявлять рекламации производителю ПЛК, если Вы продключаете к ПЛК этот прибор? ;)

зы. а то скажут, что нагрубил ... с юридичечкой точки зрения ;)

Andy
05.08.2010, 08:40
заинтересовался темой. не совсем понял:
1. прибор - это ключ? какие права надо для его выпуска? этот вопрос напоминает мне требование от одного из заказчиков предоставить лицензию на разрешение написания мной асутп. объяснения на то, что этот вид деятельности не лицензируется, да и программа как асутп заявлена не была не принимались.
2. тем более непонятен вопрос. а если к плк (не дай бог!) подключат еще какие-нибудь исполнительные устройства, как же тогда рекламацию предъявлять? и почему вообще рекламацию? может, претензию?

hilih
20.08.2010, 17:21
Andy!

Мы на земле! Говорим о защите проекта влитого в ПЛК.
Защитить его можно аппаратно, с помощью ключа.
Я его изготавливаю. Подключается либо в порт СОМ на ПЛК либо по 485 интерфейсу.

Фотки могу выслать.
Пишите mmmj@rambler.ru

vitiali
23.08.2010, 21:37
Mожет привязаться к каким-то константам, что есть в самом плк допустим Mac адресс . свовпадает значит програма работает дальше.
если бы можно было взять с плк серийный номер?

nikita
24.08.2010, 09:53
MAC-адрес записан в файле local_addres.dat, его можно изменить.

Andy
25.08.2010, 09:30
Andy!

Мы на земле! Говорим о защите проекта влитого в ПЛК.
Защитить его можно аппаратно, с помощью ключа.
Я его изготавливаю. Подключается либо в порт СОМ на ПЛК либо по 485 интерфейсу.

Фотки могу выслать.
Пишите mmmj@rambler.ru

Не надо фотки, спасибо. Вопрос был к K.I.V.