项目简介
本项目Gnuk是为GNU Privacy Guard设计的USB加密令牌实现。它支持OpenPGP卡协议版本3,运行于STM32F103处理器,以USB令牌形式保障私钥存储安全,解决开发者将私钥存于普通二级存储设备的安全顾虑。
项目的主要特性和功能
- 多算法支持:支持EdDSA、ECDSA(NIST P256和secp256k1)、ECDH(X25519、NIST P256和secp256k1)以及RSA - 4096,ECC功能处于实验阶段,RSA - 4096签名/解密耗时较长。
- 卡片个性化:可更改登录名、URL、姓名、性别、语言等信息。
- 密码处理:支持PW1、RC、PW3等密码的操作。
- 密钥管理:支持三种类型密钥(数字签名、解密、认证)的导入、设备端RSA - 2048密钥生成以及密钥覆盖导入和移除。
- 安全操作:支持数字签名、解密、内部认证等操作。
- 其他特性:支持OpenPGP卡序列号设置、卡片持有者证书读写、通过“EXTERNAL AUTHENTICATE”进行升级等。
安装使用步骤
编译
- 准备GNU工具链和适用于
arm - none - eabi
目标的newlib,在Debian系统中安装gcc - arm - none - eabi
、gdb - arm - none - eabi
等相关包。 - 进入
src
目录:cd gnuk - VERSION/src
- 运行
configure
脚本并指定USB厂商ID和产品ID,如FSIJ的ID:./configure --vidpid = 234b:0000
- 执行
make
命令,在src/build
目录下生成gnuk.elf
文件。
安装
- Olimex STM32 - H103板:在
src
目录下执行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:使用OpenOCD 0.9.0和ST - Link/V2,执行
openocd -f interface/stlink - v2.cfg -f target/stm32f1x.cfg -c "program build/gnuk.elf verify reset exit"
- STBee:按下“USER”开关重置板子,在
tool
目录下执行./dfuse.py ../src/build/gnuk.hex
,然后重置板子。
运行
- 调试模式:若编译时使用
--enable - debug
选项,可通过cu -l /dev/ttyACM0
打开虚拟COM端口查看调试输出。 - 测试:执行
gpg --card - status
命令测试Gnuk是否运行。 - 个性化、密钥导入和密码更改:使用
gpg --card - edit
命令对令牌进行个性化设置,可导入2048位RSA密钥。
调试
可使用arm - none - eabi - gdb gnuk.elf
进行调试,在GDB中通过target remote localhost:3333
或target extended - remote localhost:3333
连接OpenOCD。
固件更新
具体更新方法见doc/note/firmware - update
。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】