跳转至内容

无状态 OpenPGP

来自 ArchWiki

Stateless OpenPGP (SOP) 是一套用于命令行界面 (CLI) 工具执行 OpenPGP 操作的标准。它定义在一份专门的 IETF 草案中,其中概述了其特性和语法。

SOP 是一种精简的消息签名/验证以及加密/解密操作方法。所有操作必须明确指定证书和/或密钥

通常私钥操作使用软件密钥。然而,某些 SOP 实现也可以使用硬件安全设备上的私钥材料。

目前存在许多 SOP 实现,并在一个互操作性测试套件中进行了交叉测试。

尽管不同的实现提供的可执行文件名称不同,但它们都具有相同的 CLI,其核心功能可以互换使用。

安装

有几种可供安装的实现:

特性

虽然 SOP 提供了统一的接口,但各实现可以自由地支持 OpenPGP 所定义的加密机制的不同子集。此外,可能支持不同版本的格式以及硬件备份密钥。

Stateless OpenPGP 实现
软件包 (Package) RFC 4880 (+ RFC 6637) draft-koch-librepgp RFC 9580 硬件备份密钥
gosop
rsop
rsop-oct
sequoia-sop

硬件设备支持

在使用硬件安全设备时,通常指定私钥材料的 SOP 参数将仅指定公钥材料。

该公钥材料作为一个明确的引用,用于定位并使用提供相应私钥材料的硬件设备。

技巧与提示

以下示例假设 SOP 可执行文件的名称(例如 gosop, rsop, rsop-octsqop)存储在环境变量 $SOP 中。

提示 使用 rsop-oct 时,可以使用存储在 OpenPGP 卡上的私钥材料。相关的私有签名或解密密钥应已添加到连接至运行 rsop-oct 机器的 OpenPGP 卡设备中(例如使用 OpenPGP-card-tools)。

创建私钥

要使用 用户 ID <archie@example.org> 创建一个 OpenPGP 可传输秘密密钥(即私钥),请使用:

$ $SOP generate-key "<archie@example.org>" > archie.tsk

提取证书

要从创建的可传输秘密密钥中提取证书(即公钥),请使用:

$ $SOP extract-cert > archie.cert < archie.tsk

创建分离签名

要为消息创建分离签名,请使用:

$ echo "Hello world" | $SOP sign archie.tsk > msg.sig
提示 要使用 OpenPGP 卡创建相同的签名,rsop-oct 需要被提供证书而不是私钥。
$ echo "Hello world" | rsop-oct sign archie.cert > msg.sig

验证分离签名

要验证分离签名,请提供原始消息、签名以及 OpenPGP 证书。

$ echo "Hello world" | $SOP verify msg.sig archie.cert
2024-02-27T17:36:28Z 12b7169b5fc99d1a2d546b8755d1f4d8a355f3cb 12b7169b5fc99d1a2d546b8755d1f4d8a355f3cb mode:binary

加密消息

可以通过提供消息和接收者的 OpenPGP 证书来加密消息。

$ echo "Hello world" | $SOP encrypt archie.cert > encrypted.msg

解密消息

加密消息的接收者可以通过提供加密消息及其可传输秘密密钥来对其进行解密。

$ $SOP decrypt archie.tsk < encrypted.msg
Hello world
提示 要使用 OpenPGP 卡解密此消息,rsop-oct 需要被提供证书而不是私钥。
$ rsop-oct decrypt archie.cert < encrypted.msg
Hello world

创建明文签名消息

可以通过提供消息和签名者的可传输秘密密钥来创建明文签名消息。

$ echo "Hello world" | $SOP inline-sign --as clearsigned archie.tsk
-----BEGIN PGP SIGNED MESSAGE-----

Hello world

-----BEGIN PGP SIGNATURE-----

wnUEARYKAB0WIQQStxabX8mdGi1Ua4dV0fTYo1XzywUCZd4eOgAKCRBV0fTYo1Xz
yyqJAQDUD/lbhqOHL/O0cjtytXQXnMOx5twW3FT3RJPlu9JZUAEA2OAMhzLmX6Bb
mXz8Tu0eApqbxu64ksieL8YNN20IwQs=
=77wU
-----END PGP SIGNATURE-----
提示 rsop-octOpenPGP 卡的使用方式与 #创建分离签名 中概述的示例类似。

参见

© . 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.