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。
方案
上图就是人脸图像提取特征向量的过程。
- 人脸检测
- 对齐
- 归一化
- 特征提取,嵌入函数的功能就是将一个高维归一化的向量映射为一个\(d\)维的特征向量。
传统的人脸识别系统分为:
- 注册,形成数据库\(X=\left \{ x_1,...,x_n \right \},x_i\in R^d\)
- 匹配,给定一个图像,提取出特征\(y\in R^d\),与数据库中的向量匹配,得到的结果是一个分数,表示\(X\)和\(Y\)之间的相似度。
- 计算相似度:\(d({x}, {y})=1-\frac{{x}^{T} {y}}{\|{x}\|\|{y}\|}=1-\tilde{{x}}^{T} \tilde{{y}}=1-\sum_{i=1}^{d} \tilde{x}_{i} \tilde{y}_{i}\),其中\(\tilde{{x}}=\frac{{x}}{\|{x}\|}\),所以计算是由\(d\)次标量乘法和\(d\)次标量加法组成。
- 标量乘(scalar multiplications),就是向量对应位置相乘。
框架
注册
- 用户产生公私钥:\(pk,sk\),使用公钥\(pk\)加密一个特征向量\(x\),得到密文\(E(x)\),然后连同用户身份(user identity)\(c\)一起上传数据库。
- 每个用户生成各自的公私钥。
匹配
- 给定一个要匹配的特征向量\(y\),使用公钥\(pk\)加密得到密文\(E(y)\),然后连同用户身份标签(user identity)\(c'\)一起上传数据库进行匹配。
- 服务器在密文下计算出相似度\(E(d_1),...,E(d_n)\),并返回给客户端。
- 客户端使用私钥\(sk\)解密得到结果。
- 匹配时的用户也产生自己的公私钥对
- 若与数据库中使用的公钥不同,需要服务器执行密钥交换
BFV方案
- BFV是在整数多项式计算的,所以在加密前需要编码。
- \(w\)是分解整数的基,\(l=log_wq\)将整数\(q\)分解为\(l\)部分。
- \(d\)次密文乘*密文,\(d-1\)次密文+密文,1次密文+明文。
优化
- 密文乘法计算导致计算速度慢,对于512维的人脸图像特征向量和128位的加密安全等级:
- 加密一次需要16.5MB内存
- 匹配一次需要0.7s
- 所以需要下一步优化:
- 在环上对人脸特征编码
- 使用批处理技术,利用CRT将向量编码为一个明文多项式,以单个乘法同态实现多个数的同态乘法
- 使用降维技术降低计算消耗
人脸特征编码
- 环的选择很重要。
- 编码方式:\(\operatorname{Encoding}(a)=\operatorname{sign}(a)\left(a_{n-1} x^{n-1}+\cdots+a_{1} x+a_{0}\right)\),其中\(a\)是特征向量,编码为整数\(\left(a_{n-1} x^{n-1}+\cdots+a_{1} x+a_{0}\right)\)。
- \(\operatorname{sign}(a)\)是什么?
- 基数\(w\)在这里起什么作用?
批处理
- 批处理:将多个数编码到多项式上,每次计算一次多项式就相当于对多个数同时计算。
- 对于环\(R_t=Z[x]/(x^n+1)\),当\(t\)为许多小素数的乘积时,即\(t=\prod_{i=1}^{k} p_{i}\),可利用CRT将环\(R_t\)进行分解。
- 如何拆分,如何计算?
批处理优点是,可以单次多项式计算操作相当于\(k\)次整数计算。
缺点是:无法访问加密后向量中的各元素,也就无法求和。
解决办法:使用密文旋转,思想来自【Fully homomorphic encryption with polylog overhead-2012】,即循环旋转\(l=log_wq\)次并累加向量元素从而获得加密向量元素之和。
密文内积计算:
- 最后乘\((1,0,0,0)\)。
特征降维
- 降维方法: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
Secure Face Matching Using Fully Homomorphic Encryption-2018:学习的更多相关文章
- Improved Security for a Ring-Based Fully Homomorphic Encryption Scheme-2013:解读
本文记录阅读此论文的笔记 摘要 (1)1996年,HPS三人提出一个格上的高效加密方案,叫做NTRUEncrypt,但是没有安全性证明:之后2011年,SS等人修改此方案,将其安全规约到标准格上的困难 ...
- Privacy-Preserving Deep Learning via Additively Homomorphic Encryption
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! Full version of a paper at the 8-th International Conference on Appli ...
- TENSEAL: A LIBRARY FOR ENCRYPTED TENSOR OP- ERATIONS USING HOMOMORPHIC ENCRYPTION 解读
本文记录阅读该paper的笔记,这篇论文是TenSeal库的原理介绍. 摘要 机器学习算法已经取得了显著的效果,并被广泛应用于各个领域.这些算法通常依赖于敏感和私有数据,如医疗和财务记录.因此,进一步 ...
- 同态加密-Homomorphic encryption
同态加密(Homomorphic encryption)是一种加密形式,它允许人们对密文进行特定的代数运算得到仍然是加密的结果,将其解密所得到的结果与对明文进行同样的运算结果一样.换言之,这项技术令人 ...
- Packed Ciphertexts in LWE-based Homomorphic Encryption:解读
本节内容记录阅读该论文的笔记 介绍 首先,介绍了两种明文"打包"的方法:PVW和SV PVW:对应论文(PVW:A framework for efficient and comp ...
- Python 最佳实践指南 2018 学习笔记
基础信息 版本 Python 2.7 Python 3.x Python2.7 版本在 2020 年后不再提供支持,建议新手使用 3.x 版本进行学习 实现 CPython:Python的标准实现: ...
- 干货 | 请收下这份2018学习清单:150个最好的机器学习,NLP和Python教程
机器学习的发展可以追溯到1959年,有着丰富的历史.这个领域也正在以前所未有的速度进化.在之前的一篇文章中,我们讨论过为什么通用人工智能领域即将要爆发.有兴趣入坑ML的小伙伴不要拖延了,时不我待! 在 ...
- Homomorphic Evaluation of the AES Circuit:解读
之前看过一次,根本看不懂,现在隔这么久,再次阅读,希望有所收获! 论文版本:Homomorphic Evaluation of the AES Circuit(Updated Implementati ...
- (转)Awesome Courses
Awesome Courses Introduction There is a lot of hidden treasure lying within university pages scatte ...
- Federated Machine Learning: Concept and Applications
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! Qiang Yang, Yang Liu, Tianjian Chen, and Yongxin Tong. 2019. Federate ...
随机推荐
- 一个强大、支持100多种格式.Net图片操作库
更多开源项目请查看:一个专注推荐优秀.Net开源项目的榜单 我们在项目开发中,对图片的操作可以说是非常常见,比如图片大小改变.图片合并.格式转换.添加水印等,自己开发都需要费不少时间,所以今天给大家介 ...
- Java大作业:AI千恋万花(调用api实现)老师看完说蒸鹅心
写完py版本的ai老婆后,老师改了要求,大作业只能Java写,而且必须使用MySQL的工具,只好重写了一份 前情提要:https://www.cnblogs.com/h4o3/p/18523151 由 ...
- 鸿蒙NEXT开发案例:二维码的生成与识别
[引言] 在本篇文章中,我们将探讨如何在鸿蒙NEXT平台上实现二维码的生成与识别功能.通过使用ArkUI组件库和相关的媒体库,我们将创建一个简单的应用程序,用户可以生成二维码并扫描识别. [环境准备] ...
- bootstrap-fileinput使用手册
一.准备 1.插件下载地址:https://github.com/kartik-v/bootstrap-fileinput/ 下载后的压缩包解压文件夹内容如下: js:插件核心js代码,引用filei ...
- 重新使用Java的七个理由
译者注:此文系作者于2011年7月11发表于OnJava O'Reily正在庆祝Java7的发布,以及7月25日到27日即将在波兰开展的 OSCON Java 大会. Java宣告回归了,同胞们.当然 ...
- S2P主数据助力医药企业建立数据化管理平台
随着国家信息化进程的推进,医药软件行业市场规模正在不断扩大,其应用领域也在逐步拓宽,企业面临着多样化的销售渠道和模式选择.然而,要想在这样的多变市场中占据优势地位,单纯依靠经验决策已经不足以应对挑战. ...
- 优雅地打印 HEX 数据
转载至知乎Murphy https://zhuanlan.zhihu.com/p/320391096 前言 在调试的时候经常要打印内存里的数据,来看看数据及格式是否在预期范围内:以及在调试二进制协议的 ...
- 零基础学习人工智能—Python—Pytorch学习(十三)
前言 最近学习了一新概念,叫科学发现和科技发明,科学发现是高于科技发明的,而这个说法我觉得还是挺有道理的,我们总说中国的科技不如欧美,但我们实际感觉上,不论建筑,硬件还是软件,理论,我们都已经高于欧美 ...
- R机器学习:朴素贝叶斯算法的理解与实操
最近又看了很多贝叶斯算法的一些文章,好多的文章对这个算法解释起来会放一大堆公式,对代数不好的人来说真的很头疼.本文尝试着用大白话写写这个算法,再做个例子,帮助大家理解和运用. Naive Bayes ...
- 如何调整Linux系统为正确时区
如果你的 Linux 系统时区配置不正确,必需要手动调整到正确的当地时区.NTP 对时间的同步处理只计算当地时间与 UTC 时间的偏移量,因此配置一个 NTP 对时间进行同步并不能解决时区不正确的问题 ...