|
【HarmonyOS】安全指南,
安全概述
HarmonyOS操作系統(tǒng)是一個開放的系統(tǒng),開發(fā)者可以通過HarmonyOS開發(fā)靈活的服務和應用,為開發(fā)者和使用者帶來便利和價值。為了達到這一目的,HarmonyOS提供了一個可以有效保護應用和用戶數(shù)據(jù)的執(zhí)行環(huán)境。 在這個執(zhí)行環(huán)境中,芯片的安全能力、系統(tǒng)的安全能力、以及上層的安全服務一起協(xié)作,從硬件安全、系統(tǒng)安全、數(shù)據(jù)安全、設備互聯(lián)安全、應用安全、安全更新多個維度提供安全保障。 圖1 安全保障示意圖
硬件安全
安全機制
- 啟動可信根 HarmonyOS設備采用PKI(Public Key Infrastructure)體系保護軟件完整性,確保設備運行來源合法、軟件未被篡改。 在設備啟動流程中,逐級進行軟件簽名校驗形成安全啟動鏈,任何一個環(huán)節(jié)的簽名校驗不通過即終止設備啟動;安全啟動鏈中最初執(zhí)行簽名校驗的軟硬件實體,需確保自身的合法、未被篡改。該實體即為設備的啟動可信根。啟動可信根可為固化在ROM中的一段代碼,這段代碼在芯片制造環(huán)節(jié)固化到芯片中,芯片制造完成后軟件不可更改,在設備上電初始化的過程中,最先執(zhí)行這段ROM中的代碼,并由這段ROm代碼執(zhí)行后續(xù)的軟件簽名校驗。 ROM中的代碼在執(zhí)行簽名校驗時,需確保用于校驗的PKI公鑰的合法性,HarmonyOS設備可采用efuse/OTP等存儲介質來存儲公鑰(如公鑰哈希值),來保護公鑰自身的合法性。公鑰一般在設備制造環(huán)節(jié),燒錄到設備的eFuse/OTP中。
- 硬件隔離可信環(huán)境 硬件隔離的可信環(huán)境,遵循了可信計算系統(tǒng)的設計理念。可信環(huán)境內(nèi)外形成了兩個世界:可信世界與不可信世界,兩者之間存在清晰而明確的隔離邊界;HarmonyOS設備在可信環(huán)境中實現(xiàn)了核心敏感數(shù)據(jù)的保護機制,可確保即使不可信世界的操作系統(tǒng)存在漏洞且被利用,也依然能確?尚怒h(huán)境中敏感數(shù)據(jù)的安全。 HarmonyOS設備的可信環(huán)境,基于硬件的安全隔離機制構建,在不同的HarmonyOS設備上芯片隔離機制略有差異,較為通用的方法是采用ARM的TrustZone技術。在部分Risc-V芯片平臺上,也可能采用獨立安全核的形式來構建可信環(huán)境。 可信環(huán)境中,運行特定的、精簡的操作系統(tǒng)iTrustee lite,用于管理可信環(huán)境的資源和任務調(diào)度,給HarmonyOS設備提供安全服務。密鑰管理及數(shù)據(jù)安全,是可信環(huán)境中最為常見的安全服務,設備在eFuse/OTP中存有硬件唯一根密鑰,可信環(huán)境可基于該密鑰結合業(yè)務上下文衍生出多種密鑰,給應用提供密鑰管理和數(shù)據(jù)加解密相關的服務;設備核心密鑰生命周期不離開可信環(huán)境?尚怒h(huán)境同樣可提供身份認證、系統(tǒng)狀態(tài)監(jiān)控、數(shù)據(jù)安全存儲等安全服務,提高設備安全性。
- 硬件密鑰引擎 密碼學是信息安全的基礎。數(shù)據(jù)加解密對計算機設備的核心訴求是:高效、安全。硬件加解密技術利用計算機硬件輔助軟件,甚至直接取代軟件,來處理數(shù)據(jù)的加解密。相比由軟件實現(xiàn)的加解密計算,硬件實現(xiàn)的加解密計算更高效、更安全。 由硬件來實現(xiàn)加解密處理,意味著部分專用的硬件資源會用于處理加解密計算任務,當加解密引擎工作的時候CPU可以并發(fā)地繼續(xù)執(zhí)行其他計算任務,因此硬件加解密引擎可以帶來極大的性能提升,同時降低CPU負載。此外,硬件密鑰引擎可以帶來更高的安全性,設計良好的硬件密鑰引擎,哪怕軟件被攻破也依然可保護密鑰不泄露,甚至可對抗電磁、輻射等物理側信道攻擊。 HarmonyOS設備支持硬件密鑰引擎,支撐HarmonyOS系統(tǒng)進行數(shù)據(jù)加解密、證書驗簽、哈希計算等計算任務,可支持AES/RSA等主流的密碼學算法。
推薦做法
- 啟動可信根可由一段固化在芯片中的代碼和設備根密鑰組成,前者一般在芯片制造階段寫入,設備生命周期內(nèi)不可更改,負責在啟動階段校驗設備軟件證書;后者則是用于設備證書簽名的私鑰相對應的公鑰,證書簽名私鑰不出PKI簽名服務器,而公鑰則需寫入設備。為防止攻擊者篡改公鑰從而達到繞過簽名認證的目的,寫入HarmonyOS設備的公鑰須確保不可篡改,可將公鑰信息寫入如熔絲等介質;考慮到熔絲空間有限,可僅存儲公鑰的哈希值,并由啟動代碼校驗公鑰的合法性。
- 可信執(zhí)行環(huán)境較為通用的做法是基于ARM TrustZone技術構建,也可根據(jù)設備的實際形態(tài)選擇其他隔離機制,如TrustZone-M、獨立安全核等;可信執(zhí)行環(huán)境中須部署TEE OS,用于管理可信執(zhí)行環(huán)境的資源及任務調(diào)度。HarmonyOS系統(tǒng)提供iTrustee作為TEE OS的解決方案,開發(fā)者及設備商可基于iTrustee開發(fā)并部署安全業(yè)務。 并非所有HarmonyOS設備都強制要求支持可信執(zhí)行環(huán)境,部分運行低敏感業(yè)務的瘦資源設備可不做強制要求;可根據(jù)實際業(yè)務場景選擇是否支持可信執(zhí)行環(huán)境,以及實現(xiàn)怎樣的可信執(zhí)行環(huán)境。
- 硬件密鑰引擎須提供真隨機數(shù)、公鑰、對稱密鑰、哈希等密鑰算法能力,通過在HarmonyOS系統(tǒng)中部署相應的驅動程序,給應用提供統(tǒng)一的密鑰管理及密鑰算法服務。
系統(tǒng)安全
安全機制 對于128KB~128MB內(nèi)存的設備,推薦使用HarmonyOS輕內(nèi)核組件,在該內(nèi)核下:
- 進程隔離 進程隔離是為了防止A進程讀寫B(tài)進程內(nèi)存數(shù)據(jù)的情況發(fā)生,進程的隔離技術,一般都采用虛擬地址空間映射方式,通過MMU配置,進程A的虛擬地址和進程B的虛擬地址映射各自不同的實際的物理地址段,這樣A進程通過訪問虛擬地址訪問的實際內(nèi)存數(shù)據(jù)在非共享內(nèi)存的情況下,只屬于A進程,B進程無法直接訪問。 HarmonyOS由于資源有限,對于內(nèi)核態(tài)和用戶態(tài)的進程采用不同的方式:所有的內(nèi)核態(tài)進程共享同一塊VMM空間,即所有的內(nèi)核態(tài)進程之間無隔離,系統(tǒng)啟動時內(nèi)核態(tài)創(chuàng)建兩個基本進程KProcess和KIdle,KProcess進程為內(nèi)核態(tài)進程的根進程,KIdle進程為KProcess進程的子進程;但是對于每一個用戶態(tài)進程均擁有自己獨立的VMM空間,相互之間不可見,實現(xiàn)進程間隔離。
- 自主訪問控制 自主訪問控制DAC(Discretionary Access Control)的思想是文件權限由文件擁有者來決定其他角色的訪問權限。權限管控粒度分為三類:user(自身), group(組員),other(其他人),即UGO。將任意用戶分類為UGO中三者之一,并采取相應的管控策略,即完成了DAC權限校驗流程。 DAC機制依賴于進程的uid、gid等屬性,需要以此作為文件創(chuàng)建以及文件訪問過程中的特征id。文件創(chuàng)建時,創(chuàng)建者將自身uid寫入文件,文件訪問時,又以此作為文件歸屬的分類依據(jù)。 每一個應用,對應一個uid。應用在創(chuàng)建文件時,將自身uid信息加入被創(chuàng)建文件的元數(shù)據(jù)(metadata)中,并設置UGO三個組的權限。在文件訪問過程中,將以訪問者uid作為訪問校驗主體、以文件元數(shù)據(jù)中的uid權限信息作為客體,進行權限校驗。 下圖描述了DAC在文件訪問時的鑒權過程,首先匹配進程uid和文件uid屬性,其次匹配進程gid和文件gid屬性,最后都匹配失敗的情況,判斷文件other屬性是否支持進程的讀、寫、執(zhí)行操作。同時支持忽略DAC檢測機制(讀、寫、執(zhí)行)作為一組系統(tǒng)特權(Capability),支持高權限(如系統(tǒng)服務)對低權限(三方APP)的文件管理。 圖2 DAC流程圖
- Capability機制 Capability機制實際上是對root權限的具體細分。在多用戶計算機系統(tǒng)中,一般會有一個特殊的角色擁有系統(tǒng)的所有權限,這個角色一般是系統(tǒng)管理員(root)。對于HarmonyOS這種需要支持三方應用生態(tài)的內(nèi)核,需要將系統(tǒng)中的特權訪問進行管控。系統(tǒng)需要對用戶層訪問內(nèi)核的特權級系統(tǒng)調(diào)用進行限制。僅允許部分高權限應用進行特權操作。具體實現(xiàn)方式是內(nèi)核spawn第一個用戶程序INIT,其包含全部的特權能力,此后,INIT拉起其他應用框架服務,拉起過程中,對各應用框架進行相應的降權操作,為各應用保留必須的特權能力。 當應用去調(diào)用特權接口時,內(nèi)核態(tài)就會通過進程ID查看當前訪問者是否有權限訪問目標接口。
- 安全啟動 安全啟動是整個系統(tǒng)安全的基礎,通過采用數(shù)字簽名和完整性校驗機制,從芯片內(nèi)部固化的可信啟動根開始,逐級校驗每一層軟件的完整性和合法性,確保最終啟動的操作系統(tǒng)軟件是廠家提供的正確合法的軟件,防止攻擊者對系統(tǒng)軟件做惡意的篡改和植入,為整個系統(tǒng)提供初始安全的基礎運行環(huán)境。 在芯片上電后,由于片上ROM代碼本身不可更改,因此無需校驗;片上ROM基于eFuse中的非對稱算法公鑰hash對bootloader進行校驗。這些過程都基于硬件信任根來進行,是完全可信的。經(jīng)過此過程校驗通過的bootloader模塊可以作為后續(xù)的信任基礎,此過程就是啟動信任鏈的構造過程。Bootloader通常首先對執(zhí)行環(huán)境進行一定的初始化,主要是初始化DDR以及flash讀寫,為進一步加載后續(xù)模塊以及執(zhí)行更為復雜的邏輯進行準備。Bootloader完成初始化動作后,首先完成x509證書的完整性校驗,然后利用x509證書的公鑰對需要校驗的鏡像包(kernel.bin、teeOS.bin、rootfs.bin)進行校驗。
推薦做法
- 自主訪問控制和Capability機制是控制資源被誰可以訪問的機制,建議所有權限設置都采用最小權限原則。
- 安全啟動必須要開啟,信任根必須是基于芯片的不可更改的形式存在,并且在有安全升級的情況下,必須考慮安全升級后對于安全啟動的影響,也就是安全升級后必須要更新對應鏡像文件的簽名信息或者hash值。
數(shù)據(jù)安全
安全機制 HUKS(Huawei Universal Keystore Service),密鑰管理和存儲服務,提供了證書管理、密鑰管理、安全存儲和密鑰認證服務,當前在HarmonyOS上主要是提供密鑰管理和安全存儲服務,同時支撐hichain(設備身份認證平臺)的基礎設備認證能力。如下是HUKS的功能結構圖: 圖3 HUKS功能結構圖
支持算法包括: 認證加密:AES-128/192/256-GCM 簽名驗簽:ED25519 密鑰協(xié)商:X25519 消息認證:HMAC-SHA256/512 數(shù)據(jù)摘要:SHA256/512 HUKS在使用中有如下約束:
- 密鑰安全存儲:密鑰要求存儲于安全存儲區(qū)域,數(shù)據(jù)不可以修改,恢復出廠設置時出廠預置的密鑰不能被刪除。
- 密鑰訪問安全:HarmonyOS通過將不同應用數(shù)據(jù)保存在不同的位置,來實現(xiàn)應用間數(shù)據(jù)的隔離。通過參數(shù)結構體中包含UID和進程ID,來實現(xiàn)不同應用間的數(shù)據(jù)隔離。
- 不支持并發(fā)訪問:HUKS本身不考慮多個應用同時調(diào)用的情況,因為HUKS只是一個lib庫,也不考慮資源的互斥。如果有多個應用都會用到HUKS服務,那么應該由每個應用各自鏈接一份HUKS庫,并由業(yè)務傳入持久化數(shù)據(jù)存儲的路徑,以實現(xiàn)應用間的數(shù)據(jù)存儲分開。數(shù)據(jù)存儲在各應用各自存儲目錄下。
推薦做法 對于設備認證功能,建議使用HiChain來對接HUKS,HUKS可以向HiChain等應用提供密鑰的產(chǎn)生、導入、導出、加密/解密、存儲、銷毀,證書的導入和查詢,秘密信息的存儲等能力。
設備互聯(lián)安全
為了實現(xiàn)用戶數(shù)據(jù)在設備互聯(lián)場景下在各個設備之間的安全流轉,需要保證設備之間相互正確可信,即設備和設備之間建立信任關系,并能夠在驗證信任關系后,搭建安全的連接通道,實現(xiàn)用戶數(shù)據(jù)的安全傳輸。設備之間的信任關系在本文檔中涉及IoT主控設備和IoT設備之間建立的可信關系。設備間可信關系建立的流程如下圖所示: 圖4 設備間建立可信關系流程圖
- IoT設備互聯(lián)安全 設備互聯(lián)支持基于HarmonyOS的IoT設備(如AI音箱、智能家居、智能穿戴等設備)與IoT主控設備間建立點對點的信任關系,并在具備信任關系的設備間,搭建安全的連接通道,實現(xiàn)用戶數(shù)據(jù)端到端加密傳輸。
- IoT主控設備的IoT業(yè)務身份標識 IoT主控設備為不同的IoT設備管理業(yè)務生成不同的身份標識,形成不同IoT管理業(yè)務間的隔離,該標識用于IoT主控設備與IoT設備之間的認證以及通信。IoT業(yè)務身份標識為橢圓曲線公私鑰對(Ed25519公私鑰對)。
- IoT設備身份標識 IoT設備會生成各自的設備身份標識,用來與IoT主控設備通信。該身份標識同樣為橢圓曲線公私鑰對(Ed25519公私鑰對);IoT設備私鑰不出IoT設備,設備每次恢復出廠設置,會重置這個公私鑰對。 上述身份標識可用于IoT主控設備與IoT設備間的安全通信:當IoT主控設備與IoT設備通過信任綁定流程交換業(yè)務身份標識或設備標識后,可以進行密鑰協(xié)商并建立安全通信通道。
- 設備間點對點的信任綁定 IoT主控設備和IoT設備建立點對點信任關系的過程,實際上是相互交換IoT設備的身份標識的過程。 在點對點建立信任關系的過程中,用戶需要在IoT主控設備上,輸入IoT設備上提供的PIN碼:對于有屏幕的設備,該PIN碼動態(tài)生成;對于沒有屏幕的設備,該PIN碼由設備生產(chǎn)廠家預置;PIN碼的展示形式,可以是一個用戶可讀的數(shù)字,也可以是一個二維碼。隨后,IoT主控設備和IoT設備間使用PAKE協(xié)議完成認證和會話密鑰協(xié)商過程,并在此基礎上,通過協(xié)商出的會話密鑰加密傳輸通道用于交換雙方設備的身份標識公鑰。
- IoT主控設備與IoT設備間的通信安全 當建立過信任關系的IoT主控設備與IoT設備間進行通信時,雙方在完成上述信任關系綁定后,基于本地存儲的對端身份公鑰相互進行認證;在每次通信時基于STS協(xié)議完成雙向身份認證以及會話密鑰協(xié)商,之后設備使用此會話密鑰加密雙方設備間的傳輸通道。
應用安全
安全機制
- 應用簽名管控 HarmonyOS應用的安裝需要首先對包的完整性進行校驗,具體策略是在開發(fā)階段完成開發(fā)和調(diào)試后對安裝包進行簽名,這個簽名需要使用指定的私鑰,這個私鑰就是跟驗簽用的公鑰是一對的,一般的做法是OEM廠商生成一對公私鑰,然后將公鑰信息預置到設備中,而私鑰就放在一個不聯(lián)網(wǎng)的本地服務器上,這樣可以確保私鑰被泄露的風險盡量小,而應用在完成開發(fā)后就可以通過外置設備(例如USB)上傳安裝包到存放私鑰的服務器上計算簽名并下載簽名結果到外置設備上。而安裝應用時首先計算包的Hash值,一般采用SHA256算法,然后使用hash值和簽名信息以及預置公鑰進行驗簽,只有驗簽通過的應用才能安裝。 除了要證明應用來自云端認證過的,還需要證明來源,即這個應用來自合法開發(fā)者開發(fā)的,具體做法是,開發(fā)者向云端申請開發(fā)證書,開發(fā)完成后,用開發(fā)證書進行自簽名,設備端存放這個證書的上一級證書,所以安裝過程中,對自簽名信息做校驗,確保開發(fā)者的合法性。
- 應用權限控制 由于HarmonyOS系統(tǒng)允許安裝三方應用,所以需要對三方應用的敏感權限調(diào)用進行管控,具體實現(xiàn)是應用在開發(fā)階段就需要在profile.json中指明此應用在運行過程中可能會調(diào)用哪些敏感權限,這些權限包括靜態(tài)權限和動態(tài)權限,靜態(tài)權限表示只需要在安裝階段注冊就可以,而動態(tài)權限一般表示獲取用戶的敏感信息,所以需要在運行時讓用戶確認才可以調(diào)用,授權方式包括系統(tǒng)設置應用手動授權等。除了運行時對應用調(diào)用敏感權限進行管控外,還需要利用應用簽名管控手段確保應用安裝包已經(jīng)被設備廠商進行了確認。 表1 HarmonyOS系統(tǒng)權限列表 HarmonyOS系統(tǒng)權限 授權方式 權限說明
ohos.permission.LISTEN_BUNDLE_CHANGE system_grant(靜態(tài)權限) 允許該應用獲取應用變化消息。
ohos.permission.GET_BUNDLE_INFO system_grant(靜態(tài)權限) 允許該應用獲取應用信息。
ohos.permission.INSTALL_BUNDLE system_grant(靜態(tài)權限) 允許該應用安裝應用。
ohos.permission.CAMERA user_grant(動態(tài)權限) 此應用可隨時使用相機拍攝照片和錄制視頻。
ohos.permission.MODIFY_audio_SETTINGS system_grant(靜態(tài)權限) 允許該應用修改全局音頻設置,例如音量和用于輸出的揚聲器。
ohos.permission.READ_MEDIA user_grant(動態(tài)權限) 允許該應用讀取您的視頻收藏。
ohos.permission.microPHONE user_grant(動態(tài)權限) 此應用可隨時使用麥克風進行錄音。
ohos.permission.WRITE_MEDIA user_grant(動態(tài)權限) 允許該應用寫入您的音樂收藏。
ohos.permission.DISTRIBUTED_DATASYNC user_grant(動態(tài)權限) 管控分布式數(shù)據(jù)傳輸能力。
ohos.permission.DISTRIBUTED_VIRTUALDEVICE user_grant(動態(tài)權限) 允許應用使用分布式虛擬能力
推薦做法 開發(fā)者在開發(fā)過程中需明確后續(xù)應用在運行時需要運行哪些權限,并在profile.json中進行注冊,然后需要對應用進行簽名,確保設備在安裝這些應用時能對應用的完整性和來源進行校驗。 |
|