作者:李四伟@星舆实验室
本文为作者投稿,Seebug Paper 期待你的分享,凡经采用即有礼品相送! 投稿邮箱:[email protected]
相关阅读:“刷脸时代”你的脸就是我的脸 -- 人脸识别漏洞分析 (上)
大家好, 我是星舆车联网实验室李四伟。星舆取 “星辰大海, 舆载万物”之意, 是专注于车联网技术研究, 漏洞挖掘和工具研发的安全团队。团队成员在漏洞挖掘, 硬件逆向与AI大数据方面有着丰富经验, 连续在GeekPwn等破解赛事中斩获奖项, 并获众厂商致谢。团队研究成果多次发表于DEFCON等国内外顶级安全会议。
主要对2D人脸识别漏洞进行分析,最后会将在2D人脸识别系统验证通过的方法在3D人脸识别下做验证测试。人脸漏洞分析的方法思想就是解析人脸识别整个流程每个子任务,基于每个子任务的原理进行分析对抗,最后再整合进行整体任务对抗。人脸识别是一个任务的集合,包含众多的子任务,基于对各个子任务的分析以及整体任务的分析,总结了人脸识别漏洞验证的方法如下图所示[7]:
基于以上方法我们会对人脸识别整个任务进行分析测试,验证人脸识别系统的安全性,并对人脸识别的漏洞进行分析。为了保护用户的隐私问题,以及维护厂商的安全问题,相关视频图片中的人脸,明显商标都添加了马赛克保护。
1.人脸检测漏洞分析
回顾整个人脸识别的过程,无论什么系统,第一步总是人脸检测,人脸检测算法的目的是准确检测到人脸位置,但是由于现实场景的复杂性,往往在算法训练的过程中无法覆盖所有场景,无法添加所有异常数据作为负类来增强数据的鲁棒性,所以当前各厂家的人脸检测算法往往会存在将特定的非人脸数据频繁误检测成人脸的情况,我们尝试一种手绘人脸攻击的方法,并设计了一个实验,测试人脸识别系统的人脸检测功能的鲁棒性。
实验对象:装有人脸识别系统的打印机,某款汽车的车机系统,某款人脸闸机,华为某款手机
实验过程:将绘有人脸图标的橘子放到实验对象的摄像头前,不断的调整位置和角度
这个结果是出乎实验前主观的预期的,但是同时又从另一个方面证明了,由于深度学习对数据的高度依赖性,再加上物理世界实际场景的复杂性,训练数据很难覆盖所有场景,而构建的用于测试的算法指标的测试集,往往也只能覆盖常见场景,所以一般我们看到的某种算法的指标,往往指的是在测试集覆盖的场景下表现的结果,在实际应用中,算法的精确率往往会低于测试结果,算法的误检率会高于测试结果,因而在算法的鲁棒性没有足够好的情况下,其实会存在很多漏洞能够被利用挖掘的,该结论同样适用于人脸识别的其他子任务,甚至是自动驾驶等等任务。
2. 活体检测漏洞分析
当攻破了人脸检测,下一个阶段就是整个人脸识别系统最重要的反欺诈模块活体检测模块,活体检测可以称得上是人脸识别系统最重要的防线,大部分针对人脸识别系统的攻击都是通过活体检测防御的,一个没有活体检测的人脸识别系统基本上最简单的照片攻击都能够攻破。活体检测是一种基于人脸检测的结果,对检测到的目标是否为真实人脸进行判定的方法,可以简单的理解为对输入数据的进行一个二分类的问题。实现思路和方法很多,例如传统的基于活体和非活体颜色纹理,非刚性运动变形,材质,频域信息等差异,进行针对性设计特征的进行分类的方法,再到后来的基于神经网络自动提取特征进行分类,分类转回归等等方法。不同模态的摄像机又为活体检测提供了不同的数据源,而基于这些数据源,又可简单的分成rgb活体检测,红外活体检测,3D活体检测等等。表现在应用层面主要有两种,一个是配合式活体检测,一种是非配合式活体检测[6]。针对于不同的活体检测,应用照片攻击,视频回放攻击,人脸面具+动作,3D人脸面具的方法设计了一个实验[13]:
测试工具:A4纸打印的人脸rgb图片,A4纸打印的人脸灰度图片,手机播放人脸图片,硅胶制作而成的3D人脸面具
实验对象:带有人脸识别功能的打印机(双目摄像头,应用近红外活体检测),某款带有人脸识别功能汽车(单目摄像头,应用近红外活体检测),华为(单目摄像头,应用rgb活体检测),开源静默活体检测算法。
实验过程:将测试工具放置到实验对象摄像头前,调整位置角度,验证是否能够通过活体检测;测试人员佩戴3D人脸面具到实验对象摄像头前,调整位置角度,验证是否能够通过活体检测。
实验结果:照片攻击,视频回放攻击全部验证失败,无法通过活体检测;3D人脸面具能够绕过打印机,华为手机,开源静默活体检测算法的人脸检测及活体检测,但是由于3d人脸的工艺问题,无法识别成对应目标人物;使用人脸面具+动作的方法在面具覆盖人脸区域较大时无法通过活体检测,当面具体积减少到一定程度,能够绕过所有实验对象的活体检测。
分析该实验结果:首先红外活体检测在活体检测领域有着广泛的应用,对比不同材质在近红外摄像头下的图片,可以很直观的观测到活体检测如何对抗照片攻击,视频回放攻击。
红外图像下不同材质的物体成像结果有着明显的差距,后续我们通过在打印图片上覆盖不同反射率材质的,希望能够改变红外摄像头采集到的图像成像结果,依然失败了。但是依然存在方法绕过活体检测,即真实人脸+图片面具的方法和3D面具的方法,真实人脸+图片面具本质相当于带遮挡的真实人脸,所以在未添加遮挡限制检测的系统中,理论上有很大概率通过各类型活体检测[14]。3D人脸面具除材质外,形状结构有着高度的一致性,而硅胶材质和人脸在红外下的成像差异不明显,使用3D人脸面具绕过人脸识别存在一定可行性。 基于对活体检测的测试结果以及对公开数据集的研究,大多是对照片攻击,视频回放攻击,整张人脸图片裁减掉人眼关键位置的攻击的防御,对于局部区域遮挡没有很好的防御[15,16]。
3. 特征提取漏洞分析
综合以上测试结果,活体检测绕过的难度较高,但是仍然存在可行的方法。而对于特征提取的任务,只需要调整改变输入图像的像素值,就能够影响到最终特征提取的结果。我们使用对抗样本的方法来影响特征提取结果,这种方法是人脸对抗样本在物理世界的应用。对抗样本主要思想是对输入样本添加细微的干扰,导致输出结果异常。在人脸识别的应用中,对抗样本攻击主要通过修改图像的像素信息,增加扰动信息,干扰到人脸特征提取的结果,导致提取到的特征向量与本身的特征向量距离过大,最终导致人脸匹配时,匹配结果异常。更进一步的物理世界的人脸对抗样本攻击,由于无法做到全脸的细微的干扰,往往会将扰动信息集中在固定区域[17]。 综合人脸检测,活体检测的测试结果,以及人脸对抗样本在物理世界的应用的分析,提出一种通过对抗样本+真实人脸的人脸识别绕过的方法,打印出扰动特征提取结果的对抗样本,然后真实人脸佩戴打印出来的对抗样本,进行人脸识别认证。本质和人脸带面具方法相同,只不过将面具内容替换为对抗样本。其中真实人脸+局部遮挡绕过了人脸检测和活体检测,人脸覆盖的对抗样本数据影响特征提取的结果,进而影响后续的人脸匹配过程,错误的将测试人员的人脸匹配成目标人脸,导致人脸识别的最终结果异常[18]。 整个方法的实现过程包括两部分,一部分是被覆盖特征区域的选取,另外一个是区域内对抗样本的生成。
覆盖区域选定:通过相关资料的调研以及使用大量数据统计,对比人脸各区域对人脸特征提取结果的影响,结果与人的主观意识相符,人脸眉间到鼻子附近区域对整个人脸特征提取结果影响较大,通过调整区域内的像素特征能够干扰到最终人脸识别的结果。部分活体检测系统,包含了对嘴巴和眼睛遮挡的判定,所以选取的区域需要保证人眼睛和嘴巴不被遮挡。基于以上结果,通过大量的数据验证测试,选取了相对较优的特征替换区域。
对抗样本生成:对于一个未知的人脸识别系统进行对抗样本攻击,可以称之为黑盒攻击,我们基于样本的迁移性,首先在星舆自研的人脸识别算法的基础上,完成对抗样本的训练和测试,可以称这个过程为白盒模型对抗攻击。选定位置后使用自研人脸算法进行对抗样本的训练,最终生成目标对抗样本 将生成的对抗样本打印出来,粘贴到预定覆盖的人脸位置,完成了对抗样本测试的准备。 以下是实验过程:
测试工具:测试人员人脸佩戴打印出来的对抗样本图片
测试目标:多款车辆(单目红外),打印机(双目,rgb+红外),手机(单目rgb)
测试过程:测试人员站到对应摄像头前,调整位置角度,验证是否能够通过人脸识别认证
实验结果:车辆全部通过认证,手机通过认证,打印机未通过认证 该测试验证对抗样本+真实人脸的方法能够达到预期的效果,欺骗人脸识别系统。 测试结果录制成视频在三四节实践部分展示。
为了验证上述方法的可实践性,我们在真实场景下进行了测试:首先获取车主照片,我们将照片通过人脸对抗模型生成对抗样本,然后打印出来,测试人员佩戴对抗样本图片,坐到驾驶员位置,开启车辆人脸识别认证,开始进行人脸识别认证。
某款车辆的测试视频,该车型的人脸识别能够作为车钥匙启动车辆,使用上述方法成功解锁并启动车辆 (https://v.qq.com/x/page/r33024jmh4o.html)
另一款车辆的测试视频,该车型使用人脸识别作为账号认证,登录后能够查看用户行程记录仪,行车路线图等隐私信息,使用上述方法成功解锁登 录,自由查看操作用户数据 (https://v.qq.com/x/page/v3302fkrhm9.html)
测试人员成功完成认证欺骗车载人脸识别系统,完成了登录,然后可以正常访问目标车主的隐私信息,正常启动车辆,控制车辆启动。在一款车型有着90%以上的成功率,另一款车基本有接近100%的成功率。
为了验证该方法的普适性,我们在某款手机的人脸识别系统以及某银行的银规级软件上进行了验证,结果如下:
某款华为手机
使用上述方法测试了华为某款手机的人脸识别解锁功能,使用非用户的人人脸佩戴生成人脸图案的方法成功欺骗了手机的人脸认证,解锁手机,登录到主页面,自由操纵该手机。我们将该漏洞提交给华为,并提供了一些缓解该漏洞问题的建议:增加检测算法对人脸遮挡的检测,或者增加负类数据集,提升检测算法对该场景对抗训练,优化该场景的检测效果。可通过优化活体检测算法,增加识别算法相关负类数据集来对抗该问题 华为官方认可了该漏洞在2D人脸应用场景下的可行性,并认为该问题为行业共性问题,由于是已知行业共性问题,按照非漏洞流程处理。演示视频:(https://v.qq.com/x/page/i3302rry4tp.html)
银规级软件测试
我们使用该方法对某银行APP人脸登录功能进行验证,经验证,此方法未能在该场景下生效,主要原因:银规级的人脸识别系统要求更好的人脸配合度,减少了对用户体验的妥协,有着更高的检测识别阈值,更严格的识别条件,对人脸遮挡有着严格的判定,当人脸遮挡到达一定比例时,人脸检测将会判定该人脸非真实人脸,拒绝进行下一步认证。当我们逐渐减少特征图片的面积时,最终能够通过检测系统,但是又会由于替换的特征区域过小,而导致无法按照预期识别成指定目标。
通过上述实验得出一个结论:2D人脸识别系统普遍存在的一个漏洞,由于2D数据信息的局限性,可通过替换局部人脸特征,来改变人脸识别系统识别的结果。在保证活体检测能够正常通过的情况下,通过简单的替换人脸特征即可完成对人脸识别系统的攻破。测试中的问题暂时未在3D人脸识别的系统复现。 对于该问题的优化方案:
增加检测算法对人脸遮挡的检测,或者增加负类数据集,提升检测算法对该场景对抗训练,优化该场景的检测效果。
可通过优化活体检测算法,增加识别算法相关负类数据集来对抗该问题。
使用3D人脸识别增加输入信息维度,但是3D人脸识别的成本较高,算法训练的复杂度较大,数据收集的成本较高。
本篇文章主要对人脸识别相关漏洞进行了分析,人脸识别作为生物识别领域广受关注并且有大量应用的技术,本身有着很高的研究价值,人脸识别系统的安全性对用户本身的信息安全,数据安全甚至财产安全等等有着重要的影响。人脸识别漏洞技术的研究对人脸识别技术安全性,鲁棒性有着重要的意义。我们后续会持续关注研究人脸识别的漏洞以及安全性问题。
References
[1]https://www.jiqizhixin.com/graph/technologies/3ff3ab31-7595-48d8-905a-baddfecc22be
[2] https://cmusatyalab.github.io/openface/
[3] Kaipeng Zhang, Zhanpeng Zhang, Zhifeng Li, Senior Member, IEEE, and Yu Qiao, Senior Member, IEEE:Joint Face Detection and Alignment using Multi task Cascaded Convolutional Networks
[4] Daniel Sáez Trigueros, Li Meng, Margaret Hartnett. Face Recognition: From Traditional to Deep Learning Methods
[5] Florian Schroff, Dmitry Kalenichenko, James Philbin. FaceNet: A Unified Embedding for Face Recognition and Clustering
[6] Jucheng,DAI Xiangzi,HAN Shujie,MAO Lei,WANG Yuan. On Liveness Detection through Face Recognition
[7] Naveed Akhtar,Ajmal Mian. Threat of Adversarial Attacks on Deep Learning in Computer Vision: A Survey
[8] Jiankang Deng, Jia Guo, Niannan Xue, Stefanos Zafeiriou. ArcFace: Additive Angular Margin Loss for Deep Face Recognition
[9] https://zhuanlan.zhihu.com/p/44904820
[10]https://blog.csdn.net/molixuebeibi/article/details/91880162
[11] https://www.lddoc.cn/p-17334859.html
[12] Haibo Qiu, Baosheng Yu, Dihong Gong, Zhifeng Li, Wei Liu, Dacheng Tao. SynFace: Face Recognition with Synthetic Data
[13] https://blog.csdn.net/u013841196/article/details/81176498YANG
[14] https://blog.csdn.net/c9Yv2cf9I06K2A9E/article/details/107902924
[15] https://zhuanlan.zhihu.com/p/43480539
[16] A Dataset and Benchmark for Large-scale Multi-modal Face Anti-spoofing
[17]Stepan Komkov, Aleksandr Petiushko. AdvHat: Real-world adversarial attack on ArcFace Face ID system
[18]https://baijiahao.baidu.com/s?id=1690021058663956115&wfr=spider&for=pc
本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/1740/