安全性警告

由于使用STM32F103C8T6进行软实现,没有使用HSM芯片,故存储在EEPROM中的密钥可能会被调试读出,故存在安全风险,只适合把玩,不适合日常使用。

也存在随机数生成不够随机,侧信道攻击(似乎普遍都有这个问题,不过也不是什么事儿)等安全风险。

前言

没有一个硬件密钥是没办法进行相关开发的,而我暂时没有这个又想把玩一下,所以找了下我吃灰的开发板,找到了一块蓝色长条的STM32F103C8T6开发板,检索一番后最终到了这个开源方案,这个方案只支持U2F验证。

https://github.com/gl-sergei/u2f-token

0719213358.jpg

编译&烧写

由于仓库提供编译好的固件(BLUE_PILL)会使用复位键作为物理验证按钮,所以我们需要修改一下,在lssues找到了一个修改版本,验证时只需要将PA10下拉就行。

本文会省略一些步骤,详情请见仓库README.md

git clone https://github.com/Qwertylex/u2f-token

部署交叉编译工具链:

# 原 PPA 老旧已经失效,故我们需要前往 ARM 网站下载
# 前往 https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/downloads 下载
wget https://developer.arm.com/-/media/Files/downloads/gnu/11.2-2022.02/binrel/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi.tar.xz
tar xvf gcc-arm-11.2-2022.02-x86_64-arm-none-eabi.tar.xz -C /usr/share
ln -s /usr/share/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin/* /usr/bin/

编译:

# 注意:
# 我们需要将 Makefile 中的 python 替换为 python3
cd u2f-token
git submodule update --init
cd src
make TARGET=BLUE_PILL_PA10BUTTON
# 编译出的固件在 build/u2f.bin

烧写:

使用 STM32 ST-LINK Utility 通过 ST-LINK V2 进行烧写。
设置跳线:
BOOT0 SET 0
BOOT1 SET 1

19220213.png

识别:

19221309.png

初始化

cd ~/u2f-token
pip3 install -r requirements.txt --user
cd src/cert
python3 certtool init

19220937.png

测试

前往https://demo.yubico.com/webauthn-technical/registration进行测试即可。

19221106.png

标签: Elec, STM32

添加新评论