一种基于人脸验证系统的安全人脸验证方法与流程

文档序号:21000032发布日期:2020-06-05 22:35阅读:324来源:国知局
一种基于人脸验证系统的安全人脸验证方法与流程

本发明属于人脸识别技术领域,具体地涉及一种基于人脸验证系统的安全人脸验证方法。



背景技术:

人脸验证是一种通过人的特征性面部外观来确定其身份的技术。人脸验证做的是1:1的比对,即判断两张图片的人是否为同一个人。如,给定一个用户的id和人脸图像,将其与数据库中id相同的人脸图像进行距离计算,如果距离小于阈值,那么是同一个人,反之则不是。由于人脸验证稳定性高且错误率小,因此在公安、安检、医疗等众多方面有着广泛的应用。

云计算是一种新型的基于互联网的计算机技术。用户终端可以通过远程连接,获取云端的存储、计算、数据库等计算资源,云端按需部署计算资源。因此越来越多的用户选择将自己的数据上传到云端进行运算,既可以享受云端强大的计算能力所带来的便利,也不用费心维护。目前,云计算主要采用身份验证和访问控制策略来确保数据机密性和数据传输中的安全性。但是这些安全措施均是用于防止外部攻击,无法消除潜在的云平台内部威胁。

在云端实现人脸验证主要涉及的问题是:用户人脸的隐私性。由于云端可以对用户上传的数据进行任意访问,因此人脸数据的隐私性和安全性将无法保证。在公安、安检、公司等地方,若用户的id和对应的人脸图像丢失或被窃取,那么犯罪分子就可能利用这些敏感信息做一些违法操作。因此,将存放在云端的人脸数据进行加密是非常有必要的,然而普通的加密算法并不支持对密文的计算。

而全同态加密技术是一种新型的加密方法,它支持密文之间的运算,而且解密结果与明文运算结果相同。目前大部分采用同态加密技术的安全人脸验证系统都需要拥有私钥的客户端辅助云服务器解密,因为云服务器无法对密文计算结果作出判定,而客户端通常是存放在公共场合,由它来保存私钥很不安全。



技术实现要素:

针对现有技术存在的问题,本发明提供了一种基于人脸验证系统的安全人脸验证方法。该方法安全多方计算能够让互相不信任的各个参与方在均不泄露本身私有信息的前提下,通过合作计算来完成对整体数据的分析,以得到准确的结果。客户端将经过一个深度神经网络特征提取器得到的人脸特征向量并加密成一个密文,将该用户的id和加密的人脸特征向量发送给数据服务器,在数据服务器进行同态计算得到结果,将该结果加上随机向量r传给验证服务器,最后数据服务器与验证服务器进行安全两方计算,得到验证结果并反馈给客户端。3.本发明解决其技术问题所采用的技术方案是:一种基于人脸验证系统的安全人脸验证方法,其特征在于,所述人脸验证系统包括:客户端、数据服务器与验证服务器,所述安全人脸验证方法具体包括以下步骤:

(1)在注册阶段,客户端获取用户的id和人脸图像,将人脸图像通过特征提取器提取n维注册人脸特征向量m,并将注册人脸特征向量m用单指令多数据流方法编码并加密成注册人脸密文e(m),客户端将用户的id和相应的注册人脸密文e(m)发送到数据服务器中并保存。

其中,yj表示注册人脸特征向量m中的每一个元素。

(2)在验证阶段,该用户的人脸图像再次通过特征提取器提取n维查询人脸特征向量m*,并用单指令多数据流方法编码加密成查询人脸密文e(m*),客户端再次将该用户id和查询人脸密文e(m*)发送给数据服务器。

其中,xj表示查询人脸特征向量m*中的每一个元素。

(3)数据服务器根据该用户id找到相应的注册人脸密文e(m),将它与查询人脸密文e(m*)进行欧式距离计算,获得欧式距离e(sqrt):

(4)数据服务器与验证服务器进行安全两方计算,获得验证结果,具体包括如下步骤:

(4.1)将欧式距离e(sqrt)加上一个随机向量r,得到随机密文e(sqrt+r),并将e(sqrt+r)发送给验证服务器;

(4.2)验证服务器将随机密文e(sqrt+r)用私钥sk解密之后得到sqrt+r;

(4.3)数据服务器输入为r,验证服务器输入为sqrt+r,比较sqrt与阈值t之间的大小关系:若sqrt<t,则表示验证结果为同一个人,否则表示验证结果不是同一个人。

(5)数据服务器将验证结果返回给客户端。

4.根据权利要求1所述安全人脸验证方法,其特征在于,所述步骤3包括以下子步骤:

(3.1)计算e=e(m)-e(m*)的值,并将e求平方,得到平方密文e2

(3.2)将e2中每个元素的值相加,得到求和密文e(sum),包括以下步骤:

(3.2.1)将平方密文e2通过旋转操作进行向左旋转,得到旋转密文e2i,每次旋转操作的列数ti为ti=pow(2,i),其中i为旋转次数且i≤log(n)/log(2),设置i的初始值为0;

(3.2.2)将每一次旋转操作后的旋转密文e2i与未旋转操作的平方密文e2相加,得到一个更新后的平方密文e2;并将i+1赋值给i;

(3.2.3)重复步骤a-b,直到i>log(n)/log(2),输出求和密文e(sum)。

(3.3)对求和密文e(sum)求平方根,具体步骤如下:

(3.3.1)e(sum)除以明文值λ2,将e(sum)映射到0~1范围内,记a0=e(sum),b0=e(sum)-1;

(3.3.2)根据以下公式循环操作d次,得到ad和bd,

(3.3.3)再将ad乘以λ,即得到欧式距离e(sqrt)。

与现有技术相比,本发明的有益效果是:1)本发明公开的基于云计算的安全人脸验证系统,可以在不泄露用户人脸图像即客户端隐私数据的情况下,将图像发送给服务器,它保护了客户端数据的安全性,也减轻了客户端的计算量。2)采用两服务器模型,在数据服务器进行同态运算,并与验证服务器进行两方计算。计算过程中,数据服务器没有用户私钥,不能解密人脸数据;验证服务器不能获取加密的人脸数据,也不能解密人脸数据。3)采用了单指令多数据流技术,该技术仅需一次加密、一次同态运算就可以实现多个密文的同态运算。

附图说明

图1为本发明注册阶段的流程图;

图2为本发明验证阶段的流程图。

具体实施方式

为了让本发明的特征和优点更加明显,下面结合本发明附图对本发明进行详细、完整的说明。

本发明的人脸验证系统包括:客户端、数据服务器与验证服务器,该安全人脸验证方法包括以下步骤:

(1)在注册阶段,客户端获取用户的id和人脸图像,将所述人脸图像通过深度神经网络特征提取器(如facenet)提取n维注册人脸特征向量m,并将注册人脸特征向量m用单指令多数据流方法编码并加密成注册人脸密文e(m),客户端将用户的id和相应的注册人脸密文e(m)发送到数据服务器中并保存。将用户的id和加密的注册人脸密文e(m)先保存在数据服务器中,是为了在以后查询及验证。该过程如图1所示。

其中,yj表示注册人脸特征向量m中的每一个元素。

如图2为本发明验证阶段的流程图,具体为:

(2)在验证阶段,该用户的人脸图像再次通过特征提取器提取n维查询人脸特征向量m*,并用单指令多数据流方法加密成查询人脸密文e(m*),客户端再次将该用户的id和查询人脸密文e(m*)发送给数据服务器。再次采集得到查询人脸密文e(m*)的目的是为了与步骤(1)采集的注册人脸密文e(m)进行计算,来比较相似性。

其中,xj表示查询人脸特征向量m*中的每一个元素。

(3)数据服务器根据该用户id找到相应的注册人脸密文e(m),将它与查询人脸密文e(m*)进行欧式距离计算,获得欧式距离e(sqrt):

用欧式距离来计算注册人脸密文e(m)和查询人脸密文e(m*)的相似度,原因在于通过facenet提取出来的人脸特征向量之间是可以进行欧氏距离比较的,距离相近表示是一个人,距离相远表示不是一个人。

在步骤(3)的过程中,采用的是在数据服务器进行同态运算,由于数据服务器没有私钥,因此即使数据服务器本身是恶意的也无法获得加密的人脸特征向量,安全性更高。

该过程具体包括以下子步骤:

(3.1)计算e=e(m)-e(m*)的值,由于采用的是seal库,不支持减法操作,因此需要先将e(m*)取负,再加上e(m)的操作实现减法操作。并将e求平方,得到平方密文e2

(3.2)将e2中每个元素的值相加,得到求和密文e(sum),包括以下步骤:

(3.2.1)将平方密文e2通过旋转操作按列旋转,得到旋转密文e2i,每次旋转操作的列数ti为ti=pow(2,i),其中i为旋转次数且i≤log(n)/log(2),设置i的初始值为0;

(3.2.2)将每一次旋转操作后的旋转密文e2i与未旋转操作的平方密文e2相加,得到一个更新后的平方密文e2;并将i+1赋值给i;

(3.2.3)重复步骤a-b,直到i>log(n)/log(2),输出求和密文e(sum)。

(3.3)对求和密文e(sum)求平方根,具体步骤如下:

(3.3.1)e(sum)除以明文值λ2,将e(sum)映射到0~1范围内,记a0=e(sum),b0=e(sum)-1;

(3.3.2)根据以下公式循环操作d次,得到ad和bd,

(3.3.3)再将ad乘以λ,即得到欧式距离e(sqrt)。

(4)数据服务器与验证服务器进行两方计算,获得验证结果,两方计算能够让互不信任的数据服务器与验证服务器在不泄露本身数据的前提下,通过合作计算完成对整体数据的分析,达到验证的目的。数据服务器拥有加密的人脸图像特征向量,没有私钥,因此无法获取加密的人脸图像特征向量;而验证服务器拥有私钥,且传过来的向量是加上了随机向量r,即使用私钥解密,也无法获取人脸特征向量的真实数据,这样保护了两个服务器的数据,使安全性更高。具体包括如下步骤:

(4.1)将欧式距离e(sqrt)加上一个随机向量r,得到随机密文e(sqrt+r),并将e(sqrt+r)发送给验证服务器;

(4.2)验证服务器将随机密文e(sqrt+r)用私钥sk解密之后得到sqrt+r;

(4.3)数据服务器输入为r,验证服务器输入为sqrt+r,比较sqrt与阈值t之间的大小关系:若sqrt<t,则表示验证结果为同一个人,否则表示验证结果不是同一个人。

(5)数据服务器将验证结果返回给客户端。

本发明方案在ubuntu16.04操作系统,结合同态加密seal库和两方计算aby库实现。实验表明其针对人脸验证的密文计算结果和明文计算结果相一致,确保了该发明的正确性。本发明公开的保护隐私的安全人脸验证系统,可以在不泄露人脸图像数据的情况下,将人脸验证外包给云服务器,它保护了客户端数据的安全,减轻了客户端的计算量;同时将人脸特征向量编码成一个密文来进行运算,既保护了人脸的隐私性,也降低了空间复杂度,达到提高效率的目的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1