反向工程一例,攻击人脸识别系统
包师弟有个笔记本,可以通过刷他的脸登录。登录的时候他往机器前面一坐,屏幕上显示摄像头看到他的脸了,然后"的狗"一声,机器就登录成功了。这几天做SECM实在压抑,干活期间,我们试着业余攻击这个人脸识别系统。
我们把攻击定义为,能通过包师弟的脸以外的东西登录成功。众所周知,人脸识别系统是通过摄像头,十有八九是基于数字图像处理的什么算法。如果能够猜测到算法,那么攻击就有的放矢了。
所以,第一步是猜想,第二步是设计实验验证或证否猜想,第三步是修正手头上的"东西",让它看起来虽然不像包师弟的脸,甚至不从他的脸抄袭,却能通过验证。
我们几个人一起整的,中间有商量彼此赞同,还有互相驳斥,再实验验证;许多猜想夹杂在一起,验证的顺序颇为混乱,所以我不按时间叙述,而按猜想组织。
1. 颜色,对比度
我们最初想到的就是拍一张包师弟的照片,刷照片。
第一张照片,我们考虑到了距离远近会导致几何失真,所以相机距离包师弟的脸与摄像头距离他几乎相同距离
(约一臂远)。距离不必太精确,因为考虑到人在登录的时候距离也不精确,所以算法一定具有一定程序的鲁棒性。又同样由于几何失真,我们把这张照片打印为人脸几乎充满A4纸,这跟人脸的真正大小差不多。
登录失败。
我们用的是灰度图,黑白打印机。所以我们怀疑是算法要求颜色,比如使用颜色和纹理确认哪里是人脸,哪里是背景。虽然我们强烈倾向于灰度应该有足够的信息了,但是反向工程时,目标产品用了什么算法却不一定局限于"合理"和足够。所以我们重拍了一张照片,打印成彩色的。
登录成功了。
再用登录成功的照片,打印成灰度的。
登录又成功了。
这说明算法是基于灰度的。第一次失败的照片拍摄的时候有些逆光,虽然使用了点测光,但是对比度仍然不够。这可能不利于检出边缘。
2. 部位
这时候许老师来了,他是物证签定专家。他说,应该挡住一些部位,可能某些部分就足够了。
挡住下巴,登录失败。与此前的登录失败不同,这次不是脸不能识别,而是没有找到脸。此下的实验也表明,认出那是一张脸和认出那是哪张脸,这两个不同的算法,或者算法两个不同部分。
在下巴那部分用黑笔画出个大致的轮廓,上半部分用照片,登录成功。头发和眉毛挡住,画个大致的轮廓,登录成功。把包师弟真人的下半部分用下巴的手绘轮廓图挡住,登录成功。
又做了几次实验。实验表明,眼睛部分是最重要的,其余的部分对于识别是哪张脸没有作用,或者可以归为鲁棒性部分。
包师弟最初在计算机中注册的是戴眼睛的,摘掉眼镜也可以,闭着眼睛也可以,但是眼睛的上缘刚好在瞳孔上登录失败。所以猜测跟瞳孔关系可能最大。关同学猜测,可能跟瞳距,包括瞳距与脸的两侧的比例有关。
用下巴那纸纸挡住包师弟的脸,如果下巴部分太长,登录失败,向上移动下巴的纸,登录成功。所以猜测,可能跟眼睛距离脸的上缘
(可能是头发下缘)和下缘(下巴)的比例有关。
3. 边缘检测
无论用手绘的线条,还是照片,都能检测出脸的存在。这说明至少在找到那是一张脸这一算法中,边缘检测不区别 线条
(两侧是同一颜色,线条是较深的颜色)和 灰度变化 (两侧是不同颜色)。
4. 大小
许老师猜身份证也行。实验表明,佳能IXUS 860
IS那么大的三英寸屏幕不行。我们分析的原因是,这么小的屏幕,为了在摄像头上得到足够大面积的脸,需要把照片靠近摄像头,而摄像头的焦点不能调节到这么近的距离,因此取像模糊。
包师弟的大手机屏幕 (四五英寸)就可以用于登录了。
5. 鲁棒性,装饰和遮蔽物
实验表明,头发可以手绘,而且轮廓即可,下巴也是。甚至宽下巴窄下巴都不怎么重要。包师弟还有个痦子,不画上没有任何影响。
算法大多仍是朴素和愚蠢的,没有智能化到你点个痦子或者理了发就发现这一点--如果它没有能力发现,也就不应该有能力以此为特征识别。
我猜,也许描个眼线,贴个睫毛,描个眼影,也许有影响。如果确认那是哪张脸的算法除了瞳孔还考虑了别的因素,比如眼睛的面积。因为如果用户登录尚未成功,他可能会调整表情、脸的位置,所以算法可能获取许多帧,然后找到眼睛大小和形状合理的那个。所以,表情导致的眼睛变化,算法不考虑可能仍在合理范围内。
6. 总结目前的进度
一张巴掌大小的灰度照片,可以登录。一张横向折了很多次的灰度或彩色照片,可以登录。眼睛及所在的水平像素是打印照片,其余部分是手绘的粗糙线条画,可以登录。
结论,眼睛部分是包师弟这台笔记本人脸识别登录算法的关键。当然,其他的部分要做到足够计算机确认那是一张人脸的程度。
原本希望手绘线条画,包括眼睛,能够登录。如果手绘的基本像眼睛,让计算机能找到,同时非常不像包师弟的眼睛,而算法的特征却一致
(比如算法如果使用了达到某灰度的积分值,即眼睛的面积),那就更理想了。这些最近都没有时间玩了。
--------------------
博客会手工同步到以下地址:
[http://giftdotyoung.blogspot.com]
[http://blog.csdn.net/younggift]
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment