摘 要:針對目前手機(jī)的病毒多樣化和種類的不斷增加,提出一種基于android系統(tǒng)軟件的arm trustzone technology,防止手機(jī)的系統(tǒng)軟件篡改和惡意刷機(jī),對編譯后各個部分的軟件進(jìn)行簽名和認(rèn)證,以保證手機(jī)穩(wěn)定安全。同時secure boot保證軟件的安全運(yùn)行,在此基礎(chǔ)上DRM才能在SFS內(nèi)獲取安全的私鑰等信息。
關(guān)鍵詞:trustzone技術(shù);secure boot;簽名;熔絲;私鑰
1 概述
目前市場上95%是基于安卓系統(tǒng)開發(fā)的,而android是一種基于linux的自由及開放源代碼的操作系統(tǒng)。任何人都可以基于android的源代碼來開發(fā)自己的應(yīng)用程序和底層協(xié)議,同時也可以通過編譯帶病毒的APK來攻擊手機(jī)的系統(tǒng)軟件。
為了徹底解決手機(jī)的安全性問題,基于google android trustzone技術(shù)提供了一套基于system-on-a-ship(SOC)的配置和設(shè)計。此方案是硬件級別的安全。首先通過對編譯的文件進(jìn)行簽名,簽名的文件中存在燒寫的SHA256位的密碼,然后對ROM的OTP寄存器進(jìn)行燒寫,在啟動的過程中會對編譯的文件進(jìn)行驗證,只有SHA256的密碼匹配了,手機(jī)才能正常啟動。此方案從底層的硬件級別對手機(jī)進(jìn)行了安全保護(hù),只有經(jīng)過驗證通過的文件才能加載,極大的增強(qiáng)了手機(jī)的安全性。
2 Secure boot的原理
圖2.1 Secure boot原理
在對image文件進(jìn)行簽名的時候,會有一個用戶的私鑰以及用戶鑒別的公鑰,當(dāng)用戶簽名后,會有這二個key存在,整個簽名過程可分解如下:
①用戶通過CSMS產(chǎn)生簽名要使用的私鑰以及證書鏈,該證書鏈包含有三個證書,主要作用是對證書中包含的公鑰及軟件信息的簽名認(rèn)證。
②通過SHA256算法對編譯后的各部分image部分進(jìn)行哈希值摘要提取,此主要分為2個步驟,第一步僅僅是對image做出hash提取,第二步則結(jié)合該image的MSM_ID、OEM_ID等對其在做一次SHA256算法提取生成Flash Hash Digest。
③用步驟1中的私鑰對產(chǎn)生的哈希摘要進(jìn)行加密生成簽名。
④將生成的image簽名和證書鏈鏈接到原來的文件中,生成簽名的image文件。
⑤在該軟件加載和認(rèn)證階段,會使用公鑰對證書鏈及簽名內(nèi)容進(jìn)行相應(yīng)的解密,將證書中包含的軟件版本信息和MSM_ID信息與QFPROM中的響應(yīng)值對比,同時再次通過SHA256算法對code部分進(jìn)行哈希摘要提取,與解密后的簽名進(jìn)行對比,驗證通過后才可以加載。
在芯片設(shè)備中OTP寄存器中存儲有簽名用到的PUBLIC_KEY,在用戶簽名的image中含有PRIVATE_KEY.在啟動的過程中,PUBLIC_KEY會對簽名后的文件進(jìn)行解密。包括對簽名文件的證書信息進(jìn)行驗證。如用存儲在證書上該軟件的版本號,MSM_ID等信息與之前用戶燒錄在芯片中的FUSE中對應(yīng)內(nèi)容進(jìn)行驗證,確認(rèn)無誤后,在對文件中的code部分進(jìn)行哈希校驗,確保源代碼沒有被篡改,成功后,啟動流程后才能順利地往下執(zhí)行。
3 Secure boot流程
要使能secure boot要進(jìn)行以下工作,第一步,要對使能熔絲,就是燒寫QFPROM寄存器。第二步,修改軟件代碼,把手機(jī)的廠商ID,產(chǎn)品ID等配置信息寫入寄存器,用fastboot燒寫進(jìn)寄存器。第三步,對編譯出來的image文件進(jìn)行簽名。
3.1 熔絲
為了保證熔絲后可以順利運(yùn)行我們的軟件,我們需要熔一系列的寄存器。有secureboot的使能腳,是使能控制的一個GPIO控制腳(AUTH_EN),使能OEM 和產(chǎn)品ID(OEM_HW_ID,OEM_PRODUCT_ID),同時使能root key,即使能根密鑰簽名image文件。
3.2 燒寫代碼
SBL1里面已經(jīng)有封裝好的可供燒錄的接口函數(shù)boot_qfprom_signal_test函數(shù),底層函數(shù)實(shí)現(xiàn)在trustzone里面。在熔絲的過程中,要增加判斷,如果讀寄存器已經(jīng)熔絲,就不再熔絲。在SBL1中熔絲,首先要通過算法去生成值,然后通過工具燒寫進(jìn)去。燒錄生成的時序,即流程中對應(yīng)的關(guān)鍵函數(shù),讀fuse接口的函數(shù)。
3.3 image簽名
簽名換件的搭建和證書生成軟件,需要通過openssl軟件,對qpsa.zip文件解壓,執(zhí)行openssl指令來生成QPSA簽名所需要的證書及私鑰文件。同時配置gensecimage.cfg文件,設(shè)定好存儲路徑,簽名的格式及輸出目錄。執(zhí)行python指令可以執(zhí)行g(shù)ensecimage.cfg文件生成相關(guān)的文件。
4 總結(jié)
Secure boot目前廣泛應(yīng)用于各大手機(jī)廠商中,尤其能為目前的支付寶、微信支付等支付業(yè)務(wù)提供更大的安全環(huán)境。這是一項硬件級別的安全框架,能提供高級別的安全。
參考文獻(xiàn):
[1](美)波特編著.LINUX設(shè)備驅(qū)動程序 中文第三版[M].中國電力出版社,2012.4.
[2]Android5.0源代碼.
作者簡介:
王晶(1990-),男,漢族,湖南邵陽人,重慶郵電大學(xué),碩士研究生,研究方向:移動通信。