◆蔣金剛 楊景秀
?
基于人臉識(shí)別的Android手機(jī)隱私文本加密軟件設(shè)計(jì)
◆蔣金剛 楊景秀
(南京師范大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 江蘇 210023)
本文研究了將人臉識(shí)別融入手機(jī)隱私文本保護(hù)的方法,設(shè)計(jì)實(shí)現(xiàn)了Android手機(jī)上基于人臉識(shí)別技術(shù)的隱私文本加密軟件。在加密部分,通過(guò)FaceNet模型,獲得捕獲人臉與預(yù)設(shè)人臉的特征向量的歐氏距離,與用戶輸入的密碼一起組成秘鑰,并生成密文。在解密部分,通過(guò)驗(yàn)證人臉后,再次合成秘鑰并解密密文。如果人臉或密碼有一項(xiàng)無(wú)法驗(yàn)證通過(guò),則解密失敗。并且本文介紹了FaceNet算法的原理、軟件的設(shè)計(jì)與實(shí)現(xiàn)過(guò)程以及軟件演示。
人臉識(shí)別;FaceNet;Android;AES加密算法
隨著互聯(lián)網(wǎng)的高速發(fā)展,人們的隱私泄露的現(xiàn)象日趨嚴(yán)重,并衍生出龐大的黑色產(chǎn)業(yè)鏈。騰訊社會(huì)研究中心與某互聯(lián)網(wǎng)數(shù)據(jù)中心聯(lián)合發(fā)布了《2017年度網(wǎng)絡(luò)隱私安全及網(wǎng)絡(luò)欺詐行為分析報(bào)告》。報(bào)告顯示,目前網(wǎng)絡(luò)用戶信息泄露大部分都發(fā)生在移動(dòng)端,安卓系統(tǒng)手機(jī)應(yīng)用中,有98.5%都在獲取用戶隱私權(quán)限。雖然絕大多數(shù)軟件獲取用戶隱私是出于用戶正常使用產(chǎn)品的目的,但也有9%的手機(jī)應(yīng)用存在越界獲取用戶隱私權(quán)限的現(xiàn)象。
在移動(dòng)互聯(lián)大背景下,手機(jī)端隱私保護(hù)顯得日趨重要。各種隱私保護(hù)軟件也應(yīng)運(yùn)而生,如“騰訊手機(jī)管家”、“360手機(jī)衛(wèi)士”以及“隱私管理大師”等,這些軟件雖然一定程度上可以對(duì)手機(jī)文件進(jìn)行安全加密管理,保護(hù)了個(gè)人隱私,但是它們都是使用口令或者手勢(shì)密碼加密,都存在口令或手勢(shì)易被竊取或破解的威脅。
為此,本文研究了將人臉識(shí)別融入手機(jī)隱私文本保護(hù)的方法,設(shè)計(jì)實(shí)現(xiàn)了Android手機(jī)上基于TensorFlow框架的人臉識(shí)別隱私文本加密軟件。
本軟件分為加密與解密兩大功能,如圖1所示。
圖1 系統(tǒng)設(shè)計(jì)
在加密部分,通過(guò)FaceNet模型,獲得輸入圖片(記為人臉1)與預(yù)設(shè)人臉的128維特征向量的歐氏距離,與用戶輸入的密碼一起組成秘鑰,并生成密文。
在解密部分,通過(guò)驗(yàn)證人臉后,將保存的人臉1與預(yù)設(shè)人臉對(duì)比得到的歐氏距離和用戶輸入的密碼再次組合成秘鑰,并解密密文。如果人臉或密碼有一項(xiàng)無(wú)法驗(yàn)證通過(guò),則解密失敗。
人臉識(shí)別是一項(xiàng)熱門的計(jì)算機(jī)技術(shù),現(xiàn)主要用于身份鑒別并廣泛應(yīng)用于娛樂(lè)、信息安全、法律監(jiān)控等領(lǐng)域,尤其隨著現(xiàn)在的移動(dòng)設(shè)備普遍使用,人臉識(shí)別也在手機(jī)支付、手機(jī)隱私保護(hù)中得到應(yīng)用。
本文使用的深度學(xué)習(xí)框架是TensorFlow,是一個(gè)表達(dá)機(jī)器學(xué)習(xí)算法的接口,并且是執(zhí)行算法的實(shí)現(xiàn)框架。使用 TensorFlow 表示的計(jì)算可以在眾多異構(gòu)的系統(tǒng)上方便地移植,從移動(dòng)設(shè)備如手機(jī)或者平板電腦到成千的GPU計(jì)算集群上都可以執(zhí)行[1],被廣泛應(yīng)用于語(yǔ)音、圖像識(shí)別等多項(xiàng)深度學(xué)習(xí)領(lǐng)域。
在本軟件設(shè)計(jì)中采用的人臉識(shí)別技術(shù)為FaceNet,它主要使用了深度卷積網(wǎng)絡(luò),通過(guò)直接學(xué)習(xí)從人臉的圖像到歐幾里德空間上的距離,其中的距離直接對(duì)應(yīng)于面部相似度。
圖2 Facenet模型結(jié)構(gòu)[5]
本文采用如上圖2所示的模型結(jié)構(gòu),在批量輸入后進(jìn)行卷積層處理,經(jīng)過(guò)L2的特征歸一化,得到特征表示,然后再基于這個(gè)特征計(jì)算三元組損失。
前期利用CNN(卷積神經(jīng)網(wǎng)絡(luò))處理人臉圖像。主要通過(guò)多個(gè)卷積層、池化(降采樣)層以及歸一化層對(duì)人臉圖像進(jìn)行特征的提取。
卷積層通過(guò)若干個(gè)濾波器與輸入的二維特征平面進(jìn)行卷積運(yùn)算提取得到數(shù)據(jù)的顯著性特征,產(chǎn)生特征映射圖[2]。
池化層根據(jù)圖像局部相關(guān)性的原理,對(duì)圖像進(jìn)行子采樣,可以減少計(jì)算量,同時(shí)保持圖像旋轉(zhuǎn)不變性[3]。池化常用的運(yùn)算一般有:最大池化(MaxPooling)、均值池化(MeanPooling)、高斯池化和可訓(xùn)練池化。該方法使用最大池化。
之后L2歸一化層,主要是將之前提取的特征進(jìn)行歸一化處理,幅度歸一化到同樣的范圍。通過(guò)歐幾里德距離之和我們來(lái)判斷人臉的相似度。
在上述處理后,所有圖像的特征都會(huì)被映射到一個(gè)超球面上,接著再去優(yōu)化這些特征。這里我們采用了三元組損失函數(shù)(triplet loss)訓(xùn)練網(wǎng)絡(luò)。
圖3 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
使用三元組數(shù)據(jù)訓(xùn)練,使得相同身份之間的特征距離要盡可能的小,而不同身份之間的特征距離要盡可能的大[2]。最后進(jìn)行人臉驗(yàn)證時(shí)候,只需要直接計(jì)算倒數(shù)第二層的隱層輸出的 128 維向量的距離,大大提升了識(shí)別率。
triplet loss目標(biāo)函數(shù):
圖4 優(yōu)化結(jié)果
使用FaceNet方法,我們可以將人臉對(duì)比得到的歐式距離和用戶輸入的密碼組合作為秘鑰,來(lái)進(jìn)行加密與解密。
輸入人臉圖片與預(yù)設(shè)人臉的128維特征向量的歐氏距離,與用戶輸入的密碼一起組成秘鑰,通過(guò)AES算法進(jìn)行加密;解密過(guò)程中,將保存的人臉與預(yù)設(shè)人臉對(duì)比得到的歐氏距離和用戶輸入的密碼再次組合成秘鑰,通過(guò)AES算法進(jìn)行解密。
AES(Advanced Encryption Standard,高級(jí)加密標(biāo)準(zhǔn))是對(duì)稱加密算法中最流行的算法之一,它集安全性、效率、可實(shí)現(xiàn)性及靈活性于一體[4]。
以圖5和圖6兩張人臉為例。設(shè)左邊人臉為用戶人臉,右邊人臉為程序預(yù)設(shè)人臉,兩者的歐氏距離為1.290687,由此以1290687和用戶輸入的密碼,兩者結(jié)合作為秘鑰的一部分,并根據(jù)程序特定的規(guī)則,將其補(bǔ)充至128bit數(shù)據(jù),對(duì)文本進(jìn)行加密,然后將兩者的歐氏距離存在本地。
圖5 人臉1
圖6 預(yù)設(shè)人臉
實(shí)驗(yàn)中以圖7用作解密人臉。圖7和圖6計(jì)算得到的歐式距離小于設(shè)定的閾值,則讀取存于本地的原對(duì)比結(jié)果的歐氏距離,組合用戶輸入的密碼,獲取秘鑰,解密密文。
若兩者歐式距離大于設(shè)定的閾值,則解密失敗。
圖7 人臉2
本文針對(duì)的平臺(tái)是Android,這是目前在便攜式設(shè)備中得到廣泛使用的一種的開(kāi)放源碼的移動(dòng)操作系統(tǒng)。本文的開(kāi)發(fā)環(huán)境是Android Studio,開(kāi)發(fā)語(yǔ)言是JAVA。為了完成后續(xù)TensorFlow Lite的相關(guān)開(kāi)發(fā),需要安卓Android Studio 3.0版本,并且確保Android SDK的版本大于26,NDK版本大于14。
本文使用TensorFlow作為框架。為此,使用Anaconda3為其創(chuàng)建一個(gè)Python 3.5的TensorFlow虛擬環(huán)境,并在此環(huán)境中基于谷歌開(kāi)源項(xiàng)目FaceNet進(jìn)行開(kāi)發(fā)。
對(duì)FacenNet模型的調(diào)用有兩種方式,一種是在線調(diào)用,識(shí)別過(guò)程在服務(wù)器中進(jìn)行;一種是離線調(diào)用,模型集成進(jìn)軟件中。在線調(diào)用可以使軟件占用空間小,對(duì)手機(jī)性能要求小,但是需要聯(lián)網(wǎng)操作;離線調(diào)用占用空間較大,且對(duì)手機(jī)性能有一定的要求。
對(duì)于離線調(diào)用情況,需要先對(duì)模型進(jìn)行集成。桌面端生成的TensorFlow模型文件無(wú)法直接在移動(dòng)端使用,需要先轉(zhuǎn)換成.tflite文件使用TensorFlow Lite工具進(jìn)行集成。需要使用上一步生成的圖模型文件(.pb)和變量文件(.chpt),利用freeze_graph工具生成包含神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和權(quán)重系數(shù)信息的frozen graphdef文件。再使用toco工具生成最后的tflite文件,即可在Android平臺(tái)使用TensorFlow生成的模型。
本文采用在線調(diào)用方式。
下面為軟件演示過(guò)程:
在如圖8所示的軟件界面中輸入信息“你好”,輸入密碼為223,使用圖5人臉1進(jìn)行加密,經(jīng)過(guò)加密算法得到密文1ebc281be36522f9b781fdf3b092040d,如圖9所示。
圖8 加密前
圖9 加密后
解密時(shí),選取加密時(shí)的同一個(gè)人的另一張人臉進(jìn)行解密,這里選取圖7人臉2,同時(shí)輸入密文和正確的密碼,解密成功如圖10所示。
圖10 解密成功
圖11 解密失敗
如果密碼或人臉驗(yàn)證不通過(guò),則會(huì)提示“認(rèn)證失敗”,如圖11所示。
本文主要介紹了使用TensorFlow完成了人臉識(shí)別算法并且結(jié)合文本加密技術(shù)來(lái)實(shí)現(xiàn)對(duì) Android系統(tǒng)的移動(dòng)設(shè)備進(jìn)行隱私保護(hù)的軟件設(shè)計(jì)及實(shí)現(xiàn)過(guò)程。
本軟件由于將人臉識(shí)別和AES加密算法相結(jié)合,給用戶隱私信息提供了雙重保障。同時(shí)FaceNet模型具有較高的識(shí)別準(zhǔn)確率,可有效保護(hù)用戶個(gè)人私密信息。
在現(xiàn)階段,人臉識(shí)別進(jìn)行文件或文本加密受到更多人的重視和歡迎,本文設(shè)計(jì)實(shí)現(xiàn)的軟件在完善后能夠得到更廣泛的應(yīng)用。
[1]黃文堅(jiān),唐源.TensorFlow實(shí)戰(zhàn)[M].北京:電子工業(yè)出版社,2017.
[2]F. Schroff, D. Kalenichenko, and J. Philbin. Facenet: A unified embedding for face recognition and clustering. arXiv preprint arXiv:1503.03832,2015.
[3]LeCun Y,Bottou L,et al.Gradilent-based learning applied to document recognition.Proceeding of the IEEE,1998.
[4]Gu jiu-Xiang,Wang Zhen-Hua,Jason Kuen,et al.Recent Advances in convolutional neural networks. arXiv:1512.07108v5,2017.
[5]吳世忠, 祝世雄, 張文政等譯.Bruce Schneier.應(yīng)用密碼學(xué)——協(xié)議,算法與C源程序[M].北京:機(jī)械工業(yè)出版社, 2014.