离线测试应得出明确的结果;哈希或密码学演示并不等于对整个产品的完整审计。
离线检查可以表明某项特定计算无需服务器的实时响应即可完成。这很有价值,但并不意味着证明了整个通信软件的安全性。要获得有用的结果,必须准确写明测试了什么文件、版本、输入和输出。
文件哈希、发布签名、测试向量、可复现构建和安全审计回答的是不同问题。综合这些证据,比将其中任何一项当成“完全安全的认证章”更有意义。
每种证据能说明什么?
| 证据 | 有限且正确的结论 | 不会自动证明的事项 |
|---|---|---|
| 文件的 SHA-256 | 文件与参考摘要一致 | 参考来源诚实,或代码毫无缺陷 |
| APK 签名 | 签名对该软件包有效,并与签名者的密钥相关联 | 除非另行核实,否则不能证明该密钥属于你想要的发布者 |
| 测试向量 | 覆盖到的案例产生预期输出 | 已覆盖产品的所有状态与错误 |
| 可复现构建 | 确定的源代码与环境产生相同输出 | 源代码不存在漏洞 |
| 审计 | 已检查特定范围和版本 | 后续变更及范围之外的组件也已获认可 |
可复现构建的定义以确定的输入与环境为基础。Android 官方 apksigner 工具用于检查 APK 签名;这与计算哈希不是一回事。
Livara Proof Lab 目前涵盖哪些范围?
Proof Lab 页面介绍了本地 APK 哈希工具以及 P-256、HKDF 和 AES-GCM 操作演示,其中包括修改一个比特以观察真实性验证失败。页面本身明确说明,完整的 LVR1/LGS1 组合不在这个试验台的范围内。
因此,应这样记录正确结论:“此文件与参考摘要一致”,或“此密码学演示拒绝了本次测试的篡改”。不要写成“完整混合协议与整个已安装版本均已通过独立审计”。本文并未报告对该工具进行新的实际运行测试。
如何准备可重复的离线测试?
- 明确目标。 你要检查文件身份,还是某项密码学操作的行为?
- 记录版本与来源。 APK 名称、版本号、下载地址和该次发布的摘要必须对应。
- 从可信来源准备工具和输入。 断网不会让一开始就恶意的代码变得可信。
- 使用非敏感测试数据。 密码学演示不需要私人消息或真实秘密。
- 断开连接并重复测试。 这一步衡量对实时响应的依赖,而不是对先前下载代码的信任。
- 记录结果与错误。 不要把版本差异、加载失败或不匹配的输出写成“通过”。
如果哈希不同,应停止安装,先检查版本、文件和参考来源。差异可能是选择了不同发布版本所致;未经检查,不要断定一定是恶意软件,也不要断定毫无影响。
测试向量与正式证书有何区别?
测试向量规定某种行为的输入与预期输出。Wycheproof之类的集合有助于针对已知攻击相关案例测试库。通过这些测试不能证明覆盖了未知案例。
NIST CAVP设有算法验证流程。在浏览器中运行几个公开向量不等于取得验证证书;使用标准算法也不会让产品自动获得认证。
比较通信软件时应该要求什么?
对于 Livara、Signal、WhatsApp、Session 或 Element,应提出相同的问题:确切版本是什么?哪个文件是官方文件?如何验证签名者密钥或参考摘要?哪些测试可以运行?审计报告涵盖了哪些代码和组件?
本文不是这些产品经过测试后的排名。没有单页工具不等于没有安全证据;拥有这种工具也不能证明整个产品更优。应比较同一版本的官方文档与可重复的报告。
一份有用的结果记录表
在简短报告中写明:目标、版本、文件来源、hash、工具及其版本、网络状态、非敏感输入、预期输出、观察到的输出和局限。如果没有进行其他测试,应标注“未测试”。
验证联系人的密钥也是独立的检查。本地工具可以演示某项操作,但不能替你确认对话另一方的身份或其手机的安全状态。请结合结果阅读Livara 的安全边界,不要把工具中的满分视为对所有边界的保证。



