Разработка аппаратного менеджера паролей

История о том, как мы разработали, произвели и продали при помощи краудфандинговой кампании несколько сотен аппаратных менеджеров с открытым кодом.
менеджер паролей «Пастильда»
Пастильда

Задача

Разработать аппаратный менеджер паролей с открытым исходным кодом
Однажды неизвестный взломал аккаунт известного в России интернет-магазина нашего CEO и купил флешку и упаковку подгузников. После этого вопиющего происшествия мы пересмотрели политику защиты данных, сменили пароли к рабочим и личным аккаунтам, а для хранения учетных записей внедрили KeePass. Это универсальное открытое программное обеспечение для хранения и ввода паролей.

Во время очередного мозгового штурма нам пришла идея, что было бы интересно найти аппаратное решение с функциями keepass, но так же способное работать на устройстве без установленного KeePass и вводить пароль в любых средах, в т.ч. BIOS, консоли и т.д.

концепты аппаратных решений для защиты данных
Паша рисует первые концепты
Из архива Третий пин
Мы изучили рынок и увидели, что существуют следующие решения:

  • шифрованные накопители, по сути — просто флешки с паролем. Можно безопасно хранить документы, но об автоматическом вводе паролей речь не идет
  • устройства с биометрической идентификацией. Биометрическая идентификация выглядит привлекательно, однако она менее универсальна, чем символьный пароль (например, если надо удаленно предоставить кому-то доступ к устройству, передача отпечатка пальца станет настоящей проблемой), к тому же дополнительные датчики увеличивают стоимость изделия. В случае компрометации сложно быстро сменить отпечатки
  • программные менеджеры паролей с аппаратным ключом-токеном, который дает доступ в базу обладают теми же недостатками, что и программные менеджеры без ключа-токена
  • устройства для ввода 1-4 паролей и их генерации (пример, пример). Наиболее близкие решения. Из недостатков следует отметить ограниченное количество хранимых паролей а также управление исключительно кнопками на устройстве, что далеко не всегда удобно.

Ни одно из найденных устройств в полной мере не соответствовало нашей задумке. Тогда мы решили сделать прототип такого устройства для своих нужд и если получится предложить его другим пользователям и немного заработать.
прототип USB-устройства
Вот что получилось
Из архива Третий пин

Как работает Пастильда?

Проект получил название "Pastilda" (от password + tilda). У нас оно ассоциируется с чем-то вкусным и сладким, а также помогает не забыть главное сочетание клавиш для работы с устройством.

Пастильда представляем из себя составное USB устройство (HID+Mass Storage) с двумя USB разъемами, один из которых подключается к компьютеру, а другой – к клавиатуре.

Для хранения паролей используется база данных в формате .kbdx. Она создается при помощи KeePass и загружается на устройство. Для дальнейшей работы с устройством KeePass не нужен.

Находясь в пассивном режиме, Пастильда транслирует все сообщения от клавиатуры к ПК без изменений, ожидая нажатия специальной комбинации. После ввода комбинации "Shift + Ctrl + ~" устройство входит в активный режим. Если в этот момент курсор находится в поле для ввода текста — это может быть поле "Логин", или любое другое текстовое поле — в нем появляется одно-строчное текстовое меню.


схема подключения к клавиатуре и ПК
Схема подключения устройства
Пользователь вводит мастер-пароль, а затем при помощи навигационных клавиш клавиатуры выбирает название интересующего его аккаунта и нажимает ввод. Пастильда вводит нужные логин и пароль в соответствующие поля. При этом расшифровка базы происходит на устройстве, и целевая система не получает доступа к мастер-паролю и ко всей базе. Выход из активного режима происходит либо автоматически, после ввода пароля, либо после повторного нажатия комбинации "Shift + Ctrl + ~". Можно менять комбинацию клавиш.

Встроенную память Пастильды можно использовать для хранения данных (если скорость не особо важна), и тут возможны варианты: просто USB накопитель, который виден всегда, когда устройство подключено, либо шифрованный накопитель. Базы KeePass, файлы ключей и т.п. предполагается хранить на этом пространстве.

использования менеджера паролей в активном режиме
Процесс ввода паролей

Про поиск клиентов и краудфандинг

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

Для организации кампании выбрали площадку Crowd Supply. Она специализируется на open-source hardware и предоставляет услуги по маркетинговой поддержке, производству и организации доставки устройств. К тому же, организаторы утверждали, что 100% профинансированных проектов доходит до результата, т.е. устройства доставляются «бэкэрам».
сайт краудфандинговой площадки Crowd Supply
Сайт Crowd Supply
Мы планировали привлечь сумму для производства 1000 устройств, но организаторы посоветовали значительно снизить ее, чтобы увеличить шансы на успех проекта.

Для заключения договора и начала кампании Crowd Supply попросили выслать несколько образцов для оценки экспертами в их офисе в США. В ходе заполнения курьерских бумаг выяснилось, что вывезти из России через границу устройство, содержащее в себе функцию шифрования, пусть даже на стандартных компонентах и общеизвестных алгоритмах, непросто. А в случае успеха компании, где большинство пользователей будет не из России, нам предстояло это проделать неоднократно. В итоге мы отправили посылку Почтой России, но с доставкой партии надо было что-то решать.

Мы подготовили все материалы, запустили сайт и даже сняли видео, где наш CEO рассказывает про устройство. После запуска кампании, в течении достаточно короткого срока мы получили заявки от 149 инвесторов на покупку 182 устройств.

Заказы были со всего мира. Интересно, что несмотря на наши статьи на русском языке, заказов из России всего 14 штук. Осталось организовать производство устройств.

фрагмент из видеовыступления CEO Ивана Ларионова
Иван рассказывает про Пастильду
Ищите пасхалочку

Про производство

Crowd Supply предложили разместить заказ на заводе компании Macrofab, а так же организовать доставку устройств клиентам. Собранных средств хватало на производство 324 Пастильд.

Macrofab предоставляет сервис производства, который они называют MAAS, Manufacturing-as-a-service. Что это такое и как это работает?

Заходим на сайт и создаём заказ. Загружаем ODB++, внутри есть всё про наше устройство: слои платы, перечень компонентов (Bill of materials или BOM), их расстановка и т.д. Дальше надо сопоставить свой BOM с компонентами, доступными на складе, а также подтвердить правильность расположения компонентов сверху и снизу платы.

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

Фабрика берётся не только за сборку, но и за тестирование устройств. Для этого надо расписать методику тестирования и прошивки в специальном разделе. Стоимость прошивки около $1 за минуту.

Производство партии из 324 штук заняло около 8 недель.

Когда произведенные платы были проданы, мы решили запустить ещё одну небольшую партию в 55 устройств. Производство заняло около 7 недель, а тестирование проводилось сотрудниками Crowd Supply.
расчет себестоимости производства в приложении Macrofab
Интерфейс приложения Macrofab
Фото с сайта

C какими сложностями столкнулись

При производстве второй партии устройств часть устройств не работало. Устройства прошивались, но не проходили функциональный тест. Мы пытались решить проблему удаленно, но это не получилось сделать. Мы попросили выслать нам несколько образцов и провели исследование.

В результате проверки оказалось, что в коде загрузчика устройства была допущена ошибка, которая вызывала повышение питание и повреждение контроллера. При этом часть устройств из второй партии и почти все из первой не показывали ошибку, потому что микроконтроллеры, были из другой партии от другого производителя и более устойчивы к повышенному питанию.

Мы решили проблему и разослали обновленную прошивку и инструкцию пользователям.



тестирование устройства из пробной партии
Отладка устройства
Из архива Третий пин

Результаты

Проект Pastilda – интересный опыт для нашей команды. Обычно, к нам обращаются, как к внешней команде разработки. Мы помогаем с дизайном и программированием, освобождая время заказчика для маркетинга и продаж. В этом проекте нам предстояло сделать устройство для B2C рынка и заниматься всеми этапами самостоятельно.

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