News

A new F-Droid board for a new era of growth

THE INTERNET, 20 March 2023 — The global F-Droid community is pleased to announce that it has officially accepted the merge request to adopt an official governance plan, and an inaugural board of directors consisting of community-nominated members. The community has been legally established through The Commons Conservancy, a Netherlands-based...

VPN 信任需要自由软件

VPN 已经变得流行,并且经常被吹捧为改善隐私的工具。虽然有时确实如此,但在选择 VPN 时务必谨慎行事。一个好的起点是查看哪些 VPN 提供商满足运行可信赖的 VPN 服务的要求。值得信赖的 VPN 必须是自由软件,这没有商量的余地。首先,需要检查才能选择信任软件。拥有源代码是查看软件正在做的所有事情的唯一途径。F-Droid 审查我们在本网站上发布的应用,这让我们能够发现潜在的问题和负面特征。我们很高兴听到信誉良好的 VPN 提供商努力在 f-droid.org 上发布他们的应用以建立与用户的信任。进一步,可重复构建 在源代码和设备上运行的实际应用二进制文件之间提供了强有力的链接。 最好的 VPN 不仅客户端应用是自由软件,而且使用自由软件运行服务。事实上,所有 OpenVPN、Shadowsocks 和 WireGuard VPN 都基于自由软件,因为这些标准是由自由软件项目定义的。F-Droid 将此作为审查的一部分进行调查,并标记具有相关负面特征的应用,例如,如果服务器端不是免费软件则标记为非自由网络服务。并且有许多自由软件项目可以更轻松地设置和运行 VPN 或代理服务。以下是 f-droid.org 上的一些内容: Bitmask 是支持 Calyx VPN、Riseup VPN 等的 LEAP VPN 通用客户端。 eduVPN 是用于运行 eduVPN 的 Let’s Connect VPN 的客户端。 OpenVPN for Android 通用...

新的存储库格式实现更快和更小的更新

我们刚刚发布了适用于 Android 的官方 F-Droid 客户端应用 1.16 版本,其中包括许多底层的彻底改变以及针对长期存在的问题的许多错误修复。请继续阅读以了解详情。 不断增长的存储库大小 随着越来越多的应用进入 F-Droid,包含所有应用及其元数据的官方存储库索引也在不断增长。目前,压缩后索引的大小为 8 MB,未压缩时为 33 MB。更新存储库索引时,每个 F-Droid 客户端应用都必须一次又一次地下载和处理那些 8MB。这种有问题的趋势很久以前就已经变得很明显了。 仅更新有变化的内容 我们的存储库索引采用 JSON 格式,我们决定使用 RFC 7396 JSON Merge Patch 创建更小的 JSON 文件,其中仅包含自你的 F-Droid 应用上次更新以来的变化。从技术上讲,这是通过下载新的 entry.json 文件而不是完整索引来实现的。这个入口文件指向完整的索引,以防应用以前从未更新过并且无论如何都需要所有应用元数据。但该条目还包含指向各种较小的 差异 文件的指针。应用会自动选择正确的差异,并且只下载那个小得多的文件而不是完整的索引。这不仅可以节省带宽,还可以更快地更新索引,因为只需要下载、处理和存储最少量的数据。在撰写本文时,最新的差异压缩后 80 KB,未压缩时为 241 KB,仅是完整索引的 1%。官方 F-Droid Android 客户端应用 1.16 版本支持这种新的存储库格式。 其他改进 新版本在底层进行了大量彻底的更改。例如,必须替换整个数据库以支持新的基于差异的存储库格式。我们还借此机会改进了各种边边角角: 改进的镜像支持:所有文件(例如图像)现在都从镜像加载,减少了主服务器上的负载 更好地支持小内存设备,因为索引现在被流式传输到数据库中,而不是将其全部加载到内存中 哈希验证:所有...

SHIFT6mq 捐赠

2022 年,德国公司 SHIFT 向 F-Droid 团队成员捐赠了三部型号为 SHIFT6mq 的智能手机,作为 * 终身借用 *。这次捐赠没有要求任何回报。但是,我们确实想分享我们使用这些设备的经验。 SHIFT6mq 手机 © SHIFT。 首先,SHIFT 专注于制造名为 SHIFTphone 的可持续耳机、平板电脑和智能手机,因此他们使用公平贸易材料,甚至使用陶瓷电容器替代特定的稀有金属。他们所有的产品都是模块化的,因此更容易维修。 YouTube 视频链接显示了 SHIFTphone 的模块化程度。 我们的一位团队成员真的带着他的 SHIFT6mq 去了镇上。这些设备带有自己的 Android 版本,称为 ShiftOS-G 并已通过 Google 认证。在他的文章“没有 Google 的 Android:Shiftphones”中,他评论了该设备及其操作系统。然而,他更进一步并通过安装 ShiftOS-Light (ShiftOS-L) 将其去 Google 化。最好先阅读那篇文章,然后再继续阅读本文。那篇文章还帮助其他团队成员更深入地探索这款智能手机。进一步的反馈称赞它的电池寿命和去 Google 化后使用的数据更少。 目前,SHIFT6mq 是 SHIFT 中唯一受 LineageOS 支持的模型,因为此支持是由 SHIFT 的开发人员之一完成的。我们预计他们未来的模型也将与...

向可重复的 F-Droid 前进

针对 F-Droid 的一个常见批评是,F-Droid 使用自己的密钥对已发布的 APK 进行签名。使用我们自己的密钥并不意味着不安全—我们有良好的记录(并且将密钥保存在专用、气隙、离线的机器上) 而其他人可能并非如此—但这确实意味着我们的用户需要信任上游开发者以外的第三方。 拥有不同的签名也会使用户无法从其他渠道安装更新,从而给用户带来不便;当我们难以为应用提供更新时,这尤其麻烦。开发者有时还需要为了 F-Droid 调整设置,例如禁用应用内更新器或添加 F-Droid 签名以进行验证。 F-Droid 并不是唯一发布使用自己的密钥签名的 APK 的应用商店—Google Play 现在也这样做。通过“app bundle 的代码透明性机制”,Google 提供了一种方法来验证 APK 中的 DEX 文件和本机库是否与开发者提供的那些相同。这确实解决了其中的一些问题,但代码透明性机制并不能保护 APK 中的许多其他重要文件,例如解释性代码或资产。而且与 APK 签名不同,它完全是可选的(对开发者来说是一个额外的负担)并且必须手动执行验证。它也没有解决无法安装具有不同签名的 APK 的不便。 对于这些问题,F-Droid 很早以前就有更好的解决方案了:可重复构建。然而,它从未被广泛使用。原因之一是它听起来很难实现。我们几乎没有可重复的应用(准确地说:只有 6 个),并且其中一些因为使用可重复构建而遇到了问题。基本上,除非上游开发者有兴趣,否则我们懒得提及可重复构建。因此,许多开发者甚至从未听说过可重复构建,更不用说知道 F-Droid 支持它们了,也不会尝试将它们用于自己的应用。 为了回应其中的一些批评,我们开始鼓励新应用使用可重复构建。事实证明,对于许多应用来说,可重复构建并不难实现。在过去的几个月里,我们在 F-Droid 中获得了比以前更多的可重复应用。目前我们无法在客户端突出显示哪些应用是可重复的,因此您可能没有注意到有许多使用上游开发者密钥签名的新应用。如果您启用了一些第三方存储库,例如 IzzySoft,您可能会发现有时您可以从主存储库更新应用,即使您是从另一个存储库安装的。 同时,既然我们遇到了比以前多得多的测试用例,我们也发现了许多影响可重复性的新问题。幸运的是,我们还为其中的大多数找到了解决方法,并开发了一些使 APK 可重复的工具,这主要归功于@obfusk 的贡献。还有一些悬而未决的问题,我们仍在努力解决它们。如果您对可重复构建感兴趣,欢迎贡献。

第三次审计结果

我们收到了对官方 Android 客户端应用 + API(3 天)和新前端网络服务器设置(1 天)中新 “index-v2” 工作的审计。在网络服务器设置中没有发现问题,因此本文中的分析涉及 F-Droid 客户端应用。审计由 Radically Open Security 进行,它是 F-Droid 的天然合作伙伴,因为他们同样关注自由软件和开放流程。感谢 NLnet 找到审计员并支付雇用他们的费用。我们提供原始报告以供下载。 这篇文章是本着以开诚布公的精神对待每个漏洞风险的技术细节而写的。 我们欢迎进一步审查。有关 F-Droid 的安全实践的更多信息,请参阅有关安全模型的文档。 CLN-002 – XML 解析器可能容易受到 XXE 攻击 漏洞类型:输入验证 威胁等级:高 应用的 XML 解析器实现可能容易受到 XML 外部实体 (XXE) 攻击。 影响 如果 XML 解析器对外部和内部实体没有限制,那么在解析 XML 输入时,这可能会导致任意文件泄露或服务器端请求伪造 (SSRF) 漏洞。 我们的回应 原始索引文件,版本 0 格式,是作为任何存储库的一部分生成的...

UnifiedPush:一种去中心化的开源推送通知协议

现代 Android 智能手机依赖于大量服务,从应用商店和日历到消息传递和推送通知。他们中的大多数都有开放的替代方案,但直到现在,推送通知的唯一选择是 Google 的专有服务,Firebase Cloud Messaging (FCM)。 UnifiedPush 是一种新的替代方案,它允许您在不依赖于单个公司的情况下获得推送通知。 推送通知对于现代移动体验至关重要,因为它们允许应用与用户实时通信,即使未在主动使用时。依赖 Google 提供的推送通知导致了对隐私和独立性的担忧。专有的 FCM 库不能包含在 F-Droid 应用中,并且依赖于 Google 服务。因此,通常会看到 FOSS 应用采用应用和服务器之间的持久直接连接作为替代方案。 应用-服务器直接连接的局限性 虽然从技术上讲每个应用都可以连接到自己的服务器并直接接收通知,但有多种原因导致这种方法可能并不实用或有效。 在应用和服务器之间建立和维护直接连接可能会占用大量资源,影响设备的电池、CPU 和网络资源。 为了最大限度地减少资源负载,操作系统 (OS) 会尝试挂起未被主动使用的应用。但是,如果每个应用都主动维护服务器连接,则操作系统无法暂停它们。 多个应用以可变的时间间隔 ping 自己的服务器会阻止设备进入低功耗睡眠模式,这会更快地耗尽设备的电池。 让一个特殊的应用能够建立优先连接可以最大限度地减少这些问题,并允许操作系统有效地挂起其他应用并进入睡眠状态,从而节省资源并减少电池消耗。 作为开发者,管理后台服务和优化连接可能既复杂又耗时。通过使用推送通知服务,您可以将此责任转移到专门的应用,让您专注于应用的其他方面。 作为用户,我要如何开始使用 UnifiedPush? 支持 UnifiedPush 的应用可以通过专用的 UnifiedPush 应用接收通知,该应用维护单个服务器连接以接收所有通知。我们将此“UnifiedPush 应用”称为 分发器;它将推送通知分发到设备上的其他应用。您可以选择要使用的分发器,自行托管服务器部分,甚至创建自己的分发器。有关分发器的更多信息,请查看完整列表。 要在支持它的应用上使用 UnifiedPush,您必须安装和配置您的分发器。您可以使用 UP-Example 作为简单的测试应用。 所有分发器与应用都兼容 TL;DR 关于 Android...

应用描述的更新

F-Droid 旨在为应用开发者提供一种向用户展示其应用的好方法。每个应用都可以包含描述、相关元数据和翻译。我们刚刚更新了应用说明中允许的 HTML 格式标签列表,以更清楚地说明哪些有效,哪些无效。这应该可以帮助开发者更轻松地将描述文本与其他也允许使用某些 HTML 的应用商店同步。网站生成过程有两个关键更改: 不允许的 HTML 标签现在在它们被转义之前(例如 <script>)就被自动删除(“剥离”)。 现在我们将严格执行允许的标签列表。 Loofah 中的一些安全问题促使我们做出了此项更改,我们依赖该工具从应用描述中删除危险的 HTML。f-droid.org 使用多层防御,极大地限制了安全漏洞的范围。例如,此站点包含对属于本网站的 URL 禁用最危险功能并限制其余功能的内容安全策略。 对于那些对技术细节感兴趣的人:HTML 允许通过 data: 方案内联包含数据块。然后可以滥用它来加载恶意内容。Loofah 没有正确处理这些。该站点的内容安全策略已经禁止对 data: 的所有使用,因此这不是问题。self 关键字表示“仅允许来自当前来源的资源”,也就是 https://f-droid.org。

RSS RSS