康 緣
西安外事學院生物醫學工程,西安 710077
人臉識別技術[1]是指用攝像設備采集含有人臉的圖像或視頻流,并自動在圖像中檢測和追蹤人臉,進而對檢測到的人臉進行臉部識別的一系列相關技術。隨著科學技術的進步和時代的發展,人臉識別技術被廣泛應用于人們的日常生活中,例如,刷臉支付、人臉識別閘機系統等等[2-5]。這一技術的運用在給人們帶來便利的同時,也伴隨著隱私泄露的風險。
生物特征相對于密碼更容易泄露,而且一旦泄露了也無法撤銷。密碼可以換新的密碼,但人體固有的生物特征無法改變。由于個人的生物學數據具有穩定不變性,一旦泄露,相應的風險及危害即不可逆轉,也無法有效彌補[6]。人臉數據的泄露,所帶來的潛在的安全風險,可能比手機號與賬戶信息的泄露更為嚴重。例如,通過“照片活化”工具可將人臉照片修改為執行“眨眨眼、張張嘴、點點頭”等操作的人臉驗證視頻[7]。匹配了身份信息的照片,經過“照片活化”后,能實名注冊市面上大多數軟件,加上驗證碼破解方式,不法分子在辦理網貸、精準詐騙等方面幾乎毫無障礙。因此,除了在法律法規層面規范人臉識別技術的應用[8,9]之外,在技術層面對人臉識別隱私保護的研究也是很有必要的。
本文提出基于內積函數的加密人臉識別方案,整體分為注冊和識別兩個階段。注冊時,用戶初次注冊,系統錄入提取用戶人臉特征向量,并加密存儲在后臺數據庫;識別時,再次錄入提取用戶人臉特征向量,與數據庫人臉做匹配,并給予結果。我們采用內積函數加密方案,對注冊階段的人臉和識別階段的人臉都進行加密處理,并在解密時只關注加密向量的內積,可以保證不會暴露原始的人臉特征向量,保證了安全。后臺數據庫存放的也不是人臉向量的明文信息,即使數據被泄露,也無法從中提取出人臉特征,保證系統安全。但是在同時請求次數過多的時候,一般的內積加密也滿足不了安全需要。本文在內積函數加密的基礎上追求緊的內積加密,可以在有大量請求的同時也能保護系統安全參數等不被泄露。
(1)基于內積函數方法提出加密人臉識別方案,通過加密人臉特征向量或圖像,可以防止未經授權的訪問和使用。
(2)人臉識別加密可以實現對人臉數據共享的精細控制。加密技術使得數據所有者能夠選擇性地共享人臉數據,并靈活地指定授權方和訪問權限。這種可控共享的特性可以促進人臉數據的有效利用,同時保護數據隱私。
(3)邀請了9名志愿者進行了實驗,對每名志愿者人臉認證的性能進行了評估,實驗結果表明了基于內積函數加密的人臉識別方案能夠有效進行用戶識別的同時保護用戶隱私。
針對人臉特征保護的研究,已經有很多相關研究工作。黃文軍等[10]提出了一種合適的人臉特征模板保護方案,利用密碼學中的Hash 函數實現模板與待測特征信息之間的匹配。陶曉燕等[11]提出了正交鄰域保護嵌入算法,降低了人臉識別的誤差率。Meden等[12]提出了一種可控人臉去識別技術,平衡了圖像質量、身份保護和數據效用。Mai 等[13]提出了一個隨機CNN 來生成受保護的人臉生物識別模板,增強了人臉原始圖像的安全性。此外,人臉活體認證技術通過用戶活動人臉面部器官,防止偽造的人臉圖片被合法認證。然而,通過“照片活化”工具可將人臉照片修改為執行“眨眨眼、張張嘴、點點頭”等操作的人臉驗證視頻[7]。匹配了身份信息的照片,經過“照片活化”后,能實名注冊市面上大多數軟件,加上驗證碼破解方式,不法分子在辦理網貸、精準詐騙等方面幾乎毫無障礙。
目前的生物特征模板保護研究主要采用生物特征+密碼學的方式[14-16],通過提取生物特征作為原始數據,輸入到一個密碼學的框架中進行加密處理。因此,問題的關鍵在于采用何種加密算法。Boneh 等[17]最早提出函數加密的概念。函數加密(Function Encryption,FE)是公鑰密碼學的一個新熱點,不同于傳統的公鑰加密,函數加密中擁有私鑰的用戶可以對密文進行計算,得到的是關于明文x 的函數f(x,y),卻不知道明文的其他任何信息,有效防止了明文的敏感信息外泄。Abdalla 等[18]人提出了內積函數加密(Inner Product Function Encryption,IPFE),其使用向量y 的密鑰解密加密的向量x將只透露
本文提出基于函數加密的人臉識別系統,大體分為注冊階段和匹配階段兩部分,如圖1 所示。注冊階段主要用于用戶人臉的錄入和加密,得到參考模板ski。用戶初次注冊,系統錄入提取用戶人臉特征向量,并加密存儲在后臺數據庫。匹配階段實時地采集人臉信息,生成生物模板c,計算參考模板與該生物模板的內積,若內積的最大值大于閾值則人臉匹配通過,否則人臉匹配不通過。

圖1 基于函數加密的人臉識別系統流程Figure 1 The process of facial recognition system based on function encryption
(1)注冊階段:在加密器中,用給定的參數生成主密鑰msk;注冊組件錄入人臉,用生物特征提取技術提取人臉特征,并轉化為向量,記參考模板yi;利用函數加密FE 計算出加密的參考模塊ski,保護錄入的人臉特征數據,計算方式如下:
在該階段,用戶注冊時錄入人臉數據用于后續登錄驗證。
(2)匹配階段:人臉信息捕捉組件捕捉實時生物特征得到實時生物模塊x,用FE 加密實時生物模塊為c,匹配組件用c和ski計算隱私保護的內積:
找到其中相似度評分最高的Fi與設定的相似性閾值比較,如果大于閾值,則得到對應用戶標識和最高得分i 的索引的匹配,完成登錄;若小于等于閾值,則表明與存儲的任何一個人臉圖像都不匹配,則未能通過驗證。
在該方案中,采用內積函數加密方案,對注冊階段的人臉和識別階段的人臉都進行加密處理,并在解密時只關注加密向量的內積,可以保證不會暴露原始的人臉特征向量,人臉特征以向量形式加密存儲在數據庫中,人臉識別的精確度依賴于特征向量的提取,保證了人臉數據的安全。此外,采用TensorFlow 的特征提取器,保證了提取特征向量的精度。后臺數據庫存放的也不是人臉向量的明文信息,即使數據被泄露,也無法從中提取出人臉特征,保證系統安全。但是在同時請求次數過多的時候,一般的內積加密也滿足不了安全需要,本文在內積函數加密的基礎上追求緊的內積加密,可以在有大量請求的同時也能保護系統安全參數等不被泄露。
在計算機視覺任務中,人臉識別是非常重要的一環。在本文中,首先需要提取人臉的特征,以便于后續的加密參考模板計算。本系統使用OpenCV 檢測圖像中的人臉區域,然后截取人臉區域,將其調整為固定大小,并將其轉換為特征向量。為了實現后續內積計算相似度,還對向量進行歸一化處理,該歸一化過程可以通過每個向量的L2 范數來完成,如下式所示:
其中,yi表示特征向量表示歸一化后的特征向量,‖ y‖2表示y向量的L2范數,n 表示特征向量的維度得到。歸一化后的特征向量可以提升數據準確性,并提高人臉識別的準確度。
此外,在加密做內積運算的過程中,過長的向量長度會影響加密速率,不能較好滿足人臉識別的應用場景。而降低向量長度會降低匹配準確率。本文通過主成分分析方法(Principal Component Analysis,PCA)[21]方法進行降維處理,可以保證平衡一定的精度和匹配速率。
由于加密庫不支持小數運算,只能支持整數運算。因此需要對歸一化的浮點數向量進行縮放,閾值也要做相應縮放。為了保證較高精度,我們對每個元素擴大到乘以2 的20 次方,并向下取整完成轉換。
加密方案首先需要生成加密參數向量以生成公鑰和私鑰,隨后對注冊階段的參考模板y 和匹配階段的生物模板x加密,保護人臉數據隱私。
我們先定義參加密向量的長度l,循環群每次操作的位數,以及限制向量元素的上界,輸入這些參數初始化方案,生成一個整數模p的環Zp和循環群G。
定義向量長度L,定義方案需要的參數k,在Zp中均勻取樣,生成(k+1)×(k)的滿秩矩陣A,即:
對A 進行如下排列,采用對A 與(k×L)×(k×L)的對角線為1,其余為0 的矩陣進行克羅內克積運算,實現生成把A 按照對角線排列成(k×L)×(k×L)的矩陣A1,即:
在A1 中均勻取樣,生成L×(k×(k+1)×L)的隨機矩陣W,即:
將W 與A1 矩陣相乘,得到Wa。并將Wa 的每個元素進行轉換,利用循環群G,使該位置元素為冪并取模p,即:
對A 進行類似Wa 的處理,把矩陣映射到循環群G上:
最終組成公鑰PubKey和私鑰SecKey:
輸入SecKey、PubKey 和人臉特征向量y,計算Seckey 中W 的轉置,并求逆,并進行模P 運算,得到加密的向量k1(負號表示求逆運算):
對y進行模p運算,得到k2:
從而得到加密后的向量key(函數私鑰):
輸入SecKey、PubKey 和人臉特征向量x,先在Zp均勻取樣,生成隨機向量s:
接著計算A與s的乘積,并得到c1:
接著,計算c2:
最終得到密文Ct:
輸入Ct和key,作如下運算:
并在-LXλYλ到LXλYλ進行窮舉搜索,如果找到d,則輸出識別通過;否則輸出識別未通過。
本文程序運行在主頻2.9GHz 的酷睿i7 處理器,內存16GB 的電腦上。人臉向量維度為1280,并進行歸一化處理。相似度閾值設定為0.95。由于加密庫僅支持大整數,我們對向量每個元素擴大處理。為了控制原向量精度的損失,經過實驗調整,我們設定上界為220。筆者邀請了9名志愿者參與實驗,年齡跨度從20歲到55歲,每名志愿者采集100次人臉數據用于認證性能評估。
通過設置不同的加密向量位數計算用戶的錯誤接受率(False Accept Rate,FAR)和錯誤拒絕率(False Reject Rate,FRR),FAR 表示非同一個人的錯誤樣本被正確識別的比例,FRR 表示同一個人的正確樣本被錯誤拒絕的比例,即:
其中TA 表示合法用戶的人臉樣本被正確接受的次數,FR 表示合法用戶的人臉樣本中被錯誤拒絕的次數,FA表示將其余8位志愿者的人臉數據當作非法用戶數據中被錯誤接受的次數,TR 表示非法用戶中被正確拒絕的次數。圖2 展示了合法用戶的FAR 和FRR 隨著加密向量位數的變化,可以看到隨著加密向量位數的增加FAR 逐漸降低而FRR 逐漸上升。實驗結果證明了通過對人臉數據進行加密可以有效保護用戶隱私,降低系統被非合法用戶數據認證通過率。同時,合法用戶被拒識的概率會隨著加密向量位數的增加而增加,用戶可以再次進行人臉認證來通過系統識別。相比于FRR,人們更在意FAR,因為FAR 的提升會增加系統被非法數據攻破的概率,威脅系統的安全性。

圖2 FAR和FRR與加密向量位數的關系Figure 2 The relationship between FAR and FRR with the number of bits of the encryption vector
對于其他的用戶認證系統,由于人臉數據認證方法的差異,加密后的人臉數據不會暴露原始的人臉特征向量,無法應用于其他系統,即使數據被泄露,也無法從中提取出人臉特征,保證了用戶認證系統的安全性。如果需要對人臉數據共享,使合法用戶也能認證其他系統,可以選擇性地共享數據加密密鑰,促進人臉數據的有效利用。
我們對9 名志愿者計算了FAR 和FRR,設置加密向量位數為32,實驗結果如圖3 所示。可以看到,不同用戶的FAR 和FRR 都很低,平均FAR 為0.099%,平均FRR 為0.22%,證明了系統的認證性能對用戶具有魯棒性,能夠有效進行用戶識別的同時保護用戶隱私。

圖3 不同用戶的FAR和FRRFigure 3 FAR and FRR for different users
此外,向量位數的設置中,一次加密處理的位數越低,匹配效率越高,但也會導致錯誤接受率增加。圖4 展示了測試中加密向量位數與運行時間的統計,認證時間隨著加密向量位數的增加而上升,當位數為32 時認證時間為3.19s,這對于用戶人臉認證是可以接受的。局限于硬件水平,內積運算在生成主密鑰和主私鑰的時候會帶來產生大量的內存資源消耗,故處理位數超過100 后,會提示內存不足強制終止運行。我們對向量切割,以損失整體精度來保證部分的高精度和運算效率與較低的內存損耗。

圖4 認證時間隨著加密向量位數的增加而上升Figure 4 The authentication time increases with the increase in the number of bits of the encryption vector
緊密安全的內積函數加密人臉識別是使用加密技術保護人臉識別算法中敏感信息的一種安全形式,本文使用緊密安全的內積函數加密算法對人臉數據進行加密處理,保護了人臉特征和身份信息的安全性,避免了信息泄露風險。同時,本文對人臉識別算法進行評估和分析,證明了該方法的有效性,保證了人臉識別系統的安全性。