王志恒,徐彥彥
(測繪遙感信息工程國家重點實驗室(武漢大學),武漢 430000)
(?通信作者電子郵箱xuyy@whu.edu.cn)
在移動云環(huán)境下,用戶將計算和存儲任務外包給資源豐富的云環(huán)境,使用移動設備通過無線網(wǎng)絡訪問云服務。移動云環(huán)境不僅給用戶帶來諸多便利,還能有效地降低終端設備的存儲、計算和電量的開銷[1];然而頻頻發(fā)生的云端攻擊和移動端安全漏洞也給用戶隱私構成了巨大的威脅。由于云服務缺少對移動用戶的安全有效認證而導致的隱私信息泄露事件已屢見不鮮。云安全聯(lián)盟(Cloud Security Alliance,CSA)在文獻[2]中著重強調(diào)了數(shù)據(jù)安全、應用安全和身份授權對于云安全的重要性,其中身份的授權與認證是安全系統(tǒng)的第一道門戶,在移動云環(huán)境下,可信的身份認證機制成為保護用戶隱私的重中之重。
生物認證憑借其便捷和不易偽造等特性,在身份認證領域備受青睞,但是用戶的生物特征信息與用戶永久性關聯(lián),一旦丟失將無法撤銷,給用戶的身份安全造成潛在的不可估量的影響[3]。為此現(xiàn)有的可信認證機制,例如線上快速身份驗證聯(lián)盟(Fast IDentity Online,F(xiàn)IDO)、國際互聯(lián)網(wǎng)身份認證聯(lián)盟(International Internet Finance Authentication Alliance,IIFAA)等制定的標準,都采用指紋本地認證的方式,即使用指紋解鎖私鑰,與云端的公鑰進行匹配完成認證決策。這雖然在一定程度上保護了指紋特征,但是將用戶和設備進行了綁定。保存用戶指紋數(shù)據(jù)的終端設備成為了用戶身份的證明,所以用戶只能在注冊的終端上進行認證。文獻[1]提出的可信移動終端云服務安全接入方案,提供移動客戶端到云服務器的端到端的認證,但是模型基于可信云架構基礎,在實際環(huán)境中難以滿足,就限制了基于指紋的生物特征認證方式的接入。
作為認證系統(tǒng)中的重要組成部分,移動終端的安全問題也需要被同等重視。移動終端的脆弱性可能破壞整個云計算框架的魯棒性,造成用戶的隱私數(shù)據(jù)泄露[1]?,F(xiàn)有的指紋識別應用中,文獻[4]在嵌入式芯片上移植了Linux 內(nèi)核與文件系統(tǒng)等,實現(xiàn)了指紋登記、認證和考勤等功能,但是沒有對指紋特征和指紋的處理過程做任何保護;文獻[5]將指紋特征與密碼學相結合,在一定程度上保護了用戶的指紋數(shù)據(jù),實現(xiàn)在線認證的功能,但是終端程序運行在PC 上,在硬件上不具有隔離機制,不能保證處理過程的安全性,且不具有移動認證的能力;文獻[6]基于TrustZone 的安全擴展機制,在移動設備上為指紋識別程序提供了安全的執(zhí)行環(huán)境,但是所實現(xiàn)的原型系統(tǒng)只能完成本地注冊和認證的功能,不支持在線認證;文獻[7]基于高通的可信執(zhí)行方案QSEE(Qualcomm Security Execution Environment)和IIFAA可信認證框架,設計的指紋識別應用實現(xiàn)了在線認證和支付功能,并且能保證指紋數(shù)據(jù)的安全,但是存在IIFAA框架固有的便利性不足的問題。
綜上所述,目前的同類指紋識別應用存在安全性或便利性不足的問題。本文在項目組已有工作[8]的基礎上,考慮了終端設備的安全性和移動認證的需求,基于TrustZone 和可信執(zhí)行環(huán)境(Trusted Execute Environment,TEE)設計并實現(xiàn)了移動終端的指紋認證APP,為整個可信認證系統(tǒng)的安全提供重要保障和可信的數(shù)據(jù)來源,并擴展了移動訪問云環(huán)境的能力。
TrustZone是ARM 公司提出的系統(tǒng)級的安全解決方案,它在盡量不影響原有處理器設計的情況下提高了系統(tǒng)的安全性[9]。該技術提供了一個具有高度安全性的系統(tǒng)架構,并且能夠基于此架構建立一個可信執(zhí)行環(huán)境,為敏感應用提供安全服務。
在硬件架構上,TrustZone 將單個的物理處理器虛擬為兩個內(nèi)核,兩個虛擬的內(nèi)核以分時的方式交替運行。處理器內(nèi)核在工作時由NS(Non-Secure)位標記當前的安全狀態(tài),同時配 合 擴 展 的AXI(Advanced eXtensible Interface)總 線 和TrustZone 地址空間控制器(TrustZone Address Space Controller,TZASC)、TrustZone 內(nèi)存適配器(TrustZone Memory Adapter,TZMA)等安全組件,隔離敏感操作,保證安全內(nèi)存可以拒絕非安全事務的訪問。硬件擴展是TrustZone 安全結構的基礎,它將安全性植入處理器的設計中,為安全性從普通操作系統(tǒng)中分離出來提供了實現(xiàn)的基礎[10]。
全球平臺組織(Global Platfor,GP)制定了基于TrustZone的可信執(zhí)行環(huán)境標準,軟件系統(tǒng)架構如圖1[11]所示。其中普通環(huán)境(Rich Execute Environment,REE)中運行普通操作系統(tǒng)和用戶程序,TEE 中運行可信操作系統(tǒng)和可信應用(Trusted Application,TA)??尚挪僮飨到y(tǒng)負責TA 的調(diào)度和監(jiān)管,并包含監(jiān)控器代碼負責REE 和TEE 的切換。TEE Internal API 定義了TA 中常用的密鑰管理、密碼算法、安全存儲等功能的接口,TEE Client API是REE與TA交互的接口,使得普通程序可以調(diào)用TA 里的功能,向TA 發(fā)送命令并接收TA返回的結果。
圖1 TEE的軟件架構Fig.1 Software architecture of TEE
TrustZone 技術構造了一個安全的隔離運行環(huán)境,使其既能隔離不可信軟件的潛在安全威脅,又能有效地運行被隔離軟件,還能夠監(jiān)控其行為,從根本上解決了不可信軟件的安全威脅[9]。
本文在Hikey960 開發(fā)板硬件平臺上,使用GP 標準定義的TEE Client API 和TEE Internal API 設計了安全的移動終端指紋認證程序。因為遵循GP標準,使得具體的實現(xiàn)不依賴于TEE 方案提供商,具有良好的通用性和可移植性。安全操作系統(tǒng)下的可信應用完成指紋模板的生成工作,普通操作系統(tǒng)下的通用程序則負責與用戶和服務器的交互。系統(tǒng)之間的切換由ARM 可信固件(ARM Trusted Firmware,ATF)完成。通過將普通操作和敏感操作隔離運行,有效地保證了指紋處理過程的安全性。
基于TrustZone 的可信認證系統(tǒng)終端APP 框架包含兩個部分:REE 中的指紋識別通用程序和TEE 的可信服務。如圖2所示。
圖2 可信終端指紋識別程序框架Fig.2 Framework of trusted terminal fingerprint identification program
指紋識別通用程序是運行在Android 系統(tǒng)下的一個用戶程序。除了與用戶交互的功能之外,包含兩個主要的功能模塊:與服務器交互的通信模塊和對TA 中的服務進行調(diào)用的Client模塊。
TEE 里的可信程序TA 是安全操作系統(tǒng)下的用戶空間程序,執(zhí)行與安全模板生成相關的操作。按照功能可以分為特征提取模塊、正交分解模塊和密鑰管理模塊。
特征提取模塊在檢查外設的安全性之后,從指紋采集設備中獲取指紋圖像的二維數(shù)組,提取出指紋特征。正交分解模塊使用文獻[8]中提出的正交分解算法對指紋特征進行變換,生成安全模板。完成之后將安全模板返回給REE 側的Client 模塊。正交分解過程中需要的隨機映射矩陣由密鑰管理模塊提供。該模塊在注冊過程中,產(chǎn)生新的隨機映射矩陣用于生成安全模板;在認證過程中,通過重加密[12]機制獲取隨機映射矩陣,用于變換特征的生成。
Client 模塊與TA 的交互類似于客戶端/服務器模型。Client 模塊請求TA 在TEE 中執(zhí)行某個操作,都會經(jīng)歷初始化上下文、打開會話、發(fā)送命令、關閉會話、終止上下文等操作。這個調(diào)用過程經(jīng)過了TEE客戶端接口、TEE在內(nèi)核端的驅動、EL3(Exception Levels 3)下安全監(jiān)控模式調(diào)用的處理、TEE 中安全操作系統(tǒng)的線程處理、以及TEE 中TA 的運行、TEE 端底層庫或者硬件資源支持等幾個階段。當TA 執(zhí)行完具體請求后會按照原路徑將數(shù)據(jù)返回給Client 模塊。本文中Client 模塊與TA的完整交互如圖3所示。
圖3 Client模塊與TA的完整交互過程Fig.3 Complete interaction process between Client module and TA
特征提取模塊對輸入的指紋圖像數(shù)據(jù)進行處理,提取出指紋圖像的FingerCode 特征[13]。FingerCode 特征是一種基于Gabor濾波的指紋紋理特征描述方法,它保留了豐富的脊線信息,在一定程度上能克服基于細節(jié)點的特征算法在質(zhì)量較差的區(qū)域難以提取的缺點,同時文獻[5]中的實驗指出FingerCode 方案有著不低于指紋細節(jié)點匹配的準確度。在實際中FingerCode 特征由于高效、準確等優(yōu)點,廣泛應用于多種認證場景[14-15]中。
特征提取模塊的處理過程包括參考點定位、扇區(qū)分割、正則化、濾波、特征值計算等步驟。各步驟的處理結果如圖4所示。
圖4 FingerCode特征提取流程Fig.4 Feature extraction process of FingerCode
中心點定位計算原始圖像的方向圖,將指紋脊線曲率最大點作為指紋的參考點。以參考點為中心將指紋圖像分成若干個扇區(qū)。之后對每個扇區(qū)的像素灰度值進行正則化,以去除傳感器噪聲和手指壓力變化產(chǎn)生的形變[13]。正則化的公式表述為:
其中:Mi和Vi分別表示第i個扇區(qū)的均值和方差,M0和V0分別表示所期望的均值和方差。對正則化之后的指紋圖像按照式(2)分別進行8個方向的Gabor濾波操作,θ分別取0°、22.5°、45°、67.5°、90°、112.5°、135°、157.5°得到8 個濾波圖像。其中f是在θ 方向上的正弦波的頻率,δx'和δy'分別是高斯函數(shù)在x'和y'軸的標準差。
計算每個扇區(qū)的平均絕對偏差作為特征值。如式(5),其中Fiθ表示θ方向濾波后圖像的第i個扇區(qū),Piθ為該扇區(qū)的均值。
正交分解模塊對輸入的FingerCode 特征進行正交分解、加噪和正交融合等操作,輸出安全的指紋模板。流程的偽代碼如算法1 所示,其中的變量和計算都是在向量或矩陣意義下。第1)行的getRandomMatrix()函數(shù)是使用密鑰管理模塊提供的接口得到隨機映射矩陣,第10)行使用random()函數(shù)生成n/2 行、n 列的隨機數(shù)矩陣。從指紋模板里可以在不解密的情況下,提取出特征匹配域(偽代碼中的y1)進行指紋特征匹配。對指紋特征進行正交分解的原理和流程在文獻[8]中有詳細的闡述。
算法1 指紋特征正交分解算法。
輸入 指紋特征x ∈Rn;
輸出 指紋模板t ∈Rn。
密鑰管理模塊使用重加密機制對密鑰進行管理,工作流程如圖5所示。
圖5 密鑰管理模塊處理流程Fig.5 Flowchart of key management module processing
注冊過程中需要的隨機映射矩陣,可以由獨立同分布的高斯序列生成[16-17]。首先生成獨立同高斯分布的n 維隨機矩陣,進行Gram-Schmidt正交化得到隨機映射矩陣R。之后對R進行一次加密后返回給服務器。服務器作為重加密機制中半可信代理者的身份,在注冊階段對注冊終端的隨機映射矩陣進行二次加密后存儲,在認證的過程中發(fā)送給認證終端。認證終端獲取二次加密后的隨機映射矩陣的密文后,在密鑰管理模塊中一次解密獲得隨機映射矩陣,用于認證過程變換特征的生成。
使用重加密機制對密鑰管理,使得隨機映射矩陣在存儲和傳輸?shù)倪^程中都以密文的形式傳遞,只有認證時可以在TrusuZone內(nèi)解密獲得,保證了變換密鑰的安全性。
本文使用FingerCode 指紋特征,特征的匹配基于歐氏距離。在服務器進行指紋匹配時,使用子隨機映射矩陣R2從安全模板t 中提取匹配特征f。根據(jù)正交分解的距離保持特性[18],匹配特征保持了原始生物特征的距離,可用于指紋的匹配。式(6)、(7)分別是匹配特征提取和相似度計算的公式:
本實驗硬件平臺為搭載Kirin960 芯片的Hikey960 開發(fā)板,開發(fā)板支持TrustZone 安全擴展,配置有Cortex-A73 處理器,4 GB DDR3內(nèi)存等。另外中控智慧的Live20R光學指紋采集儀,使用USB接口與開發(fā)板連接。
在軟件平臺上,采用了開源TEE 提供方案OPTEE。OPTEE 按照GP 標準完整地實現(xiàn)了一個可信執(zhí)行環(huán)境,該項目由ST-Ericsson 創(chuàng)建,是Linaro 社區(qū)在維護的核心安全項目之一。本文移植了OPTEE_OS 和Android P 分別作為TEE 和REE中的操作系統(tǒng)。另外移植了ATF用于安全狀態(tài)的監(jiān)控和上下文的切換,以及在開機過程中的安全引導。
本文的實驗數(shù)據(jù)庫使用了Neurotechnology 的公開指紋數(shù)據(jù)集[19]。該數(shù)據(jù)集有48 個類,每個類包含相同手指的8 次不同錄入,共有384幅指紋圖片。
Android 下的指紋識別程序是用戶訪問安全服務的入口,指紋認證APP 向用戶提供了注冊和認證的功能,下面分別就程序的安全性和指紋識別的性能進行分析和測試。
4.2.1 安全性分析
程序的安全性由指紋模板的安全性和執(zhí)行環(huán)境的安全性共同決定。
基于正交分解生成的指紋模板,具有不可逆性、不可鏈接性和動態(tài)變化性,并且采用重加密機制對密鑰進行安全分發(fā),使得指紋模板可以抵抗常見的攻擊類型。文獻[8]證明了攻擊者難以在多項式時間內(nèi)破解指紋模板。具體來說不同攻擊類型的計算復雜度如表1 所示,其中:n 為模板長度,l 為元素字長,m為子隨機映射矩陣中向量的數(shù)目。
表1 各類攻擊的時間復雜度Tab.1 Time complexity of various attacks
本文使用自相關系數(shù)和信息熵對指紋模板的安全性進行衡量,自相關函數(shù)表示同一個時間序列在任意兩個不同時刻的取值之間的相關程度,表征了相鄰特征元素的相關性。自相關函數(shù)R(T)計算如式(8)所示,其中x(i)表示特征向量第i個維度的值,n 是特征向量的維度,T 是信號的延遲或向量的位移量。
信息熵可以用來描述隨機變量的不確定性,其定義如下:
其中:p(x(i))是x(i)發(fā)生的概率。密文特征的信息熵越高意味著它的分布越接近均勻,因此具有更高的隨機性和更高的安全性。
不同算法生成的指紋模板的自相關函數(shù)如圖6 所示。從圖中可以看到原始的指紋特征之間存在著不可忽略的相關性,即存在安全隱患;而正交分解生成特征的自相關函數(shù)接近于0,并且低于隨機映射特征的自相關系數(shù)。這意味著外部攻擊者難以利用特征之間的相關性推測出原始生物特征信息。
圖6 不同算法的自相關系數(shù)Fig.6 Autocorrelation coefficients of different algorithms
實驗在數(shù)據(jù)庫上計算了不同特征的平均信息熵,并計算均勻分布的隨機變量的信息熵作為對比,如表2 所示。從中可以看出,使用正交分解生成的指紋模板相較于原始的指紋特征,具有更高的信息熵,表明指紋模板的隨機性較強,更難以被破解,安全性更高。
表2 不同類型特征的信息熵Tab.2 Information entropy of different types of features
執(zhí)行環(huán)境的安全性可以由TrustZone 提供的硬件隔離機制保證。指紋模板的生成在TA 內(nèi)部完成,TrustZone 通過內(nèi)存隔離、中斷隔離等機制,保證REE中的程序不能訪問到TEE的指令和數(shù)據(jù)[20],可以有效保證執(zhí)行過程的安全。
終端的啟動過程由ATF 進行安全引導,ATF 會在啟動下一個階段的映像之前,對內(nèi)核映像進行驗簽,保證啟動的內(nèi)核映像沒有被非法篡改[20];另外在加載可信應用到安全內(nèi)存的時候OPTEE_OS 會對TA 進行驗證,保證TA 是合法的而不是被掉包的同名應用。
正交分解算法保證了指紋模板的安全性,而使用TrustZone 提供的可信執(zhí)行環(huán)境可以保證運行環(huán)境的安全性。因此終端程序可以安全地完成指紋特征提取、模板生成等工作,為服務器的認證提供可信的數(shù)據(jù)來源。
4.2.2 指紋算法準確性驗證
指紋算法匹配的準確性與安全性無關,并且實際系統(tǒng)中指紋匹配是在服務器進行的,因此本實驗在服務器環(huán)境下單獨對指紋算法的準確性進行了測試。測試環(huán)境是Intel Xeon E-2124 CPU,主頻3.30 GHz,運行Ubuntu 18.0.4 操作系統(tǒng),在IntelliJ集成開發(fā)環(huán)境下編寫和運行Java指紋識別程序。
算法的準確性使用拒真率和誤識率來衡量。每個手指隨機選擇一張指紋圖片進行注冊,注冊后模板數(shù)據(jù)庫保存48 個不同手指的模板。在計算拒真率時,用每個指紋模板和該類的所有指紋匹配進行1∶1 匹配,重復進行該測試以盡可能覆蓋全部的認證匹配情況;計算誤識率時,用每個指紋模板與數(shù)據(jù)集中不屬于該類的所有指紋進行匹配,統(tǒng)計匹配成功的次數(shù)實驗采用循環(huán)驗證,一共進行了3 840 次類內(nèi)匹配和18 048次類間匹配。匹配結果如表3所示。
表3 各指紋類內(nèi)和類間匹配結果Tab.3 Fingerprint matching results of intra-class and inter-class
在數(shù)據(jù)集上沒有出現(xiàn)誤識的情況,證明指紋特征和匹配算法可以有效地區(qū)分不同的用戶,不會讓非法用戶訪問云環(huán)境。誤識的原因在于數(shù)據(jù)庫中部分指紋圖像質(zhì)量較低,不能提取出有效的特征。在實際應用中,采用了高精度傳感設備采集清晰的指紋圖像,并對圖像質(zhì)量進行檢查,只有在獲取到清晰的指紋圖像后才進行后續(xù)的注冊和認證步驟,有效減少了拒真情況。
實驗對客戶端需要的計算和存儲開銷做了對比測試,如表4 所示。相較于隨機映射的本地認證方案,本文的實現(xiàn)只需要存儲用于重加密的公鑰和私鑰,隨機映射矩陣在認證時從服務器獲得,從而大大減少了存儲開銷。注冊和認證時增加了重加密計算和與服務器的通信交互,因此耗時有所提升,但是控制在0.5 s左右,滿足了實際使用的需要。
表4 客戶端的計算和存儲開銷對比Tab.4 Calculation and storage cost comparison in client
綜上所述,指紋識別和匹配算法,可以對用戶的身份進行有效認證,防止非法用戶冒名訪問云服務導致的信息泄露。另外利用TrustZone 隔離機制和正交分解算法,生成安全的指紋模板在云端存儲和匹配,解除用戶與設備的綁定,滿足移動云環(huán)境下安全認證的要求。
本文基于TrustZone 的硬件隔離機制,在TEE 中設計和實現(xiàn)了一種基于正交分解算法的指紋認證終端APP。理論的分析和實驗表明,所設計的APP 可以有效地保護用戶的生物特征信息,并且解除了用戶與設備的綁定,提升使用的便利性,適合移動云環(huán)境下的安全認證。本文是基于指紋識別實現(xiàn)了可信認證APP 的原型,實際上本文所提出的方案和安全認證框架同樣適合于其他類型的生物識別認證,如人臉識別等。本文所提出的方案對于在不可信的移動云環(huán)境下實現(xiàn)支持隱私保護的生物特征認證,有著一定的研究意義和實用價值。