МЕТОД ЗАЩИТЫ КОДА Arduino -ПРОЕКТОВ ОТ КОПИРОВАНИЯ

THE METHOD OF PROTECTING THE CODE OF Arduino PROJECTS FROM COPYING
Цитировать:
Хайруллин А.Ф., Смирнова Г.С. МЕТОД ЗАЩИТЫ КОДА Arduino -ПРОЕКТОВ ОТ КОПИРОВАНИЯ // Universum: технические науки : электрон. научн. журн. 2023. 11(116). URL: https://7universum.com/ru/tech/archive/item/16312 (дата обращения: 05.05.2024).
Прочитать статью:

 

АННОТАЦИЯ

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

ABSTRACT

The article presents an overview of the Arduino memory protection method from copying and provides the results of experiments aimed at evaluating the effectiveness of the developed methods. The main purpose of the research is to provide tools and knowledge to developers of Arduino projects for more reliable protection of their program code.

 

Ключевые слова: Arduino, защита кода, микроконтроллер, биты блокировки, программатор, AVR.

Keywords: Arduino, Code protection, Microcontroller, Lock bits, Programmer, AVR.

 

Аппаратно-программная плафторма Arduino стали неотъемлемой частью мира электроники и робототехники благодаря своей доступности, универсальности и широкому сообществу разработчиков. Однако с ростом популярности этой платформы возникла и проблема копирования и несанкционированного использования программного кода, что ставит под угрозу интеллектуальную собственность и коммерческие интересы разработчиков Arduino-проектов. Защита памяти аппаратно-программной платформы Arduino от копирования стала актуальной задачей, требующей внимания исследователей и разработчиков. Несанкционированный доступ к внутренней информации или возможность копирования кода может привести к серьезным последствиям, включая утечку технологических секретов, ухудшение конкурентоспособности и финансовые убытки.

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

Цель исследования заключается в предоставлении разработчикам Arduino-проектов инструментов и знаний для более надежной защиты своего программного кода и интеллектуальной собственности.

В данной статье рассмотрены варианты доступа к скомпилированному коду и памяти аппаратно-программной платформы Arduino, а также способы его копирования. В качестве экспериментальной платформы была использована Arduino Nano, построенная на микроконтроллере ATmega168P. Данный микроконтроллер относится к семейсту AVR-микроконтроллеров, производимых известной фирмой Atmel Corporation [3]. Семейство AVR включает в себя микроконтроллеры различные по объему памяти и параметрам, различным количеством портов ввода-вывода и других дополнительных устройств [6]. Стоит отметить, что под защитой кода аппаратно-программной платформы Arduino следует понимать защиту кода микроконтроллера, на базе которой работает рассматриваемая платформа. Поэтому методы и технологии, рассмотренные в данной статье применимы и к другим микроконтроллерам семейства AVR.

На сегодняшний день существует несколько вариантов чтения кода и памяти микроконтроллера. Самой популярной и часто упоминаемой на русскоязычных сайтах по данной тематике является программа для программирования микроконтроллеров AVR – «AVRDUDE_PROG» написанная программистом Сергеем Боднаром[5]. Данная программа, по сути, является версией с графическим интерфейсам пользователя (GUI) другого популярного инструмента для прошивки микроконтроллеров AVR – консольной программы «avrdude»[2].  Обе данные программы обладают схожим функционалом, но «AVRDUDE_PROG» предоставляет более удобный и интуитивно понятный пользовательский интерфейс для управления функциональностью, которую предоставляет основная утилита командной строки, в данном случае, «avrdude». GUI-версия включает графический интерфейс, который упрощает задачи, такие как выбор файла прошивки, настройка параметров программатора и т.д. Но, в то же время, в программе «AVRDUDE_PROG» отсутствует возможность ручного ввода и изменения параметров команд, что может накладывать некоторые ограничения в работу. Рабочие области программ представлены на рисунке 1.

 

Рисунок 1. Рабочие области программ

 

Для извлечения данных из микроконтроллера необходим программатор, в рамках статьи в качестве программатора был использована другая аппаратно-программной платформа Arduino Nano, построенная на микроконтроллере ATmega328P, в нее был залит скетч ArduinoISP. Подключение двух Arduino выполнено согласно документации на официальном сайте[1].

Для получения кода микроконтроллера в консоль инструмента avrdude была прописана следующая команда: «avrdude -p m168p -b 19200 -c arduino_as_isp -P COM6 -U flash:r:unlock.hex:i». В результате был получен файл формата .hex, хранящий в себе представление команд компилятора в виде чисел в шестнадцатеричной записи. Этот формат придуман фирмой Intel, содержит числа в текстовом представлении. Поэтому его можно редактировать в обычном текстовом редакторе. Точно такой же формат применяется для записи констант в EEPROM[3].  Текст полученного из памяти файла представлен на рисунке 2.

 

Рисунок 2. .hex файл

 

Данный .hex файл можно загрузить на другие микроконтроллеры, тем самым создав копию первоначального устройства. Таким же методом есть возможность получить и файл энергонезависимой памяти. Для защиты кода от чтения применяются биты блокировки, представляющие из себя часть байтов конфигурации, хранящихся в отдельной области энергонезависимой памяти. Какие-то байты содержат биты блокировки, какие-то – конфигурационные биты. Этот набор битов устанавливает начальные настройки МК: источник тактового сигнала, область загрузчика, функционирование аппаратного сброса, сторожевого таймера и прочее. Количество и распределение байтов зависит от конкретной модели микроконтроллера. Для рассматриваемого микроконтроллера ATmega168P таблица конфигурации битов блокировки представлена на рисунке 3.

 

Рисунок 3. Таблица битов блокировки

 

Нужно учитывать, что в данной таблице значения являются инвертированными. Т.е. "1" означает незапрограммированный, "0" означает запрограммированный. Таким образом, для отключения чтения из памяти данных необходимо «включить» или запрограммировать биты LB1 и LB2. Для этого была использована программа «AVRDUDE_PROG». Во вкладке «Fuses» были отмечены параметры «LOCKBIT1» и «LOCKBIT2». Нужно обратить внимание на сформированную командная строку в нижней части окна программы, представленной на рисунке 4. Прописав эту команду в инструмент

«avrdude» можно добиться такого же результата.

 

Рисунок 4.  Рабочая область программы

 

После блокировки была произведена попытка чтения кода из памяти микроконтроллера тем же методом, что и до блокировки. Текст полученного .hex файла представлен на рисунке 5.

 

Рисунок 5 .hex файл

 

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

 

Список литературы:

  1. Arduino as ISP and Arduino Bootloaders. [Электронный ресурс]. – Режим доступа: URL: https://docs.arduino.cc/built-in-examples/arduino-isp/ArduinoISP (25.10.2023)
  2. Introduction – AVRDUDE 0.1 documentation. [Электронный ресурс]. – Режим доступа: URL: https://avrdude.readthedocs.io/en/latest/1-Introduction.html (21.10.2023)
  3. Занимательная микроэлектроника [2 издание] Ревич Юрий Всеволодович. [Электронный ресурс]. – Режим доступа: URL: https://tech.wikireading.ru/hBR2Z8PjuY (25.10.2023)
  4. Микроконтроллеры AVR: от простого к сложному / М. С. Голубцов - М.: СОЛОН-Пресс, 2003. 288 с. - (Серия «Библиотека инженера»)
  5. Программа для программирования AVR - AVRDUDE_PROG. [Электронный ресурс]. – Режим доступа: URL: https://www.yourdevice.net/proekty/avrdude-prog (20.10.2023)
  6. Финогенов, Н. Ю. Микроконтроллеры AVR / Н. Ю. Финогенов // Научные тенденции: Вопросы точных и технических наук : Сборник научных трудов по материалам XVI международной научной конференции, Санкт-Петербург, 12 апреля 2018 года. Том Часть 1. – Санкт-Петербург: Международная Объединенная Академия Наук, 2018. – С. 40-41. – DOI 10.18411/spc-12-04-2018-10. – EDN RUKUJN.
Информация об авторах

аспирант, ФГБОУ ВО «КНИТУ-КАИ», РФ, г. Казань

Graduate student of the Kazan National Research Technical University, named after A.N.Tupolev (KNRTU-KAI), Russia, Kazan

канд. техн. наук, доцент, ФГБОУ ВО «КНИТУ-КАИ», РФ, г. Казань

Ph.D. tech. Sciences, Associate Professor, of the Kazan National Research Technical University, named after A.N.Tupolev (KNRTU-KAI), Russia, Kazan

Журнал зарегистрирован Федеральной службой по надзору в сфере связи, информационных технологий и массовых коммуникаций (Роскомнадзор), регистрационный номер ЭЛ №ФС77-54434 от 17.06.2013
Учредитель журнала - ООО «МЦНО»
Главный редактор - Ахметов Сайранбек Махсутович.
Top