admin管理员组

文章数量:1530517

2023年12月17日发(作者:)

基于高效隐秘汉明距离计算的安全人脸识别

刘妍;金鑫;赵耿;李晓东;陈迎亚;郭魁

【摘 要】为使人脸识别能够在云端进行隐秘计算,实现一种能够安全计算的人脸识别系统.服务器端(云端)存储一组嫌疑人的人脸数据,客户端(终端)获取人脸图像,在隐秘的情况下将其与服务器端的数据进行安全运算,判断客户端的人脸是否与人脸库中的人脸匹配,若答案是肯定的,则返回给客户端“匹配”,不透露任何一方的信息.人脸识别采用人脸特征块提取算法,安全计算采用同态加密和不经意传输算法,在此基础上提出一种高效隐秘汉明距离算法,解决在加密情况下计算人脸向量汉明距离复杂度高的问题,程序测试时间明显减少.

【期刊名称】《计算机工程与设计》

【年(卷),期】2016(037)009

【总页数】5页(P2327-2331)

【关键词】人脸识别;安全;高效隐秘汉明距离;同态加密;不经意传输(OT)

【作 者】刘妍;金鑫;赵耿;李晓东;陈迎亚;郭魁

【作者单位】西安电子科技大学通信工程学院,陕西西安710071;北京电子科技学院研究生系,北京100070;北京电子科技学院研究生系,北京100070;北京电子科技学院研究生系,北京100070;北京电子科技学院研究生系,北京100070;北京电子科技学院研究生系,北京100070;北京电子科技学院研究生系,北京100070

【正文语种】中 文

【中图分类】TP37

随着计算机科学技术的不断发展,人脸识别技术有了飞跃式地进展,但是已有的人脸识别算法几乎都是非安全条件下的,我们不能保证这些人脸识别系统都能被正确地、正当地使用,如果人们不能较好地利用这个新生计算机生物识别技术,一些怀有不良目的的人利用将很容易窥探其他人的隐私,甚至有些没有行业道德的运营商,通过结合数据与人脸数据库连接来进入这些系统进行身份识别,比如身份证、驾驶证等一些证件图像数据库。

本文在隐私保护的条件下,使用非常有效的安全计算来实现所提算法,其能够保证不泄露匹配双方的任何隐私信息。

系统概述:现实环境中安全人脸图像识别方法是由两个重要部分组成,一是服务器端存储了一组机密人脸数据库,另一个是客户端,其输入是单个人脸。在典型的服务器端中可能具有可疑人员的人脸的数据库,而客户端可能是一个摄像头,拍摄路人的影像。该系统必须找出客户端持有的脸部特征是否匹配服务器端列表中的面孔。在此基础之上还有两个要求是该系统还应满足的:第一,生物统计与计算机模式识别中,由客户端获取的图像与存在的列表图像之间同一个人中,能够完全百分之百匹配的可能性是不可能的,人脸识别算法的实用性就成了其的必须属性;第二,必须满足在一个隐私保护的方式下来完成人脸的匹配过程。也就是说,除了客户端的输入与服务器端列表中人脸是否匹配的信息以外,服务器端和客户端都不会获知其它任何信息。为了实现以上所述,就得在众多人脸部识别算法中进行筛选,该算法应满足在不同人脸表情和不同光照等条件下都能凸显出很好的识别鲁棒性,而且还必须考虑是否能将安全计算协议应用于其中。大多人脸识别算法技术难度大,算法实现复杂,很难支持安全计算协议,所以要实现安全计算下的人脸识别算法对人脸识别算法本身的要求很苛刻,在这方面我们所面临的重要挑战就是人脸识别算法通常在实数域计算,而安全协议所处理的数据通常在有限域计算,现有的人脸识别方法如果强行转换到有限域将会在很大程度上导致退化。大家所熟知的传统加密算法

所能够实现的运算相当有限制,在非常复杂的数学运算中只能够进行简单运算,如加、减、乘、除,但是人脸识别当中还有些困难问题不容易实现,例如平方、范数计算、开根号,为了使这些困难问题能够得到解决,在本文的方法中设计了利用同态加密、不经意传输的安全协议,以及基于高效隐秘汉明距离计算的人脸识别算法[1]。

人脸识别是一种廉价且非入侵性的技术,它的使用方式比用户输入密码、硬件设备或其它生物识别方式更加便捷,在以往的人脸技术研究中与安全相关的多集中在验证任务,其中用户识别他自己到一个系统或系统通过比较已经存入系统中的人们的人脸表示识别他们的身份。这样的应用假设了一个可控的环境,依赖于用户的配合通常要使用一个人的多张图像。我们针对的是不同的识别任务,这是一个一对多的识别任务,单个图像与存储的一组数据图像进行比较,这个任务在监控应用中更加有用,比如犯罪嫌疑人的监测或者公共场所犯罪嫌疑人的监控,又或者寻找一个失踪的人,它有几个显著的特点使得它比验证任务更难实现。

对于任何生物统计技术,同一个人的两个图像是没有完全相同的。另一方面,基于密码或加密秘钥的认证总是希望用户输入相同的密码或使用同一秘钥。在识别当中所使用的表示必须设计成产生类似相同的结果,但不一定是完全一样的输入。在加密算法中只有相同输入才能进行成功验证,因此他们不能适用于生物识别。我们在安全人脸识别方案中使用的人脸识别算法表现良好。

我们假定面部特征都有一些典型的外观,并且几乎每一张脸都可以通过结合这些组合来生成。令X表示一组识别系统中的人,假设我们有一个与X无关的数据库Y,Y是公开的,我们想要保护X中的数据。将人脸分成p个部分并使用Y(第三方数据库)建立每个典型外观的人脸字典。用V={V1,…,Vp}来定义人脸字典,其中例如V1包含30个眼睛图像块,V2包含30个嘴巴图像块等等。令I表示一个来自X的人脸图像其代表一个索引的向量,定义s是与I最相似部分的人脸组成。我们的

目标是从同一个人的不同图像生成最相近的索引向量。不同的人脸表示向量可以通过计算他们集合的差异来进行比较。该模型专门针对计算的差集和汉明距离,这是离散的度量可以在安全计算中使用。

部件的定义:我们定义一个规则的矩形网格,对应向部件的中心,取脸部的较明显特征即眼睛,眉毛,鼻子和嘴巴。图像块大小被选择为相对较小(大概是人脸大小的10%),以便图像块最小的概率重叠。s由p个集合组成s1,…,sp,一个集合是一类人脸部件,每个集合包含n的索引,在每个人脸部件集合中有N个人,也就是说从N个中选出n个索引,在我们的实验中使用p=30的人脸图像块集合,字典中N=100,n=4。基于图像块的人脸表示可以定义如下:

(1)一个人脸中截取p=30个人脸特征图像块,字典中有N=100个人脸共V={V1,…,Vp}=p·N=3000个不同图像块。

(2)输入的每个人脸提取p=30个人脸特征图像块,第i个图像块与字典中对应的Vi集合中的每个图像块进行比较,这样就得到si,将si中最相近的4个图像块的索引对应的值设置为1,其它设置为0得到一个N长的二进制向量vi,其中有n=4比特1,其它为0。其余图像块都做相同的操作。

(3)一个人脸就可以表示成这样的一个二进制向量vp,长度为p·N=3000比特。

需要注意的是两个不同人脸表示s,s′之间的区别等同于向量v,v′之间的汉明距离,这3000位的向量的汉明距离最多是p·2·4=30·2·4=240,因为vi中只有n=4比特是设置成1的,即汉明距离的最大值dmax=240。我们使用这一事实,进一步优化加密算法。本算法的目的是在客户端的输入和服务器端的数据库之间识别一个匹配,通常情况下,预期是只有一个匹配项能够被找出,基于汉明距离的人脸表示,我们将设定一个对应的阈值来进行匹配判断。对于服务器当中的人脸图库,每个不同的人都对应着不同的阈值ti,这个阈值是利用实验得出的经验值,为了能确保实验的识别准确率,阈值的设定是要遵循一定原则的,该原则是尽量使同一人脸图像

的汉明距离在所设定的阈值之内,而非本人的图像的汉明距离在阈值之外,注意都不会超过最大值dmax。

本节内容重点介绍文中使用到的加密算法,人脸识别中的安全计算,这部分的主要研究目的是,在客户端获得它的输入之前,尽量将计算放在执行的预处理阶段进行。这样可以提高人脸识别过程中的效率,缩短了获得人脸图像后计算面部识别的时间[2]。

我们只考虑以下这种情况,对半诚实敌手安全攻击。即,假定双方都遵循协议但可能会尝试去学习了解更多的信息。通俗地说,上面提到的安全可以被定义通过要求各方在协议中整个观点在仅给出输入和输出下模拟。因此,协议执行本身并不增加任何一方新的信息[3]。

Paillier体制密钥的生成及加解密操作具体过程参见文献[4]。

Paillier加密算法中需要使用大数运算,其中模幂和模乘运算是最重要的两种运算,所以在本文中,使用NTL库计算来实现同态加密算法中的大多运算。其中很大的数即超过计算机编程中正常定义的数据长度的数,我们定义这种数据类型为:ZZ大数类型[5,6]。

使用NTL库很容易产生大素数p、q,也是很容易计算n、e(n),剩下的困难点在于要寻找这样一个g,它满足},且g还要满足

这个过程我们可以转化为g满足下面4个条件式(2)~式(5)

通常的处理方法是先产生随机数,然后将这个随机数带入上面条件的式子中进行判断,看其是否满足所有条件,这种方法仅在理论上可行,但是一旦在实际当中应用,就不难发现这种办法效率较低,并且十分笨拙,故本文采用一种高效率的方法寻找满足上述4个条件的g。(定理1给出)。

定理1 随机生成k,使其满足条件,然后随机生成k′∈Zn,使其满足:k′·e

mod n=k,令g=k′·n+1,那么g就能满足且gcd(L(gemodn2),n)=1。

客户端将人脸表示向量经过同态加密后发送给服务器端,服务器利用同态的加的性质可以将接收到的密文向量与自身存储的向量进行异或,得到两个向量(都是只包含元素0,1的向量)的汉明距离的密文。异或运算也叫半加运算,异或的数学符号为“⊕”,其运算法则相当于不带进位的二进制加法a⊕b=a(1-b)+(1-a)b。令a是A方的输入,b是B方的输入,A将加密的Epk(a)发送给B,B方计算

则得到a异或b的密文,注意对B而言b是明文。但对于3000维的向量如果要求其汉明距离需逐位进行异或,这样在密文状态下不仅计算量大,复杂度高,同态加与同态乘的运算次数也常多,极易出错,降低了算法的效率,增加了程序的运行时间。

根据所述存在的问题我们提出了一种适用于本文用同态加密求向量汉明距离的改进算法——高效隐秘汉明距离算法。由于在服务器端进行运算,其持的向量v是明文和接收的客户端的向量密文Epk(w),并且向量的每一位不是0就是1。首先考虑明文情况,当计算汉明距离时先判断向量v的每一位是0还是1,若vi=0,则vi⊕wi=wi,若vi=1,则vi⊕wi=1-wi,那么v和w的汉明距离

而J和W的值我们是知道的,在我们的实验中是120,这样计算量大大减少。在密文状态下做同态加运算是比较耗时间的,我们的方法是尽可能利用服务器端是明文这一特点,将明文下的信息尽可能的预处理,减少密文运算,同时原本需要逐位运算的缺陷也可以用批量处理来改善。

这里所讨论的不经意传输协议指的是1-out-of-N不经意传输,可以理解为1到n的不经意传输。具体关于不经意传输的描述参见文献[7]。以下简述的设计:令R表示接受方,令S表示发送方。首先进行初始化,S端选择N-1个随机数C1,…,CN-1。S选,计算gγ。S把C1,…,CN-1与gγ送给R。对1≤i≤N-1,S预计算(Ci)γ。

交互S的输入:M0,…,MN-1。

(1)R的选择σ∈{0,…,N-1}。R随机选择k,令PKσ =gk。若σ≠0,R计算PK0=Cσ /gk,R把PK0发给S。R计算解密用的密钥(gr)k=(PKσ)r。

(2)S端计算(PK0)r的值。

(3)S计算(PKi)=(Ci)r/(PK0)r(1≤i≤N-1)。S选随机串R。S计算H((PKσ)r,R,i)从以加密每个Mi,R用H((PKσ)r,R,i)解密得至Mσ[8,9]。

本节开始描述安全计算的协议,对于输出的结果可以只让客户端或者只让服务器端或者双方知道计算结果,但是我们描述的协议是只让客户端知道输出而服务器端不知道任何信息。在算法中客户端和服务器端首先使用同态加密去计算两个向量之间的差距,结果将是在[0,dmax]范围内,没有任何一方是知道这个值的,但是客户端知道汉明距离和一个有服务器端选出的随机数的和。接下来双方使用1-out-of-dmax+1不经意传输协议传达输出结果值。

方案流程如图1所示。

算法:安全人脸识别

输入:客户端的输入是一维向量w=(w0,…wl-1),服务器端的输入是多个一维向量w1,…,wN,其中),数据库中每一个人脸的阈值t1,…tN作为服务器端独有输入,汉明距离的最大值dmax=240对于双方是已知的。

输出:服务器端不知道任何信息的情况下,客户端知道索引i,并且有dH(w,wi)≤ti。协议当中的同态加密操作可以表示成Epk(·),pk是公钥任何一方都可以知道,这个值在整个过程中是公开的,明文则是在一个环或是域当中,在解密文件时却只有客户端可以进行操作,因为客户端知道对应的私钥。

(1)客户端发送0,1表示的稀疏矩阵w=(w0,…wl-1)的逐位的同态加密结果。服务器端接收到向量的加密结果{Epk(w0),…,Epk(wl-1)},对于数据库中的N项数据wi∈w1,…,wN,只需重复以上步骤,就可以得到相应结果。

(2)在服务器端的向量,其中值为1的位置j,根据2.2高效隐秘汉明距离算法部分可知服务器端不用对每一位进行运算

对服务器端而言是常数。

(3)利用同态加,服务器端计算出其总和Epk(dH)。dH是w与wi的汉明距离,其在{0,1,…dmax}之内取值。然后选择随机数ri∈F,计算Epk(dH+ri)之后,将值发送给客户端,本步骤中的加法不考虑模运算的简化。

(4)客户端接收到服务器端发送的密文Epk(dH+ri)然后进行解密。

(5)双方通过调用协议映射结果和我们事先所预留是阈值进行计算,得到输出值,其中接收者是客户端,发送者是服务器端,服务器的输出值为X0,…Xdmax,对于向量中的任意一位k

客户端的人脸测试图像为20幅,服务器端的测试人脸图像为100幅,这100幅图像分别对应20个不同的人,也就意味着每个人有5幅不同的图像,实验过程是要比对客户端的人脸图像与100个在服务端的人脸,本文在Yale数据集中选择测试人脸图像。下面解释一下表格中匹配正确率的含义,它表示如果是测试人脸与库中人脸属于同一个人,测试结果是匹配,那么认为结果正确,测试结果不匹配认为结果错误;如果不属于同一个人,测试结果是匹配,则认为结果错误,反之则认为其正确。实验当中我们选取了20幅测试人脸图像,与包含100个人的人脸图像数据库中的图像进行匹配测试。其匹配准确率结果见表1。

图2所示的是未改进的同态加密和改进之后的同态加密在进行同态加运算时所用时间的对比实验,测试是用8幅大小不同的图像进行的,从实验结果可以看出改进的同态加密的时间比未改进的同态加密的时间缩短了0.1 s~0.3 s,平均时间缩短了16.9%。程序测试环境是Windows 32,2.92 GHz Intel Core2 Duo CPU,3GB RAM,VS2012。

本文不仅在工程上实现了文献[1]中安全计算的人脸识别算法,还提出了一种高效

的同态加密方法,这种方法比传统的同态加密更适用于图像块提取的人脸识别方法的比较环节,复杂度降低,效率显著提高,但是在算法识别率以及算法实时性方面还有待提高,未来将在这些方面的研究与实验中进一步的展开,使算法能够更加优化更加简洁。

本文标签: 人脸计算服务器端算法图像