Решил купить себе Pastild(у) ревизии r1.1. Хипстерское устройство. Мне очень понравилось то, что этот хранитель паролей одновременно и USB Flash(ка). Также понравилась возможность съёмной SD карты. Я всегда подсознательно мечтал о чем-то таком.
Да и название тоже великолепное. Crtl + ~ это как раз комбинация клавиш, чтобы набрать PassWord и переключится в режим расшифрованной базы данных паролей.
Идея аппаратного менеджера паролей, который не требует отдельного USB просто великолепная!
Итак, внешний вид изделия такой. Просто конфетка!
А это блок-схема схемотехники:
Устройство OpenSource(ное) вот сорцы прошивки: https://bitbucket.org/thirdpin_team/pastilda/src/master/
Написана на стеке CMSIS, SPL, libopencm3, С++, Cmake, OpenBTL, FatFs, FreeRTOS, KeePass. Видимо разработчики решили опробовать все самые хипстерские embedded технологии 2017 года. Посмотрим, что из этого получилось...
Это распиновка connect(оров)
Я выполнил своё beta-тестирование Пастильды. Вот, что могу написать:
Аппаратные пожелания
*1--Добавить разъем с UART с консолью для отображения логов работы устройства (версия CRC FLASH памяти, дата компиляции, время непрерывной работы, количество стартов прошивки и прочее), для запуска юнит-тестов, управления и диагностики устройства.
2--Добавить часы реального времени для анализа даты и времени нажатий на кнопки. Увеличение габаритов тут не особо страшно, зато полезно для отслеживания времени проведенного за компьютером. Можно будет включить тревожное мигание при переработке (4 часа непрерывной печати) предупреждать о том что надо делать перерывы и прочее.
*3--Добавить разъём для программирования с шагом 2,54мм. Тогда его смогли бы программировать более широкий круг людей (студенты, школьники). Так как сейчас надо подпаиваться под микроскопом, что есть далеко не у всех.
*4--Конструктив таков, что при монтировании клавиатуры в устройство приходится разворачивать USB разъем на 180 градусов по отношению к изначальной ориентации разъема USB-A. Это крайне не эргономично, так как тратит человеко-часы + повышает вероятность уронить и разбить устройство. Получается как со спичечным коробком. Открываешь рисунком вверх и спички вываливаются на пол.
*5--Вывести пин NRST на разъём для программатора. Без этого не получится перепрошить устройство программатором без микропаёки под микроскопом.
*6--Уменьшить напряжение на пине PA9 делителем напряжения до 3.3V. Сейчас там +5V. При этом сам вендор утверждает в спеке "USB hardware and PCB guidelines using STM32 MCUs" (AN4879) что
Pin PA9, a five V-tolerant pin, is natively dedicated to VBUS sensing. The absolute maximum ratings table of the datasheet indicates that the five V-tolerant pin voltage cannot exceed VDD + 4 V. The user must avoid the situation when the MCU is not powered, and a 5 V VBUS is connected to PA9: this violates the condition on absolute maximum ratings, and can result in permanent damages to the device.
7*--Поменять местами разъёмы USB (порты FS и HS USB). Так можно добиться совместимости USB периферии железа с отладочными платами от компании Omilex и вести часть разработки на прототипах не меняя софта.
Программные пожелания
Base
1*--Убрать это непонятное инфантильное разноцветное мигание. Оно сильно отвлекает внимание от работы. Приходится загораживать устройство всякими подручными предметами, чтобы периферийное зрение не мешало сосредоточиться на мониторе. Лучше оставить классическое одноцветное heartВeat мигание с периодом в 2 секунды и скважностью 5%. Чисто для обратной связи, что прошивка исполняется и не зависла.
2*--После ввода мастер пароля кнопка стрелка вверх не работает и упирается в самый первый пароль! Чтобы выбрать последний пароль надо пролистывать до самого конца (75 записей!). Это крайне неудобно. Надо в прошивке реализовать перебор паролей по кругу в циклическом массиве, чтобы сэкономить время пользователя. Это повысит лояльность пользователей.
3*--Добавить возможность вставки только пароля, а не сцепки логин+ TAB+ пароль+Enter. Не везде это нужно. Сейчас очень многие сайты требуют только пароль. Например, чтобы зайти в Windows, потом, та же почта в google. Крайне неудобно сначала вставлять логин+пароль в блокнот, а потом копипастой вставлять пароль в браузере. Весь смысл безопасности и конфиденциальности рушится как карточный домик.
4*--Оказывается если в *.kdbx файле на SD карте Пастильды есть запись с пустым паролем, то при вставке этой ноды(Entry) вместо пустого пароля вставляется пароль от предыдущей записи в db.kdbx файле! Это само по себе очень странно. Из-за этого не получается также сделать записи для полей, где надо ввести только пароль. Вход в тот же самый Windows, например.
5--Добавить специфическую индикацию при отключении клавиатуры от устройства.
6*--Добавить особую индикацию при отключении SD карты от устройства.
7*--Переключать состояние LED при каждом нажатии на кнопку, чтобы была обратная связь, что устройство в самом деле получает символы с клавиатуры и работает, а не живет своей жизнью.
8*--Добавить выход из пастильда-режима (вход Ctrl+~/ выход Esc) по таймауту бездействия. Если человек наберет правильный мастер пароль и войдет в пастильда-режим а затем отлучится (из комнаты ответить на звонок), то злоумышленник сможет забрать какой-то один пароль или вообще все расшифрованные пароли через отладчик ST linkV2, просто просмотрев Dump RAM памяти.
9*--Pastilda режим и обычный режим никак не отличаются на RGB светодиоде(LED).
Зачем устройство тогда мигает всегда однообразно? Это как-то скучно. Надо как можно больше обратной связи пользователю. Сделать частое мигание в пастильда-режиме и мигание при приеме символов в обычном режиме. Это на самом деле интуитивно ожидаемо.
10*--Если вытащить SD карту, то устройство не сможет пробрасывать нажатие кнопок. Это в высшей степени странно, так как SD карта не в коей мере не являются частью подсистемы USB. Это выглядит как явный программный баг. Тем более, что устройства продаются без SD карты и проверить на месте работоспособность не получится, если только у вас нет привычки носить с собой в кошельке набор SD карточек разных Vendor(ов).
11*--Интуитивно мне как рядовому пользователю хочется, чтобы прошивка Pas~ хранила ID учёток в виде Splay-дерева. А отображать entry в виде обхода дерева по Level-order. Запутились? Проще говоря, пароли, что чаще всего используются будут в перечислении первыми. И чтобы это работало полностью адаптивно на лету.
12*-- Добавить в Пастильду таймер обратного счета. Задавать значение таймера можно в режиме командной строки CLI. Как таймер внутри Пастильды досчитает до нуля, Пастильда либо будет быстро мигать, либо вообще отключит клавиатуру. Так пользователь сможет вспомнить зачем он поставил таймер и например сохранит результат своей работы или сделает коммит в репозиторий.
Advanced
13--Для нормальной работы устройства надо постоянно вручную отчищать историю базы данных *.kdbx файлика перед сохранением и вручную отменять сжатие. Хотелось бы чтобы устройство могло на уровне прошивки корректно обрабатывать *.kdbx файлы с историей и сжатием.
14*--Железо не раскрыто полностью. Кода окружающие впервые видят у меня Pastild(у), то они спрашиваю: "зачем тебе keyloger?". Однако функции или режима keyloger(а) в Pastild(е) нет. Поэтому было бы разумно, если бы устройство создавало отдельный текстовый файл с логами нажатий на кнопки (естественно в обычном режиме). Это может пригодится для анализа скорости печати, для анализа продолжительности работы за PC, восстановления хронологии событий.
15--Добавить отслеживание аналитики: количество прошедших через устройство байт, гистограмму распределения нажатий на кнопки, количество вставок паролей, определения "почерка" конкретного пользователя и прочее. Отображать аналитику на SD карте в текстовом файлике. Своего рода MetaData.
*16--Добавить режим командной строки через USB-HOST->USB-HID. Что-то такое… Нажал особую комбинацию клавиш и устройство переключилось в режим командной строки и показывает особый курсор ~~>, (набери команду вместо мастер пароля). Пользователь набивает интересующую его команду и нажимает Enter. Устройство выводит в USB HID текст с ответом на команду. Как будто бы это клавиатура сама вдруг напечатала, на на самом деле это Pas~ вставила. Естественно, все происходит в отдельном файле текстового редактора. После вставки гаджет сразу же переключается обратно в режим обыкновенного проброса нажатий. Можно тут же сохранить лог в файл на DeskTop(е). Таким образом можно вызывать скрипты последовательности нажатий кнопок заранее записанные в SD карту памяти гаджета и делать автоматизацию рутийных процедур на NetTop(е) или просто отлаживать прошивку, вычитывать диагностику по HID.
Выглядеть это может примерно так
Вывод
В целом устройство добротное. За 2 года ни разу не зависало, быстрая latancy расшифровки базы данных паролей просто поражает! Видимо аппаратный CRYP модуль в STM32F415RG делает свое дело. Лично мне эта малютка помогает сэкономить по 2...3 часа в неделю на наборы всяческих разнообразных паролей. Хотябы ради этого ее стоит купить. Покупка окупается за 2-3 недели использования. Моя оценка 4+. Просто чудо, что этот гаджет придумали, спроектировали и произвели, причем в такой дремучей стране как Россия. Очень рекомендую.