Secure Face Matching Using Fully Homomorphic Encryption-2018:学习
本文学习论文“Secure Face Matching Using Fully Homomorphic Encryption-2018”和“基于全同态加密的人脸特征密文认证系统-2020”,记录笔记。
摘要#
- 人脸识别技术的发展取决于特征学习(representation learning)的进步。
- 本文提出一个基于全同态加密的人脸识别方案,能保护用户隐私,且能在加密域实现匹配的功能。
- 常用的人脸库((LFW, IJB-A, IJB-B, CASIA)。
- 实验结果,对于16KB大的512维的图像匹配一次耗时0.01s,且控制在最低损失。
- 【Sphereface: Deep hypersphere embedding for face recogni-tion】简单理解为,使用该技术从人脸图像中提取特征。
引言#
-
人脸识别是通过人脸特征来确定身份的。
-
深度学习技术提升了人脸识别的准确率。
-
传统的人脸识别流程:
- 给定一张人脸图像,然后提取特征向量(高维)。
- 在注册阶段,将特征向量和对应的识别标签(identity labels)存入数据库。
- 然后该数据库用于比较人脸特征,进而验证身法。
-
明文存储的数据库不安全,容易泄露,或者被重建。
-
所以需要加密,而只有同态加密才能对密文计算。
-
全同态加密提供加法和乘法计算,且对应的开源库给出了扩展接口和最优的计算复杂度。
-
本文使用全同态密码算法实现人脸识别,(1)加密数据库和要检索的图像特征向量;(2)直接在加密域中匹配,且匹配的相似度计算,如欧氏距离或者预选相似度等,都可以分解为加法和乘法运算。
-
【Fully Private Non-interactive Face Verification-2013】中给出的全同态加密测试数据:加密一张512维的人脸特征向量需要48.7MB,完成匹配需要12.8s。
- 使用的全同态加密方案是GH11【Implementing Gentry’s Fully-Homomorphic Encryption Scheme-2011】。
-
当前人脸识别大都是基于深度神经网络,特征提取使用CNN,本文使用的特征提取模型是FaceNet和SphereFace。
-
本文贡献:
- 使用高效的全同态加密方案BFV,效率提升至,加密耗16.5MB,匹配耗0.6s。
- 使用SIMD编码,提升计算效率,提升至,加密耗16KB,匹配耗0.01s。
-
名词解释:
- probe,就是要被检索的特征(图像)
相关工作#
- 【Fully private noninteractive face verification-2013】提出一个基于FHE的Gabor特征的人脸验证系统,该方案成本很高(内存为380MB,每个匹配耗时100s)。
- 该方案的成本为内存66KB,每个匹配耗时0.01s。
方案#
-
上图就是人脸图像提取特征向量的过程。
- 人脸检测
- 对齐
- 归一化
- 特征提取,嵌入函数的功能就是将一个高维归一化的向量映射为一个
维的特征向量。
-
传统的人脸识别系统分为:
- 注册,形成数据库
- 匹配,给定一个图像,提取出特征
,与数据库中的向量匹配,得到的结果是一个分数,表示 和 之间的相似度。 - 计算相似度:
,其中 ,所以计算是由 次标量乘法和 次标量加法组成。 - 标量乘(scalar multiplications),就是向量对应位置相乘。
- 注册,形成数据库
框架#
注册#
- 用户产生公私钥:
,使用公钥 加密一个特征向量 ,得到密文 ,然后连同用户身份(user identity) 一起上传数据库。 - 每个用户生成各自的公私钥。
匹配#
- 给定一个要匹配的特征向量
,使用公钥 加密得到密文 ,然后连同用户身份标签(user identity) 一起上传数据库进行匹配。 - 服务器在密文下计算出相似度
,并返回给客户端。 - 客户端使用私钥
解密得到结果。
- 匹配时的用户也产生自己的公私钥对
- 若与数据库中使用的公钥不同,需要服务器执行密钥交换
BFV方案#
- BFV是在整数多项式计算的,所以在加密前需要编码。
是分解整数的基, 将整数 分解为 部分。
次密文乘*密文, 次密文+密文,1次密文+明文。
优化#
- 密文乘法计算导致计算速度慢,对于512维的人脸图像特征向量和128位的加密安全等级:
- 加密一次需要16.5MB内存
- 匹配一次需要0.7s
- 所以需要下一步优化:
- 在环上对人脸特征编码
- 使用批处理技术,利用CRT将向量编码为一个明文多项式,以单个乘法同态实现多个数的同态乘法
- 使用降维技术降低计算消耗
人脸特征编码#
- 环的选择很重要。
- 编码方式:
,其中 是特征向量,编码为整数 。 是什么?- 基数
在这里起什么作用?
批处理#
- 批处理:将多个数编码到多项式上,每次计算一次多项式就相当于对多个数同时计算。
- 对于环
,当 为许多小素数的乘积时,即 ,可利用CRT将环 进行分解。 - 如何拆分,如何计算?
-
批处理优点是,可以单次多项式计算操作相当于
次整数计算。 -
缺点是:无法访问加密后向量中的各元素,也就无法求和。
-
解决办法:使用密文旋转,思想来自【Fully homomorphic encryption with polylog overhead-2012】,即循环旋转
次并累加向量元素从而获得加密向量元素之和。 -
密文内积计算:
- 最后乘
。
特征降维#
- 降维方法:ISOMAP【A global geometric framework for nonlinear dimensionality reduction-2000】、LLE【Nonlinear dimensionality reduction by locally linear embedding-2000】、随机映射(random projections)【Experiments with random projection-2000】等,本文使用的是主成成分分析法(Principal Component Analysis,PCA)。
实验#
- 数据集采用(LFW,IJB-A,IJB-B,CA-SIA)
- 基于的深度神经网络模型是FaceNet和SphereFace
- 使用SEAL库。
- 相比于【】相比,本方案可以提供128~192位的安全级别,和在小型人脸数据库上能提供实时匹配。
- 编码精度:0.1,0.01,0.0025
- 错误率:FAR,正确接受率:TAR
- 对512 维的人脸特征,每个加密模板仅需要16KB和匹配一对加密模板需要0.02s
作者:Hang Shao
出处:https://www.cnblogs.com/pam-sh/p/16701220.html
版权:本作品采用「知识共享」许可协议进行许可。
声明:欢迎交流! 原文链接 ,如有问题,可邮件(mir_soh@163.com)咨询.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)