GPG 加密邮件列表和其他安全通信方法

信息安全 加密 电子邮件 隐私 pgp
2021-08-26 19:20:34

在邮件列表上私下交流的最佳方式是什么?

要求列表中的每个成员都拥有其他成员的公钥,并用这些公钥加密他们的消息,这很麻烦,甚至没有用。

另一方面,只使用一个每个成员都知道密码的私钥是不安全的,并且最终,当一个成员离开 ML 时会产生极大的问题——您必须更改列表的私钥,从而使所有以前加密的消息都无法读取。

我已经看到有一些安全 ML 的 实现,但就我而言,我必须使用托管的(即我不能选择 ML 软件)。

有任何想法吗?

2个回答

当一个秘密被超过两三个人知道时,它就不再是秘密,而只是谨慎根据定义,邮件列表的任何收件人都可以阅读所有邮件,因此他是受信任的(从某种意义上说:他有能力背叛你)。这限制了您的选择。

在您的情况下,使用 GnuPG,您可以执行以下任何操作:

  1. 让每个接收者拥有一个密钥对,这在 GnuPG 中是正常的。每条消息都以所有用户作为收件人进行加密(OpenPGP 格式支持这一点;每个收件人的大小开销将是几百字节,因此只要收件人少于几百个就可以容忍)。邮件列表维护者定期通过邮件列表本身发送收件人列表,以便每个用户都可以知道所有收件人的公钥。

    这种方法最适合 GnuPG 天生知道如何做的事情。但是,它有一些缺点:大小开销(取决于收件人的数量)、发件人的复杂任务(并非所有 GnuPG 接口都可以轻松地向数十个收件人发送电子邮件)、收件人列表的发布(每个成员该列表了解还有谁是成员)。

  2. 做一个接力。同样,每个接收者都拥有一个密钥对。然而,消息是由单个收件人(例如邮件列表维护者)发送的,然后该收件人将消息转发给所有收件人。这使最终用户更容易,因为他们只是将消息发送给邮件列表维护者;并且每次转发的消息都可以为单个收件人加密。这解决了以前方法的问题。

    然而,它增加了一些额外的问题:额外的延迟(每条消息必须等待维护者处理它),增加的审查漏洞(维护者可以阻止任何消息),更复杂的签名(如果发送者签署他的消息,维护者必须为其他人将签名消息包装在加密中;这是文件格式允许的,但某些实现可能会在处理时遇到一些麻烦)。此外,维护者自己有很多工作,或者必须使用一些他可能会或可能不会使用的自动化工具。

  3. 使用通用密码。不要使用非对称密钥对,而是使用所有收件人都知道的密码的对称加密。这是去中心化的:要添加一个订阅者,给他密码就足够了,每个订阅者都可以这样做。邮件列表本身可以替换为任何媒介,甚至是支持无单点故障模式的分散系统(例如,Usenet)。这种方案最接近于二战期间抵抗网络使用的方案(例如参见伦敦广播电台)。

    通用密码的主要问题是我在此答案开头所说的:通用密码不能是那个秘密。

混合策略是可能的。例如,将您的订阅者拆分为单元格,其中每个单元格的成员彼此认识(并且可能共享一个公共密码或至少知道彼此的公钥),并且知道“相邻”单元格中的两三个人的公钥. 然后消息从一个单元传递到另一个单元,没有人知道网络的全部范围。历史证明,此类网络在渗透和彻底崩溃方面非常强大。另见这本小说的插图。在您的情况下,这可能有点极端——这实际上取决于您的安全模型。也许你的情况不是危及生命的说服。

另请参阅https://git.codecoop.org/schleuder/schleuder3/这是一个加密的重新邮寄列表,例如 https://www.digitale-gesellschaft.ch/使用的