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

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

项目简介

本项目是基于Python的脚本项目,作为GnuPG USB令牌实现的一部分,主要用于与特定的USB设备(如Gnuk令牌)进行交互。能实现读取设备字符串信息、获取设备状态、下载和更新固件等功能,还可管理令牌的安全设置,涉及身份验证、密钥管理、固件升级等操作,提升了令牌使用的便捷性和安全性。

项目的主要特性和功能

  1. 多算法支持:支持EdDSA、ECDSA(NIST P256和secp256k1)、ECDH(X25519、NIST P256和secp256k1)以及RSA - 4096,部分ECC功能和KDF - DO功能为实验性特性。
  2. 密钥管理:支持密钥导入、生成、覆盖导入以及移除等操作,导入或生成密钥会重置密码,需先导入私钥才能更改密码。
  3. 个性化设置:可对卡片进行个性化设置,如更改登录名、URL、姓名、性别、语言等信息。
  4. 密码处理:支持处理多种密码(PW1、RC、PW3),可更改密码状态字节值。
  5. 签名与解密:支持PSO数字签名和PSO解密操作。
  6. 认证功能:支持内部认证和外部认证。
  7. 证书管理:支持读取和写入卡持有者证书。
  8. 序列号设置:支持设置OpenPGP卡序列号。

安装使用步骤

编译

  1. 安装GNU工具链和针对arm - none - eabi目标的newlib,在Debian系统上安装gcc - arm - none - eabigdb - arm - none - eabi等相关包。
  2. 进入src目录:cd gnuk - VERSION/src
  3. 运行configure脚本并指定USB厂商ID和产品ID:./configure --vidpid=<VID:PID>
  4. 执行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:3333target extended - remote localhost:3333连接OpenOCD。

固件更新

具体操作参考doc/note/firmware - update文件。

下载地址

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