MeW HPM. Развитие идеи

Пару лет назад назад я публиковал статью о довольно интересном прототипе устройства, аппаратном менеджере паролей.

На тот момент я смутно представлял, что я вообще хочу от такого гаджета. Изначально устройство вообще было предназначено для хранения десятка наиболее используемых паролей, имело простейший интерфейс и довольно неудобное управление… Я сделал два десятка девайсов и раздал их разным людям. Часть устройств исчезло из поля зрения насовсем, но по части я получил определенный фидбек. Плюс я сам долгое время использовал свой гаджет в повседневной жизни.

Сейчас у меня сформировался некий список хотелок к такому устройству, собранный на основе своего опыта и полученного фидбека. На этой почве было решено сделать более совершенный гаджет.

image
В первую очередь был использован максимально жирный контроллер, STM32F437. Он имеет на себе аппаратную криптографию, 192+64 оперативки, и целый мегабайт флеша. Для такого устройства этот МК избыточен, но он обратно-совместим со всем семейством, и замена для удешевления конструкции пройдет довольно просто.

От идеи с кнопками пришлось отказаться: кнопочное устройство сложно и дорого корпусируется, да и юзабилити плохое. Так же выбор пароля на устройстве без экрана — сомнительное занятие — надо запоминать, на какой кнопке в каком банке какой пароль лежит, и редко используемые пароли так же забываются — сложно вспомнить, что где было. В итоге вместо кнопок был установлен резистивный сенсорный 2.4″ дисплей разрешением 240×320 — наиболее дешевое и доступное в рознице решение, что для open source железки немаловажно. Экран яркий, и для отображения несложного меню без полноцветной растровой графики отлично подходит. Для работы с резистивным контроллером используется отдельный драйвер TS2007, ибо работа через ADC с сенсором, во-первых, занимает много процессорного времени, а во-вторых, сопротивление сенсора 300 и 600 ом, и вешать на ноги напрямую его нехорошо.

Для реализации UI взята библиотека lvgl, ибо она довольно красива и не требует полного фреймбуфера для отрисовки интерфейса.

8960bf07afc99b0c89996511efa89627.jpg

Однако с сенсорным экраном тоже получилось не все просто. Забивать названия для паролей на 2.4″ экранчике — боль и страдание. В результате на плате появился BLE, и редактирование названий будет идти через приложение в смартфоне. Так же BLE даст возможность вбивать пароли в смартфоне даже в том случае, если сам смартфон по какой-то причине не поддерживает USB HID профиль, и позволит сделать шифрование/подпись сообщений. Если кому-то не нравится наличие радомодуля на таком устройстве, то BLE на плату можно не ставить, а конфигурацию делать через десктопное приложение через USB.

Так же BLE будет использоватся для прямого обмена публичными ключами между устройствами, модуль поддерживает режим мастера.

На первом варианте платы была установлена MicroSD, но потом ее было решено выпилить — у контроллера нет полноценного USB HS, а через USB FS реализация MSD получается настолько медленная, что вызывает довольно неприятные впечатления от использования. Вместо MicroSD была установлена spi nand flash на 128 мегабайт под хранение пользовательских данных, а функционал MSD выпилен до лучших времен.

Большой шестипиновый разъем, который видно на фото, нужен для первичного дебага, и в корпусированную версию его можно не ставить. Для перепрошивки и обновления в будущем планируется специальный бутлоадер.

Сейчас спроектировано устройство без батареи. Нужна ли она в таком устройстве? Пока не знаю…

image

Пароли генерируются на лету от введенного пин-кода, и на устройстве не хранятся. Смартфон также не может получить доступ к паролям, только к их названиям. Так же есть возможность создавать фейковые данные для разных пин-кодов, но об этом уровне безопасности будет в следующей статье, ибо реализация пока не готова.

А еще хабраюзер engine9 очень сильно помог проекту с проектированием корпуса. Модели корпусов пойдут как под фрезер, так и под 3D-принтер. Файлы корпусов выложены на гитхабе. На корпусах планируется nfc-наклейки двух типов, чтобы использовать устройство в качестве пропуска.

dsmyhgzp5mmgdbk-ezzz37r0pce.jpeg

Что в итоге будет в бета-версии устройства?

  • Менеджер паролей
  • Хранение персональных данных (контакты, ключи шифрования)
  • Шифрование и подпись сообщений
  • Прямой обмен ключами


Что хотелось бы видеть, но сил на это пока не хватает:

  • Хранение криптовалютных кошельков
  • Интеграция с браузерами для полностью автоматического ввода паролей, шифрования и подписи
  • PAM-модуль для линукса, чтобы входить в систему автоматом
  • Реализация разных видов шифрования, включая ГОСТ


image

Понравилось устройство? Вы всегда можете помочь проекту участием в нем.


Если кому-то захотелось собрать себе устройство, то я всегда могу бесплатно дать платы — из-за правки некоторых некритичных багов и экспериментов их у меня скопилось приличное количество. Плюс всегда можно в один клик заказать платы и компоненты из EasyEDA. Жалко, что сервис сборки у них пока недоступен вне Китая…

У проекта уже есть небольшая команда, в свободное время развивающая его. Не хватет времени и финансов, но это норма для любого стартапа… В следующем году мы думаем выходить с MeW на Кикстартер, однако пока еще рано говорить об этом — надо допилить прототипы до состояния «почти готово к производству», чтобы не заставлять бекеров ждать по году выхода продукта и не обманывать их красивыми рендерами без реальных прототипов.

© Habrahabr.ru