2. 常见攻击手段:知己知彼,方能百战不殆
做活体检测这些年,我见过最离谱的一次攻击,是对方用了一张高清打印的照片,愣是骗过了当时还在用老算法的系统。从那以后我就明白了一个道理:不了解攻击手段,就别谈防御。
这一章,咱们就把常见的攻击手段挨个捋一遍。说白了,就是看看敌人手里都有什么武器。
核心观点:所有攻击手段的本质,都是试图用非活体的生物特征,去模拟或替代真实的人脸。理解每种攻击的“破绽”在哪里,是设计防御算法的第一步。
2.1 照片攻击:最古老,也最顽固
照片攻击,说白了就是拿一张照片来冒充真人。这是最基础的攻击方式,但千万别小看它。我见过不少项目,算法在实验室里跑得飞起,一上线就被照片攻破了。
照片攻击主要分两种:
- 打印照片:用普通打印机把照片打出来,或者用杂志、海报上的图片。成本极低,几毛钱一张。
- 翻拍照片:用手机或相机对着屏幕上的照片再拍一张。这种照片会有摩尔纹、屏幕反光等特征。
我的经验:有一次客户反馈说系统被攻破了,我远程一看日志,发现攻击者用的是翻拍照片。为什么能防住?因为翻拍照片在屏幕区域会有周期性的纹理噪声,这是天然的特征。后来我们专门加了一个频域分析模块,专门抓这种周期性噪声。
照片攻击的破绽在哪里?说白了,照片是平面的,没有深度信息。你想想看,一张纸怎么会有立体感?所以,基于深度信息的算法天然对照片攻击有免疫力。
2.2 视频重放攻击:动态的“照片”
照片攻击只能骗静态检测,那如果算法要求用户眨眼、张嘴呢?攻击者也不傻,他们录一段视频不就完了?这就是视频重放攻击。
攻击者通常会这样做:
- 提前录好一段用户眨眼的视频
- 在摄像头前播放这段视频
- 系统要求眨眼,视频里的人也在眨眼
- 看起来天衣无缝
嗯,这里要注意。视频重放攻击虽然能骗过简单的动作指令,但它有一个致命弱点:屏幕的物理特性。你想想看,手机屏幕的刷新率、屏幕边框的反光、屏幕表面的指纹,这些都是视频重放攻击的“指纹”。
避坑指南:我曾经踩过一个坑——只检测了屏幕边框,结果攻击者把手机屏幕嵌在一个假人模型里,边框被遮住了。从那以后,我坚持用多模态特征:屏幕反光 + 屏幕刷新率 + 环境光一致性,三者缺一不可。
2.3 3D面具攻击:立体化的欺骗
如果说照片和视频是二维攻击,那3D面具就是三维攻击。攻击者用3D打印或者手工制作一个和真人一模一样的面具,然后戴在脸上。
说实话,3D面具攻击的成本很高,一般的小偷不会用。但如果是针对高价值目标,比如金融交易、门禁系统,那就不得不防。
| 面具类型 | 制作成本 | 逼真度 | 常见场景 |
|---|---|---|---|
| 纸质面具 | 低(几十元) | 低 | 测试、娱乐 |
| 硅胶面具 | 中(几百元) | 中 | 影视道具 |
| 3D打印面具 | 高(数千元) | 高 | 专业攻击 |
| 定制硅胶面具 | 极高(上万元) | 极高 | 高价值目标 |
3D面具的破绽在于材质差异。真实皮肤的反射特性、透光性、弹性,和硅胶、塑料完全不同。我记得有一次测试,一个高仿真的硅胶面具,肉眼几乎看不出区别,但在近红外光下,皮肤的反射率和硅胶差了30%以上。
2.4 深度伪造攻击:AI对AI的战争
深度伪造,也就是Deepfake,是这几年最让人头疼的攻击方式。攻击者用生成对抗网络(GAN)或者扩散模型,生成一段以假乱真的视频。
Deepfake攻击的特点:
- 高逼真度:生成的视频几乎看不出破绽
- 可定制:可以指定任意人脸、任意动作
- 持续进化:生成模型越来越好,检测越来越难
关键认知:Deepfake攻击的本质是“生成”,而不是“采集”。照片和视频是真实采集的,而Deepfake是算法生成的。这意味着,检测Deepfake需要从“生成痕迹”入手,比如面部肌肉运动的物理规律、眨眼频率的统计分布、头部姿态的连续性等。
我个人习惯把Deepfake检测分为两个流派:
- 空间域检测:看单帧图像有没有生成痕迹,比如GAN的伪影、颜色分布异常
- 时间域检测:看视频帧之间的连续性,比如眨眼是否自然、嘴唇运动是否和音频同步
你想想看,一个算法生成的视频,帧与帧之间的变化往往是“完美”的,但真实视频会有微小的抖动、噪声、光照变化。这些“不完美”反而是真实性的证明。
2.5 屏幕注入攻击:最隐蔽的“中间人”
屏幕注入攻击,这个名字听起来有点绕。说白了,就是攻击者不直接播放视频,而是把伪造的视频信号直接注入到摄像头的数据流里。
具体怎么做?
- 硬件注入:用HDMI注入器或者USB设备,直接替换摄像头的视频流
- 软件注入:在操作系统层面hook摄像头驱动,替换视频数据
这种攻击最可怕的地方在于——系统层面完全感知不到异常。摄像头驱动报告说“我在正常工作”,但实际上传上来的数据是伪造的。
避坑指南:我曾经遇到过一个案例,攻击者用了一个USB注入器,系统日志里完全看不出异常。后来怎么发现的?我们加了一个“摄像头环境光一致性检测”——如果摄像头采集到的环境光和手机传感器检测到的环境光不一致,那就说明数据被篡改了。这个思路后来成了我们团队的标配。
屏幕注入攻击的防御思路,核心是建立可信的数据链路。你不能只相信摄像头传来的数据,还要验证数据的来源和完整性。
2.6 攻击手段对比总结
最后,我把这五种攻击手段放在一起对比一下。这样你心里就有个谱了。
| 攻击类型 | 攻击维度 | 成本 | 检测难度 | 主要破绽 |
|---|---|---|---|---|
| 照片攻击 | 2D | 极低 | 低 | 无深度信息、平面反光 |
| 视频重放攻击 | 2D+时间 | 低 | 中 | 屏幕反光、刷新率、边框 |
| 3D面具攻击 | 3D | 高 | 中高 | 材质反射率、透光性 |
| 深度伪造攻击 | 2D+时间 | 中 | 高 | 生成痕迹、物理规律异常 |
| 屏幕注入攻击 | 数据链路 | 中 | 高 | 环境光不一致、数据源不可信 |
嗯,看到这里你应该明白了。没有一种攻击是完美的,每种攻击都有它的破绽。我们的任务,就是找到这些破绽,然后设计算法去抓住它们。