Decentralization? We're still early!

Accrescent:专注于安全、隐私和可用性的Android 应用商店

  • Accrescent:专注于安全、隐私和可用性的Android 应用商店

    發布人 Brave 2024-08-21 16:47

    一、什么是 Accrescent

    Accrescent 是一个私密且安全的 Android 应用商店,旨在提供现代化的功能和用户体验。它不仅关注开发者的需求,还确保用户的隐私和安全。

    Accrescent 的诞生源于对现有应用分发模式安全缺陷的深刻反思。 该项目由开发者 Logan Magee 于 2021 年创建,他是一位专注于应用程序和操作系统安全的软件开发者。Logan 花费近一年时间从零开始设计这款应用商店,目标是解决现有 Android 应用商店(包括 Google Play 和 F-Droid)在安全性、隐私和可用性方面的固有问题。

    📌 核心定位:Accrescent 不仅仅是一个应用分发渠道,更是一个以安全为设计基础的生态系统。它致力于在不牺牲用户体验的前提下,提供企业级的安全保障。

    截至目前,全球已有超过 42,000 名用户信任 Accrescent 来安全地获取应用程序。 Accrescent 已获得安全领域备受尊敬的 GrapheneOS 团队的认可与推荐,被收录于 GrapheneOS 应用商店中。


    二、主要特点

    Accrescent 提供了一系列独特的功能,使其在众多 Android 应用商店中脱颖而出:

    2.1 应用签名密钥固定(Signing Key Pinning)

    首次安装应用时会进行验证,确保应用的真实性。

    🔐 技术原理详解

    当开发者向 Accrescent 提交新应用时,其应用公钥的哈希值会被添加到签名的存储库元数据中。每次客户端下载该应用时,都会检查这个签名密钥哈希值。如果哈希值不匹配,安装将被拒绝。

    这项检查对于首次安装尤为重要。虽然 Android 系统本身会在应用更新时强制执行密钥固定(即后续更新必须使用相同的签名密钥),但操作系统采用的是"首次使用即信任"(Trust-on-First-Use, TOFU)的方式,无法验证初始安装是否由正确的证书签名。Accrescent 通过在签名元数据中固定证书,确保即使是首次安装也是合法的。

    2.2 签名的存储库元数据(Signed Repository Metadata)

    保护存储库内容免受恶意篡改。

    📋 元数据包含的安全信息

    元数据类型安全作用
    签名密钥哈希验证应用来源的真实性
    最低版本号防止降级攻击
    应用名称防止仿冒应用欺骗用户
    TLS 证书固定防止中间人攻击

    关于最低版本固定:签名元数据中的每个应用都有一个定期更新的最低预期版本号。Accrescent 将拒绝安装低于最低版本的应用。此检查可缓解攻击者提供过时版本应用的威胁(即降级攻击)。

    关于应用名称验证:Accrescent 将应用名称存储在签名元数据中,用于验证客户端 UI 中显示给用户的应用名称。签名应用名称使攻击者更难欺骗用户安装恶意的仿冒应用。

    关于 TLS 证书固定:Accrescent 为其存储库的所有连接固定 Let's Encrypt 根证书和中间 TLS 证书。此功能可缓解流氓/被入侵的证书颁发机构为存储库颁发欺诈证书并发起中间人攻击的威胁。

    2.3 自动、无人值守的更新

    无需特权操作系统集成,更新过程无缝进行。此功能在 Android 12 及以上版本完全支持,无需 root 权限或特殊操作系统。

    ⚙️ 工作机制

    当应用更新到达时,用户无需手动批准每个更新。更新会在设备空闲时静默在后台完成。这种"设置后即忘记"的体验意味着用户始终运行最新、最安全的应用版本。

    在 0.27 版本中,Accrescent 进一步增强了此功能:应用下载和安装现在可以在后台可靠地继续进行,即使 Accrescent 应用被关闭也不会中断。

    2.4 支持拆分 APK(Split APKs)

    下载的 APK 针对设备进行了优化,节省带宽。

    📦 技术说明

    传统的应用分发方式是提供一个包含所有架构(arm64、armeabi-v7a 等)和所有屏幕密度资源的单一 APK 文件。Accrescent 采用拆分 APK 的方式,将应用分成更小的模块化部件进行安装。

    这意味着:

    • ✅ 用户只下载适用于其设备的代码和资源
    • ✅ 显著减少下载大小和安装时间
    • ✅ 节省设备存储空间
    • 在 0.27 版本中,安装所需的存储空间进一步减少

    开发者端的变化:Accrescent 不接受单一的 APK 文件,开发者需要使用 Google 开源的 bundletool 工具生成拆分 APK(.apks 文件),然后自行签名并上传。

    2.5 无远程 APK 签名

    开发者完全控制其应用的签名密钥。

    🔑 这是 Accrescent 与 Google Play 的关键区别之一

    • Accrescent:开发者使用自己的密钥签名 APK,然后上传到应用商店。Accrescent 本身从不签名应用。
    • Google Play:自 2021 年 8 月起,Google Play 要求使用 Play App Signing,由 Google 托管和管理应用签名密钥。

    这种设计带来的安全优势

    💡 如果 Accrescent 的服务器被入侵,开发者的签名密钥不会受到影响,应用商店也无权安装修改过的应用更新。二进制签名必须与固定的开发者密钥匹配。

    2.6 无需账户

    用户无需账户即可安装应用,进一步提升隐私保护。

    👤 与主流应用商店的对比

    应用商店账户要求隐私影响
    Google Play强制要求 Google 账户应用安装与 Google 身份关联
    Apple App Store强制要求 Apple ID应用安装与 Apple 身份关联
    F-Droid无需账户良好的隐私保护
    Accrescent无需账户最佳隐私保护

    这意味着 Accrescent 不会收集用户的个人信息,也不会将应用安装行为与任何身份标识关联。


    三、安全与隐私

    Accrescent 强调安全和隐私,通过多种措施确保用户和开发者的安全:

    3.1 多层安全防护体系

    🛡️ Accrescent 的安全架构采用纵深防御策略

    ┌─────────────────────────────────────────────────────┐
    │                   用户设备                           │
    │  ┌─────────────────────────────────────────────┐   │
    │  │            Accrescent 客户端                 │   │
    │  │  ┌───────────────────────────────────────┐  │   │
    │  │  │    签名密钥验证 + 版本验证              │  │   │
    │  │  │  ┌─────────────────────────────────┐  │  │   │
    │  │  │  │      TLS 证书固定连接            │  │  │   │
    │  │  │  └─────────────────────────────────┘  │  │   │
    │  │  └───────────────────────────────────────┘  │   │
    │  └─────────────────────────────────────────────┘   │
    └─────────────────────────────────────────────────────┘

    3.2 与传统应用商店的安全对比

    为什么需要 Accrescent? 让我们看看现有解决方案的问题:

    🔴 Google Play 的安全问题

    尽管 Google 承诺重视安全,但 Google Play 商店仍频繁出现恶意应用。仅在 2025 年,研究人员就在 Google Play 商店中发现了数百款恶意应用。 这促使越来越多注重安全的用户寻找替代方案。

    🟡 F-Droid 的安全局限性

    虽然 F-Droid 在开源社区广受欢迎,但它存在一些安全方面的争议:

    问题类别具体描述
    签名模式所有应用由 F-Droid 统一签名,而非开发者签名,增加了信任链中的第三方
    API 级别F-Droid 客户端使用较低的 API Level(25),绕过了 Android 的部分安全策略
    更新延迟由于需要重新构建和签名,应用更新通常滞后于官方发布
    攻击面较低的 API 级别意味着应用沙箱较弱,攻击面增大

    安全社区的推荐层级:一些注重隐私的社区(如 Privacy Guides)建议的应用获取优先级为:GrapheneOS 应用商店 > Accrescent > Google Play > F-Droid(仅在其他渠道无法获取时使用)。

    🟢 Accrescent 的安全优势

    Accrescent 被描述为"一个新兴的应用仓库,致力于解决 F-Droid 中存在的安全问题,并有望发展成为一个安全且开放的应用分发生态系统"。

    3.3 严格的应用审核机制

    Accrescent 对上架应用有严格的质量控制措施:

    📋 禁止的行为和功能

    • ❌ 不得直接或间接使用 ADB(Android Debug Bridge),包括通过 Shizuku 或无线调试等代理
    • ❌ 不得利用 root 权限实现任何功能
    • ❌ 不得内置自更新器(所有更新必须通过 Accrescent)
    • android:debuggable 属性不得为 "true"
    • android:testOnly 属性不得为 "true"

    📋 需要人工审核的权限

    某些敏感权限的添加会触发人工审核:

    • REQUEST_INSTALL_PACKAGES:如果使用不当将被禁止
    • MANAGE_EXTERNAL_STORAGE:这是一个高度侵入性的权限,几乎总是不必要的。开发者应优先考虑使用内部应用存储、MediaStore API 和/或存储访问框架

    如果应用请求其不合理需要的权限,或使用权限在未经用户知情同意的情况下共享敏感数据,审核将失败。


    四、用户体验

    Accrescent 旨在提供愉快的用户体验:

    4.1 无缝的更新体验

    更新过程完全自动化

    • 后台静默检查更新
    • 无需用户确认即可完成安装
    • 在设备空闲时进行更新,不干扰日常使用
    • 0.27 版本新增:即使应用被关闭,下载和安装仍可在后台继续

    4.2 智能的安装管理

    🎯 Accrescent 的智能安装策略

    • ✅ 自动检测设备兼容性,不会尝试安装不兼容的应用
    • ✅ 不会更新非 Accrescent 安装的应用,避免签名冲突
    • ✅ 优化的拆分 APK 下载,显著节省带宽和存储空间
    • Android 15 新增:初步支持应用归档功能,可在保留用户数据的情况下释放存储空间

    4.3 开发者友好的生态

    👨‍💻 Accrescent 为开发者提供

    • 完整控制应用签名密钥
    • 标准化的 bundletool 构建流程
    • 透明的审核标准和要求
    • 专业的开发者控制台(console.accrescent.app)

    域名验证机制:为验证开发者对其发布应用的所有权,Accrescent 正在逐步引入要求:所有新提交的应用必须验证与其应用 ID 关联的域名所有权。例如,如果应用 ID 是 com.example.securechat.android,则需要证明你控制 example.com 域名。


    五、社区与支持

    Accrescent 拥有活跃的社区,用户可以通过多种平台参与讨论和获取最新消息。

    5.1 官方沟通渠道

    🌐 社交媒体与社区平台

    平台用途
    Matrix实时技术讨论和社区互动
    Mastodon官方公告和更新(@accrescent@infosec.exchange
    Bluesky创始人 Logan Magee 的个人动态(@lberrymage.dev)
    GitHub源代码托管、问题追踪、功能讨论

    5.2 开源与透明

    📖 完全开源的项目

    Accrescent 的所有源代码都发布在 GitHub 上(github.com/accrescent),采用宽松的 ISC 许可证。这意味着:

    • 任何人都可以审查代码
    • 任何人都可以自行构建和运行
    • 欢迎社区贡献和反馈

    目前 Accrescent 在 GitHub 上维护 14 个代码仓库,涵盖客户端、开发者控制台、文档等多个组件。

    5.3 资金与可持续发展

    💰 免费但需要支持

    Accrescent 完全免费,因为其创始人认为安全不应该有价格门槛。该项目完全依靠捐款来支付运营成本、费用和服务器开支。

    在 0.27 版本中,Accrescent 添加了定期捐款提示功能,以帮助项目的可持续发展。但这不会影响用户对应用商店的完整访问——即使不捐款,用户也可以完全使用所有功能。


    六、下载与安装

    6.1 系统要求

    📱 兼容性

    • 最低要求:Android 10 及以上版本
    • 推荐版本:Android 12 及以上(以获得完整的自动更新体验)
    • 最新适配0.27 版本已更新以适配 Android 16,并启用了 Android 16 的严格意图匹配

    6.2 安装方式

    📥 获取 Accrescent 的途径

    方式一:GrapheneOS 应用商店(推荐给 GrapheneOS 用户)

    • 在 GrapheneOS 系统内置的应用商店中直接搜索安装
    • 这是最安全的获取方式

    方式二:官方网站下载

    1. 打开手机浏览器,访问 accrescent.app
    2. 向下滚动,点击"Download Accrescent"
    3. 可能会看到关于下载潜在有害文件的警告,点击"确定"继续
    4. 打开下载的 APK 文件
    5. 如需要,在设置中允许从该浏览器安装未知来源的应用

    方式三:GitHub Releases

    6.3 开发者入门

    🛠️ 如何在 Accrescent 上发布应用

    1. 申请开发者账户
    2. 准备应用
      • 安装 bundletool(Google 的开源工具)
      • 生成拆分 APK(.apks 文件),而非单一 APK
      • 使用自己的密钥签名
    3. 提交审核
      • 上传 .apks 文件(≤150 MiB)
      • 上传应用图标(512×512 PNG)
      • 如应用需要登录才能使用,需单独联系团队提供测试账户
    4. 等待审核
      • 审核员将检查应用是否符合要求
      • 详细要求请参阅 官方文档

    七、最新动态与未来展望

    7.1 版本更新历程

    📅 近期重要更新(0.27 版本,2025年10月)

    更新内容说明
    全新应用商店 API稳定的 API 用于获取应用信息,提升可靠性
    原子化元数据更新存储库元数据现在原子化更新,增强数据完整性
    后台下载与安装即使应用关闭,下载和安装仍可继续
    存储优化减少了安装所需的存储空间
    兼容性改进不再尝试安装不兼容的应用
    适配 Android 16启用严格意图匹配等新特性
    捐款提示添加定期捐款请求以支持项目发展

    7.2 当前状态与局限性

    ⚠️ 需要了解的限制

    • 应用数量有限:作为一个仍处于 Alpha 阶段的项目,Accrescent 上的应用数量相对有限
    • 审核周期:由于严格的安全审核,应用上架可能需要较长时间
    • 开发者准入:开发者账户需要申请白名单

    但这些限制正是 Accrescent 安全性的体现——宁缺毋滥,确保每个上架应用都经过严格审查。

    7.3 行业动态

    🔮 值得关注的变化

    Google 最近宣布,从下一年开始,Android 将要求所有应用必须由经过验证的开发者注册。 Accrescent 团队正在等待 Google 提供更多关于此计划如何影响第三方应用商店的细节。这可能对整个 Android 应用分发生态产生深远影响。


    八、总结

    Accrescent 是一个注重安全、隐私和用户体验的 Android 应用商店,适合那些希望在安装应用时获得更多控制权和隐私保护的用户。

    🎯 Accrescent 适合的用户群体

    • 🔐 对安全有较高要求的用户
    • 🕵️ 注重隐私保护的用户
    • 📱 GrapheneOS 或其他注重安全的 ROM 用户
    • 👨‍💻 希望完全控制应用签名密钥的开发者
    • 🏢 对应用来源有严格要求的企业用户

    尽管 Accrescent 仍处于 Alpha 阶段,应用数量有限,但它代表了 Android 应用分发的一个重要发展方向——将安全性和隐私保护置于首位,同时不牺牲用户体验。随着项目的不断成熟和更多开发者的加入,Accrescent 有望成为安全意识用户的首选应用商店。


    参考资源

    📚 官方资源

    Brave 回复 11 months ago 1 成員 · 0 回复
  • 0 回复

歡迎留言回复交流。

Log in to reply.

讨论開始
00 回复 2018 年 6 月
現在