五月的最后一期论文推荐,我们为大家介绍复旦大学和约翰霍普金斯大学的研究人员合作发表、关于人脸识别安全威胁的IEEE S&P 2023论文 Understanding the (In)Security of Cross-side Face Verification Systems in Mobile Apps
首先了解几个名词,第一个FVS指的是Face Verification System,顾名思义,和本周一推荐的论文中提到的VA也就是Voice Authentication系统类似。接下来第二个名词——XFVS,也就是cross-side FVS,指的是在本地收集人脸数据,然后上传至远程服务器验证的FVS系统。现实中的FVS可以分为三种类型,下图展示了这三种类型的差异,可以看到XFVS的特点是既有本地代码的参与,又有远程服务器的参与。
这种本地采集+远程验证的模型,很容易让人想起来NDSS 2018的论文 Broken Fingers: On the Usage of the Fingerprint API in Android 中提到的类似的安全威胁模型。我们可以把两篇论文中对安全威胁的描述进行比较(下面两幅图中,上方来自IEEE S&P 2023论文,下方来自NDSS 2018论文),确实是蛮类似的,都假定移动智能终端会被攻击者控制,在此情形下的安全威胁与相关攻击。不同之处在于,本文认为当前Android生态里面对可信摄像头的支持不足,因此连可信环境都没法保证,在这样的威胁模型下来讨论XFVS的安全。
本文的绝大部分内容,更多是在关注哪些APP使用了XFVS服务,以及系统应该满足什么安全要求来保护XFVS。首先作者调研了一下主流的APP,利用多种特征匹配,最后在4万多个APP中找到了2213个APP集成了XFVS服务(绝大部分使用了第三方的SDK):
再接下来,作者剖析了常见的XFVS的工作流程(如下图所示),这里面关键的步骤包括人脸数据的收集(face collection)和活体检测(liveness detection),由于人脸数据收集和活体检测往往分成两部分进行,前者只要一张图片,而后者需要一段视频,这两步其实都容易被fake photo/video欺骗,在此前的很多研究工作中都有所讨论,本文其实不是很关注图片/视频欺骗,更多的是关注现有的APP是否有效保护了这些步骤。
具体地,作者列出来了四个XFVS系统必须满足的安全属性:
-
APP运行环境是否安全可靠
-
摄像头数据是否可信(是否提供了可信的API供APP采集数据)
-
活体检测是否可靠
-
采集的数据和上传的数据是否能保持一致,不被篡改
然而我们都知道,移动端本身是不可靠的,所以不管是XFVS还是其他类型的应用,想要满足这些安全属性都是非常困难的,下表列出的一些主流的使用XFVS的APP,基本上没有哪个能完全满足上述四个性质(没有可信计算组件,怎么满足~)
于是,我们就可以有针对性地去攻击这些存在安全风险的XFVS系统,下面这幅图里面展示了四种攻击:
AT 1. 如果APP只是在本地执行了活体检测,返回给服务器一个true or false的结果,攻击者可以直接篡改这个结果;
AT 2. 如果XFVS的活体检测和人脸数据识别是独立的,攻击者可以随便找个真人来进行活体检测,但是把需要认证的人脸照片注入进去完成认证;
AT 3. 如果XFVS的检查很严格,攻击者可以劫持系统的Camera API(甚至物理劫持摄像头),直接注入fake video;
AT 4. 攻击者还可以篡改服务器下发给移动端的人脸识别模型,把它改掉,让识别结果容易控制。
人脸识别这个认证方式问题很多,但是在目前这种去办个事排队排半天的情况下,有时候也不得不牺牲一定的安全来提高效率。毕竟,这么多年了,我们还是要面对“证明我是我”的难题~
论文:https://xhzhang.github.io/files/XFVSChecker-S&P23.pdf
原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2023-05-31 真假人脸