廖正赟,郭建勝
(1.鄭州信大捷安移動信息安全工程實驗室,河南 鄭州 450004;2.信息工程大學,河南 鄭州 450004)
移動互聯(lián)網(wǎng)的高速發(fā)展大大推動了移動電子政務、移動電子商務的快速發(fā)展,移動智能終端作為移動互聯(lián)網(wǎng)的必不可少承載設(shè)備,也已經(jīng)成為人們隨身攜帶、隨時使用的重要通信工具。在移動支付、移動辦公等高敏感應用中涉及個人隱私、資金安全、商業(yè)秘密等高敏感的信息處理,需要從系統(tǒng)設(shè)計出發(fā),構(gòu)建完整的安全解決方案為其提供保障。
信息安全主要包括4個方面: 信息設(shè)備安全、數(shù)據(jù)安全、內(nèi)容安全和行為安全。信息系統(tǒng)硬件結(jié)構(gòu)的安全和操作系統(tǒng)的安全是信息系統(tǒng)安全的基礎(chǔ),密碼、網(wǎng)絡安全等技術(shù)是關(guān)鍵技術(shù),只有從信息系統(tǒng)的硬件和軟件的底層采取安全措施,從整體上采取措施,才能有效地確保信息系統(tǒng)的安全[1-2]。
目前在國內(nèi)外市場中,較為完善的方案是Apple公司設(shè)計的iOS安全體系框架,從系統(tǒng)安全、數(shù)據(jù)保護、應用安全、網(wǎng)絡安全、設(shè)備管控等方面保障iOS設(shè)備安全。iOS安全體系分為硬件層和軟件層。硬件層包括密鑰管理、密碼引擎;管理的密鑰主要是Apple根證書、群密鑰、設(shè)備密鑰等;密碼引擎對系統(tǒng)提供密碼服務和算法API。在軟件層,加密文件系統(tǒng)通過iOS內(nèi)核層的硬件驅(qū)動調(diào)用硬件層的密碼服務;加密文件系統(tǒng)分為操作系統(tǒng)區(qū)和用戶區(qū),操作系統(tǒng)區(qū)負責iOS系統(tǒng)程序的密碼服務,用戶區(qū)負責App應用的密碼服務,以沙箱的形式控制App應用運行。iOS安全體系如圖1所示。
圖1 iOS安全體系框架
在iOS的安全體系中有一個安全硬件模塊Secure Enclave,采用了Apple A7芯片,獨立于應用程序處理器之外,具備自己的安全啟動和個性化軟件更新,為系統(tǒng)提供敏感數(shù)據(jù)、密鑰存儲和加解密服務,并且限制其他非法軟件的訪問,即使在內(nèi)核遭到入侵的情況下,也可維護數(shù)據(jù)保護的完整性。
Secure Enclave是一個典型的密碼嵌入式系統(tǒng),由軟件和硬件兩部分組成,本文將從Secure Enclave的硬件、處理器內(nèi)部操作系統(tǒng)、通信機制三方面進行分析,對該系統(tǒng)的安全性進行分析,最后進行了總結(jié)與展望。
安全隔離處理器(Secure Enclave Processor,SEP)采用SoC內(nèi)部集成SoC的形態(tài)出現(xiàn)[3]。片上系統(tǒng)(System on Chip,SoC),從狹義角度來說,它是信息系統(tǒng)核心的芯片集成,是將系統(tǒng)關(guān)鍵部件集成在一塊芯片上;從廣義角度來說,SoC 是一個微小型系統(tǒng),國內(nèi)外學術(shù)界一般傾向?qū)?SoC 定義為將微控制器、模擬IP核、數(shù)字IP核和存儲器集成在單一芯片上,通常是客戶定制的,或是面向特定用途的標準產(chǎn)品。iOS設(shè)備的硬件邏輯組成結(jié)構(gòu)如圖2所示。
圖2 iOS設(shè)備處理器邏輯結(jié)構(gòu)圖
硬件架構(gòu)中包含了兩類處理器:通用應用處理器與安全處理器。CPU處理單元也稱為應用處理器(Application Processor,AP),它包括一個或多個處理器和二級(L2)高速緩存,與SEP相互隔離,對SEP的訪問受到硬件的嚴格控制。SEP內(nèi)部包括一個或多個處理器核心,安全引導ROM以及一個或多個安全外圍設(shè)備。
SEP需要使用超過4 KB的易失性存儲器,內(nèi)部的SRAM的空間不能滿足要求,因此需要利用外部擴展的存儲器,這一部分的存儲器需要防止AP的篡改。在SoC的存儲器控制器中,通過增加寄存器的方式,為SEP構(gòu)建了單獨的信任區(qū)。AP可以訪問自己的信任區(qū)域,但不能訪問SEP信任區(qū)域,SEP可以訪問自己的信任區(qū)域,但不能訪問CPU信任區(qū)域,而SoC的其他組件無法訪問任何信任區(qū)域。SEP通過內(nèi)存映射操作的方式獨占一組外設(shè),這一部分硬件設(shè)備不能被應用處理器訪問,這些設(shè)備包括:硬件加密引擎、隨機數(shù)發(fā)生器、熔斷器、GID/UID、安全只讀存儲器。在完成內(nèi)存映射工作后,SEP通過隨機數(shù)發(fā)生器產(chǎn)生“真隨機數(shù)”,以此隨機數(shù)作為輸入,計算出工作密鑰。工作密鑰將存入硬件加密引擎中,SEP將使用該工作密鑰對內(nèi)存中的數(shù)據(jù)進行加密保護。加密算法采用AES-256,使用XEX的工作模式。
基于安全引導存儲區(qū)的設(shè)計,SEP可以實現(xiàn)片內(nèi)操作系統(tǒng)的安全啟動。SEP的啟動代碼存儲在安全只讀存儲器(ROM)中,而安全ROM對于SEP外部是不可訪問的,因此,不會受到修改引導代碼的影響。 SEP中的處理器可以直接從安全ROM執(zhí)行,避免將代碼復制到諸如隨機存取存儲器(RAM)的可修改存儲器,SEP與安全ROM呈現(xiàn)的“攻擊面”相對較小。
SEPOS是一個完全獨立的操作系統(tǒng),擁有私有的內(nèi)核、驅(qū)動程序、服務和應用程序,通用的操作系統(tǒng)在安全性的驗證上較為困難,因此SEPOS采用了L4微內(nèi)核嵌入式系統(tǒng)的方案,確保提供安全保證的部分盡可能地小,而且便于驗證。L4微內(nèi)核是由Jochen Liedtke于1993年首次引入的[4],屬于第二代微內(nèi)核系統(tǒng),L4解決了前一代微內(nèi)核性能不佳的問題,并將其性能提高了10~20倍[5]。L4在設(shè)計中遵循了信息保護機制中的保護原則[6]。在后來的應用中,L4被開發(fā)用于平臺無關(guān)性,以及提高安全性、隔離性和健壯性。SEPOS的整體結(jié)構(gòu)如圖3所示[7]。
在SEPOS的啟動過程中,內(nèi)核首先對系統(tǒng)進行初始化操作,包括初始化內(nèi)核表,設(shè)置內(nèi)核接口頁(KIP),配置硬件中斷,啟動定時器,初始化映射數(shù)據(jù)庫,啟動內(nèi)核調(diào)度器。內(nèi)核調(diào)度程序啟動所有中斷和內(nèi)核線程,以及稱為根進程的初始進程。
在SEPOS中,根進程負責啟動在SEPOS中運行的其余應用程序,并維護關(guān)于每個正在運行的任務的上下文信息。這包括有關(guān)任務的虛擬地址空間、權(quán)限級別、正在運行的線程等的信息。根進程還調(diào)用啟動服務器,這是一種基于IPC的服務,它為應用程序提供所需的服務,以便執(zhí)行諸如映射虛擬內(nèi)存或啟動新線程等特權(quán)任務。
SEPOS的L4內(nèi)核遵循“最小特權(quán)原則”,對外只提供很小一部分的接口。在內(nèi)核空間中,對于來自用戶空間的系統(tǒng)調(diào)用,只有根進程可以響應。其他的應用進程由引導服務創(chuàng)建,在進程創(chuàng)建時,引導服務為每個進程定義了權(quán)限級別。應用進程訪問系統(tǒng)方法時,需要經(jīng)過權(quán)限校驗,只響應滿足條件的應用進程。系統(tǒng)方法的權(quán)限校驗粒度較細,每一個方法都需要進行獨立的驗證。
當根進程啟動時,它會嘗試在內(nèi)存中查找兩個表:“根參數(shù)”和“應用程序列表”。應用程序列表固化在SEPOS的固件中,列表包含了的系統(tǒng)中所有應用程序的物理地址、虛擬基地址、模塊名稱、程序大小和程序的入口點信息。引導程序在啟動、加載應用時,根據(jù)應用程序列表逐項進行檢查,只有完全匹配的應用程序才能正常運行。
SEP系統(tǒng)設(shè)計時遵循了隔離性原則,SEP處理器在軟硬件方面都采用了相應的措施與外部組件進行隔離。但是要實現(xiàn)SEP的安全功能,SEP與應用處理器之間需要進行雙向通信。系統(tǒng)設(shè)計了“安全郵箱(Secure Mailbox)”機制,本質(zhì)上是利用AP和SEP處理器都可見的共享內(nèi)存區(qū)域,實現(xiàn)了消息請求和響應機制,Mailbox同時包含了收件箱和發(fā)件箱。
AP與SEP之間的內(nèi)存共享是通過配置SEP的設(shè)備I/O寄存器實現(xiàn)的。SEP在設(shè)備中分配的內(nèi)存地址范圍是固定的,系統(tǒng)將設(shè)備I/O寄存器映射在該范圍中,通過對不同偏移地址的讀寫,實現(xiàn)消息的發(fā)送和接收操作。
消息中斷機制也可以形象地稱為“門鈴”機制,設(shè)備可以向框架注冊回調(diào)處理方法。當AP向SEP發(fā)送消息時,AP將消息寫入安全郵箱的收件箱,并觸發(fā)消息終端中斷,告知SEP已經(jīng)收到新的消息。這個中斷不是由AP本身生成的,因為如果SEP被中斷很長一段時間,這可能導致拒絕服務攻擊。中斷由SEP的硬件過濾器產(chǎn)生,硬件過濾器用于阻止任何外部的讀取或?qū)懭雵L試,并在必要時為SEP生成中斷。但是,SEP的組件可以完全訪問SoC的其他組件(除了指定為AP信任區(qū)的存儲器部分除外)。
如果SEP已經(jīng)接收并處理了消息,就把響應寫入到發(fā)件箱。為了讓AP知道響應已經(jīng)準備就緒,它通過向SoC的中斷控制器發(fā)送一個中斷消息來向CPU處理器發(fā)出中斷信號。
SEP端點是與SEP內(nèi)部應用或服務進行通信的對象,SEP管理器負責管理iOS中的所有SEP端點,并提供一個完整的框架為驅(qū)動程序提供注冊和通信服務。框架為每一個注冊的SEP端點分配全局唯一的索引值,并抽象出統(tǒng)一的操作方法:接收和發(fā)送消息,為每一個SEP端點維護一個消息接收隊列。消息頭結(jié)構(gòu)中使用端點的索引值標識目的地址,管理器提供了一種“郵差”機制,將這些消息傳遞到目的地。
Secure Enclave是一個嵌入式安全子系統(tǒng)。它由可信硬件構(gòu)成,運行獨立安全操作系統(tǒng),是密碼服務實現(xiàn)的專用環(huán)境,從硬件環(huán)境上確保密碼服務系統(tǒng)以及密碼設(shè)備平穩(wěn)運行、安全服務。
在體系設(shè)計上引入專用安全芯片系統(tǒng),為密碼服務提供專用運行環(huán)境。在服務系統(tǒng)內(nèi)部建立構(gòu)成“私有區(qū)域”和“公開區(qū)域”的概念,進一步采用多種方法保障“私有區(qū)域”的安全,而不需要對公開區(qū)域提出很高的安全要求。其優(yōu)點是不僅可以提高密碼服務實現(xiàn)的效率,更主要的是給邏輯防護設(shè)計提供了良好條件,突出了安全防護的重點。
作為嵌入式計算系統(tǒng),硬件上可以通過高速系統(tǒng)總線與主環(huán)境連接,二者之間的
安全通道需要雙方達成安全協(xié)議,進行實體認證后通過加密的方式建立安全數(shù)據(jù)傳輸。
在安全子環(huán)境內(nèi)建立專門用于安全防護的安全核(Security Kernel)。這里的安全防護主要是指在用戶調(diào)用密碼服務過程中涉及的有可能危害到密碼服務系統(tǒng)安全的操作防護,如密鑰對象的建立、修改和輸出,關(guān)鍵密碼算法的調(diào)用等。
從層次位置上說,安全核位于密碼服務層傳遞的應用之下,密碼設(shè)備層對象之上,是外界與結(jié)構(gòu)內(nèi)部對象以及結(jié)構(gòu)內(nèi)部對象之間的交互聯(lián)接點。安全核的防護突出兩點,即對象訪問控制和消息過濾。
安全核的設(shè)計貫穿了密碼服務設(shè)計中建立在集中管理基礎(chǔ)上的邏輯防護原則。其優(yōu)點是在管理中實現(xiàn)安全,在安全上提供管理。
采用基于中斷的共享內(nèi)存方式,實現(xiàn)消息的安全傳輸。特別地設(shè)計了兩個中斷控制器,通過硬件過濾器的形式,實現(xiàn)消息的單向擺渡,減少安全系統(tǒng)的攻擊范圍。
Apple的Secure Enclave將安全性融入到軟硬件的設(shè)計中,硬件隔離、安全微內(nèi)核系統(tǒng)和安全通信機制構(gòu)建了完善的安全框架,很好地解決了敏感數(shù)據(jù)的安全保護的問題。但是,該方案要求生產(chǎn)者可以完整地掌握SoC元件的生產(chǎn)鏈條,會在一定程度上加長開發(fā)設(shè)計周期,并使得測試難度更大。在安全操作系統(tǒng)采取的安全措施相互較為獨立,沒有形成整體的呼應。可以借鑒可信計算技術(shù),將系統(tǒng)融合成完整的安全體系。
[1] 沈昌祥. 關(guān)于加強信息安全保障體系的思考[M]. 信息安全綜論. 武漢: 湖北科學技術(shù)出版社, 2002.
[2] 張煥國, 王麗娜, 黃傳河, 等. 信息安全學科建設(shè)與人才培養(yǎng)的研究與實踐[C]. 全國計算機系主任(院長)會議論文集, 2005.
[3] Apple Inc. Security enclave processorfor a system on a chip: US, US8832465[P].2012-09-09.
[4] HEISER G, ELPHINSTONE K. L4 microkernels: the lessons from 20 years of research and deployment[J]. ACM Transactions on Computer Systems, 2016,34(1): 1-29.
[5] LIEDTKE Jochen. On u-kernel construction[J]. Symposium on Operating Systems, 1995(1): 237-250.
[6] SALTZER J H, SCHROEDER M D. The protection of information in computer systems[J]. Proceedings of the IEEE, 1975. 63(9): 1278-1308.
[7] LANGE M, LIEBERGELD S, LACKORZYNSKI A, et al. L4Android: a generic operating system framework for secure smartphones[C].Proceedings of the 1st ACM Workshop on Security and Privacy in Smartphones and Mobile Devices. NewYork, USA,2011:39-50.