Научная статья на тему 'МЕТОД ЗАЩИТЫ КОДА Arduino-ПРОЕКТОВ ОТ КОПИРОВАНИЯ'

МЕТОД ЗАЩИТЫ КОДА Arduino-ПРОЕКТОВ ОТ КОПИРОВАНИЯ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
16
3
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
Arduino / защита кода / микроконтроллер / биты блокировки / программатор / AVR / Arduino / Code protection / Microcontroller / Lock bits / Programmer / AVR

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Хайруллин Айрат Фанилович, Смирнова Гульнара Сергеевна

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

THE METHOD OF PROTECTING THE CODE OF Arduino PROJECTS FROM COPYING

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-ПРОЕКТОВ ОТ КОПИРОВАНИЯ»

№ 11 (116)

AunI

/Ш. ТЕ)

universum:

ТЕХНИЧЕСКИЕ НАУКИ

ноябрь, 2023 г.

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

Хайруллин Айрат Фанилович

аспирант, ФГБОУ ВО «КНИТУ-КАИ», РФ, г. Казань E-mail: khayrullin 7 7@yandex. ru

Смирнова Гульнара Сергеевна

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

THE METHOD OF PROTECTING THE CODE OF Arduino PROJECTS FROM COPYING

Airat Khayrullin

Graduate student

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

Russia, Kazan

Gulnara Smirnova

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

Russia, Kazan

АННОТАЦИЯ

Статья представляет обзор метода защиты памяти 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 -ПРОЕКТОВ ОТ КОПИРОВАНИЯ // Universum: технические науки : электрон. научн. журн. 2023. 11(116). URL: https:// 7un iversum. com/ru/tech/arch ive/item/16312

№ 11 (116)

a uní

/Ш. ТЕ)

universum:

ТЕХНИЧЕСКИЕ НАУКИ

ноябрь, 2023 г.

В данной статье рассмотрены варианты доступа к скомпилированному коду и памяти аппаратно-программной платформы 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.

avrdude

AVRDUDE PROG

I C:Windaw5\sy5t)em32Vem[J.ece

Microsoft Windows [version ге.е.laeai.&72]

{с) Корпорация Майкрософт (Microsoft Corporation), 2020. Все права защищены.

С :\Users\Airat>avrdude Usage; avrdude [options] Options:

-p <partno> Specify AVR device

-p <wildcard>/<flags> Run developer options for matched AVR devices,

specify AVR device

Run developer options for matched AVR devices, e.g., -p ATmega328P/s or /S for part definition Override RS-232 baud rate Specify bit clock period (us) specify location of configuration file Specify programmer type

Run developer options for matched programmers, e.g., --c 'ur*'/s for programmer info/definition Disable trailing-oxff reowval for file/AVR read Disable auto erase for flash memory; implies -A ISP clock Delay [in microseconds] Specify connection port

Override invalid signature or initial checks Perform a chip erase

Perform RC oscillator calibration (see AVR053) Run an interactive terminal when it is its turn Run terminal line when it is its turn lenaoie?[ ¡format] Carry out memory operation when it is its turn Multiple -t, -T and -u options can be specified Do not write to the device whilst processing -U Do not automatically verify during -J List programmer exit specifications Pass <extended_param> to programmer, see -xhelp verbose output; -v -v for more Quell progress output; -q -q for less Use logfile rather than stderr for diagnostics Display this usage

avrdude version 7.2. https://github.com/avrdudes/avrdude

-b <baudrate> -B <bitclock> -C <config-file» -с <programmerS -с <wildcard>/<flags>

-A -D

-i <delay> -P <port>

-T -¡terminal cmd line> -U <nemtvse>:rlwlv:<fi

-E <exitsp>[Jieititsp>j -X <extended param>

# AVRDUDE_PROG 13

Ptograri Fuses Automalic pogramffwig ÄbeuL Микроконтроллер Квгмбросочмые ячейки

|АТшвда163Р йеретьы*] | Чяи* HEX f

Программирование Везиккаичя

беданфиг^цид

Fuse Выберете яэыи

®прймыб О^имреные IrjmkhA

г. riMMviMfti« hHD;WW**í,vi(ud4v¡(t.net/

Рисунок 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.

№ 11 (116)

AunI

/Ш. ТЕ)

universum:

ТЕХНИЧЕСКИЕ НАУКИ

ноябрь, 2023 г.

l j unlock .hex С]

1 2

3

4

5

6 7

о

9 10 11 12

13

14

15

16 17 13 15 20 21 22

23

24

25

26 27 23 25

200000000C5461000C5473000C5473000C547300QC5473000C5473000C5473000C5473005A

200020000CS473000C5473000C5473000C5473000C5473000C5473000C5473000CS473002S

200040000C54C9ÜÜ0C5473000C54730Ü0C5473000C54730Ü0C5473000C5473000C547300B2

200060000C9473000C547300000000ÜÜ24Ü027002A0000Ü0000Ü2300260029ÜÜ0000000073

2000300025ÜÜ28Ü02B000404040404Ü404040202020202Ü203030303030301Ü2040S10206B

2000A00040S0G102040S102Ü0102G4ÜS102Ü00ÜÜ00ÜSGGÜ201Ü000Ü304Ü70000GQ000000E5

2 0 0 О СО О О О О О 0112 41FBECFEFD4 EÜDE BFCDBF21ЕО АО EÜB1EG О ICG 1D5 2А53 ÜB2 ü 7Е1F7 ОЕ 5 4 Е5

2000E0001301GC54BC010C540000833081F028F4813055F0823QA9F008S5873QA9F08830S5

20010000CSFÜ8430B1F480518Q0Ü8F7D03C0805180008F7780538000085584B58F7784BD2 6

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

20012000085584B58F7DFBCF8051B0ÜÜ8F778053B0ÜÜ08558051B0ÜÜ8F7DF9CF1F93CF5343

2 О 014 О üÜDF5 3EBEBF0EG 54 5IE 7 EAFO EGD45IE 3 Е5 FO EGC451CC2 3B5FG182 F552 315FG 8 52 FG F

2001600GQE5475ÜGEC2FF0E0EE0FFF1FE458FF4FA551B4518FB7F854EC511111Q8CGD0555F

2 0 Ol3 О 0 0DE2 3DC93 8FBFDF91CF511F91085 5DE 2BF8CF1FS 2 0F92 OFB€ 0F52112 42F9 3 3F5 333

2001A0008F939F53AF53BF538051050190510601AD510701B05108013051040123E0230F5A

2001COOÜ2D3758F5015£A11DB11D20530401805305015Q530601A0530701B05308018051BS

2Ü01E00000ül50510101AO510201B09103ül015€AllDBllD80530001905301ülAD930201D0

20020000B09303GlBF91AF915F518F913F912F910F9G0FBE0F9GlF9G189526E323GF029fiE8

2 0 02 2 О 0 GA11DB11DD2CF7 8948 4B5 82 60 8 4BD8 4B5 8160 8 4 BD8 5B5 82 fi 0 8 5BD8 5Б5 8160 8 5 BDI3

2002400080516EGG81C080536EG0109281GG805181GG82iG805381GG8051810081C080530C

2002600081008091800081CG809380GG8091B1GG846G8093B1GG8051B0GG81608093B0GG25

2002S0008Q917AD0846080S37A0080517AD082fi080937A0080917AD081fi080937A0080915E

2002A0007AÜÜ806380937A001052C1ÜÜE7EAF0E02451E3E5F0E08451882399F090E0880FAA

2002C000551FFCG1E855FF4FA551B451FCG1E45SFF4F855154518FB7F854EC51E22BEC53C2

2G02E00Ü8FBFOCE9D0EGFEÜ1245108ES10EGF8G184918823C9FG50EG88GF551FFCG1E85543

2 0 0300 0 0FF4 FA551B4 51FC0IE 4 5 3FF4 F4 5515 4 913FB7F8 94 9C5182 2 F8 0 5 5 58 2 3 9C53FA0173

20032000503189238083 3FBF50EBE 52 E50 EO F52 E2ПЕ0С2 2E2 QE0D2 2EF7 018451FE 0 LA4 50A6

2003400GF8G1B45GBB2G75FG81110E54750GEB2DF0EGEEGFFF1FEE5SFF4FA551B4518C5144

1C03600ÜA82281EG05F480EG0E545EGGC114D1G415F30E9400GGE0CFF854FFCF5B

00000001FF

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

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

начальные настройки МК: источник тактового сигнала, область загрузчика, функционирование аппаратного сброса, сторожевого таймера и прочее. Количество и распределение байтов зависит от конкретной модели микроконтроллера. Для рассматриваемого микроконтроллера ATmega168P таблица конфигурации битов блокировки представлена на рисунке 3.

Table 32^2. Lock Bit Protection Modest)

Memory Lock Bits Protection Type LB Mode ILB2ILB1

No memory lock features enabled.

Further programming of the Flash and EEPROM is disabled in Parallel and Serial Programming modes The Fuse bits are locked in both Serial and Parallel Programming modes.*1)

Further programming and verification of the Flash and EEPROM is disabled in Parallel and Serial Programming modes. The Boot Lock bits and Fuse bits are locked in both Serial and Parallel Programming modesJ1)

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

№ 11 (116)

AunÎ

/Ш. TE)

universum:

ТЕХНИЧЕСКИЕ НАУКИ

ноябрь, 2023 г.

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

«Fuses» были отмечены параметры «LOCKBIT1» и «LOCKBIT2». Нужно обратить внимание на сформированную командная строку в нижней части окна программы, представленной на рисунке 4. Прописав эту команду в инструмент

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

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

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

Slock.hex

|: и и 0 U U О 01FF

2

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

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

аппаратно-программной платформы Arduino работоспособен.

№ 11 (116)

universum:

ТЕХНИЧЕСКИЕ НАУКИ

ноябрь, 2023 г.

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

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.

i Надоели баннеры? Вы всегда можете отключить рекламу.