项目简介
本项目是用于U2F(Universal 2nd Factor)身份验证的开源项目,包含Python脚本和C语言代码库。U2F是基于USB的二次验证标准,允许用户在支持U2F的网站上使用USB设备(如U2F安全密钥)进行身份验证。项目主要提供嵌入式系统的U2F固件实现,使U2F设备与电脑通信并处理相关操作。其中,C语言代码负责处理U2F APDU命令、USB HID通信、椭圆曲线密码学操作,Python脚本用于生成和转换证书和密钥,可帮助开发者在嵌入式系统上实现U2F设备固件,提升系统安全性。
项目的主要特性和功能
- 支持多类型开发板,包括Tomu board、Blue pill、Black pill、各类基于ST32F103的中国St - Link V2复制板以及各种Maple Mini复制板等。
- 可处理U2F协议中的注册和认证操作,计算并管理密钥和密钥句柄。
- 使用Neug生成高质量随机数,基于内置的模数转换器作为熵源,经过CRC32和SHA256处理。
- 通过设备密钥存储、密钥句柄计算和闪存读保护等措施,增强设备安全性。
- 提供生成、转换和注入证书与密钥的功能,方便开发者进行调试和备份。
安装使用步骤
环境准备
sh
sudo apt update
sudo apt upgrade
sudo apt autoremove
sudo apt install build-essential git python3-pip openssl gcc-arm-none-eabi
sudo apt install openocd libhidapi-hidraw0 python3-hid
sudo ./VBoxLinuxAdditions.run
pip3 install --user -u asn1crypto
pip3 install --user asn1crypto
pip3 install --user easyhid
pip3 install --user pyu2f
允许访问新的令牌USB设备:
sh
sudo nano /etc/udev/rules.d/10-u2f-token.rules
ACTION=="add|change", KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0e90", TAG+="uaccess"
ACTION=="add|change", SUBSYSTEM=="usb", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0e90", TAG+="uaccess"
代码获取
sh
cd ~
cd u2f-token/src/cert
sudo chmod +x gen.sh
./gen.sh
cd ..
编译
sh
make TARGET=BLUE_PILL
支持的目标板有TOMU、MAPLE_MINI、BLUE_PILL、BLACK_PILL、ST_DONGLE、ST_DONGLE_NO_PUSH 。
烧录固件
STM32F103板
- 擦除整个闪存:
sh openocd -c 'set CPUTAPID 0x1ba01477' -f interface/stlink-v2.cfg -f target/stm32f3x.cfg -c "init" -c "halt" -c "wait_halt" -c "stm32f1x mass_erase 0" -c "sleep 200" -c "reset run" -c "shutdown"
或sh openocd -c 'set CPUTAPID 0x2ba01477' -f interface/stlink-v2.cfg -f target/stm32f3x.cfg -c "init" -c "halt" -c "wait_halt" -c "stm32f1x mass_erase 0" -c "sleep 200" -c "reset run" -c "shutdown"
- 烧录闪存:
sh openocd -c 'set CPUTAPID 0x1ba01477' -f interface/stlink-v2.cfg -f target/stm32f1x.cfg -c 'init' -c 'halt' -c 'flash write_image erase unlock build/u2f.bin 0x08000000' -c 'exit'
或sh openocd -c 'set CPUTAPID 0x2ba01477' -f interface/stlink-v2.cfg -f target/stm32f1x.cfg -c 'init' -c 'halt' -c 'flash write_image erase unlock build/u2f.bin 0x08000000' -c 'exit'
EFM32HG (Tomu)板
sh
dfu-util -v -d 1209:70b1 -D build/u2f.bin
初始化密钥
sh
cd cert
python3 certtool init
清除生成文件
sh
make certclean && make distclean && make clean
生成自定义密钥
sh
cd cert
openssl ecparam -name prime256v1 -genkey -noout -outform der -out key.der
cd ..
python3 ./inject_key_bin.py --key cert/key.der
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】