GPG 加密邮件列表和其他安全通信方法
当一个秘密被超过两三个人知道时,它就不再是秘密,而只是谨慎。根据定义,邮件列表的任何收件人都可以阅读所有邮件,因此他是受信任的(从某种意义上说:他有能力背叛你)。这限制了您的选择。
在您的情况下,使用 GnuPG,您可以执行以下任何操作:
让每个接收者拥有一个密钥对,这在 GnuPG 中是正常的。每条消息都以所有用户作为收件人进行加密(OpenPGP 格式支持这一点;每个收件人的大小开销将是几百字节,因此只要收件人少于几百个就可以容忍)。邮件列表维护者定期通过邮件列表本身发送收件人列表,以便每个用户都可以知道所有收件人的公钥。
这种方法最适合 GnuPG 天生知道如何做的事情。但是,它有一些缺点:大小开销(取决于收件人的数量)、发件人的复杂任务(并非所有 GnuPG 接口都可以轻松地向数十个收件人发送电子邮件)、收件人列表的发布(每个成员该列表了解还有谁是成员)。
做一个接力。同样,每个接收者都拥有一个密钥对。然而,消息是由单个收件人(例如邮件列表维护者)发送的,然后该收件人将消息转发给所有收件人。这使最终用户更容易,因为他们只是将消息发送给邮件列表维护者;并且每次转发的消息都可以为单个收件人加密。这解决了以前方法的问题。
然而,它增加了一些额外的问题:额外的延迟(每条消息必须等待维护者处理它),增加的审查漏洞(维护者可以阻止任何消息),更复杂的签名(如果发送者签署他的消息,维护者必须为其他人将签名消息包装在加密中;这是文件格式允许的,但某些实现可能会在处理时遇到一些麻烦)。此外,维护者自己有很多工作,或者必须使用一些他可能会或可能不会使用的自动化工具。
使用通用密码。不要使用非对称密钥对,而是使用所有收件人都知道的密码的对称加密。这是去中心化的:要添加一个订阅者,给他密码就足够了,每个订阅者都可以这样做。邮件列表本身可以替换为任何媒介,甚至是支持无单点故障模式的分散系统(例如,Usenet)。这种方案最接近于二战期间抵抗网络使用的方案(例如参见伦敦广播电台)。
通用密码的主要问题是我在此答案开头所说的:通用密码不能是那个秘密。
混合策略是可能的。例如,将您的订阅者拆分为单元格,其中每个单元格的成员彼此认识(并且可能共享一个公共密码或至少知道彼此的公钥),并且知道“相邻”单元格中的两三个人的公钥. 然后消息从一个单元传递到另一个单元,没有人知道网络的全部范围。历史证明,此类网络在渗透和彻底崩溃方面非常强大。另见这本小说的插图。在您的情况下,这可能有点极端——这实际上取决于您的安全模型。也许你的情况不是危及生命的说服。