ВВЕДЕНИЕ 3
1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 4
1.1. Микроконтроллеры STM32 4
1.1.1. 32-разрядные Flash-микроконтроллеры STM 4
1.1.2. Организация Flash-памяти микроконтроллера 6
1.1.3. Таблица векторов прерываний 8
1.1.4. Защита памяти. Option bytes 10
1.2. USB интерфейс 11
1.2.1. Основные сведения об USB 11
1.2.2. Дескрипторы 14
1.3. Бутлоадер 19
1.3.1. Бутлоадер в микроконтроллерах STM32 19
1.4. Криптографическая защита данных 20
1.4.1. Криптография и алгоритмы шифрования 21
1.4.2. Алгоритм шифрования RC5 22
2. ПРАКТИЧЕСКАЯ ЧАСТЬ 26
2.1. Аппаратное обеспечение системы 26
2.1.1. Используемое оборудование 26
2.1.2. Отладочная плата 27
2.1.3. Программатор 29
2.2. Программное обеспечение системы 29
2.2.1. Блок-схема программы 29
2.2.2. Инициализация периферии 30
2.2.3. Подключение библиотеки для работы с USB-интерфейсом 32
2.2.4. Подключение компонентов рабочей установки 32
2.2.5. Реализация USB Mass Storage 33
2.2.6. Реализация USB-бутлоадера 40
2.2.7. Решение проблемы форматирования памяти устройства 48
2.2.8. Криптозащита бутлоадера 50
2.2.9. Защита Flash-памяти от чтения 55
ЗАКЛЮЧЕНИЕ 58
СПИСОК ЛИТЕРАТУРЫ 59
ПРИЛОЖЕНИЕ
Спектр применения микроконтроллера достаточно велик (электронные игрушки, робототехника, пульты управления для бытовой техники). Наличие одного микроконтроллера недостаточно для решения поставленной задачи, для этого нужно выполнить его “прошивку”, то есть скопировать в него программу. Для загрузки программы в микроконтроллер необходимы программатор и несколько соединительных проводов, что достаточно накладно, так как нужно постоянно иметь при себе эти средства для обновления программы.
Использование USB-бутлоадера дает одну возможность - отсутствие необходимости в программаторе для “прошивки” микроконтроллера - достаточно подключение к компьютеру по USB. Однако теперь доступ к программе, которой прошита плата, имеет любой желающий. Отсюда возникает угроза безопасности. Решить данную проблему позволяет шифрование программы. Тогда, бутлоадер должен расшифровывать ее в момент “прошивки”.
Цель работы: Реализовать криптозащищенный USB-бутлоадер для микроконтроллера STM32.
Поставленная цель потребовала решения следующих задач:
1) изучить теорию использования USB-интерфейса в микроконтроллерах;
2) изучить теорию бутлоадера микроконтроллеров;
3) изучить микроконтроллер и средства разработки для микроконтроллеров;
4) разработать программу для микроконтроллера STM32F103,
реализующую USB-бутлоадер;
5) выбрать алгоритм шифрования и реализовать криптозащиту программы для микроконтроллера с помощью выбранного криптоалгоритма;
6) провести испытания работоспособности защищенного USB-бутлоадера.
1. Проведен обзор микроконтроллеров семейства STM32F1xx, изучен микроконтроллер STM32F103C8T6. Flash-память микроконтроллера поделена на страницы размером 1 Кбайт, имеется возможность защиты памяти от чтения с помощью установки специальных байтов (Option bytes). Рассмотрены способы реализации загрузчиков программного кода: для упрощения процесса обновления “прошивки” возможно применение бутлоадера, при его использовании исключается необходимость в программаторе для загрузки программы в микроконтроллер. Наличие USB-интерфейса в микроконтроллере позволило решить поставленные задачи.
2. Средствами CooCox CoIDE разработана программа для STM32F103,
реализующая USB-бутлоадер. Работа платы возможна в двух режимах: режим работы основной программы, работа USB-бутлоадера.
Управление режимами выполняется с помощью перемычки.
3. Для защиты данных реализована криптографическая защита “прошивки” с помощью блочного алгоритма шифрования RC5-32/12/16. Программа, передаваемая пользователю от разработчика в зашифрованном виде, дешифруется бутлоадером в процессе записи в память устройства. Так же реализована защита памяти от чтения как при подключении с помощью программатора, так и по USB.
4. Проведены испытания работоспособности криптозащищенного USB- бутлоадера. Бутлоадер успешно расшифровывает “прошивку”, и основная программа исправно выполняется. Для контроля целостности расшифрованной программы реализована проверка контрольной суммы.