项目简介
本项目是基于Python的脚本项目,作为GnuPG USB令牌实现的一部分,主要用于与特定的USB设备(如Gnuk令牌)进行交互。能实现读取设备字符串信息、获取设备状态、下载和更新固件等功能,还可管理令牌的安全设置,涉及身份验证、密钥管理、固件升级等操作,提升了令牌使用的便捷性和安全性。
项目的主要特性和功能
- 多算法支持:支持EdDSA、ECDSA(NIST P256和secp256k1)、ECDH(X25519、NIST P256和secp256k1)以及RSA - 4096,部分ECC功能和KDF - DO功能为实验性特性。
- 密钥管理:支持密钥导入、生成、覆盖导入以及移除等操作,导入或生成密钥会重置密码,需先导入私钥才能更改密码。
- 个性化设置:可对卡片进行个性化设置,如更改登录名、URL、姓名、性别、语言等信息。
- 密码处理:支持处理多种密码(PW1、RC、PW3),可更改密码状态字节值。
- 签名与解密:支持PSO数字签名和PSO解密操作。
- 认证功能:支持内部认证和外部认证。
- 证书管理:支持读取和写入卡持有者证书。
- 序列号设置:支持设置OpenPGP卡序列号。
安装使用步骤
编译
- 安装GNU工具链和针对
arm - none - eabi
目标的newlib,在Debian系统上安装gcc - arm - none - eabi
、gdb - arm - none - eabi
等相关包。 - 进入
src
目录:cd gnuk - VERSION/src
。 - 运行
configure
脚本并指定USB厂商ID和产品ID:./configure --vidpid=<VID:PID>
。 - 执行
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密钥后导入到Gnuk令牌。
调试
使用arm - none - eabi - gdb gnuk.elf
启动GDB,在GDB内部通过target remote localhost:3333
或target extended - remote localhost:3333
连接OpenOCD。
固件更新
具体操作参考doc/note/firmware - update
文件。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】