GNUK на Blue Pill
Собираем криптографический токен по цене флешки.
/| .----. |\
/ | __ | | __ | \
| .Y` `\| |/` `Y. |
| | `--` | |
\| ,----, |/
| / \ |
| | | |
| / ) GNUK ( \ |
\/ /| |\ \/
| | \ / | |
| |\ ~----~ /| |
| | ~-.______.-~ | |
| \ ___ ____/ |
\ ~~~~ /
~ - .____. - ~
Для сборки данного устройства нам понадобится:
- Отладочная плата Blue Pill
- Программатор ST-Link V2
- Провода (часто в комплекте с программатором).
- Час свободного времени.
Настраиваем микроконтроллер
Переключаем микроконтроллер в режим DFU:
BOOT0: 0 -> 1
Внимание: После загрузки прошивки не забудьте переключить перемычку обратно, в противном случае токен работать не будет.
Соединяем программатор к отладочной плате:
GND -> GND
SWCLK -> SWCLK
SWDIO -> SWDIO
3V3 -> 3V3
Подключаем ST-LINK V2 к компьютеру.
Загружаем прошивку
Устанавливаем необходимые пакеты:
$ sudo pacman -S arm-none-eabi-gcc arm-none-eabi-newlib openocd
Также устанавливаем arm-none-eabi-picolibc из
AUR:
$ git clone https://aur.archlinux.org/arm-none-eabi-picolibc.git
$ makepkg -si
Загружаем последнюю стабильную версию GNUK:
$ git clone https://salsa.debian.org/gnuk-team/gnuk/gnuk.git \
--recurse-submodules --branch "release/2.2"
Настраиваем и собираем прошивку:
$ cd gnuk/src/
$ export kdf_do=optional
$ ./configure --target=BLUE_PILL --vidpid=234b:0000
$ make
Стираем старую прошивку:
$ openocd -f interface/stlink.cfg -f target/stm32f1x.cfg \
-c init -c "reset halt" -c "stm32f1x unlock 0" -c reset -c exit
Загружаем новую прошивку:
$ openocd -f interface/stlink.cfg -f target/stm32f1x.cfg \
-c "program build/gnuk.elf verify reset exit"
Запрещаем чтение памяти:
$ openocd -f interface/stlink.cfg -f target/stm32f1x.cfg \
-c init -c "reset halt" -c "stm32f1x lock 0" -c reset -c exit
Отключаем программатор и включаем плату через USB, проверяем GNUK:
lsusb | grep -i gnuk
Если ваше устройство отображается, то поздравляю - вы успешно собрали собственный аппаратный токен. В следующей статье мы разберём как создать пару ключей на данном устройстве.