本文學習論文“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