Answers:
GnuPG以标准方式进行多密钥加密。
以下命令将doc.txt
使用Alice的公共密钥和Bob的公共密钥进行加密。爱丽丝可以使用她的私钥解密。鲍勃还可以使用其私钥解密。
gpg --encrypt --recipient alice@example.com \
--recipient bob@example.com doc.txt
用户指南的标题为“ 加密和解密文档 ”的部分详细介绍了此功能。
是的,可以对多个收件人进行加密。当您认为自己可能希望能够阅读已发送给某人的内容并做到这一点时,这似乎合乎逻辑,因此您需要在收件人列表中。
这是通过gpg
命令行执行的方法(如David Segonds的答案中所述):
gpg --encrypt \
--recipient alice@example.com \
--recipient bob@example.com \
clear-message.txt
您的GUI必须提供一种可以为多个人加密的方法
有一个关于信息安全,多个收件人的GPG文件大小的问题吗?,说明了加密机制:
GPG使用对称密钥对文件加密一次,然后放置一个标头,用于标识目标密钥对和对称密钥的加密版本。
加密给多个接收者后,此标头会被放置多次,从而为每个接收者提供相同对称密钥的唯一加密版本。
通常,GnuPG和PGP客户端通常使用称为“会话密钥”的对称密钥来加密实际数据。然后,使用每个“收件人密钥”(即您使用-r /-收件人指定的密钥)对会话密钥进行加密。有时将其称为混合密码。现在,我相信GnuPG默认情况下使用256位会话密钥和AES将明文数据加密为该AES-256会话密钥,并且您的接收者密钥是RSA / DSA / ECDSA / etc。在这种情况下为非对称密钥。
这样做的原因之一是,像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
参数,以仅解密会话密钥,例如,允许第三方解密对您加密的文档,而不必将私钥或明文数据传输给他们。
是的,有可能。Google以“多方加密”为起点。
AFAIK,虽然没有drop'em并使用'em包。
-MarkusQ
PS有关如何完成的草图,请考虑一下。加密的消息包括:
持有密钥的接收者i只是用密钥解密他们的便签本副本,然后解密有效载荷。
但是,这只是一个证明,表明它可以完成,并且会作为实际的实现而失败。如果有可能,应该避免进行自己的加密。如果你不明白为什么,那你绝对应该避免使用自己的加密方式。
-----编辑------------
如果我错了,并且Gnu工具可以这样做,请使用它们。但是我似乎找不到有关如何执行操作的任何信息。