Safe Haven 中文文档 下载 App

Safe Haven 五层信任机制,把来源和扫描结果摆到桌面

为什么要拆成五层

Safe Haven 不做"安全 / 不安全"的二元判断——那种判断对用户来说太模糊,而且任何商店都不敢打包票。它选择了一个更实在的办法:把能拿到的事实拆成五个独立维度,每个维度对应一个在应用详情页上可见的标志。

用户看到的不是一个"绿色对勾",而是五个不同颜色的标志,每个标志告诉一件具体的事。五个标志全亮 = 当前能拿到的信息最完整;亮几个就看几个;一个都没 = 和随便从网上下一个 APK 没本质区别。

下面按信息的重要程度从上往下看。

第一层:源码登记(Source Linked)

它是什么

应用条目关联了一个公开的源码仓库链接——GitHub、GitLab 或 Codeberg。详情页上直接展示仓库入口,用户点进去就能看提交历史、Issue、Release 记录。

它说明什么

"这个应用的代码是公开的,你可以自己去看。"

注意:源码登记不说明代码质量好、不说明应用安全。它只说一件事——有地方可以去查。

它的局限

有些商业应用选了不开源,那这个标志就不会有。这不是 Safe Haven 漏了,是应用本身没有公开源码。还有些社区贡献的条目可能登记了一个不对的仓库地址,但扫描管线不会自动校验仓库里的代码和 APK 里的代码是否一致——这属于第二层的事。

第二层:已验证源码(Verified Source)

它是什么

开发者在自己的源码仓库根目录放一个叫 .safehaven 的文件,文件内容是 Safe Haven 后台给的一个唯一 token。Safe Haven 服务端会定期去抓这个文件,比对 token 是否匹配。

匹配成功 → 这个应用的源码仓库已经被开发者本人认领过了。

它说明什么

"这个仓库的管理员自己证明了:Safe Haven 上的这条应用条目是我提交的,仓库里的代码和商店里的 APK 是同一个项目。"

这是五层里可信度最高的一个标志——因为它需要开发者亲自在自家仓库根目录放一个文件来完成握手。有人冒充不了。

它的局限

已验证源码不代表代码没问题、不代表扫描通过。它只确认一件事:开发者身份和仓库归属的对应关系。

第三层:未验证上架(Unverified Listings)

它是什么

应用条目是社区贡献的或自动化发现的,还没有被原始开发者认领。条目会明确标注"Unverified Developer"(未验证开发者)。

它说明什么

"这条应用不是作者自己提交的,是社区或自动化工具发现后先放进来的。开发者还没来认领,也可能永远不会来。"

这个标志默认是红色或警示色,目的是让用户一眼就能区分。有这个标志的应用 = "来路还没确认"。

认领流程

原始开发者发现自己的应用在 Safe Haven 上但没被自己认领,也可以去完成验证握手。认领后条目会从"未验证"切换到"已验证"状态。

第四层:APK 扫描(APK Scanning)

它是什么

每个 APK 在进入公开目录之前必须过一遍扫描管线。扫描管线跑在独立的 Linux VPS 上,是一个叫 safehaven-scanner 的 Python 后台服务。

它扫什么

扫描管线做的事情按先后顺序:

  1. 计算 APK 的 SHA-256 哈希值,检测重复提交
  2. 从 APK manifest 里提取真实的版本号、包名,和提交时声明的做比对(不一致就覆盖或拒绝)
  3. 提取签名密钥哈希,用于后续签名锁定
  4. 可选地跑 VX-TITANIUM 引擎(字节结构解析 + ML 分类器),检测混淆的恶意载荷
  5. 查本地 SQLite 威胁数据库(每 2 小时从公开威胁源更新一次)

它说明什么

"这个 APK 至少过了一遍自动化扫描管线,管线没有检出已知的恶意签名或哈希。"

它的局限

Safe Haven 自己也承认——"commercial security software in the live build"(使用商业安全软件做扫描),但商业扫描也有误报和漏报。VX-TITANIUM 引擎(v9,2026 年 6 月)用的是签名数据库 + 哈希查找 + ML 分类器,不使用 YARA 规则。

第五层:签名锁定(Signing-Key Pinning)

它是什么

首次扫描时,Safe Haven 把 APK 的签名密钥哈希记录在应用条目上。之后每次复扫都拿新扫到的哈希和记录值做比对。

如果哈希变了 → signing_key_changed 标志被置位,应用触发人工审查。

管理员可以手动覆盖哈希(比如开发者合法轮换密钥),但每次覆盖都会被记录到审计日志里。

它说明什么

"这个应用上架之后签名有没有变过。变了 = 有人换包了,不管是开发者轮换密钥还是第三方篡改,都会被标记。"

它的价值

安卓系统本身在安装时也会检查签名——同包名不同签名会拒绝覆盖安装。但 Safe Haven 把这个检查前置到了上架流程里,让用户在安装前就能看到签名是否和历史一致。

五层标志怎么组合看

[已验证源码] + [源码登记] + [APK 扫描] + [签名锁定] = 当前信息最完整,优先装

[未验证上架] + [APK 扫描通过] = 社区贡献的应用,扫描过了但开发者还没认领

[源码登记] + [签名锁定,但没有 APK 扫描] = 可能是旧条目,扫描记录过期了

什么都没有 = 和随便从网上搜一个 APK 没区别

安全的应用不一定全有这五个标志,但什么都没有的应用大概率是不完整的条目——它可能还在排队等扫描,也可能扫描没过被卡住了。

一个容易混淆的点

"已验证源码"不代表"扫描通过","APK 扫描通过"不代表"签名没被篡改"。这五个标志是独立判断的,每个标志只说自己那件事。Safe Haven 刻意不把它们合并成一个"综合安全评分"——因为那个分数的权重怎么算都会有争议。