Диплом: Разработка программно-аппаратного комплекса для защиты USB-носителей

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
62
6. Если конец потока не достигнут, то переходим к пункту 2. Иначе
переходим к пункту 7.
7. Определяем размер потока-источника, шифруем его (EncryptInt64) и
записываем в приемник;
8. Шифруем контрольную сумму (EncryptInt64) и записываем в
приемник.
Дешифрование относится к методу класса TAES:
public procedure DecryptStream(Source: TStream; Dest: TStream; UserKey:
uAESCore.TAESUserKey ; Bits: Integer)
Начало
Генерация раундовых
ключей AES
Чтение порции данных из
потока-источника (16 бит)
Подсчет контрольной
суммы (GetCRC)
Расшифрование порции
Запись результатов
шифрования в поток-
приемник (16 бит)
Конец потока
достигнут?
да
нет
Считывание сохраненного
размера потока и его
расшифровка
считывание контрольной
суммы (EncryptInt64) и ее
расшифровка
Запись результатов
дешифрования в поток-
источник
Да
Конец
Размер контрольных
сумм совпадает?
нет
Коррекция размера файла
Рисунок 19 - Алгоритм дешифрования
63
Дешифрования осуществляется в следующем порядке:
1. Генерации раундовых ключей AES.
2. Читаем порцию данных из потока-источника (16 бит).
3. Расшифровываем порцию данных;
4. Вычисляем контрольную сумму (GetCRC);
5. Если конец потока (размер потока за вычетом 32 байтов) не
достигнут, то переходим к пункту 2. Иначе переходим к пункту 6.
6. Считываем сохраненный размер потока и расшифровываем его
(DecryptInt64);
7. Считываем контрольную сумму и расшифровываем её (DecryptInt64).
8. Сравниваем значение вычисленной контрольной суммы и
расшифрованной (сохраненная в зашифрованном файле). Если суммы не
совпадают, то прерываем вычисления. Иначе переходим к шагу 9.
9. Возвращаемся в начало потока источника;
10. Читаем порцию данных из потока-источника (16 бит).
11. Выполняем расшифровку порции.
12. Записываем результаты шифрования в поток-приемник (16 бит).
13. Если конец потока-источника не достигнут, то переходим к пункту
10. Иначе переходим к пункту 14.
14. Корректируем размер файла в соответствии с его исходным
(сохраненным в шифрованном файле) размером.
Алгоритм обработки ключа состоит из двух процедур:
Алгоритм расширения ключа
Алгоритм выбора раундового ключа (ключа итерации)
Для этих целей был использован файл «autorun.inf».
Файл «autorun.inf» используется для автоматического запуска
(автозапуск) приложений и программ на носителях информации в среде
операционной системы Microsoft Windows. Этот файл должен находиться в
64
корне устройства, для которого осуществляется автозапуск. Файл делится на
структурные элементы — блоки. Название блоков пишется в квадратных
скобках. Описание блоков содержит пары параметр/значение.
Блок [autorun]
Параметр action - отвечает за отображение текста в меню автозапуска.
Параметр icon - параметр отвечающий файлу иконки для устройства.
Пример:
Параметр label - служит для указания "метки тома". Если применить
метку label к жёсткому диску, то реальная метка тома будет скрыта.
Параметр open - содержит путь к файлу программы, которая будет
запускаться при подключении устройства или попытке доступа к нему.
Данный параметр не следует использовать вместе с shellexecute, возможно
возникновение конфликта! Синтаксис:
Параметр UseAutoPlay - совместим только с ОС MS Windows XP и на
всех сменных носителях. Допустимое значение одно — 1. Используется для
включения обработки файла autoplay. Используется очень редко.
Параметр shellexecute. Указанный в этом параметре файл, открывается
при автозапуске той программой, которая ассоциирована с этим типом
файлов в системном реестре Windows. Параметр shellexecute можно
использовать вместо параметра open, однако использовать эти два параметра
вместе не рекомендуется. Если говорить об ОС Windows Vista, то в ней, диск
с этим параметром, сразу определяется как диск с программным
обеспечением или играми, и для него вызывается соответствующее меню.
Параметр shell. Указывает команду по умолчанию (default) для
контекстного меню диска.
Блок [Content]
В блоке используется всего три ключа: MusicFiles, PictureFiles,
VideoFiles, что соответствует типам данных на носителе: музыка,
65
изображения, видео. Значениями для этих ключей могут быть только
логическое true (истина) или false (ложь). Истина задаётся любым из данных
значений: 1, y, yes, t, true. Ложь задаётся как: 0, n, no, f, false.
Блок [ExclusiveContentPaths]
При попытке определить тип содержимого на данном носителе
информации, поиск файлов будет производиться только в папках,
прописанных в этом блоке.
Блок [IgnoreContentPaths]
При попытке определить тип содержимого на данном носителе
информации, поиск файлов не будет производиться в папках, прописанных в
этом блоке и всех подпапках.
Содержание файла autorun.inf
Структура файла «autorun.inf»:
[autorun]
shellexecute=coder.exe
action=Защищенный носитель v.1.0
icon=coder.exe
description=Защищенный носитель v.1.0
label=Защищенный носитель v.1.0
shell\about=Защищенный носитель v.1.0
shell\about\command=coder.exe
[Content]
MusicFiles=false
PictureFiles=false
VideoFiles=false
Если на флеш-накопителе нет защищенных фалов, то приложение
запрашивает у пользователя ключ и подтверждение ключа. После успешной
66
проверки введенных значений приложение открывает форму для работы с
содержимым защищенного архива.
Если на флеш-накопителе уже имеются защищенные файлы, то
приложение анализирует введенный ключ и если ключ проходит проверку,
то приложение открывает форму работы с защищенным архивом.
Рисунок 20 – Вид защищенного флеш-накопителя из проводника
67
Рисунок 21 - Вид контекстного меню флеш-накопителя из проводника
Рисунок 22 - Форма работы с защищенным архивом
Рисунок 23 - Форма ввода секретного ключа
68
Рисунок 24 - Форма работы с защищенным архивом
Описания классов
Класс «TAES»
Класс TAES реализует шифрование/дешифрование потоков данных.
Также в процессе шифрования потока вычисляется контрольная сумма
данных, которая также зашифровывается наряду с размером шифруемых
данных. Контрольная сумма будет использоваться при расшифровке данных,
для определения правильности ключа (использование констант (как
строковых, так и числовых) неприемлемо, т.к. это существенно снизит
криптографическую стойкость алгоритма). А сохранение размера данных
необходимо для вычленения нужного объема байт (т.к. размер исходного
файла может быть некратным 16).
Алгоритм описан в таблице:
69
Таблица 3 – Описание алгоритма
private
Объявление
Описание
unsigned FTime1;
Начало вычислений
unsigned FTime2;
Окончание вычислений
void __fastcall SetTime1(void);
Фиксация времени начала вычислений
void __fastcall SetTime2(void)
Фиксация времени окончания вычислений
void __fastcall EncryptInt64(__int64 Value,
System::Byte *OutData, Uaescore::TAESKeySet &Key)
Процедура шифрования потока данных.
Алгоритм работы функции:
1. Генерации раундовых ключей AES.
2. Читаем порцию данных из потока-источника
(16 бит).
3. Считаем контрольную сумму (GetCRC);
4. Выполняем шифрование порции.
5. Записываем результаты шифрования в поток-
приемник (16 бит).
6. Если конец потока не достигнут, то переходим
к пункту 2, Иначе переходим к пункту 7.
7. Определяем размер потока-источника,
шифруем его (EncryptInt64) и записываем в
приемник;
8. Шифруем контрольную сумму (EncryptInt64) и
записываем в приемник;
void __fastcall DecryptInt64(System::Byte *InData,
__int64 &Value, Uaescore::TAESKeySet &Key)
Расшифровка значения Int64.
1. Генерации раундовых ключей AES.
2. Читаем порцию данных из потока-источника
(16 бит).
3. Расшифровываем порцию данных;
4. Вычисляем контрольную сумму (GetCRC);
5. Если конец потока (размер потока за вычетом
32 байтов) не достигнут, то переходим к пункту 2.
Иначе переходим к пункту 6.
6. Считываем сохраненный размер потока и
расшифровываем его (DecryptInt64);
7. Считываем контрольную сумму и
расшифровываем её (DecryptInt64).
8. Сравниваем значение вычисленной
контрольной суммы и расшифрованной
(сохраненная в зашифрованном файле). Если
суммы не совпадают, то прерываем вычисления.
Иначе переходим к шагу 9.
9. Возвращаемся в начало потока источника;
10. Читаем порцию данных из потока-источника
(16 бит).
11. Выполняем расшифровку порции.
12. Записываем результаты шифрования в поток-
приемник (16 бит).
13. Если конец потока-источника не достигнут, то
переходим к пункту 10. Иначе переходим к
пункту 14.
void __fastcall GetCRC(System::Byte *InData, __int64
&CRC)
Вычисление контрольной суммы для Блока
70
Таким образом, разработанное программное обеспечение позволяет
защитить информацию, хранящуюся на USB-носителе, от
несанкционированного доступа.
3.2 Описание аппаратной составляющей программно-
аппаратного комплекса
Для реализации модуля была выбрана плата Arduino Leonardo.
В основе платы Arduino Leonardo лежит микроконтроллер
ATmega32u4. В отличии от других плат данной серии, Leonardo не имеет
отельного контроллера для коммуникаций. Связь с компьютером по USB
осуществляется через виртуальный serial-порт микроконтроллера
ATmega32U4, контакты аппаратного порта при этом остаются
незадействованными и могут использоваться независимо от текущего
соединения с компьютером. Еще одним преимуществом встроенного USB-
контроллера является возможность подключения платформы к компьютеру в
качестве HID-устройства (мыши, джойстика, клавиатуры) или же
стандартным виртуальным COM-портом.
Питание платы Arduino Leonardo выбирается автоматически от одного
из трех источников:
- через USB;
- от внешнего блока питания (через 2,1 мм разъем);
- от батареи (через разъем Power) .
Допустимый диапазон напряжения внешнего блока питания: 6-20В.
Рекомендуемый: 7-12В. Это связано с особенностью работы
стабилизатора напряжения на плате. При значениях напряжения ниже
рекомендуемых, происходит просадка по лини 5В - это негативно
сказывается на работе микроконтроллера и прочих элементов платы.
71
Превышение рекомендуемого значения приводит к перегреву
преобразователя с перспективой выхода из строя всего устройства.
Входы/выходы
У Arduino Leonardo в наличии 20 выводов. Каждый из них может быть
настроен на вход или на выход. При этом 7 выводов можно использовать в
качестве ШИМ, а 12 - могут использоваться как аналоговые входы.
Каждый вывод с функцией ШИМ позволяет выводить аналоговые
уровни напряжения с дискретностью 8 бит.
Каждый аналоговый вход имеет разрешение в 10 бит. Предел
измерения входных значений:0-5В (верхний предел можно скорректировать
через опорное напряжение, поданное на вход AREF).
5 выводов могут быть сконфигурированы на принятие внешнего
прерывания (по изменению входного значения или по
восходящему/спадающему фронту).
Отдельный выход дублирует кнопку Reset. Используется при
физической блокировке платой расширения стандартной кнопки сброса.
Светодиоды
На паллет расположены четыре светодиода:
ON - работает как индикатор наличия питания на плате;
RX, TX - сигнализируют о передаче данных;
L - срабатывает при наличии потенциальна высокого уровня на 13
цифровом выводе.
Память
Объём Flash-памяти микроконтроллера ATmega32U4 - 32кБ (4кБ
зарезервировано под загрузчик). ОЗУ - 2,5кБ. Размер энергонезависимой
памяти - 1кБ.
Микроконтроллер ATmega32u4 позволяет организовать связь с
другими устройствами через последовательный интерфейс (выводы RX и

Смотрите также:

Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)
Value-based education: ценности в системе образования и способы их реализации на уроке английского языка. Опыт Европейских стран
Work-life balance подход в управлении рабочим временем молодых сотрудников (на примере ООО «МГТ-сервис»)
Актуализация контента, отражающего концепцию «диалога культур», при освоении английского языка взрослыми обучающимися
Актуализация приемов инсценирования и драматизации в рамках интерактивной модели обучения английскому языку в старших классах
Актуальные подходы в построении внутреннего pr строительной компании (на примере ООО "Ренессанспроект")
Анализ деловой активности и экономической эффективности деятельности организации (на примере АО «СГ-Транс»)
Анализ деловой активности организации как инструмент повышения эффективности ее деятельности (на примере Косинского районного потребительского общества)