Vox Trust
不去检测伪造的声音,而是证明真实的声音。
一个开放协议及其 Rust 参考实现:在源头为人声签章,让任何人日后都能验证。
问题所在
如今只需几秒钟的录音就能克隆一个人的声音。我们的耳朵已经分不出真假,而检测工具总是在追赶一个不断移动的目标:检测越进步,生成也越进步。
证明真实,而不是猜测伪造
Vox Trust 不问“这段声音是假的吗?”,而是问“真实的声音有没有被签章?”
- 签章。说话者的设备在源头为音频加上带数字签名的签章。
- 携带。签章可以藏在可插拔的音频水印中,以便在重新编码后仍能留存。第一个实验性载体已经实现,并已公开实测:它能经受 MP3、AAC 和 Opus,但无法经受电话通话编解码器和噪声。
- 验证。任何使用该协议的人都可以查看是哪把密钥、在何时为音频签章,以及哪几秒被改动过。
- 判定。本地信任策略会把结果归为四种裁决之一。
四种裁决
已验证
来自你所信任密钥的有效签章。
未签章
没有签章,对方可能从未用过该协议。这是中性结果,不等于“伪造”。
警告
对方通常会签章,这次却没有。请谨慎对待,并请对方重新发送。
警报
签章已损坏;或签章所用密钥与你为该联系人保存的不一致;或在严格模式下,始终签章的联系人这次没有签章。
以上为策略裁决的示意。在线演示在你的浏览器中运行真实的 Rust 核心,不会上传任何内容。
横向对比
别人给伪造的声音打标记,Vox Trust 为真实的声音签章。
Google、Meta、Microsoft 和 Resemble 给自家 AI 生成的音频打标记。深度伪造检测器估计声音是否为合成。Vox Trust 让说话者为自己的声音签章,任何人都能用普通的密码学方法核验。
| Vox Trust | Google SynthID | Meta AudioSeal | 深度伪造检测器 | C2PA | |
|---|---|---|---|---|---|
| 为真人录音作保 | 是 | 否标记 AI 输出 | 否标记 AI 输出 | 估计 | 若应用签名 |
| 证明与说话者本人的密钥绑定 | 是 | 否 | 否 | 否 | 是 |
| 指出被改动的秒数 | 是 | 否 | 部分 | 否 | 否仅整个文件 |
| 任何人都能离线验证 | 是浏览器内 | 否需 Google 检测器 | 是 | 否 | 是 |
| 规范与代码开放 | 是 | 否音频未开放 | 代码 | 否 | 规范 |
| 经受 MP3、AAC、Opus | 实验性实测 100 % | 官方声称 | 实测 | 不适用 | 否元数据被剥离 |
| 经受电话通话 | 尚不能11 % | 未公布 | 否实测 0 % | 是 | 否 |
| 验证成本 | 毫秒级无需 AI 模型 | 云服务 | 神经网络 | 云服务 | 毫秒级 |
“实测”指在我们的公开基准测试中以相同语料和编解码器运行;“官方声称”指厂商公布的数据。深度伪造检测器:例如 Pindrop Pulse。每个单元格的来源见对比说明(英文)。
集成到你的应用
Vox Trust 是一个开放协议,设计为嵌入人们已在使用的应用:即时通讯、语音信箱、播客与新闻编辑工具、客服平台。发送时加封,接收时验证。核心为 93 KB、无依赖的 WebAssembly,可在浏览器或 Node 中运行,也提供 Rust crate。
npm install vox-trust
cargo add vox-trust-core
import { load } from "vox-trust";
const vt = await load();
const sealed = vt.seal(wav, {
mode: "public", key: seed, createdUnix, chunkFrames: 16000,
});
const report = vt.verify(sealed, { pinnedPublicKey });
vt.decide(report.check, contact); // "verified" | "unsealed" | "warning" | "alert"
集成指南(英文)约需 10 分钟,并附 Node、浏览器和 Rust 示例。Apache-2.0,无需调用任何服务,无需账号。
另有:pip install vox-trust(Python)、随每个 release 附带的 Android 与 iOS 库、适用于 Chrome、Firefox 和 Safari 的浏览器扩展,以及供 AI 助手验证录音的 MCP 服务器。
它不是什么
- 它不是深度伪造检测,也不是声纹识别。
- 它不能证明说话者是真人,或确是其自称的那个人;它只证明某把密钥为这段音频签了章。密钥被盗,同样会产生有效签章。
- “未签章”不等于“伪造”:压缩和降噪都可能抹掉水印。
- 它无法防范控制了发送方设备的人。
完整的攻击者与局限清单见威胁模型(英文)。
目前进展
- 规范(0.2 版:文件模式为候选发布版,音频内部分为实验性)与威胁模型,欢迎批评指正。
- Rust 参考实现,包含文件模式(在 WAV 文件内嵌入按分段签名的清单)、信任策略、命令行工具和 WebAssembly 构建。测试向量已公开,并由同一作者编写的 Python 实现交叉验证。
- 一个真正能完成验证的在线演示。签章过的文件只在逐比特一致的副本中有效;验证结论目前只来自文件模式。
- 未经审计。目前没有独立评审,请勿用它来保护任何人。
- 实测结果:实验性水印(stdm-2)在 MP3、AAC、Opus 24 和 32 kbit/s 以及 G.722 中都能保留签章(100%),MP3 再转为 Opus 转发后为 98%,速度变化 1% 时为 84%,且没有误报;但在电话通话(AMR-WB)、强噪声和回声下仍会失效。音频内的签章可以被复制到其他音频中,因此目前不给出验证结论。完整结果(英文)。
参见路线图(英文)。
站在已有工作的肩上,与之并肩
Vox Trust 的定位是补充这些工作,而不是取代它们:
- C2PA 内容凭证,它已经把水印用作“软绑定”。
- AudioSeal、WavMark 等音频水印,可以充当载体。
- 公钥语音溯源方面的研究,例如 MerkleSpeech。
请帮我们找漏洞
现在最有价值的是审视:阅读威胁模型,找出我们漏掉的攻击者,或复现一项测量。欢迎在 GitHub 上提交 issue。安全漏洞请按安全政策的说明私下报告。