跳转至内容

OpenPGP-card-tools

来自 ArchWiki

Openpgp-card-tools 是一个软件安装包,提供命令行工具 oct(1) 用于与 OpenPGP 智能卡 交互(使用 ccid)。

安装

安装 openpgp-card-tools 软件包。

配置

oct(1) 工具依赖于 pcscliteccid。它需要 启用启动 pcscd.socket

注意 GnuPG 默认使用其自带的内部 CCID 驱动程序。建议将其配置为 改为使用 pcsclite

与 OpenPGP 卡交互

oct(1) 工具提供多个子命令,这些子命令提供了与 OpenPGP 卡相关的功能:

技巧与提示

机器可读输出

oct(1) 工具通过使用 --output-format 选项,为所有子命令提供机器可读的输出格式。

以 JSON 输出格式列出连接的卡

$ oct --output-format=json list

导入 OpenPGP 私钥

可以使用 oct-admin-import(1) 直接导入 OpenPGP 私钥。

将指纹为 0123456789012345678901234567890123456789 的私钥导入到标识符为 0123:01234567 的卡中

$ oct admin --card 0123:01234567 import <(gpg --export-secret-key 0123456789012345678901234567890123456789)

导出 SSH 公钥

使用 oct-ssh(1) 可以导出卡中认证槽位的 SSH 公钥(以及其他数据)。

下面提供一个使用虚拟数据的示例

$ oct ssh
OpenPGP card 0123:01234567

Authentication key fingerprint:
D3C4B18828E34FE079273C27DFEA102BC0BF7122

SSH public key:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN3SwnYBGotQMbGxG6VRWc8vj6uq24Q2tUGvjkU4BGCd opgpcard:0123:01234567

要剔除 ~/.ssh/authorized_keys 文件不需要的所有数据(参见 ssh(1) § FILES),请使用 --key-only 选项

$ oct ssh -c 0123:01234567 --key-only
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN3SwnYBGotQMbGxG6VRWc8vj6uq24Q2tUGvjkU4BGCd opgpcard:0123:01234567

对数据签名

使用 oct-sign(1) 可以使用卡上的签名密钥对数据进行签名。

以下命令使用示例卡对文件 hello.txt 进行签名

$ echo "hello world" > hello.txt
$ oct sign --card 0123:01234567 detached hello.txt 2>/dev/null
Enter User PIN:
-----BEGIN PGP MESSAGE-----

wr0EABYKAG8FgmVcxgQJEHwxCjP5RdJLRxQAAAAAAB4AIHNhbHRAbm90YXRpb25z
LnNlcXVvaWEtcGdwLm9yZ8BSR6PrXSIRnrQl6r6HEetWVjCVXQtR1Z3PzD9EfbWY
FiEEuFXqMwYb6iFIyl2ufDEKM/lF0ksAAOY2AQC7+Tuh8Gal+kCCfVChD0VV+GUA
yd+leLeylIySXV7qVwD9H2x5QBrgyF/vODNp1tdorTvPwieV/Bop9FCkHYbHJg8=
=cOQ/
-----END PGP MESSAGE-----

解密加密数据

使用 oct-decrypt(1) 可以使用卡的加密槽位来解密数据。

在下面的示例中,一条消息被使用 OpenPGP 公钥 archie.pubsq-encrypt(1) 加密。

$ echo "hey archie" | sq encrypt --recipient-file archie.pub > message.pgp
$ oct decrypt --card 0123:01234567 message.pgp
Enter User PIN:
hey archie

切换 Nitrokey Start 的身份

Nitrokey Start 支持在单个硬件令牌上使用三个独立的身份,每个身份拥有独立的签名、加密和认证槽位。实际上,这相当于拥有三个具有独立卡标识符的 OpenPGP 智能卡

使用 oct-system-set-identity(1) 可以在这些身份之间进行切换。

要切换到第二个身份,请使用

$ oct system set-identity --card FFFE:01234567 1

要切换回第一个身份,请使用

$ oct system set-identity --card FF01:01234567 0

故障排除

调试智能卡设置

使用 oct-list(1) 列出所有可供 pcscd(8) 使用的已连接卡。如果连接的卡没有显示,很可能是它被另一个进程(例如 scdaemon)占用了。可以使用以下命令终止 scdaemon(1)

$ gpgconf --kill scdaemon

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.