将OpenPGP签名添加到已签名的文档中?

lar*_*sks 6 security gnupg pgp digital-signature

我们希望实施一个工作流程,要求多人对数据进行数字签名.如果我在自己的钥匙串中有多个密钥,我可以做一些简单的事情:

gpg --sign -u userid1 -u userid2 filename
Run Code Online (Sandbox Code Playgroud)

但是,如果我已经签署了一份文件并想要添加签名,该怎么办?一种解决方案是让每个人为文档生成分离的签名,然后将它们全部打包在一个zip文件或其他东西中,但是那里的开销要高得多.有没有更好的办法?

lap*_*apo 5

无需压缩它们:您可以简单地将分离的签名连接到一个文件中,并且所有签名都会一个接一个地进行验证。

% gpg -b -u $ID1 -o prova.c.sig1 prova.c
% gpg -b -u $ID2 -o prova.c.sig2 prova.c
% cat prova.c.sig1 prova.c.sig2 >prova.c.sig
% gpg prova.c.sig
gpg: Signature made Mar  1 Set 18:16:09 2009 CEST using RSA key ID $ID1
gpg: Good signature from "Lapo Luchini <lapo@lapo.it>"
gpg: Signature made Mar  1 Set 18:16:25 2009 CEST using RSA key ID $ID2
gpg: Good signature from "Lapo Luchini <lapo@lapo.it>"
Run Code Online (Sandbox Code Playgroud)

我已经验证这对于 ASCII-armored 文件也很有效,在这种情况下,输出文件大小不是最佳的,因为每个签名都重复标头,最好先连接二进制签名和它们 ASCII-armor整件事。

我不太了解 OpenPGP 格式,但我想你可能也有一个软件,给定一个文件和一些分离的签名,用从所有这些签名包中提取的签名包制作一个附加的签名,尽管那样需要更多时间来实现(如果可能的话:也许附加和分离签名有不同的数据包,一个不能在另一个中转换,但我敢打赌,数据包只是一种类型)。