多密钥加密/解密

有没有可能对数据进行加密,以便可以用几个不同的密钥进行解密?

例如:

我已经用密钥1加密了数据,但是我希望能够用密钥2、3和4解密。

这可能吗?

109589 次浏览

是的,这是可能的。谷歌“多方加密”作为一个开始。

AFAIK,有没有下降’他们和使用’他们包为它虽然。

马库斯 Q

附注: 要了解如何实现这一点,请考虑以下内容。加密信息包括:

  • 有效载荷,用一次性密码本加密
  • 唯一的时间记录本,用密钥1加密
  • 唯一的时间记录本,用密钥2加密
  • ...
  • 唯一的时间记录本,用 keyN 加密

持有密钥的收件人,我只是用他们的密钥解密他们的副本,然后解密有效载荷。

然而,这只是一个证明,它可以做到,并将 烂透了作为一个实际的实现。如果可能的话,您应该避免使用自己的加密。如果你不明白为什么,你应该 当然避免滚动自己的加密。

——编辑——

如果我错了,是 Gnu 工具干的,那就用它们。但我似乎找不到任何关于如何做到这一点的信息。

GnuPG 在标准中进行多密钥加密。

下面的命令将使用 Alice 的公钥和 Bob 的公钥加密 doc.txt。爱丽丝可以用她的私钥解密。Bob 也可以使用他的私钥解密。

gpg --encrypt --recipient alice@example.com \
--recipient bob@example.com doc.txt

这个特性在用户指南“ 加密和解密文档”部分有详细介绍

多个(两个以上)键 RSA 是这样的 也许吧-我不是一个数学家,所以这个算法不一定是安全的,我只是想给它一个想法。

M = p * q * r; p,q,r 是大素数

Fi (m) = (p-1) (q-1)(r-1)

D = = (e1 * e2 * e3 * ... * ei) ^ (- 1)(mod fi (m)) ; e1... ei 是任意数字,计算 d 来完成方程

Y1 = = x ^ e1(mod m)

Y2 = = y1 ^ e2(mod m)

Y3 = = y2 ^ e3(mod m)

...

X = = yi ^ d (mod m)

例如,这个算法可以用来提高 Tor 的速度。

是的,有可能

是的,可以对多个收件人进行加密。同样,当你认为你可能希望能够阅读你发送给某人的内容时,这似乎也是合乎逻辑的,因为 需要在收件人列表中。

命令行

下面是如何通过 gpg命令行(如 David Segonds 的回答所述)完成此操作:

gpg --encrypt \
--recipient alice@example.com \
--recipient bob@example.com \
clear-message.txt

GUI 客户端

您的 GUI 必须为多个人提供加密方法

机械装置

资讯保安多个收件人的 GPG 文件大小? ,这解释了加密机制上有一个问题:

GPG 使用对称密钥对文件进行一次加密,然后放置标头 标识目标密钥对和加密版本的 对称密钥。

[ ... ]当加密到多个收件人时,这个 Header 被多次放置,提供 < strong > 唯一加密的版本 为每个收件人提供相同的对称密钥

GnuPG 和 PGP 客户机通常使用称为“会话密钥”的对称密钥对实际数据进行加密。然后会话密钥用每个“收件人密钥”(即您用-r/——收件人指定的那些密钥)加密。这有时被称为 混合密码。现在,我相信 GnuPG 默认使用一个256位会话密钥和 AES 将明文数据加密到 AES-256会话密钥,在这种情况下,收件人密钥是 RSA/DSA/ECDSA/etc 非对称密钥。

这样做的一个原因是像 AES 这样的对称加密算法通常比像 RSA 这样的非对称加密算法快得多。因此,GnuPG 只需要用 RSA 加密约256位(会话密钥) ,并且可以使用 AES 加密数据(想多大就多大!)用那个会话密钥。Intel 机器甚至有一个内置指令 AES-NI,用于在硬件中执行算法的一些步骤,这使得 GnuPG 在加密/解密数据方面更加灵活。

这样做的另一个原因是,它允许对 PGP 加密的文档进行加密,而无需将文档的大小增加一倍。请注意,当您为一个加密文档(例如 gpg -ea -r Alice -r Bob -o ciphertext.asc)指定多个收件人时,所存储的加密文档(ciphertext.asc)的大小不及您刚刚将其加密给 Alice 时的2倍。

另请参阅 Gpg 手册页中的 --show-session-key参数,以便能够仅解密会话密钥,例如允许第三方解密加密给您的文档,而无需向他们传输您的私钥或明文数据。