Pastilda: еще одна прошивка

от автора

Существует один очень удобный аппаратный менеджер паролей, называемый Пастльда. Подробнее про него можно почитать тут https://habr.com/ru/post/305594/

Так как устройство Open Source(ное), то я составил еще одну прошивку для Пастильды ( Плата Pas~ r 1.1) главным образом, с учетом своих пожеланий.

вот блок-схема гаджета Pas~ r1.1. Всё максимально просто: MCU, USB 2x, SD card, RGB LED и SWD.

Архитектура аппаратной части Пастильды r1.1

Архитектура аппаратной части Пастильды r1.1

Об неудобствах оригинальной прошивки было писано в отчете Betta-тестирования тут https://habr.com/ru/post/694970/

Так как я с 2011 года занимаюсь программированием STM32, то к 2019 году у меня уже была кодовая база в которой было порядка 70% функционала для прошивки Пастильды. Я решил попробовать скомпоновать свою версию *.bin(аря).

В качестве основного стека технологий пришлось выбрать Win10, GCC, C, CMSIS, HAL, FatFs, NoRTOS, Make, Eclipse.

Вы спросите, а что тут, собственно, сложного -то? Написать прошивку для STM32 это же классическая заурядная задача.

С какими трудностями пришлось столкнуться мне?

Трудность №0—Изготовить harness для подключения программатора. Как видите, шаг вилки очень экзотический это 2мм. Пришлось насаживать на PCB вилку и спаивать шлейф из рассыпухи компонентов.

Трудность №1— На оригинальном устройстве Pas~ r 1.1 отсутствует отладочный UART. Как по мне, дак это очень печально, так как UART нужен для отладки в RunTime. Поэтому пришлось искать отладочные платы с STM32, USB-Host, USB-Device, HW AES256, SDIO, RGB-LED и UART. В интернет магазинах такой платы c полным набором не нашлось. Пришлось отлаживать функционал Пастильды по частям, подобно тому как в математике интегрируют функции по частям, на четырех разных платах: Olimex-STM32-H407, STM32 MINI-M4 и nRF5340-ADK. А программно-независимый код (KeePass Decrypter) я отлаживал и вовсе на x86-64 LapTop(е).

HW атрибут

Pas~ r 1.1

Olimex-STM32-H407

STM32 MINI-M4

nRF5340-ADK

USB-Host

OTG_HS

OTG_FS

+/-

+/-

USB-Device

OTG_FS

OTG_HS

+/-

+/-

HW AES256

+

+

+

SDIO

+

+

UART

+

+

+

SD-micro

+

+

+

SPI

+

+

+

RGB Led

+

+

MCU

STM32F415RGT6

STM32F407ZGT6

STM32F415RGT6

nrf5340

Трудность №2 —В Pas~ r 1.1 USB FS и HS порты не соответствуют отладочной плате Olimex-STM32-H407. Пришлось писать код с полностью программно-конфигурируемой USB Host и USB Device периферией.

USB-port

Pas~ r 1.1

Olimex-STM32-H407

USB-Host

OTG_HS

OTG_FS

USB-Device

OTG_FS

OTG_HS

Трудность №3 —Обычно боевой файл *.kdbx не помещается в RAM память микроконтроллера. То что KeePass расшифровывается в консольном приложении на PC еще не значит, что этот же код выполнит работу на MCU. У микроконтроллера STM32F415RG всего 128 KByte непрерывной RAM памяти, а мой типичный *.kdbx файл занимал 154K Byte памяти.

Поэтому пришлось реализовывать алгоритм потокового расшифровывания AES256_CBC кусочками по N byte.

Трудность №4—На микроконтроллере STM32F407ZG на частоте 168 MHz программное AES256 расшифрование KeePass 153kByte файла длится 53 сек! Это очень долго. Поэтому пришлось искать отладочную плату с STM32 и аппаратным модулем AES256 ECB и AES256 CBC. Желательно с тем же MCU STM32F415RGT6. Такой платой оказалась сербская плата STM32 MINI-M4. Удалось очень удачно купить её на Avito всего-навсего за 800 RUR.

Трудность №5—На отладочной плате STM32 MINI-M4 отсутствует SDIO только SPI. Не развели сербы один самый важный провод PD2. Пришлось писать и покрывать тестами драйвер SD-карты по SPI.

Трудность 7—В финальной версии на плате Pas~r1.1 пошаговая отладка показывала, что постоянно возникала, то нехватка стека, то нехватка кучи. Однако удалось настроить константы прошивки так, что модульные тесты стали проходить.

Программные зависимости моей прошивки для Pas~r1.1 выстроились примерно так

Дерево зависимостей программных компонентов в прошивке Pas~ r1.1

Дерево зависимостей программных компонентов в прошивке Pas~ r1.1

Что я добавил в новую прошивку для Pas~ r1.1?

1—Возможность вставлять только пароль (Right Enter) не только логин + пароль (Left Enter). Очень многие сайты требуют только пароль.

2—Возможность прокручивать пароли в циклическом массиве. Можно быстро получить доступ к старому паролю в конце KeePass файла.

3—Переключение состояние LED при нажатии кнопки, чтобы была связь, что устройство работает.

4—Диагностическую консоль ~~> при нажатии Left Crtl+Right Crtl.

Вывод:

Если у вас есть Пастильда Pas~ r 1.1 или отладка Olimex-STM32-H407 и вы хотите протестировать альтернативную прошивку аппаратного менеджера паролей, то обращайтесь в личку я пришлю вам *.hex *.bin. Могу даже добавить custom(ные) пожелания.

О том как перепрошить Пастильду v1.1 можно прочитать инструкцию тут https://habr.com/ru/post/698964/

Links

https://habr.com/ru/post/698964/
https://habr.com/ru/post/694970/
https://habr.com/ru/post/346820/
https://habr.com/ru/post/305594/
https://habr.com/ru/company/thirdpin/blog/407633/
https://habr.com/ru/company/thirdpin/blog/466533/
https://habr.com/ru/post/305602/

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
У вас есть Пастильда (Pas r1.1)?
4.17% да 1
95.83% нет 23
Проголосовали 24 пользователя. Воздержался 1 пользователь.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
У вас есть красная отладочная плата Olimex H407?
4.76% да 1
95.24% нет 20
Проголосовал 21 пользователь. Воздержался 1 пользователь.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
У вас есть любая отладочная плата на STM32 c USB HID Host + USB HID Device?
30% да 6
70% нет 14
Проголосовали 20 пользователей. Воздержался 1 пользователь.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
У вас есть отладочная плата STM32 MINI-M4?
5% да 1
95% нет 19
Проголосовали 20 пользователей. Воздержался 1 пользователь.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Вы пользуетесь программой KeePass?
47.83% да 11
52.17% нет 12
Проголосовали 23 пользователя. Воздержавшихся нет.

ссылка на оригинал статьи https://habr.com/ru/post/706470/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *