ВВЕДЕНИЕ 3
1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 5
1.1. Аппаратные токены 5
1.2. Обзор существующих токенов в ПО для хранения паролей 6
1.3. Микроконтроллер STM32F103C8T6 12
1.3.1. Описание микроконтроллера 12
1.3.2. Основные характеристики платы 13
1.3.3. Использование периферийных устройств на плате STM32 15
1.4. USB-интерфейс 16
1.4.1. Определение 16
1.4.3. Типы передачи данных по USB 18
1.4.4. Транзакции 19
1.4.5. Класс коммуникационного устройства USB 21
1.5. Алгоритм симметричного шифрования Blowfish 23
1.5.1. Описание алгоритма 23
1.5.2. Сеть Фейстеля 24
1.5.3. Алгоритм «Blowfish» 26
1.6. Протокол MQV 32
1.6.1. Протокол Диффи-Хеллмана 32
2. РАЗРАБОТКА АППАРАТНОГО ТОКЕНА И ПО ДЛЯ ХРАНЕНИЯ
ПАРОЛЕЙ 37
2.1. Алгоритм работы токена и программы на ПК 37
2.2. Разработка аппаратного токена на STM32F103C8T6 40
2.2.1. Генерация исходного кода на STM32 40
2.2.2. Разработка программы на STM32 42
2.3. Разработка приложения для хранения паролей на ПК 44
2.4. Тестирование разработанного токена 50
ЗАКЛЮЧЕНИЕ 53
СПИСОК ЛИТЕРАТУРЫ 54
Приложения 55
В настоящее время более 80% людей активно используют сети Интернет в повседневной жизни. Вместе с этим, каждый должен применять большое количество паролей для доступа к различным ресурсам - аккаунтам в социальных сетях, пароли от интернет-магазинов, данные банковских карт для онлайн-оплаты товаров и т.п. Обеспечение безопасности аккаунтов требует использование одного пароля только один раз, так как, в противном случае, злоумышленник, взломав один аккаунт, может быстро получить доступ к другим. Однако, сейчас средний пользователь имеет более десятка различных аккаунтов и запоминать все пароли становится чрезвычайно сложно, а записывать в блокнот небезопасно, поэтому один из самых оптимальных вариантов - использование программ для хранения. Единственной сложностью становится запоминание мастер-пароля для получения доступа ко всем остальным. В связи с этим большое распространение получили аппаратные заменители мастер-паролей: токены, смарт-карты и т.д. В связи с этим, представленная дипломная работа, посвященная созданию ПО для хранения паролей с аппаратным токеном на базе микроконтроллера STM32F103C8T6, является актуальной.
Целью данной работы является разработка аппаратного токена на микроконтроллере. Требуется дополнительно защитить канал связи между токеном и ПК для устранения возможности перехвата данных и раскрытия мастер-пароля для дешифрования базы данных.
Для реализации поставленной цели потребовалось решение следующих
задач:
1. изучение возможностей микроконтроллера STM32F103C8T6;
2. изучение симметричного алгоритма шифрования Blowfish;
3. изучение протокола обмена ключами MQV, на основе алгоритма Диффи-Хеллмана;
4. разработка ПО хранения паролей для ОС Windows;
5. разработка программы, реализующей функции
аутентификационного токена, для микроконтроллера STM32F103C8T6.
В рамках данной работы было разработано ПО хранения паролей для ОС Windows и прошивка, реализующая функции токена, для микроконтроллера STM32F103C8T6. Для достижения поставленной цели были решены следующие задачи:
1. изучены возможности микроконтроллера STM32F103C8T6 в обеспечении шифровании информации и передачи данных с помощью USB;
2. изучен алгоритм симметричного шифрования Blowfish. Алгоритм применялся для процесса аутентификации между микроконтроллером и ПК и шифрования локальной базы данных паролей на ПК;
3. для передачи аутентификационной информации был применен алгоритм MQV, основанный на алгоритме Диффи-Хеллмана, для создания и распределения ключей шифрования, используя незащищенный от прослушивания канал связи. Протокол дополнительно обеспечивает защиту от атаки типа «человек посередине». После генерации ключа ПК отправляет на МК зашифрованную случайную последовательность. МК ее расшифровывает, добавляет свою подпись, шифрует и отправляет обратно. Значения не передаются по открытому каналу связи;
4. разработано ПО для хранения паролей на ОС Windows. В ПО используется локальная база данных, которая хранится на диске только в зашифрованном виде;
5. разработана прошивка для микроконтроллера STM32F103C8T6, выполняющая функции мастер-пароля в виде аппаратного токена. Токен используется для аутентификации в ПО хранения паролей.