跳转到内容

Goldbug

75% developed
来自维基教科书,开放世界中的开放书籍

Goldbug - 安全电子邮件客户端和即时消息用户手册

图 1:GOLDBUG-Logo


安全电子邮件客户端和即时消息 http://goldbug.sf.net

(状态通知:2016 年 10 月 21 日。本文及其图片为公共领域(即开源),任何人都可以随意使用、修改或发布。)

什么是 Goldbug?

GoldBug 是一款安全电子邮件程序,可以执行多项有用的操作。除了安全电子邮件之外,还有安全的实时互联网聊天。这意味着发送和接收的每个数据包都会被小心地加密。此外,GoldBug 仅使用未破解的密码和加密方案,这是使用任何类型密码的唯一合理方法。GoldBug 还包括避免使用标准互联网地址解析机制(例如,DNS,它在几十年前设计草率,并且已被敌对方多次干扰)的方法,因此即使在攻击导致互联网的大部分时间内无法使用时,您仍然可以继续使用电子邮件和聊天。

使用 GoldBug 进行电子邮件或聊天时,您可以确保任何第三方(例如,可能想要窃取银行信息的罪犯)都无法窃听您的对话。用户之间的通信保持私密,并保留在“受保护”的空间内。为了代表您完成此操作,GoldBug 使用高质量的多重加密,也称为混合加密,使其使用更加实用(密钥更容易记忆,更容易根据需要更改)和更高效(例如,更快的加密和解密)。它使用经过充分验证(尚未破解)的加密技术,这些技术来自完善的加密库,例如 libgcrypt(Internet 标准 GnuPG 包的一部分)和 OpenSSL。GoldBug 根据需要生成所需的公钥/私钥对(用于多种非对称加密算法)以及对称密钥加密算法所需的密钥,并安全地将其与通信者交换,以便您摆脱至少一些安全使用加密进行通信的复杂性。

GoldBug 使用RSA加密算法,或者可以选择使用ElGamalNTRU 或者McEliece。在当今积极攻击者并包含量子计算的加密环境中,最后两种算法被认为更安全。在撰写本文时,GoldBug 是唯一一个使用 NTRU 和 McEliece 的加密系统的开源实现。

GoldBug 提供去中心化和加密的电子邮件以及去中心化的公开 IRC 样式群组聊天,但也提供安全的文档传输,从而保护的不仅仅是目前人与人之间的通信。另一个功能允许 p2p 搜索(即点对点,没有像 Google 或 Bing 这样的具有中央服务器的互联网范围系统)。

此外,“Rosetta CryptoPad”和“文件加密器”使 GoldBug 能够进行本地文件加密,即使存储文件的计算机(也许是您的?)被某种方式入侵(即,用通俗的话说,黑客入侵),或者甚至被物理盗窃(笔记本电脑、平板电脑和智能手机当然特别容易受到攻击)。

GoldBug 的设计分为两个相互协作的部分:多线程内核和用户界面。这两个组件是用 C++ 语言编写的,需要 Qt 框架以及多个代码库(例如,libgcrypt)。所需的库用于 Internet 标准协议,并非专有。Qt 的 4.8.x 和 5.x 版本都受支持。GoldBug 可用于 FreeBSDLinuxOS XOS/2Windows。此外,它已针对 ARM 架构 CPU 以及专门针对 RaspberryPI 信用卡大小的计算机(使用 ARM CPU 实现)进行了编译。

GoldBug 项目提供了一个简单的用户界面,即使是初学者也很适合使用,它依赖于来自现有 Spot-On 项目的代码 (http://spot-on.sf.net)。Spot-on 在硅谷开发,在撰写本文时,它将自己定义为一个探索性研究项目,调查各种通信和加密算法。尽管如此,它已经足够成熟,可以用于普通用途,特别是在 GoldBug 中。


为什么加密通信很重要?

您发送到互联网上的每条消息都必须通过几个中间节点(其他人的计算机)和服务器(其他人的计算机,或者更常见的是公司设置的计算机,用于提供互联网服务);这样做实际上是互联网本身的本质。因此,很明显,构成任何和所有互联网传输的每个数据包(即,一个几乎总是更大的传输的小块)在传输过程中都可供未知数量的第三方访问。许多实体(实际识别或仅仅知道存在,从资源丰富的政府到资源匮乏的个人)已被确定为有兴趣阅读这些飞行的数据包,也许包括您的数据包。此外,在您的计算机或其他地方运行的恶意软件(可能包括您的计算机)可能会将您的流量副本发送到您没有预期的其他地方,从而使截取您的数据包在互联网线上快速传输变得不必要。因此,为了拥有隐私,通过保护信息和通信免遭恶意行为,每个人都应该在消息甚至被发送到互联网上之前对消息进行加密;如果操作正确,这将使每个窃听者都感到沮丧,因为他们只能思考无法阅读的乱码,几乎没有希望理解其含义。当然,这正是任何想要阅读我们通信的人应该发现自己的情况。

有时有人声称,任何没有秘密的人都不需要费心这样做。这是不正确的,因为稍加思考就会明白,几乎每个人都开始通过互联网进行金融交易,而罪犯对此非常感兴趣。即使您一生都没有对任何人造成任何冒犯,恶意人士也会对此感兴趣。总的来说,存在一个问题,即一个人是否甚至可以控制自己的通信,从私人的亲密关系到商业计划,再到投票(一些司法管辖区出于便利,允许通过互联网投票,尽管这样做存在公民风险),以及几乎所有其他事情。此外,任何能够访问或控制您通信的人都可以利用它制造很多麻烦,从在您不知情的情况下使用您的计算机传播儿童色情制品到向总统或教皇发送威胁信息。

也许更重要的是,最终的问题是隐私的丧失是否会被用来进行审查(例如,政府或压力集团)或不公正的起诉(例如,在广泛窃听通信的情况下,无罪推定是否能够生存)?在通信受到虚假信息的推断、欺骗和利用的情况下,可以毫不夸张地说,自由思想本身也处于危险之中。更广泛地说,负责任的政府和民主本身需要对公共政策选择进行思考和讨论,在大多数情况下,首先是私下进行,然后当然是公开进行。

高质量的密码学,如果正确实施和使用,可以为联合国和许多国家权利宪章中规定的保护个人隐私权提供相当大的保障。学习如何使用它值得花费时间和精力。GoldBug 使高质量的密码学可供所有人使用,并使其能够用于保护许多普通活动。

GoldBug Messenger 旨在成为一个安全且易于使用的电子邮件客户端和即时通讯工具,此外还支持其他加密用途。汽车使用类比是很有启发性的。最初的汽车没有安全带或防抱死制动系统等安全措施。结果发现这种情况令人不满意——许多人死伤,而本可以避免。如今,除了许多底盘设计规定之外,我们还使用安全带、安全气囊和防抱死制动系统。在这个类比中,未加密的电子邮件或即时通讯就像没有安全设备的汽车。请在将消息发送到互联网之前对消息进行加密。您与之交谈的人也应该这样做,原因相同。

但是,汽车的比喻在一点上失败了。GoldBug——以及所有对消息的密码保护——依赖于通信链路的两个端点同步运行。这意味着两个用户都必须安装兼容的密码学;在大多数情况下,就像 GoldBug 的情况一样,这意味着相同的软件(在一定范围内,因为早期版本在某些情况下可能会与后期版本交互)。好的密码软件会检查这类事情,GoldBug 也是如此。但事实仍然是,除非另一个用户也拥有并使用 GoldBug,否则 GoldBug 将无法保护您的隐私。您应该告诉您的朋友使用 GoldBug!大多数操作系统、最重要的 CPU 类型和大多数计算机制造商都有相应的版本。保持最新版本的 GoldBug 很容易,因为 GoldBug 是免费提供的(**免费**,既指免费啤酒(无成本),也指您可以随意使用,因为它没有限制性的许可证),并且可以在互联网上轻松获得。

为什么要使用“GoldBug”这个名字呢?

《金甲虫》是埃德加·爱伦·坡创作的短篇小说。

威廉·勒格兰德发现了一个金色的圣甲虫,他的仆人朱庇特在圣甲虫附近发现了一张羊皮纸。勒格兰德注意到上面有字迹,他的行为(包括对财富的梦)让朱庇特担忧,他向一个熟人(未命名的叙述者)寻求帮助。他同意了。

在找回文字并解密后,三人组成团队开始了冒险之旅……

《金甲虫》故事——在所有文学作品中,这是为数不多的几个——将加密作为故事的一个元素。坡是第一个将密码学纳入流行小说的作家之一,他在 1843 年出版了《金甲虫》。这部作品立即获得成功,并广受欢迎——这是坡生前最著名的作品。

这个软件项目就是从坡的著名故事中获得名称的。170 多年后,密码学比坡的时代更加重要,甚至至关重要。加密应该是我们在不安全的互联网上通信的常规方式。

加密:GoldBug 提供了 RSA 的替代方案

GoldBug Messenger 包含几种替代密码。原因是一种密码学的常识。如果任何一种密码从根本上变得不安全(由于数学分析的进步或可能是硬件进步(例如量子计算)),另一种密码可能会保持安全。

除了 RSA,GoldBug 还实现了 ElGamal 加密算法,以及 NTRU 和 McEliece。NTRU 的最新版本,以及 McEliece(也是最新版本),目前被认为比其他算法更不容易受到计算机硬件性能进步(特别是量子计算)的影响。事实上,有一些显著的结果证明,在某些条件下,情况确实如此。在撰写本文时,还没有实用的量子计算机,但一些研究表明,工作量子计算机将具有几个优势,包括使一些针对当前安全加密算法的理论攻击变得实用。目前正在进行大量研究工作,旨在使这些计算机可用。据目前所知,还没有可用的计算机,但提前做好准备是明智之举。

例如,在 2016 年 2 月,NIST(美国政府负责监督该领域公开研究和标准的机构)发布了一份报告,该报告指出 RSA“不再安全”;这预示着可能出现突破。[1]

GoldBug 还提供了几种可选的数字签名方法,这是加密互联网通信的重要方面。同样,这些选项应该在针对一种或另一种方法的密码分析进展的情况下,允许持续的安全。它们包括:DSA、ECDSA、EdDSA、ElGamal 和 RSA 签名算法。

当然,GoldBug 允许每个用户选择密钥长度(更长的密钥比更短的密钥更不容易破解)、在特定情况下要使用的加密密码、要使用的哈希类型,以及在某些情况下要使用的“迭代次数”和盐长度。GoldBug 用户的优势在于,每个用户都可以单独定义这些事项,尽管默认值在大多数情况下都是合理的。

它可以被称为手动设置和单独选择的“密码 DNA”,这在端到端加密应定义时至关重要。***?????***

图 2:RSA 的替代方案

图 2:GoldBug 提供了 RSA 的替代方案


RSA、ElGamal、NTRU 和 McEliece 的比较

目前,GoldBug 支持 McEliece、NTRU、ElGamal 和 RSA 加密算法。

McEliece 密码系统是一种非对称加密算法,由 Robert McEliece 在 1978 年开发。它是第一个在加密过程中使用随机化的方案。它是在量子计算机时代安全使用的候选方案,因为它对使用 Shor 算法的攻击具有免疫力,并且更普遍地对使用傅立叶采样的测量成本状态具有免疫力。该算法基于对一般线性码求逆的难度(这是已知为 NP 困难的问题)。McEliece 在使用特定类型(即 Goppa 码)时,已抵御了所有密码分析,直到本文撰写时。与 RSA 等算法相比,McEliece 密码系统具有一些优势,因为加密和解密都更快,但它也有一些缺点——密钥非常非常非常大。(参见 https#en:wikipedia.org:wiki/McEliece_cryptosystem)

NTRU 是一种非对称加密方法,由数学家 Jeffrey Hoffstein、Jill Pipher 和 Joseph Silverman 在 1996 年开发。它基于格问题,格问题被广泛认为是不可逆的(即,它们非常困难,而且还没有找到解决方法,目前也不怀疑有解决方案)。NTRU 的最新版本据信不会受到基于量子计算机攻击的影响。然而,在本文撰写时,NTRUEncrypt 还没有像更古老(更常见)的方法(例如 RSA)那样经过充分研究。NTRUEncrypt 被 IEEE 标准化为 P1363.1(参见 https://en.wikipedia.org/wiki/NTRU)。

ElGamal 加密算法,或 ElGamal 密码系统,由密码学家 Taher ElGamal 在 1985 年开发。它是一种公开密钥加密方案,其基础是 Diffie 和 Hellman 在其开创性的密钥交换方案中首次描述的想法。ElGamal 加密方案基于在有限阶循环群内的操作,就像 Diffie-Hellman 密钥协议一样。ElGamal 加密方法在假设决策 Diffie-Hellman 问题在底层群上不是平凡的情况下,被证明是 IND-CPA 安全的。ElGamal 签名方案与加密方法有关,但并不完全相同。(ElGamal 签名方法未在 GoldBug 中实现 ***矛盾。什么是正确的???***)。ElGamal 不受专利许可限制(参见 https://en.wikipedia.org/wiki/ElGamal_encryption)。

RSA(以其发明者 Rivest、Shamir 和 Adleman 的名字命名)是一种非对称加密算法,可用于加密和数字签名。它使用一对密钥,包括用于解密或签名数据的私钥和公钥。两把密钥都是由 GoldBug 在用户的指示下生成的,这需要相当长的时间和精力。与其他非对称加密算法一样,公钥(一对公钥/私钥)在开始加密通信之前会传输给通信方。它可能会被任何有安全漏洞的人知道。据信,从另一把密钥计算出任何一把密钥在计算上是不可行的,因为在 RSA 的情况下,它取决于整数分解问题的难度(参见 https://en.wikipedia.org/wiki/RSA_(cryptosystem))。由于最近关于 RSA 安全性的结果,应该只使用非常长的 RSA 密钥。

混合加密系统

GoldBug 实现了用于消息身份验证和消息机密性的混合系统。这样做的原因是,一种通用的密码类别(即非对称密钥加密密码,也被称为公钥/私钥密码)速度慢得多,但在某些方面比另一种通用类别(即对称密钥加密密码)更安全。GoldBug 使用两者来利用它们的各自优点。GoldBug 还生成每消息身份验证和加密密钥。这两个密钥用于对数据进行身份验证和封装,通常运行速度更快。然后使用非对称算法的公钥对这两个密钥进行封装,并发送给另一个用户。

非 NTRU 私钥通过 gcry_pk_testkey() 函数进行正确性评估。公钥还必须满足一些基本标准,例如公钥标识符。***???***

GoldBug 使用 libgcrypt 和 libntru 库来生成私钥和公钥对。目前,它在初始化过程中可选地生成 12 个密钥对。这些密钥对可以被唯一地使用(最多可用于 12 个通信方),因此无需经常重复密钥生成。另一方面,尚未使用的密钥可能会被复制,如果您的计算机被恶意软件入侵,因此在首次使用时可能不安全。妥善保管它们非常重要。目前,GoldBug 不支持公钥基础设施 (PKI),因此不依赖任何第三方来提供密钥身份验证。今天使用的多数密码系统都是这样设计的,因为当使用具有中央密钥身份验证机制的 PKI 时,商业控制密码的使用更容易。GoldBug 中的密钥必须以其他方式交换(并验证为正确);GoldBug 提供了几种方式。GoldBug 还提供了一种机制,用于安全地分发一次性使用的数据封装会话密钥。同样,这些密钥使用公钥系统进行保护。额外的机制允许通过先前建立的私钥分发会话密钥。还可以可选地对传输的数据应用数字签名,从而确保接收方收到的是预期的内容,并且没有被篡改。

如果节点共享相同的 libgcrypt 和 libntru 库,则可以选择不同密钥类型的 GoldBug 节点之间的通信是可能的。

例如,请考虑以下消息方案:EPublic Key(Encryption Key

  1. NIST / Chen, Lily / Jordan, Stephen / Liu, Yi-Kai / Moody, Dustin / Peralta, Rene / Perlner, Ray / Smith-Tone, Daniel: NISTIR 8105,草案,关于后量子密码学的报告,URL:http://csrc.nist.gov/publications/drafts/nistir-8105/nistir_8105_draft.pdf,美国国家标准与技术研究院。2016 年 2 月
华夏公益教科书