Mozilla Thunderbird的超级电源端到端电子邮件加密

2021-04-10 17:10:02

我们很高兴地释放了章鱼的第一个版本,Analternate OpenPGP后端为雷鸟内建于红杉的顶部。

章鱼是雷鸟的OpenPGP Litershipped的RNP替代品,除了提供雷鸟用途的所有RNP功能,章鱼还包括多重增强。这些落入了几个类别。 TheOctopus恢复了eNigmail中存在的一些功能,拒绝或尚未在雷鸟的OpenPGPGPIntogration中重新实现。特别是,章鱼使用Gnupg的密钥库,与GPG-Agent进行交互,集成了Gnupg的信任信息网络,并更新了背景中的证书。章鱼包括安全修复和改进的数量。例如,它是FixestHunderBird的不安全的消息组成,并在休息时自动加密存储器密钥材料。章鱼增加了几小笔的改进,例如,解析背面的钥匙环并使用多个线程。而且,章鱼有Bettersupport,用于解析通常的常规,但不一定是深奥的,证书和键。

从Thunderbird 68到Thunderbird 78的更新带来了一个很大的变化:旧的扩展机制被退役,有利于更安全的方法,Webextensions。这是一种侵入性的变化。许多包括流行的eNigmail扩展和自动调节扩展名的加载项已经重新制作甚至重写了。

识别出OpenPGP对于许多现有的雷电器师来说是必不可少的,雷鸟项目决定自然地支持OpenPGP。这是一个积极的发展,因为它使MorePepople可以获得OpenPGP,并且允许OpenPGP支持和Thunderbird之间的更紧密集成。 2020年9月,Thunderbird 78.2.1是释放的和,首次提供OpenPGP功能ByDefault。

Thunderbird团队而不是从头开始开始,从Enigmail举起了一个用户界面和管道代码的Lotof。他们与RNP的alsoreplaced gnupg,这对于Bundlethan Gnupg来说明显更容易。

遗憾的是,由于时间限制了许多功能,即享有eNigmailusers的特征被删除,以确保雷鸟用户至少要了解Rudatiantary OpenPGP的东西。例如,Thunderbird具有自定义验收机制而不是使用OpenPGP的本机认证机制而不是使用OpenPGP的本机认证机制。由于未创建QualopenPGP工件,因此难以将判断与另一个OpenPGP实现甚至另一个Opendunderbird安装同步。

我们的新项目章鱼是一个替代的OpenPGP后端之鸟。章鱼实现了RNUNDERBIRD以ABI兼容的方式用于RNP的RNP功能,即它是与Thunderbird 78的图书馆船舶的替代。替代为实现RNP提供的功能,它还恢复缺少的功能,如GnupGintegration,并具有许多非功能性优势包括修复和额外的保护。

在这个演示中,您可以看到aron salih使用股票Thunderbird发送加密的邮件桌上索菲亚。然后,Elise SophiaDownloads Thunderbird,用章鱼替换RNP库,解密邮件并回复。

我们最近学到了(1,2)那个红帽决定在他们的雷鸟建立中讨厌禁止支持,因为RNP使用博纳斯的底层加密库,但博纳不受RED HAT Enterprise Linux(参见Fedora Crypto Consolidation)。

看到SequoIa的默认加密库,荨麻由Redhat Enterprise Linux签发,我们意识到我们可以通过提供使用SemoGia的库来填补差距,并提供RNP提供的aditInterface,或者至少由Thunderbird实际使用的子集。

后来我们意识到直接在章鱼中恢复一些可获得的一些被要求的功能并不复杂。而且,正如我们裔美国人的功能,我们决定将其添加到喉部。

这是自由软件的力量:自由#1允许我们自由地修改Aprogram,并自由#3允许Red Hat送到其用户的利益的主题程序。

章鱼实现了Thunderbird使用的所有功能。,我们很乐意报告,所有Thunderbird的OpenPGP测试飞行的颜色。您可以在此阅读完整日志,但Gistis:

$ ./mach测试邮件/测试/浏览器/ OpenPGP邮件/扩展/ OpenPGP / Test [...]总体摘要=============== Mochitest-浏览器~~~~~~ ~~~~~~~~~~~ 65检查(61个子测试,4个测试)预期结果:65个结果:0okxpcshell ~~~~~~~~~ ran 67检查(66个子测试,1个测试)预期结果:67个结果:0OK.

而且,这里是摩彻斯特的视频运行。它是太快的Tosee任何细节,但看看它仍然很有趣:

您可以在项目中找到构建说明。该文件还包括有关如何使用我们的预编译二进制文件的说明。

章鱼被激烈的PGP团队积极开发。我们认为PEP基金会融资。我们的任务是公正地改善了OpenPGP生态系统,更普遍的是互联网自由工具。

目前,章鱼是在雷鸟之外开发的。这有两个主要原因。首先,雷鸟开发人员尚无崇拜投资资源,以支持最近投资于RNP的新OpenPGP后端。第二,红杉和章鱼在GP1V2 +下传达。虽然GPLV2 +与MPL 2.0兼容,但向Thunderbird添加GPLv2 +代码目前并未对齐他们的许可策略。

不可否认,实施另一个库的API有点狡猾。我们希望看到雷鸟采用SOP。 SOP是令人难以置信的OpenPGP API。当前版本仅针对CLI,否则正常工作要标准化C API和ABI。使用SOP将为用户提供选择。如果需要出现,它也让雷鸟更自由地改变他们的实施。

章鱼包括增强的许多附加功能。我们怀疑对于许多用户来说,与甘瓜的集成将最有趣。但是,我们还添加了一个分组的模仿,并解决了一些安全弱点。

当Thunderbird开始时,它会要求RNP解析其钥匙圈。在此,章鱼也运行GPG - 交换,并包括在ThereSult中。这使得用户的Gnupg钥匙环可用TothunderBird。 (从章鱼上的那个点也监视Gnupg'SkeyStore进行更新。)可以通过将GnupGhome环境变量设置为/ dev / null,如下所示,可以禁用:

从Gnupg导入的证书可以用作正常。在Thunderbird的OpenPGP关键经理中检查它们是可以检查的,Settheir“验收”等。

有两个已知的限制。首先,首次执行OpenPGPoperation,Thunderbird扫描密钥库并创建可用键的AnIndex。 Thunderbird目前没有自己的更新索引。因此,添加到GPG的keyStoreWill的键不会对雷鸟不可见,直到手动闪烁(OpenPGP键控管理器,文件,重新加载密钥缓存),oryou重新启动Thunderbird。其次,如果使用Thunderbird证书管理器删除Managedby Gnupg证书,它将被从内存密钥库中删除,但目前实际上没有从您的GPG密钥库中删除。因此,它将重新出现下一个TimethunderBird负载钥匙圈。

章鱼仔细地跟踪了Gnupg的装载了哪些证书,如果被修改,只能将它们写成雷鸟的钥匙圈;修改后的证书目前尚未将其卷写到GNUPG。但是,与GNUPG的钥匙圈偏移更仔细。

章鱼自动监视将密钥加载到GPG'SAgent中的哪些键,并向Thunderbird报告秘密关键材料对它们进行。这意味着它是在没有修改Thunderbird的配置文件的情况下将代理作为Thunderbird的个人密钥标记为雷鸟的个人密钥是微不足道的。此外,尝试将加密到由代理管理的密钥加密的解密到代理用于解密。

与雷鸟不同,章鱼直接谈到代理人。因此,没有必要安装GPGME;你只需要有GPG inyour路径。

Thunderbird仅支持Foruthing OpenPGP证书的自定义“验收”机制。 Thunderbird忽略Keysignatures,并且无法添加认证机构。

当Thunderbird启动时,章鱼读取了GPG的信任数据库,并将其合并到Thunderbird的验收数据库中。这是由Gnupg进行认证的方法是通过Thunderbird认证的Alsoconsidered。

这种整合是仔细完成的。如果用户在Thunderbird中手动接受了acercericate,则不会覆盖该设置。此表达不仅在初始导入期间,还稍后:当观众在Thunderbird中接受证书时,章鱼检测到这一个将不再更新该证书的基于Ingnupg的信任数据库。

章鱼监视Gnupg以改变其信任数据库。因此,与新证书添加到Gnupg的密钥库时,重新缩小雷鸟以注意触发器的更改是不必要的。

Parcimonie是一种功能,可以使用许多PrivacyPresAving技术在后台中自动刷新User'OpenPGP证书。特别是,更新是交错的,并且更新之间的动脉时间来自无记忆分布,TofRustrate攻击者何时检查用户将检查探测器更新。 Enigmail有自己的这种机制版本,但是当Enigmail被整合到Thunderbird时,它被播放。

章鱼中的Parcimonie功能目前使用上述隐私保留机制检查keys.openpgp.org和相应的Web密钥目录(WKDS)的更新。它会检查所有未撤销的有效证书的updates,每周一次,onaverage。它还支持从用户ID的更新合并更新。

在导入证书之前,我们首先检查它是否似乎被淹没。如果是这样,我们将从钥匙中提供第三方认证,即我们没有证书的钥匙,因为这些认证是缺乏无用的。

此功能由NET功能控制,该功能由DEFault启用。要禁用它(并ELINE在Sequoia-Netand Tokio上的依赖项),构建如下:

章鱼使用SequoIa,默认情况下,拒绝被称为弱的加密算法。不幸的是,RNP仍然是acceptsmd5,在​​其他易受攻击的算法中,没有警告。 Thunderbirdhas在RNP的版本中修补了MD5,但是,他们分配的RNP版本,然而,Thunderbird继续支持无限使用SHA-1,这已知是易受碰撞攻击的影响。红杉,延伸,章鱼,章鱼,拒绝使用Weak加密基元的证书和消息。因为RNP没有机制指示不应该使用证书或组件,所以TheOctopus将这些密钥报告为在其创建时间之后已过期。

当Thunderbird创建电子邮件时,它使用RFC 1847封装方法构造,已知已被打破超过20年。问题是,如果Alice签名并将其发送Tobob,则Bob可以在不同上下文中使用签名。

可以使用OpenPGP的预期收件人固定来修复此安全问题。然后,如果鲍勃转发签名的消息(例如,“我欠你100欧元”)到Carol,Carol的Mua将标志着签名,因为Invallas她不是信息的预期收件人。

在章鱼中,我们检测到使用封装方法的使用,并随意透明地用更安全的组合方法更换。具体来说,当我们加密消息时,我们检查我们是否只是生成了签名部分。如果是,我们修复它。因为它会产生另一个签名,如果您使用GPG代理的关键字,则可能会提示您授权秒数。

Sememoia在不使用时自动加密未加密的秘密密钥材料。这使得秘密关键的抗污染ala令人讨厌,并防止幽灵,行波姆,等风格攻击。 OpenSSH使用相同类型的保护。

RNP具有锁定和解锁键的概念,但这种是xexplicit,而雷鸟在使用后并不总是重新锁定键。

SHA-1被打破了。不幸的是,SHA-1仍然被广泛使用。这种红杉的幼儿植物实现了许多对策:

SemoIa使用SHA1-CD,SHA-1的变种,检测Andmitigates碰撞攻击。 GitHub也使用这种保护等。

Sequoia只接受SHA-1在更安全的上下文中。例如,SHA-1在消息中,它在默认情况下使用的第三方认证。但是,允许令人愉悦的SHA-1自我签名。

Sememoia宣布了一个完全剥夺SHA-1的时间表:在2023年,SHA-1将不再被接受的争夺签名。

RNP接受SHA-1无任何额外的保护。 bydefault,它甚至接受MD5。愉快地,Thunderbird携带禁用MD5支持。

红杉包括签名和自我签名的盐,以防水碰撞攻击等。 openssh做了stemething。如果另一个哈希的碰撞阻力被破坏,这将使攻击者试图执行垃圾碎片抹布。

RNP维护单独的公共和秘密键控。这可能导致似乎在Beykys中存在证书的aso调用的分脑问题,并且有时会返回混乱的一个版本,以及其他版本的其他时间。这也是Gnupg 1. X的模型,并且是Gnupg迁移到Gnupg 2.0中的一个原因之一,只有代理的秘密密钥材料。

为避免此问题,章鱼合并两个数据库。与RNP兼容的Toremain兼容,当章鱼写出创作,带有密钥材料的证书被写入sect.gpg和那些没有被写入猪的gpg。

由于Rust的混乱并发范式范式,它不太危险,对于章鱼使用线程而不是其他语言的Libraries.例如,章鱼使用这一点来解析键控速度。并在后台执行更新。

Semenoia几乎实现了所有OpenPGP RFC。 唯一缺失的位是缺乏伊利伊尔尔的支持。 RNP无法实施许多重要部分。 例如,它不拒绝未知的关键子包和符号。 这是安全问题。 RNP无法处理未知的数据包版本。这是一个未来的兼容性问题。 RNP也没有处理“eSoteric”密钥,如共享密钥,只共享加密子项的钥匙材料。 这是一个兼容性问题。 Moreexamples可以在OpenPGP互操作性测试套件中找到。 在过去几个月里,我们有几个富有成效的EmailExchanges,与雷鸟团队的Magnus和Kai会面。我们感谢他们提供的帮助和反馈。