ГЛАВА 3. РАЗРАБОТКА ПРОТОТИПА УСТРОЙСТВА
3.1. Алгоритм работы устройства
Чтобы понимать, как в конечном итоге должно работать Устройство, набор каких электронных компонентов необходим, а также для удобства отладки и сборки, необходимо представить логику работы Устройства в виде блок-схем. Алгоритм работы в виде блок-схемы функции активации клавиатуры представлен на рисунке 1.
Рисунок. 1. Блок-схема «Активация клавиатуры»
Алгоритм работы в виде блок-схемы основных функций Устройства представлен на рисунке 2.
Рисунок 2. Основные функции Устройства
Алгоритм работы в виде блок-схемы функции изменения Pin-кода, предназначенного для открытия доступа к открытому модулю памяти представлен на рисунке 3.
Рисунок 3. Блок схема «Изменение Pin-кода, предназначенного для открытия доступа к открытому модулю памяти»
Алгоритм работы в виде блок-схемы функции изменения Pin-кода, предназначенного для уничтожения данных представлен на рисунке 4.
Рисунок 4. Блок-схема «Изменение Pin-кода, предназначенного для уничтожения данных»
3.2. Сборка прототипа
На данном этапе разработки Устройства произведена сборка прототипа (см. рис. 5).
Рисунок 5. Прототип Устройства
Подборка электронных компонентов для сборки прототипа производилась исходя из алгоритма работы Устройства и возможности приобретения на рынке микроэлектронных и электронных компонентов. Прототип Устройства состоит из следующих электронных компонентов:
Отладочная плата;
Модуль сенсорной клавиатуры;
Плата со светодиодными индикаторами.
Для имитации открытого модуля памяти, совместно со съемным носителем информации, используется USB-разветвитель (см. рис. 6).
Рисунок 6. Схема подключения Устройства
В основе отладочной платы лежит микроконтроллер ST32F417 компании STMicroelectronics. Компания STMicroelectronics - европейская микроэлектронная компания, одна из крупнейших компаний, которая занимается разработкой, изготовлением и продажей различных полупроводниковых электронных и микроэлектронных компонентов. Данный микроконтроллер относится к семейству ARM Cortex-M4 микроконтроллеров с широчайшим набором внутренней периферии: Ethernet, USB ,Host/OTG/Client, CAN, RS232, SPI, I2C. Разработчиком процессоров семейства ARM Cortex является британская корпорация ARM (Advanced RISC Machines), данная компания является одной из крупнейших разработчиков и лицензиаров архитектуры 32-разрядных RISC-процессоров (ARM), ориентированных на использование в портативных и мобильных устройствах (телефонах, планшетных компьютерах и т. п.) [4]. Отладочная плата поддерживает следующие интерфейсы:
Ethernet 10/100M PHY - KS8721BL, тип интерфейса – RMII;
512Kбайт SRAM;
uSD;
USB2.0-full speed Host, Client;
CAN PHY;
RS232 приемопередатчик;
80 линий PIO микроконтроллера.
Плата содержит линейные LowDrop стабилизаторы, позволяющие питать ее от 5В, имеется возможность использовать питание от шины USB. Отладочная плата имеет стандартный 20-ти выводной разъем для подключения JTAG программатора/отладчика. Программирование внутренней flash производится через COM порт.
Модуль сенсорной клавиатуры с 12 кнопками выполнен на базе контроллера CY8C20536A-24PVXI. Данный контроллер поддерживает все алгоритмы обработки – CSD, CSA и SmartSense (с автоподстройкой параметров). Модуль клавиатуры также может работать со всеми данными алгоритмами. Разработчиком модуля является российская компания "ЭФО" основанная в 1991 г. в Санкт-Петербурге. Компания «ЭФО» уже более 20 лет занимается поставками импортных электронных компонентов на российский рынок.
По умолчанию, в контроллер модуля прошивается простая тестовая программа, демонстрирующая возможности технологии Cypress CapSense. На плате клавиатуры предусмотрена возможность подключения ЖК-дисплея (например, дисплеи Winstar WH1602x).
Для визуального контроля состояния кнопок (есть касание/нет касания) на плате установлены 4 светодиода. Светодиоды подключены к линиям P1,2-P1.4, P1.6 контроллера.
Модуль может быть подключен к внешнему устройству по интерфейсам IIC, SPI или TX8 (UART-совместимый протокол, только передатчик). Модуль программируется через 5-контактный разъем с помощью программатора MiniProg1, который поставляется в комплекте с платой. На прототипе сенсорная клавиатура состоит из двенадцати клавиш: девять цифровых и трех функциональных. Функциональные клавиши расположены на клавиатуре в следующем порядке: «Изменить», «Применить/принять Pin-код» и «Сброс».
3.2.1 Среда разработки
В качестве среды разработки была использована среда Keil UVision версии 4.72, представляющая собой набор утилит для выполнения полного комплекса мероприятий по написанию программного обеспечения для микроконтроллеров. Данная среда разработки поддерживает микроконтроллер STM32F417, который является основой отладочной платы, выбранной в качестве электронного компонента прототипа [5].
Keil uVision позволяет работать с проектами любой степени сложности, начиная с введения и правки исходных текстов и заканчивая внутрисхемной отладкой кода и программированием ПЗУ микроконтроллера. От разработчика скрыта большая часть второстепенных функций, что сильно разгружает интерфейс и делает управление интуитивно понятным. Однако при возрастании сложности реализуемых задач, всегда можно задействовать весь потенциал модулей, функционирующих под управлением единой оболочки. Основные программные средства среды разработки Keil uVision.
Базу данных микроконтроллеров, содержащую подробную информацию обо всех поддерживаемых устройствах. Здесь хранятся их конфигурационные данные и ссылки на источники информации с дополнительными техническими описаниями. При добавлении нового устройства в проект все его уникальные опции устанавливаются автоматически;
Менеджер проектов, служащий для объединения отдельных текстов программных модулей и файлов в группы, обрабатываемых по единым правилам. Подобная группировка позволяет намного лучше ориентироваться среди множества файлов;
Встроенный редактор, облегчающий работу с исходным текстом за счет использования многооконного интерфейса, выделения синтаксических элементов шрифтом и цветом. Существует опция настройки в соответствии со вкусами разработчика. Редактирование остается доступным и во время отладки программы, что позволяет сразу исправлять ошибки или отмечать проблемные участки кода;
Средства автоматической компиляции, ассемблирования и компоновки проекта, которые предназначены для создания, исполняемого (загрузочного) модуля программы. При этом между файлами автоматически генерируются новые ассемблерные и компиляторные связи, которые в дальнейшем позволяют обрабатывать только те файлы, в которых произошли изменения или файлы, находящиеся в зависимости от изменённых. Функция глобальной оптимизации проекта позволяет достичь наилучшего использования регистров микроконтроллера путем неоднократной компиляции исходного кода. Компиляторы uVision работают с текстами, написанными на Си или ассемблере для контроллеров семейств ARM, MSC51, C166 и многих других;
Отладчик-симулятор, отлаживающий работу скомпилированной программы на виртуальной модели микропроцессора. Довольно достоверно моделируется работа ядра контроллера и его периферийного оборудования: портов ввода-вывода, таймеров, контроллеров прерываний. Для облегчения комплексной отладки разрабатываемого программного обеспечения возможно подключение программных моделей нестандартного оборудования;
Дополнительные утилиты, облегчающие выполнение наиболее распространенных задач. Число и набор меняется от версии к версии. Выделяют следующие из них:
Source Browser, содержащую базу данных программных символов для быстрого поиска;
Find in Files, предназначенную для поиска заданного кода во всех файлах указанной папки или проекта;
Tools Menu, позволяющую использовать утилиты сторонних производителей;
PC-Lint, анализирующую исходный текст программы с выделением потенциально опасных мест;
Flash tool, программирующую FLASH-память микроконтроллеров [9].
3.2.2 Обзор функциональных возможностей прототипа
В настоящий момент прототип устройства обладает следующим набором функциональных возможностей:
активация клавиатуры;
ограничение доступа к закрытому модулю памяти посредством Pin-кода;
уничтожение данных при вводе Pin-кода для уничтожения данных;
смена Pin-кода, предназначенного для открытия доступа к закрытому модулю памяти;
смена Pin-кода, предназначенного для уничтожения данных.
Функция активации клавиатуры необходима для того, чтобы во внешнем виде Устройства отсутствовали демаскирующих признаки, которые могли бы выдать тот факт, что данный съемный носитель информации является защищенным. Кроме того, возможность использовать сенсорную клавиатуры лишь в тот момент, когда она действительно нужна позволяет избежать случайных нажатий, которые могут нести неблагоприятные последствия. Алгоритм работы данной функции представлен на рисунке 1.
Для того, чтобы произвести активацию клавиатуры, пользователю необходимо осуществить нажатие на кнопку «Изменить», расположенную на сенсорной клавиатуре Устройства. Длительность нажатия должна быть более семи секунд. После чего произойдет активация клавиатуры, о чем просигнализирует белый светодиод, который расположен на плате со светодиодными индикаторами. При активации клавиатуры, она также оповестит пользователя о том, что в данный момент она активна посредством четырех светодиодов зеленого цвета, которые расположены непосредственно на плате клавиатуры (см. рис. 7).
Рисунок 7. Активация клавиатуры
Функция ограничения доступа к закрытому модулю памяти позволяет исключить возможность НСД к информации, хранящейся на нем. Для того, чтобы открыть доступ к закрытому модулю памяти, пользователю необходимо активировать клавиатуру, используя цифровые кнопки на сенсорной клавиатуре, ввести текущий Pin-код для открытия доступа к закрытому модулю памяти и нажать на кнопку «Принять\применить Pin-код». Если Pin-код введен неправильно, то пользователь будет проинформирован об этом красным индикатором на плате светодиодных индикаторов (см. рис. 8). В случае, когда пользователь ввел Pin-код неправильно более чем 3 раза, информация, которая хранится на закрытом модуле памяти уничтожается.
Рисунок 8. Красная световая индикация
Часть программного кода в среде разработки Keil uVision функции активации клавиатуры приведена на рисунке 9.
Рисунок 9. Программный код функции активации клавиатуры
Функция уничтожения данных при вводе Pin-кода для уничтожения данных, позволяет пользователю избежать НСД к информации, которая хранится на закрытом модуле памяти, в ситуации, когда Устройство находится в руках третьих лиц, а на пользователя оказывается какое-либо воздействие (например, физическое) с целью получения Pin-кода для открытия доступа к закрытому модулю памяти. Чтобы ввести Pin-кода для уничтожения данных, необходимо, чтобы клавиатура была активирована. При вводе Pin-кода для уничтожения данных, на плате со светодиодными индикаторами загорится зеленый светодиод, а информация на закрытом модуле памяти будет уничтожена.
При вызове функции уничтожения данных начинается циклическая запись блока данных, размером 512 байт, содержащего нули. Заполнение памяти начинается с нулевого адреса с приращением, равным размеру блока данных, и заканчивается при достижении максимально возможного количества блоков в модуле памяти. Максимальное количество блоков памяти (физическая емкость) считывается из модуля памяти при его инициализации.
Часть программного кода в среде разработки Keil uVision функции уничтожения данных приведена на рисунке 10.
Рисунок 10. Программный код функции уничтожения данных
Функция смены Pin-кодов. Чтобы изменить один из Pin-кодов пользователю необходимо активировать клавиатуру и нажать на кнопку «Изменить» в течение 3 секунд, если нужно изменить Pin-код предназначенный для открытия доступа к закрытому модулю памяти. Если же необходимо изменить Pin-код, предназначенный для уничтожения данных, то пользователь должен нажать на кнопку «Изменить» в течение 7 секунд. Далее пользователю нужно ввести правильно текущий Pin-код, который он хочет изменить, а затем нажать на кнопку «Принять\применить Pin-код». В случае если Pin-код был введен правильно, загорится зеленый светодиод на плате со светодиодными индикаторами, если же пользователь ошибся, то загорится красный светодиод, и ему придется повторить все действия заново. Далее пользователь должен ввести новый Pin-код. Pin-код может быть длиной от 6 до 12 символов, если было введено больше 12 символов, то в качестве Pin-кода будет записаны первые 12 символов, если было введено меньше 6 символом то загорится красный светодиод, и будет необходимо повторить все действия заново начиная с нажатия кнопки «Изменить». В случае если пользователь ошибся при вводе Pin-кода он может воспользоваться кнопкой «Сброс».
Рисунок 11. Программный код функции смены Pin-кода
Аппаратное шифрование данных. Вся информация, которая записывается на закрытый модуль памяти Устройства, подвергается аппаратному шифрованию. Это происходит благодаря тому, что в состав микроконтроллера STM32F417 входит криптографический сопроцессор, который позволяет осуществлять аппаратное шифрование данных следующими алгоритмами шифрования:
В прототипе Устройства в качестве алгоритма аппаратного шифрования используется симметричный алгоритм блочного шифрования AES (Advanced Encryption Standard) с длинной ключа 128-бит. Выбор данного алгоритма шифрования был обусловлен тем, что согласно официальной документации, которую предоставляет производитель микроконтроллера при использование алгоритма шифрования AES с длиной ключа 128-бит, криптоускоритель сопроцессора микроконтроллера будет шифровать данные с хорошим показателем скорости. Данные по производительности криптоускорителя приведены в таблице 3.
Таблице 3. Производительность криптоускорителя в Мбайт/сек
Алгоритм/Размер ключа
|
AES-128
|
AES-192
|
AES-256
|
DES
|
TDES
|
Тип ядра
|
CM3
|
CM4
|
CM3
|
CM4
|
CM3
|
CM4
|
CM3
|
CM4
|
CM3
|
CM4
|
Аппаратная (теоретическая)
|
137,14
|
192
|
120
|
168
|
106,67
|
149,33
|
60
|
84
|
20
|
28
|
Аппаратная без DMA
|
51,89
|
72,64
|
51,89
|
72,64
|
44,65
|
62,51
|
30,97
|
43,35
|
11,43
|
16
|
Аппаратная с DMA
|
128
|
192
|
120
|
168
|
106,67
|
149,33
|
60
|
84
|
20
|
28
|
Чисто программная
|
0,99
|
1,38
|
0,82
|
1,14
|
0,69
|
0,96
|
0,53
|
0,74
|
0,18
|
0,25
|
3.3. Скорость чтения и скорость записи на закрытый модуль памяти
Скорость чтения и скорость записи играет не последнюю роль для конечного пользователя при выборе съемного носителя информации. В целях определения скорости чтения и записи на закрытый модуль памяти Устройства, было проведено их измерение. Измерения скорости чтения и записи было произведено при помощи использования программного обеспечения, предназначенного для данных целей. Для того, чтобы выявленные данные были объективными, были использованы две программы и h2testw и CrystalDiskMark 3.0.
CrystalDiskMark — бесплатная программа, предназначенная для сравнительного анализа (тестирования) быстродействия дисков компьютера. Позволяет измерить скорость последовательного и случайного чтения и записи данных (см. рис. 12).
Сверху расположено меню. Которое позволяет выбрать данные для тестирования (по умолчанию стоит значение «Случайное»), скопировать результаты теста, получить справку о программе на английском языке и т.д.
Ниже меню расположены параметры тестирования. Слева направо: количество запусков теста, размер тестируемой области и диск для тестирования. Слева находятся тестируемые значения: «Seq» - (Sequential) – последовательное тестирование скорости чтения и записи блоков по 1024 KB, «512K» - тест случайных блоков размером 512 KB, «4K» - тест случайных блоков размером 4 KB с глубиной очереди (Queue Depth) = 1 и, «4K QD 32» - тест случайных блоков размером 4 KB с глубиной очереди (Queue Depth) = 32. Если пользователь кликнет по какому-либо параметру для тестирования, носитель будет протестирован по этому параметру. Кликнув по кнопке «All», носитель будет протестирован по всем перечисленным параметрам. Для тестирования закрытого модуля памяти Устройства было выбрано значение «All». Результаты тестирования представлены на рисунке 13.
Рисунок 12. CrystalDiskMark 3.0
Рисунок 13. Результаты работы программы CrystalDiskMark 3.0
H2testw – программа, которая позволяет проверить любой флеш-накопитель информации на наличие ошибок. Принцип работы программы заключается в записи данных на устройство до полного его заполнения и последующей проверке записанных данных (см. рис.14).
Данная программа позволяет узнать реальный объем накопителя информации и определить скорость записи на устройство.
Для проверки носителя информации нужно подключить устройство к компьютеру и произвести форматирование, предварительно скопировав с него все необходимые данные. Далее нужно запустить H2testw. С помощью кнопки «Select target» выбрать носитель, который надо проверить и нажать кнопку «OK».
Рисунок 14. h2testw
Рисунок 15. Результаты работы программы h2testw
|