有多个收件人的 GPG 文件大小?

信息安全 加密 pgp gnupg
2021-09-03 01:27:03

如果我为多个用户加密文件,文件大小会如何变化?

两个用户的输出大小是否加倍。10 或 100 个用户怎么样?

2个回答

GPG 使用对称密钥对文件进行一次加密,然后放置一个标头标识目标密钥对和对称密钥的加密版本。RFC 2440的第 5.1 节定义了其中的复杂细节当加密给多个收件人时,此标头会被放置多次,为每个收件人提供相同对称密钥的唯一加密版本。

因此,每个收件人的文件大小增长很小且大致呈线性。密钥长度和填充可能存在一些变化,因此对于不同的密钥大小和算法,它是不可预测的,但它很小。在不使用压缩的快速测试演示中:

11,676,179 source
11,676,785 encrypted-to-one (+606 bytes)
11,677,056 encrypted-to-two (+277 bytes)
11,677,329 encrypted-to-three (+273 bytes)

OpenPGP格式(即 PGP 和 GnuPG 实现的协议)中,通过首先压缩消息来加密消息,然后使用随机密钥K进行对称加密;然后用每个接收者的公钥对K进行加密。

压缩步骤倾向于减小数据的大小,或不减小,这取决于数据类型(ASCII 文本压缩得很好,JPG 图片不能)。对称加密仅将大小增加了很小的量(例如 20 个字节左右)。

对于每个接收者,都添加了一个“公钥加密会话密钥包”(参见 OpenPGP 的第 5.1 节)。此类数据包的大小取决于该接收者的公钥类型和长度;例如,对于 2048 位 RSA 密钥,该数据包的长度应为 271 字节(对于 2048 位 ElGamal,应为 529 字节)。

最后,如果要在电子邮件中包含加密文件,它通常是“ASCII 装甲”,即以 Base64 编码(这样它就可以毫发无损地通过邮件服务器,这些邮件服务器需要文本,而不是二进制数据);Base64 编码将数据长度增加了 +33%。

底线:每个收件人的大小增加取决于收件人密钥,而不是原始文件大小。每个收件人的大小增加应小于 1 kB。