使用多个不同的密钥加密?

Gle*_*rry 100 encryption gnupg encryption-asymmetric

有没有办法以加密方式存储数据,以便可以使用多个不同的密钥对数据进行解密?

即如果我使用key1加密数据,但我希望能够使用密钥2,3和4进行解密.

这可能吗?

Dav*_*nds 153

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

以下命令将doc.txt使用Alice的公钥和Bob的公钥进行加密.Alice可以使用她的私钥解密.Bob也可以使用他的私钥解密.

gpg --encrypt --recipient alice@example.com \
    --recipient bob@example.com doc.txt
Run Code Online (Sandbox Code Playgroud)

此功能在标题为" 加密和解密文档 " 的用户指南部分中有详细说明

  • @用户8675309,是的。数据由公共对称密钥加密。只有对称密钥由每个接收者的公钥加密。它不会为每个收件人重新加密整个数据。 (10认同)

Édo*_*pez 51

是的,这是可能的

是可以为多个收件人加密.当您认为您可能希望能够阅读您发送给某人的内容并且这样做时,需要进入收件人列表,这似乎是合乎逻辑的.

命令行

以下是如何通过gpg命令行执行此操作(如David Segonds的回答中所述):

gpg --encrypt \
  --recipient alice@example.com \
  --recipient bob@example.com \
clear-message.txt
Run Code Online (Sandbox Code Playgroud)

GUI客户端

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

机制

还有一个问题,信息安全,GPG文件大小与多个收件人?,解释加密机制:

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

[...]当加密到多个收件人时,此标头会多次放置,为每个收件人提供相同对称密钥唯一加密版本.

  • 特别感谢最后两句:他们现在一切都清楚了! (3认同)

小智 28

GnuPG和PGP客户端通常使用称为"会话密钥"的对称密钥对实际数据进行加密.然后使用每个"收件人密钥"(即您使用-r/ - recipient指定的密钥)加密会话密钥.这有时被称为混合密码.现在,我相信GnuPG默认使用256位会话密钥和AES来将明文数据加密到该AES-256会话密钥,而您的收件人密钥是您的RSA/DSA/ECDSA /等.在这种情况下不对称的关键.

这样做的一个原因是像AES这样的对称加密算法通常比像RSA这样的非对称加密算法快得多.因此,GnuPG只需要使用RSA加密~256位(会话密钥),并且可以使用AES使用该会话密钥加密数据(尽可能大的数据!).英特尔机器甚至还有一个内置指令AES-NI,用于在硬件中执行算法的一些步骤,这使得GnuPG在加密/解密数据时更加轻松.

这样做的另一个原因是它允许将PGP加密的文档加密到多方,而不必使文档的大小加倍.请注意,当您为加密文档指定多个收件人时(例如gpg -ea -r Alice -r Bob -o ciphertext.asc),存储的加密文档(ciphertext.asc)不会像刚刚将其加密到Alice那样大2倍.

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

  • 感谢您对加密文档不大于 n 倍的解释,其中 n 是签名者的数量。 (3认同)

Mar*_*usQ 5

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

AFAIK,虽然没有将它们放入并使用它们的包。

——马库斯Q

PS 有关如何完成的草图,请考虑这个。加密消息包括:

  • 有效载荷,用一次性加密
  • 一次性密码,用 key1 加密
  • 一次性密码,用 key2 加密
  • ...
  • 一次一密,用 keyN 加密

持有密钥 i 的接收者只是用他们的密钥解密他们的 pad 副本,然后解密有效载荷。

但是,这只是证明它可以完成并且作为实际实现会很糟糕。如果可能,您应该避免滚动自己的加密。如果你不明白为什么,你绝对应该避免滚动你自己的加密。

- - -编辑 - - - - - -

如果我错了并且 Gnu 工具这样做了,请使用它们。但我似乎无法找到有关如何执行此操作的任何信息。

  • 我很确定实际的实现不使用共享的一次性填充(需要与纯文本和加密文本一样大,从而使消息大小加倍),但实际上使用共享对称加密密钥(通常比消息小得多)。 (5认同)
  • 谷歌搜索“多方加密”并没有出现太多。您可能会在“广播加密”方面获得更好的运气,其中也包含这种情况。 (2认同)