2. 常见攻击手段:知己知彼,方能百战不殆

做活体检测这些年,我见过最离谱的一次攻击,是对方用了一张高清打印的照片,愣是骗过了当时还在用老算法的系统。从那以后我就明白了一个道理:不了解攻击手段,就别谈防御。

这一章,咱们就把常见的攻击手段挨个捋一遍。说白了,就是看看敌人手里都有什么武器。

核心观点:所有攻击手段的本质,都是试图用非活体的生物特征,去模拟或替代真实的人脸。理解每种攻击的“破绽”在哪里,是设计防御算法的第一步。

常见活体攻击手段全景图 活体检测攻击 照片攻击 视频重放攻击 3D面具攻击 打印照片 屏幕录制重放 深度伪造攻击 翻拍照片 屏幕注入攻击 Deepfake视频 💡 攻击难度与成本 照片攻击 < 视频重放 < 屏幕注入 < 3D面具 < Deepfake (低成本 → 高成本,低逼真度 → 高逼真度)

2.1 照片攻击:最古老,也最顽固

照片攻击,说白了就是拿一张照片来冒充真人。这是最基础的攻击方式,但千万别小看它。我见过不少项目,算法在实验室里跑得飞起,一上线就被照片攻破了。

照片攻击主要分两种:

  • 打印照片:用普通打印机把照片打出来,或者用杂志、海报上的图片。成本极低,几毛钱一张。
  • 翻拍照片:用手机或相机对着屏幕上的照片再拍一张。这种照片会有摩尔纹、屏幕反光等特征。

我的经验:有一次客户反馈说系统被攻破了,我远程一看日志,发现攻击者用的是翻拍照片。为什么能防住?因为翻拍照片在屏幕区域会有周期性的纹理噪声,这是天然的特征。后来我们专门加了一个频域分析模块,专门抓这种周期性噪声。

照片攻击的破绽在哪里?说白了,照片是平面的,没有深度信息。你想想看,一张纸怎么会有立体感?所以,基于深度信息的算法天然对照片攻击有免疫力。

2.2 视频重放攻击:动态的“照片”

照片攻击只能骗静态检测,那如果算法要求用户眨眼、张嘴呢?攻击者也不傻,他们录一段视频不就完了?这就是视频重放攻击。

攻击者通常会这样做:

  1. 提前录好一段用户眨眼的视频
  2. 在摄像头前播放这段视频
  3. 系统要求眨眼,视频里的人也在眨眼
  4. 看起来天衣无缝

嗯,这里要注意。视频重放攻击虽然能骗过简单的动作指令,但它有一个致命弱点:屏幕的物理特性。你想想看,手机屏幕的刷新率、屏幕边框的反光、屏幕表面的指纹,这些都是视频重放攻击的“指纹”。

避坑指南:我曾经踩过一个坑——只检测了屏幕边框,结果攻击者把手机屏幕嵌在一个假人模型里,边框被遮住了。从那以后,我坚持用多模态特征:屏幕反光 + 屏幕刷新率 + 环境光一致性,三者缺一不可。

2.3 3D面具攻击:立体化的欺骗

如果说照片和视频是二维攻击,那3D面具就是三维攻击。攻击者用3D打印或者手工制作一个和真人一模一样的面具,然后戴在脸上。

说实话,3D面具攻击的成本很高,一般的小偷不会用。但如果是针对高价值目标,比如金融交易、门禁系统,那就不得不防。

面具类型 制作成本 逼真度 常见场景
纸质面具 低(几十元) 低 测试、娱乐
硅胶面具 中(几百元) 中 影视道具
3D打印面具 高(数千元) 高 专业攻击
定制硅胶面具 极高(上万元) 极高 高价值目标

3D面具的破绽在于材质差异。真实皮肤的反射特性、透光性、弹性,和硅胶、塑料完全不同。我记得有一次测试,一个高仿真的硅胶面具,肉眼几乎看不出区别,但在近红外光下,皮肤的反射率和硅胶差了30%以上。

2.4 深度伪造攻击:AI对AI的战争

深度伪造,也就是Deepfake,是这几年最让人头疼的攻击方式。攻击者用生成对抗网络(GAN)或者扩散模型,生成一段以假乱真的视频。

Deepfake攻击的特点:

  • 高逼真度:生成的视频几乎看不出破绽
  • 可定制:可以指定任意人脸、任意动作
  • 持续进化:生成模型越来越好,检测越来越难

关键认知:Deepfake攻击的本质是“生成”,而不是“采集”。照片和视频是真实采集的,而Deepfake是算法生成的。这意味着,检测Deepfake需要从“生成痕迹”入手,比如面部肌肉运动的物理规律、眨眼频率的统计分布、头部姿态的连续性等。

我个人习惯把Deepfake检测分为两个流派:

  1. 空间域检测:看单帧图像有没有生成痕迹,比如GAN的伪影、颜色分布异常
  2. 时间域检测:看视频帧之间的连续性,比如眨眼是否自然、嘴唇运动是否和音频同步

你想想看,一个算法生成的视频,帧与帧之间的变化往往是“完美”的,但真实视频会有微小的抖动、噪声、光照变化。这些“不完美”反而是真实性的证明。

2.5 屏幕注入攻击:最隐蔽的“中间人”

屏幕注入攻击,这个名字听起来有点绕。说白了,就是攻击者不直接播放视频,而是把伪造的视频信号直接注入到摄像头的数据流里。

具体怎么做?

  • 硬件注入:用HDMI注入器或者USB设备,直接替换摄像头的视频流
  • 软件注入:在操作系统层面hook摄像头驱动,替换视频数据

这种攻击最可怕的地方在于——系统层面完全感知不到异常。摄像头驱动报告说“我在正常工作”,但实际上传上来的数据是伪造的。

避坑指南:我曾经遇到过一个案例,攻击者用了一个USB注入器,系统日志里完全看不出异常。后来怎么发现的?我们加了一个“摄像头环境光一致性检测”——如果摄像头采集到的环境光和手机传感器检测到的环境光不一致,那就说明数据被篡改了。这个思路后来成了我们团队的标配。

屏幕注入攻击的防御思路,核心是建立可信的数据链路。你不能只相信摄像头传来的数据,还要验证数据的来源和完整性。

2.6 攻击手段对比总结

最后,我把这五种攻击手段放在一起对比一下。这样你心里就有个谱了。

攻击类型 攻击维度 成本 检测难度 主要破绽
照片攻击 2D 极低 低 无深度信息、平面反光
视频重放攻击 2D+时间 低 中 屏幕反光、刷新率、边框
3D面具攻击 3D 高 中高 材质反射率、透光性
深度伪造攻击 2D+时间 中 高 生成痕迹、物理规律异常
屏幕注入攻击 数据链路 中 高 环境光不一致、数据源不可信

嗯,看到这里你应该明白了。没有一种攻击是完美的,每种攻击都有它的破绽。我们的任务,就是找到这些破绽,然后设计算法去抓住它们。