为什么仅凭手机的活体检测结果还不够

Charles Archibong, 联合创始人
手机上生成的活体检测结果是攻击者可能控制的设备所作出的声明。应将其视为输入信息,保留记录的证据,并在服务器端重新验证该证据,之后该结果才有效。

要点
- 手机上报告的任何信息,包括活体检测,都可以被控制该设备的人伪造。
- 注入攻击会绕过摄像头,因此应用程序可以完美运行,并且仍然可以接收合成视频。
- 保留记录的证据,并在服务器上重新得出判决;将客户端的结果视为索赔。
- 服务器端不匹配最好用作风险信号,提交审核,而不是自动封禁。
因为手机并非您的所有。应用程序计算出的活体检测结果,如果显示为“通过”,并发送到您的服务器,则该结果是由攻击者控制的设备发出的声明。在您关心的情况下,攻击者可以修改应用程序,在模拟器中运行,或者向其发送从未来自摄像头的视频。接受此声明的服务器实际上已将最重要的检查工作外包给了被检查者。
解决方案与其说是一项功能,不如说是一种原则:手机收集证据,服务器做出判断。保留已收集的数据,在你控制的基础设施上重新得出结论,并将设备自身的结论视为众多输入之一。
攻击者可以对设备进行哪些更改?
在他们自己的手机上,几乎所有数据在离开手机之前发生的事情。
结果本身。如果应用程序发送
liveness: true即使没有人站在摄像头前,打了补丁的应用程序或拦截的请求也可以发送相同的值。摄像头画面。虚拟摄像头、模拟器或外接摄像头 。API 可以将预先录制或生成的视频呈现为直播视频。这样,即使输入的是虚假内容,应用程序的实时性检测逻辑也能正常运行。
时机。回放工具可以重新发送之前捕获的真实会话。
美国国家标准与技术研究院 (NIST) 对第二种情况进行了直接描述。其身份验证指南SP 800-63A-4 (在新标签页中打开)(2025 年 7 月)将注入攻击定义为“在捕获点(例如设备)和执行比较的元素之间插入修改或伪造的介质”,并指出此类攻击越来越多地与生成式人工智能工具结合使用。该指南还补充说,实时捕获和呈现攻击检测虽然增加了此类攻击的难度,但“不足以应对所有可能的此类攻击”。
为什么完善的设备端活体检测无法解决这个问题?
因为呈现攻击和注入攻击是不同的问题。
演示攻击是指在真实摄像头前放置某些东西:照片、屏幕或面具。优秀的设备端实时检测技术旨在捕获这些攻击,并且 NIST 预计会进行测试:SP 800-63A-4 要求对远程生物特征采集进行呈现攻击检测,冒名攻击呈现接受率低于 0.07,并已按照相关标准进行测试。 ISO / IEC 30107-3:2023。 NIST 虽然是美国的标准,但它可以作为向供应商询问的有用基准。
注入攻击不会向摄像头发送任何内容。设备端的检测机制可能非常完善,仍然能够通过,因为它分析的正是接收到的视频。唯一能发现这种攻击的地方,只有视频本身以及视频捕获方式的痕迹,而这些痕迹必须在攻击者无法触及的地方进行检查。
服务器实际上应该重新检查什么?
四种做法,按其带来的益处程度排序。
1. 保留录像,而不仅仅是画面。
单张自拍照片很难证明是否是真人拍摄。最好录制一段挑战视频。这样服务器可以进行复查,审核人员也可以观看。 Toden SDK中,一旦挑战通过,系统会自动拍摄自拍照,并录制一段简短的活体检测视频供服务器端审核,如以下部分所述: SDK 文档 (在新标签页中打开)。
2. 根据录音重新得出判决结果
如果挑战的答案在视频中可见,请在服务器上查看答案。屏幕闪烁挑战是最明显的例子:屏幕上显示的颜色应该按顺序反射到脸上。 Toden 身份验证会重新分析服务器上录制的视频,以确认闪光序列是否出现在人脸上。
3. 记录证据的采集过程
有些注入工具会留下痕迹:例如,摄像头设备名称与已知的虚拟摄像头软件相符、摄像头功能异常、模拟器痕迹等等。这些痕迹单独来看都不足以作为证据,但它们结合起来可以告诉你对像素的信任程度。 Toden 捕获完整性信号输入到决策场中,verification.cameraSuspect当系统标记可能存在注入漏洞时,情况确实如此,因此工作流程可以将这些会话路由到审核环节。决策文档 (在新标签页中打开)中将其与其他字段一起列出。
4. 尽可能让挑战来自服务器端。
最有效的模式是对服务器问题的挑战以及后续的检查。护照芯片就是一个参考示例:在 NFC 芯片验证中 (在新标签页中打开),服务器对芯片数据本身进行被动认证(“客户端无需决定真伪”),而主动认证则要求芯片签署一次性质询,这是复制的真芯片无法完成的。同样的道理也适用于任何验证:客户端的选择越少,伪造的可能性就越小。
当服务器与手机通信不一致时应该怎么办?
很多设计都存在过度设计的问题。服务器端数据不匹配是出现问题的有力证据,但并非总是欺诈的证据。光线会使反射图像模糊不清。廉价的前置摄像头会使点头动作变得模糊。虚拟摄像头的名称也可能属于合法的辅助功能或流媒体工具。
因此,应将不匹配视为风险信号,而非最终结论。 Toden 闪存序列不匹配会被记录为风险信号,而不是直接导致验证失败。具体情况取决于您的工作流程,它会对您的产品产生什么影响。
例如,一个合理的路径规划:
服务器发现了什么 | 建议的处理方法 |
|---|---|
录制结果证实了挑战的存在,没有捕获完整性警告标志。 | 继续进行其他检查 |
无法读取闪光序列(例如,亮度过高) | 继续进行,或者要求在高价值流量下于室内重拍。 |
闪光灯序列与手机报告的内容相矛盾 | 送审;高风险产品拒收 |
| 发送以供审核,并查看设备的其他活动 |
最后两个 | 拒绝并调查该设备及其任何关联账户 |
将录像和标记都提供给审核人员。观看视频片段通常是区分阳光下拍摄的面孔和重播面孔的最快方法。
向任何活体表演供应商询问的问题
无论你是否使用 Toden 这些问题将信任手机的设计与验证服务器的设计区分开来:
活体检测的判断是在设备上、服务器上还是两者都进行?如果两者都进行,由哪一个决定?
哪些证据会被保留,审查人员可以查看这些证据吗?
如何检测并非来自真实摄像头的视频?
演示攻击检测是如何测试的?测试所依据的标准是什么?
当服务器与设备不一致时会发生什么:彻底失败,还是我可以路由的信号?
移除规则
对验证的信任往往源于其所经过的最不可信的环节。如果最终的判断是由一部你无法控制的手机做出的,那么这部手机就限制了你的信任度。将决策权转移到服务器端,保留决策所依据的证据,并让手机发挥其优势:快速引导真人完成数据采集。
参考来源



