USB Password Keeper

После разработки клавиатуры наткнулся на мысль о том, что человек существо по своей природе ленивое все-таки. Просто на сегодняшний день современному человеку приходится иметь достаточно много онлайн-сервисов. Ну а естественно каждый сервис имеет защиту от доступа постороннего человека, а именно куда ни глянь, нужно вводить логин и пароль. А так как я подметил и ленивой сущности человека, то наверняка каждый из нас не отличается в разнообразии в своих паролях, есть, конечно, и исключения. Так вот к чему все это я клоню – а ведь по нажатию кнопки HID клавиатуры можно организовать передачу не одного символа, а нескольких и даже множества их, хоть целую страницу мелким шрифтом. И вот сегодня мне хотелось бы представить первую версию Password Keeper’a. Главной фишкой будет реализация идеи и ее обкатка. В этом варианте пароль задается только при прошивке (микроконтроллер используется AT90USB162, поэтому не потребуется даже программатор, а изменить сам пароль в исходнике не потребуется никаких знаний в программировании на языке Си, кроме как знания где расположена кнопочка, чтобы скомпилировать прошивку) и в памяти будет храниться всего один пароль (хотя нет никаких вообще ограничений, чтобы сделать 20 кнопок и хранить 20 паролей).

Для загрузки прошивки в микроконтроллер будем использовать USB интерфейс и программу Flip. В этом случае нам не нужен программатор, а контроллер программируется напрямую при подключению к порту компьютера. Прошивка осуществляется посредством bootloadera микроконтроллера. Он отбирает 4 кб памяти, однако остается еще 12 кб, которых на данном этапе нам хватает с головой.

Как это будет работать? Итак, пароль придуман, записан, прошивка скомпилирована и записана в микроконтроллер. В системе Password Keeper определится как HID клавиатура, но в отличие от обычной клавиатуры Password Keeper в активное окно выдаст пароль. При этом пароль не нужно вводить вручную и запоминать его, поэтому пароли можно использовать любой длинны и сложности, не опасаясь неправильно ввести один символ или ошибиться в нем. Думаю, это может подойти не только под концепцию для ленивых, но и повысить безопасность своих сервисов и аккаунтов. Из возможного развития проекта можно написать софт для Windows для записи паролей в Password Keeper без программирования микроконтроллера, ну и расширить количество паролей, либо повысить уровень защиты несколькими уровнями – получим аналог ключей (в виде флешки, используются в банковских системах в основном) для цифровой подписи (криптографическое программное обеспечение). В принципе вещь надежная. В общем развиваться есть куда и равняться на устройства, выполняющие похожие функции. При должном подходе в будущем можно будет если не превзойти, то хотя бы сравняться с функционалом, а скорее с защищенностью подобных устройств. Но это все задумки. Вернемся к текущей первой версии устройства.

В предоставленной версии используется отладочная плата для микроконтроллера AT90USB162, а прошивка написана таким образом, что для активации пароля используется кнопка для загрузки bootloader’a. При активной прошивке Password Keeper эта кнопка (HWB) никаким образом не мешает (имеется ввиду bootloader при помощи этой кнопки будет активирован только в связке с нажатием кнопки Reset).

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

Схема Password Keeper’a на микроконтроллере AT90USB162 представлена ниже:

Схема Password Keeper’a на микроконтроллере AT90USB162

В схеме устройства используется не очень много радиоэлементов и при применении элементов для поверхностного монтажа (наиболее мелкого размера) можно всю схему уместить в объем корпуса флешки, а то еще и меньше. Схема построена на микроконтроллере AT90USB162, питание которого берется от порта 5 вольт. Микроконтроллер внутри содержит стабилизатор на 3,3 вольта для питания линий USB (которые как раз и работают именно на таком напряжении). Конденсатор C6 выполняет функцию фильтра для этого внутреннего стабилизатора напряжения. Номинал можно увеличить. Резисторы R2, R3 необходимы для корректной работы по линиям данных USB порта. Кварц используется номиналом 16 МГц, так как микроконтроллер питается от 5 вольт, что позволяет поставить кварцевый резонатор на более высокую частоту. При питании 3,3 вольта, согласно даташиту, максимальная частота кварца для этого микроконтроллера составила бы 8 МГц. Резисторы R5 и R6 подтягивают 5 вольт к линиям микроконтроллера для правильной работы кнопок и исключения воздействия помех на этих линиях. Резисторы R1 и R4 ограничивают ток, протекающий через светодиоды, чтобы исключить их выход из строя. Светодиоды используются в SMD исполнении сверх яркие, что позволяет завысить номиналы этих резисторов и получить более безопасный режим. Для таких светодиодов достаточно подать небольшой ток, чтобы они светились. Конденсаторы C1, C2, C5 необходимы для фильтрации напряжения питания микроконтроллера. Все радиоэлементы, используемые при изготовлении устройства используются для поверхностного монтажа кроме кварцевого резонаторы (а при использовании паты AT90USB162 также еще один резистор используется в выводном варианте, подробнее в списке деталей в конце статьи).

В схеме красный светодиод выполняет функцию индикации напряжения питания на плате от USB порта, а зеленый выполняет функцию индикации работы Password Keeper’a. После загрузки устройства в Windows этот светодиод несколько раз моргнет, а во время ввода пароля будет просто гореть (так как процесс занимает небольшой промежуток времени, то и светодиод горит не многим больше). В режиме ожидания он не горит.

При наличии отладочной платы для микроконтроллера AT90USB162 необходимость в дополнительной сборке устройства отсутствует. Так как все необходимое уже присутствует на этой плате и необходимо лишь загрузить прошивку и можно использовать устройство:

Для перепрошивки микроконтроллер AT90USB162 на отладочной плате необходимо активировать bootloader (нажать и удерживать кнопку Reset, далее нажить и удерживать кнопку HWB, потом отпустить сначала Reset, а следом HWB, в диспетчере устройств появится микроконтроллер), и загрузить новую прошивку через Flip.

При дальнейшем развитии проекта можно получить полноценный USB ключ наподобие тех, что используются в системах интернет-клиент для работы с банковскими счетами.

К статье прилагается прошивка микроконтроллера AT90USB162 Password Keeper на один пароль, исходный код прошивки в компиляторе CodeVisionAVR, печатная плата для сборки устройства, а также небольшое демонстрационное видео.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
IC1 МК AVR 8-бит AT90USB162 1
C1, C6 Конденсатор 1 мкФ 2 1206
C2 Конденсатор 100 нФ 1 1206
C5 Конденсатор 10 мкФ 1 1206
C3, C4 Конденсатор 22 пФ 2 1206
Z1 Кварцевый резонатор 16 МГц 1
R1 Резистор 1.5 кОм 1 1206
R2, R3 Резистор 22 Ом 2 1206
R4 Резистор 1 кОм 1 1206
R5, R6 Резистор 10 кОм 2 1 — 0805, 1 — выводной
LED1 Светодиод Красный 1 1206
LED2 Светодиод Зеленый 1 1206
S1, S2 Тактовая кнопка IT-1127-5-160G-G 2 smd
X1 Разъем miniUSB 1 smd
Jmp1, Jmp2 Перемычка Джемпер 2