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

 
 
19 страниц V  « < 16 17 18 19 >  
Closed TopicStart new topic
> Защита секция кода во FLASH в ATmega, Как защититься от несанкционированного выполнения кода
zhevak
сообщение May 6 2008, 19:57
Сообщение #256


Знающий
****

Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065



Цитата(Дон Амброзио @ May 7 2008, 01:42) *
Чтобы в случае случайного джампа в область данных из-за помехи не произошло ничего плохого

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

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


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение May 7 2008, 04:13
Сообщение #257


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



to дон: ваша же тема? Где-то там вы, помнится, приводили пример с "безопасными" таблицами CRC... Или с того времени что-то изменилось?
Go to the top of the page
 
+Quote Post
tyro
сообщение May 7 2008, 05:26
Сообщение #258


Любитель Кошек
*****

Группа: Свой
Сообщений: 1 593
Регистрация: 8-06-06
Пользователь №: 17 873



Цитата(aaarrr @ May 6 2008, 22:53) *
Встречный вопрос: а в каком виде писать программу, чтобы в случае "случайного" джампа в любую ее область не происходило ничего страшного?

nop
---
---
nop
От начала до конца smile.gif .


--------------------
По современному этикету, в левой руке держат вилку, в правой - мышку.
Go to the top of the page
 
+Quote Post
Дон Амброзио
сообщение May 7 2008, 06:15
Сообщение #259


Местный
***

Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947



Из-за того, что админ заблокировал мне возможность отвечать в разделе "Общение - OFF topics" отвечу здесь. так как эта тема близка к этой http://electronix.ru/forum/index.php?showtopic=47394.

Цитата(aaarrr @ May 6 2008, 22:53) *
Встречный вопрос: а в каком виде писать программу, чтобы в случае "случайного" джампа в любую ее область не происходило ничего страшного?

Почитайте эту тему и найдёте ответ на свой вопрос. В любом случае в программе можно предпринять меры по уменьшению неприятных последствий случайных джампов.

А если у Вас в ATmega128 4кБ кода и 124кБ данных с ПРОИЗВОЛЬНЫМ содержимым, то даже по теории вероятности "прыжок" в область данных в 31 раз более вероятен. И тем более в таком большом массиве данных бОльшая вероятность выполнения потенциально опасных операций


Цитата(aaarrr @ May 6 2008, 22:53) *
При "случайном" джампе все плохое уже случилось.

Вы не правы. Если у меня в программе всего одна команда sbi Porte , 6 включающая реле подрыва атомной бомбы, а в 124 кБ данных, хранимых "так как есть" таких команд может набраться несколько сотен, то разве не возрастает вероятность несанкционированного подрыва атомной бомбы в несколько сотен раз?



Цитата(zhevak @ May 6 2008, 22:57) *
Страдаете фобией?
Совет: не берите в голову. Эта проблема надумана. В жизни такого явления практически вообще не бывает. Как минимум, у меня -- ни разу такого не было. У моих знакомых -- тоже.

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

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

А насчёт "надуманности" проблемы скажу следующее: я (в отличие от Вас и Ваших знакомых) разрабатываю программы так, чтобы они детектировали (с некоторой вероятностью успеха конечно же - 100% обнаружить конечно же невозможно) случайные джампы. Ну так вот. При трыканье пьезозажигалкой с подключенной к ней антеной-проводом наблюдаются случайные джампы

Сообщение отредактировал Дон Амброзио - May 7 2008, 06:43


--------------------
После устранения бага в программе она стала работать....хуже
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение May 7 2008, 07:02
Сообщение #260


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



to дон: уже писал свое мнение по поводу предлагаемой вами "защиты".
Попробую повторить:
Защита должна быть многоуровневая. От помех надо защищаться на уровне железа, где это сделать относительно просто. На уровне программы от некорректного поведения процессора защититься значительно сложнее. При этом при ваших вариантах реализации такой защиты вы не сможете использовать ни ЯВУ, ни сторонние либы. Вам придется все писать с 0 и руками. В случае нетривиальной программы это сильно повышает вероятность ошибок программиста и затрудняет ее модификацию впоследствии.
На мой взгляд, единственный приемлемый вариант программной защиты - в определенных местах или по таймеру проверять какие-то программные инварианты (что переменные лежат в допустимых диапазонах и т.д.) и если эти инварианты нарушены - либо перезагружаться, либо пытаться восстановиться.

И кстати еще вопрос к Вам: почему вам не дают покоя именно случайные джампы? А если мк в результате сбоя исказит команду? Т.е. у вас есть какая-то статистика возможных сбоев мк и случайные джампы там на первом месте?
Go to the top of the page
 
+Quote Post
Дон Амброзио
сообщение May 7 2008, 07:38
Сообщение #261


Местный
***

Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947



Цитата(Непомнящий Евгений @ May 7 2008, 11:02) *
И кстати еще вопрос к Вам: почему вам не дают покоя именно случайные джампы? А если мк в результате сбоя исказит команду? Т.е. у вас есть какая-то статистика возможных сбоев мк и случайные джампы там на первом месте?

Потому что их(случайные джампы) можно с нЕкоторой долей вероятности успеха детектировать самой программой. Со случайным искажением текущей команы процессора сложней. Но тоже возможно. Запускаем две копии одного и того же процесса. И сравниваем рездультаты. Если не совпали - идём на ребут


--------------------
После устранения бага в программе она стала работать....хуже
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение May 7 2008, 07:42
Сообщение #262


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(Непомнящий Евгений @ May 7 2008, 11:02) *
На уровне программы от некорректного поведения процессора защититься значительно сложнее.

Я бы сказал -это не реально вообще. Это всё равно , что на данный процессор , вешать ещё один процессор , что бы он контролировал основной процессор , но и этот процессор , тоже надо контролировать - вдруг как прыгнет.

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


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение May 7 2008, 07:57
Сообщение #263


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(Дон Амброзио @ May 7 2008, 11:38) *
Потому что их(случайные джампы) можно с нЕкоторой долей вероятности успеха детектировать самой программой.

Я собственно к чему и веду. Ради того, чтобы убрать некоторый процент из группы тех ошибок, которые происходят и так достаточно редко, мы значительно усложняем программу. Что в свою очередь приводит к возрастанию ошибок программиста (которые по частоте наверное на первом месте). Т.е. оно того не стоит.
В случае с "атомной бомбой" и другими критичными приложениями насколько я понимаю, используются схемы резервирования, когда рулят несколько устройств параллельно, а результирующие решения принимаются большинством голосов...
Go to the top of the page
 
+Quote Post
Дон Амброзио
сообщение May 7 2008, 08:09
Сообщение #264


Местный
***

Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947



Цитата(ILYAUL @ May 7 2008, 11:42) *
... но ВЕС проги , того не стоит
Да ладно Вам.. Уж чего-чего, а памяти в современных MCU "как грязи"... В смысле хватает... Вот у меня например часто используется ATmega128. Там 128 килоБайт памяти.. Так вот.. Я никогда не использовал больше 8 кБ. Даже самые сложные проги вместе с RTOS умещались у меня в 8кБ


Цитата(Непомнящий Евгений @ May 7 2008, 11:57) *
Я собственно к чему и веду. Ради того, чтобы убрать некоторый процент из группы тех ошибок, которые происходят и так достаточно редко, мы значительно усложняем программу. Что в свою очередь приводит к возрастанию ошибок программиста (которые по частоте наверное на первом месте). Т.е. оно того не стоит.
В случае с "атомной бомбой" и другими критичными приложениями насколько я понимаю, используются схемы резервирования, когда рулят несколько устройств параллельно, а результирующие решения принимаются большинством голосов...

Ну плохим танцорам-программистам всегда что-то мешает...

А насчёт мажоритарного голосования я в курсе.. Но это в разы увеличивает стоимость изделия..
А для ширпотреба это означает, что твои изделия никто не будет покупать. Пусть они в 100 раз надёжней, но и дороже же в 4 раза своих аналогов... А мои изделия относяться к категории ширпотреба... В которых надёжность желательна (ибо хоть они и не атомную бомбу подрывают, но неприятности в случаи некорректной работы устройства будут весьма серьёзные), но не настолько, чтобы потребитель переплачивал за неё в 3-10 раз..

Поэтому приходиться искать дополнительные методы увеличения надёжности БЕЗ УДОРОЖАНИЯ ИЗДЕЛИЯ



Цитата(Непомнящий Евгений @ May 7 2008, 11:57) *
мы значительно усложняем программу. Что в свою очередь приводит к возрастанию ошибок программиста

Цитата(Непомнящий Евгений @ May 7 2008, 11:57) *
В случае с "атомной бомбой" и другими критичными приложениями насколько я понимаю, используются схемы резервирования, когда рулят несколько устройств параллельно, а результирующие решения принимаются большинством голосов...

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

Сообщение отредактировал Дон Амброзио - May 7 2008, 08:18


--------------------
После устранения бага в программе она стала работать....хуже
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение May 7 2008, 08:13
Сообщение #265


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(Дон Амброзио @ May 7 2008, 12:00) *
Даже самые сложные проги вместе с RTOS умещались у меня в 8кБ


smile.gif вот с этого и надо было начинать smile.gif smile.gif smile.gif

Тут два варианта - либо вы гений и сложнейшие проги умещаете в 8 кб, либо у вас пока не было соответствующих задач smile.gif


Цитата(Дон Амброзио @ May 7 2008, 12:09) *
Поэтому приходиться искать дополнительные методы увеличения надёжности БЕЗ УДОРОЖАНИЯ ИЗДЕЛИЯ


Так не получится. Вам потребуются более опытные (и дорогие) программисты. Модификация программы будет стоить в разы дороже и занимать больше времени и т.д.

Кстати, для ширпотреба все это вообще не актуально. Если у меня раз в неделю зависнет, к примеру, кпк - мне по большому счету плевать и я не буду платить вдвое чтобы он у меня зависал не чаще раза в год...
Go to the top of the page
 
+Quote Post
Дон Амброзио
сообщение May 7 2008, 08:24
Сообщение #266


Местный
***

Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947



Цитата(Непомнящий Евгений @ May 7 2008, 12:13) *
Кстати, для ширпотреба все это вообще не актуально. Если у меня раз в неделю зависнет, к примеру, кпк - мне по большому счету плевать и я не буду платить вдвое чтобы он у меня зависал не чаще раза в год...

Я это уже и писал:
А мои изделия относяться к категории ширпотреба... В которых надёжность желательна (ибо хоть они и не атомную бомбу подрывают, но неприятности в случаи некорректной работы устройства будут весьма серьёзные), но не настолько, чтобы потребитель переплачивал за неё в 3-10 раз..

А если Вы приобретаете устройство для управления сантехникой дома и Вас дилемма: взять за 1 килобакс устройство, которое может залить, а может и не залить примерно эдак раз в 5 лет Вашу квартиру водой в результате самопроизвольного открытия крана. Или взять за 5 килобаксов устройство, которое может залить Вашу квартиру с той же вероятностью раз в 50 лет...Что возьмёте? Затопление квартиры вещь конечно не смертельная, но неприятная.


Цитата(Непомнящий Евгений @ May 7 2008, 12:13) *
smile.gif вот с этого и надо было начинать smile.gif smile.gif smile.gif

Тут два варианта - либо вы гений и сложнейшие проги умещаете в 8 кб, либо у вас пока не было соответствующих задач smile.gif


Вы наверное ещё молоды раз не помните, что была такая операционная система для компьютера. DOS называлась... Ну так вот.. Её размер был 12 кБ... Мои программы конечно попроще, но тем не менее RTOS там есть..

Я хочу сказать, что маленький размер программы ещё не показатель, что програма простая и примитивная, предназначена для решения простейших задач

Сообщение отредактировал Дон Амброзио - May 7 2008, 08:31


--------------------
После устранения бага в программе она стала работать....хуже
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение May 7 2008, 08:49
Сообщение #267


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(Дон Амброзио @ May 7 2008, 12:24) *

Мое ИМХО - программная защита от ошибок процессора дороже аппаратной. Доказать это я врядли смогу, но и вами каких-то выкладок приведено не было. Если они у вас есть - прошу поделиться.

Цитата
Вы наверное ещё молоды раз не помните, что была такая операционная система для компьютера. DOS называлась... Ну так вот.. Её размер был 12 кБ...

Помнится, на системную дискету было напихано где-то под мегабайт... С учетом того, что даже порезанная фат под МК весит порядка нескольких кил, что собственно входило в эти 12к?
Go to the top of the page
 
+Quote Post
Дон Амброзио
сообщение May 7 2008, 09:01
Сообщение #268


Местный
***

Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947



Цитата(Непомнящий Евгений @ May 7 2008, 12:49) *
Мое ИМХО - программная защита от ошибок процессора дороже аппаратной.

Почему? Т.е. просто немного "подправить" код Вы считаете по деньгам дороже выйдет чем разрабатывать и покупать элементную базу для железа к примеру с трёхкратным резервированием

Приведу конкретный пример. В большой партии устройств в среднем проиходит одно ложное срабатывание в год на одно устройство. Если применить троирование, то можно уменьшить вероятность ложного срабатывания до 1-го ложного срабатывания в 10000 лет. Но при этом цена устройства возрастает в 5 раз.
Также можно уменьшить вероятность ложного срабатывания до 1-го ложного срабатывания в 10 лет за счёт "программных методов". Цена изделия при этом не возрастает. В среднем 1 ложняк за 10 лет вполне устраивает потребителся.. А удоражание стоимости изделия в 5 раз не устраивает настолько, что он просто откажется покупать Ваше изделие.. И кому тогда будет нужна Ваша супернадёжная система за такие бабки?Что тогда Вы выберете? Всё равно побрезгуете воспользоваться увеличением надёжности за счёт лучшей проработки программы?

Цитата(Непомнящий Евгений @ May 7 2008, 12:49) *
Помнится, на системную дискету было напихано где-то под мегабайт... С учетом того, что даже порезанная фат под МК весит порядка нескольких кил, что собственно входило в эти 12к?

Я имею ввиду "до дискетные" версии ОС, когда операционка была зашита а ПЗУ..

А компьютеры Синклер, ZX-Spectrum тоже не помните?

Сообщение отредактировал Дон Амброзио - May 7 2008, 09:16


--------------------
После устранения бага в программе она стала работать....хуже
Go to the top of the page
 
+Quote Post
EugeNNe
сообщение May 7 2008, 09:25
Сообщение #269


Местный
***

Группа: Участник
Сообщений: 424
Регистрация: 6-03-06
Из: Н.Новгород
Пользователь №: 14 997



Цитата(zhevak @ May 6 2008, 23:57) *
Страдаете фобией?
Совет: не берите в голову. Эта проблема надумана. В жизни такого явления практически вообще не бывает. Как минимум, у меня ни разу такого не было. У моих знакомых -- тоже.


Про фобию....в некоторых отраслях эта фобия возведена в ранг обязательных вещей. Например, Безопастность железнодорожной автоматики и телемеханники (если интересно почитайте отраслевые стандарты в данной сфере). А вот аргументы "не было у меня и моих знакомых"....мягко говоря совсем не аргументы. Интересно как предоставлять такие "аргументы" при сертификации ПО в соответствующих органах (если только знакомых привозить с собой).
Go to the top of the page
 
+Quote Post
Igor26
сообщение May 7 2008, 09:35
Сообщение #270


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



Цитата
Интересно как предоставлять такие "аргументы" при сертификации ПО в соответствующих органах

Для этого проводятся испытания устройств на ЭМС и по ее результатам принимается решение о соответствии изделия ГОСТам, ОСТам.
Go to the top of the page
 
+Quote Post

19 страниц V  « < 16 17 18 19 >
Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 21:40
Рейтинг@Mail.ru


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