Encryption 使用多个密钥进行加密/解密

Encryption 使用多个密钥进行加密/解密,encryption,gnupg,encryption-asymmetric,Encryption,Gnupg,Encryption Asymmetric,是否可以对数据进行加密,以便使用多个不同的密钥对其进行解密 例如: 我已经用密钥1加密了数据,但我希望能够用密钥2、3和4解密 这可能吗?是的,可能。谷歌“多方加密”作为一个开始 顺便说一句,这里并没有把它们放进去,而是用它们的软件包 --马库斯克 关于如何做到这一点的草图,请考虑一下。加密消息包括: 有效载荷,用一次性pad加密 一次性键盘,用键盘1加密 一次性键盘,用键盘2加密 一次性键盘,用键盘加密 持有密钥i的接收者只需用密钥解密pad副本,然后解密有效负载 然而,这只是一个证据,

是否可以对数据进行加密,以便使用多个不同的密钥对其进行解密

例如:

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


这可能吗?

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

顺便说一句,这里并没有把它们放进去,而是用它们的软件包

--马库斯克

关于如何做到这一点的草图,请考虑一下。加密消息包括:

  • 有效载荷,用一次性pad加密
  • 一次性键盘,用键盘1加密
  • 一次性键盘,用键盘2加密
  • 一次性键盘,用键盘加密
持有密钥i的接收者只需用密钥解密pad副本,然后解密有效负载

然而,这只是一个证据,证明它是可以做到的,并且作为一个实际的实现会很糟糕。如果可能的话,您应该避免使用自己的加密。如果你不明白为什么,你绝对应该避免使用你自己的加密

-----编辑------------

如果我错了,Gnu工具会这样做,那么就使用它们。但我似乎找不到任何关于如何做的信息。

在标准中进行多密钥加密

下面的命令将使用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(m型)

y2==y1^e2(模m)

y3==y2^e3(模m)

x==yi^d(模m)

例如,此算法可用于提高洋葱路由器的速度。

是的,这是可能的 是可以对多个收件人进行加密。此外,当你认为你可能希望能够阅读你发送给某人的邮件,并且要做到这一点,你需要在收件人列表中,这似乎是合乎逻辑的

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

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

机制 有一个关于信息安全的问题:

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

[…]当加密到多个收件人时,此 头被多次放置,提供了一个唯一加密的版本 为每个收件人使用相同的对称密钥

PGP客户端通常使用称为“会话密钥”的对称密钥加密实际数据。然后使用每个“收件人密钥”(即使用-r/--recipient指定的密钥)对会话密钥进行加密。这有时被称为是一个错误。现在,我相信GnuPG默认使用256位会话密钥和AES将明文数据加密到该AES-256会话密钥,在本例中,您的接收方密钥是您的RSA/DSA/ECDSA/等非对称密钥

这样做的一个原因是,像AES这样的对称密码算法通常比像RSA这样的非对称密码算法快得多。因此,GnuPG只需要使用RSA加密约256位(会话密钥),并且可以使用AES使用该会话密钥加密数据(数据大小随您的需要而定!)。英特尔机器甚至有一个内置指令,用于在硬件中执行算法的某些步骤,这使得GnuPG在加密/解密数据方面更加敏捷

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


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

同上。知道如何做到这一点很酷,但我在上面找不到隐藏的个人主页。@Mitch,这可能就是我们的答案!(如果是/不太感谢的话,请测试并推荐!)@MarkusQ,请参阅上面我对Mitch的问候。测试/如果可以,谢谢!:-)因此,这会产生一个加密文件,可以使用任意一个私钥读取,而不是每个密钥读取一个文件?@user8675309,是的。数据由公共对称密钥加密。只有对称密钥由每个收件人的公钥加密。它不是为每个收件人重新加密整个数据。这可能很糟糕,一旦你知道一次性密码,你就有了一个已知的纯文本,以及其他密钥的加密值。使用这些信息,你可以更容易地找出其他密钥是什么。谷歌搜索“多方加密”的结果不多。“广播加密”也包含了这种情况,你可能会有更好的运气。@Kibbee:密钥不是秘密的,它们是公开的。因此,更容易发现它们是什么并不重要。(这些方案只用于只能用于加密而不能用于解密的密钥。)我非常确定,实际的实现不会使用共享的一次性pad(它需要与纯文本和加密文本一样大,从而使消息大小加倍),而是实际使用共享的对称加密密钥(通常是muc)
gpg --encrypt \
  --recipient alice@example.com \
  --recipient bob@example.com \
clear-message.txt