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)
此功能在标题为" 加密和解密文档 " 的用户指南部分中有详细说明
É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必须为多人提供加密方式
还有一个问题,信息安全,GPG文件大小与多个收件人?,解释加密机制:
GPG使用对称密钥对文件进行一次加密,然后放置标识目标密钥对的标头和对称密钥的加密版本.
[...]当加密到多个收件人时,此标头会多次放置,为每个收件人提供相同对称密钥的唯一加密版本.
小智 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
参数,以便只能解密会话密钥,例如,允许第三方解密为您加密的文档,而无需将私钥或明文数据传输给他们.
是的,这是可能的。谷歌“多方加密”开始。
AFAIK,虽然没有将它们放入并使用它们的包。
——马库斯Q
PS 有关如何完成的草图,请考虑这个。加密消息包括:
持有密钥 i 的接收者只是用他们的密钥解密他们的 pad 副本,然后解密有效载荷。
但是,这只是证明它可以完成并且作为实际实现会很糟糕。如果可能,您应该避免滚动自己的加密。如果你不明白为什么,你绝对应该避免滚动你自己的加密。
- - -编辑 - - - - - -
如果我错了并且 Gnu 工具这样做了,请使用它们。但我似乎无法找到有关如何执行此操作的任何信息。