littlebot
Published on 2025-04-17 / 0 Visits
0

【源码】基于Python的GnuPG USB令牌管理系统

项目简介

本项目名为Gnuk,是基于Python的GnuPG USB令牌管理系统,为GNU Privacy Guard的USB加密令牌实现。支持OpenPGP卡协议版本3,运行在STM32F103处理器及其兼容设备上,为使用GnuPG的开发者提供安全、便捷的密钥存储方案,解决常规二级存储中存储密钥的安全问题。

项目的主要特性和功能

  1. 算法支持:支持Ed25519、X25519(Curve25519上的ECDH),对secp256k1上的ECDSA和ECDH提供实验性支持。
  2. 新特性:支持新的KDF - DO功能(实验性),需较新的GnuPG(2.2.6或更高版本)。
  3. 硬件适配:支持Olimex STM32 - H103、Flying Stone Tiny 01(FST - 01SZ)、STBee等硬件。
  4. 功能测试:经过卡片个性化、密码处理、密钥导入、数字签名、解密等功能测试。
  5. 其他特性:可进行OpenPGP卡序列号设置、卡持有者证书读写、使用“EXTERNAL AUTHENTICATE”进行升级。

安装使用步骤

编译

  1. 确保已安装GNU工具链和针对arm - none - eabi目标的newlib。在Debian系统中,安装gcc - arm - none - eabi及其相关包。
  2. 进入src目录: bash cd gnuk - VERSION/src
  3. 运行configure脚本并指定USB供应商ID和产品ID: bash ./configure --vidpid=<VID:PID> 对于FSIJ的ID,使用--vidpid = 234b:0000
  4. 执行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:3333bash (gdb) target extended - remote localhost:3333

固件更新

具体更新方法请参考doc/note/firmware - update文件。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】