有没有可能对数据进行加密,以便可以用几个不同的密钥进行解密?
例如:
我已经用密钥1加密了数据,但是我希望能够用密钥2、3和4解密。
这可能吗?
是的,这是可能的。谷歌“多方加密”作为一个开始。
AFAIK,有没有下降’他们和使用’他们包为它虽然。
马库斯 Q
附注: 要了解如何实现这一点,请考虑以下内容。加密信息包括:
持有密钥的收件人,我只是用他们的密钥解密他们的副本,然后解密有效载荷。
然而,这只是一个证明,它可以做到,并将 烂透了作为一个实际的实现。如果可能的话,您应该避免使用自己的加密。如果你不明白为什么,你应该 当然避免滚动自己的加密。
——编辑——
如果我错了,是 Gnu 工具干的,那就用它们。但我似乎找不到任何关于如何做到这一点的信息。
GnuPG 在标准中进行多密钥加密。
下面的命令将使用 Alice 的公钥和 Bob 的公钥加密 doc.txt。爱丽丝可以用她的私钥解密。Bob 也可以使用他的私钥解密。
doc.txt
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
gpg --encrypt \ --recipient alice@example.com \ --recipient bob@example.com \ clear-message.txt
您的 GUI 必须为多个人提供加密方法
在 资讯保安和 多个收件人的 GPG 文件大小? ,这解释了加密机制上有一个问题:
GPG 使用对称密钥对文件进行一次加密,然后放置标头 标识目标密钥对和加密版本的 对称密钥。 [ ... ]当加密到多个收件人时,这个 Header 被多次放置,提供 < strong > 唯一加密的版本 为每个收件人提供相同的对称密钥
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 -ea -r Alice -r Bob -o ciphertext.asc
另请参阅 Gpg 手册页中的 --show-session-key参数,以便能够仅解密会话密钥,例如允许第三方解密加密给您的文档,而无需向他们传输您的私钥或明文数据。
--show-session-key