项目简介
本项目名为Gnuk,是基于Python的GnuPG USB令牌管理系统,为GNU Privacy Guard的USB加密令牌实现。支持OpenPGP卡协议版本3,运行在STM32F103处理器及其兼容设备上,为使用GnuPG的开发者提供安全、便捷的密钥存储方案,解决常规二级存储中存储密钥的安全问题。
项目的主要特性和功能
- 算法支持:支持Ed25519、X25519(Curve25519上的ECDH),对secp256k1上的ECDSA和ECDH提供实验性支持。
- 新特性:支持新的KDF - DO功能(实验性),需较新的GnuPG(2.2.6或更高版本)。
- 硬件适配:支持Olimex STM32 - H103、Flying Stone Tiny 01(FST - 01SZ)、STBee等硬件。
- 功能测试:经过卡片个性化、密码处理、密钥导入、数字签名、解密等功能测试。
- 其他特性:可进行OpenPGP卡序列号设置、卡持有者证书读写、使用“EXTERNAL AUTHENTICATE”进行升级。
安装使用步骤
编译
- 确保已安装GNU工具链和针对
arm - none - eabi
目标的newlib。在Debian系统中,安装gcc - arm - none - eabi
及其相关包。 - 进入
src
目录:bash cd gnuk - VERSION/src
- 运行
configure
脚本并指定USB供应商ID和产品ID:bash ./configure --vidpid=<VID:PID>
对于FSIJ的ID,使用--vidpid = 234b:0000
。 - 执行
make
命令:bash make
编译完成后,src/build
目录下会生成gnuk.elf
文件。
安装
Olimex STM32 - H103板
在src
目录下,使用以下命令调用OpenOCD并将gnuk.elf
写入闪存ROM:
bash
openocd -f interface/ftdi/olimex - jtag - tiny.cfg -f board/olimex_stm32_h103.cfg -c "program build/gnuk.elf verify reset exit"
Flying Stone Tiny 01
使用SWD写入器,OpenOCD 0.9.0支持ST - Link/V2,可使用以下命令:
bash
openocd -f interface/stlink - v2.cfg -f target/stm32f1x.cfg -c "program build/gnuk.elf verify reset exit"
STBee
此操作仅用于实验。按住“USER”开关重置板子,然后在tool
目录下执行以下命令写入闪存:
bash
cd ../tool
./dfuse.py ../src/build/gnuk.hex
最后重置板子。
运行
启用调试
若编译时使用了--enable - debug
选项,Gnuk有两个接口(一个是CCID/ICCD设备,另一个是虚拟COM端口)。使用以下命令打开虚拟COM端口查看调试输出:
bash
cu -l /dev/ttyACM0
测试Gnuk
使用以下命令检查Gnuk是否正常运行:
bash
gpg --card - status
个性化令牌、导入密钥和更改密码
使用以下命令对令牌进行个性化设置:
bash
gpg --card - edit
默认用户密码是“123456”,管理员密码是“12345678”。建议在计算机上创建2048位RSA密钥并导入到Gnuk令牌中。
调试
使用GDB进行调试:
bash
arm - none - eabi - gdb gnuk.elf
在GDB内部,使用以下命令连接OpenOCD:
bash
(gdb) target remote localhost:3333
或
bash
(gdb) target extended - remote localhost:3333
固件更新
具体更新方法请参考doc/note/firmware - update
文件。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】