安全存儲器如何在可信任執(zhí)行環(huán)境中發(fā)揮作用
手機(jī)需要一個可信任的執(zhí)行環(huán)境(EE),來確保敏感數(shù)據(jù)的安全存儲和處理而不被盜用。一個可信任的EE指的是任務(wù)的執(zhí)行如預(yù)期所想??尚湃蔚倪\(yùn)算機(jī)構(gòu)(TCG)采用行為名聲(behavioral reputation)的概念,此時指的是文檔中的“可信任運(yùn)算”??尚湃蔚男袨槭前踩夹g(shù)中的關(guān)鍵部分,因?yàn)樗谷藗兿嘈乓粋€EE的行為,進(jìn)而允許人們分析環(huán)境安全的各個方面。完整了解如何創(chuàng)建和維護(hù)一個可信任的EE,將有助于像手機(jī)支付這類的應(yīng)用。一旦客戶、銀行以及各種商業(yè)機(jī)構(gòu)都能充分信任這些應(yīng)用是安全的,這方面的應(yīng)用將會增加。
在《移動手機(jī)的安全》一書中,Chris J. Mitchell認(rèn)為下面的幾個方面是與移動運(yùn)算相關(guān)的主要安全問題:鑒權(quán)、數(shù)據(jù)完整性、數(shù)據(jù)保密性以及非抵賴性(non-repudiation)。文中闡釋了安全存儲器在提供作為一個可信任EE的這些業(yè)務(wù)方面所扮演的關(guān)鍵作用,包括能夠支持多方相關(guān)者的豐富訪問控制機(jī)制。
可信任的執(zhí)行環(huán)境
一個EE是一些定義一個運(yùn)算架構(gòu)的軟硬件的集合。一個EE可以是一個帶有存儲器的簡單CPU,或者是一個運(yùn)行在負(fù)責(zé)管理一個處理器和各種外設(shè)的OS頂層JAVA虛擬機(jī)。一個可信任的EE是一個其執(zhí)行與預(yù)期相一致的運(yùn)算環(huán)境。TCG所指的行為名聲的概念,就是本文中的可信任運(yùn)算。
顯然,提供安全業(yè)務(wù)需要行為名聲。TCG以及其它機(jī)構(gòu)所采用的評估行為名聲的方案是定義一個安全的啟動過程,來驗(yàn)證手機(jī)的啟動處于可信任狀態(tài)。這個可信任狀態(tài)的確認(rèn)是通過驗(yàn)證手機(jī)中所執(zhí)行代碼(OS及其它)的完整性來獲得的。
但是,僅僅是提供安全啟動對于提供一個可信任的EE來說是不夠的,因?yàn)橄到y(tǒng)在安全啟動后會遭受流氓軟件的攻擊,在任何大型的OS中都有一些流氓軟件可以利用的安全漏洞。建議采用運(yùn)行期間的完整性檢查來確認(rèn)代碼的完整性。這些檢查可以周期性地進(jìn)行,也可以在關(guān)鍵事件發(fā)生前進(jìn)行。不過,運(yùn)行期間的完整性檢查只能在攻擊發(fā)生時方可檢測到。雖然這可以降低破壞性的風(fēng)險,但在存在流氓軟件的環(huán)境中還不能提供一個可信任的EE。
基于閃存的安全性
許多對PC和手機(jī)的攻擊可以追溯到攻擊者修改非易失性存儲器中的數(shù)據(jù)/代碼。基于閃存的安全技術(shù)保護(hù)存儲器免受這類攻擊,防止未經(jīng)授權(quán)的修改。單單是在基帶處理器中提升安全保護(hù)的手機(jī)無法防止對閃存的修改。它只是能夠檢查到數(shù)據(jù)的修改而作為完整性檢查的一部分,這種檢查在某些情況下也顯得有點(diǎn)太遲。
TCG創(chuàng)建了可信任的平臺模組(TPM)的概念,當(dāng)其與PC集成到一起時,為大量的應(yīng)用提供了改進(jìn)的基于硬件的安全性。TPM是一個存儲密鑰、密碼和數(shù)字鑒權(quán)的微控制器,通常安裝到PC的主板上。TCG的手機(jī)工作組將TPM這一概念擴(kuò)展到其MTM標(biāo)準(zhǔn)中手機(jī)的EE。與TPM和MTM不一樣,基于閃存的安全不僅僅是檢測完整性的失效,還確保完整性保持在一個合理的威脅模型(threat model)之下。該功能叫做完整性保護(hù)存儲器,對避開針對手機(jī)的非易失性存儲器的攻擊非常重要。一個沒有基于閃存的安全系統(tǒng)的MTM只能夠檢測數(shù)據(jù)/代碼的變化,卻無法有效地避免。但MTM檢測到數(shù)據(jù)/代碼的變化時,破壞可能已經(jīng)發(fā)生了。
基于閃存的安全所提供的完整性保護(hù)的另一個重要結(jié)果是數(shù)據(jù)的有效性??尚湃蜤E的其它解決方案集中在數(shù)據(jù)的保密性上。例如,它們確保流氓軟件無法讀取用戶的信用卡號碼,但卻無法保證信用卡號碼不被病毒所刪除,從而導(dǎo)致成千上萬的用戶無法使用他們的手機(jī)來進(jìn)行移動支付。而基于閃存的安全技術(shù)則能夠同時提供上述保密性和有效性。
基于閃存的安全系統(tǒng)(圖1)采用多芯片封裝,包括非易失性存儲器(閃存)以及一片提供對非易失性存儲器的訪問控制的安全處理器。該安全處理器還用作為一個可信任的EE,用于手機(jī)中提供安全業(yè)務(wù)。該安全處理器作為一個可信任EE是非常理想的,因?yàn)樗羁拷鎯ν暾员Wo(hù)代碼、數(shù)據(jù)以及密鑰的非易失性存儲器。因?yàn)樗彩且粋€隔離的環(huán)境,只能執(zhí)行基于閃存的安全系統(tǒng)所提供的專用軟件,因而不會受到像緩沖器溢出這類的攻擊。
圖1:如何將基于閃存的安全系統(tǒng)嵌入到手機(jī)中。 本文引用地址:http://cafeforensic.com/article/201706/353454.htm |
圖2所示的是一個安全系統(tǒng)的方框圖。其中,CPU是一片ARM7-TDMI處理器,運(yùn)行速率約60MHz。加密引擎支持均衡加密(AES、DES、3DES)和非對稱加密(PKI based on RSA)算法。安全處理器作為主處理器(基帶處理器應(yīng)用處理器)與閃存之間的看門狗,監(jiān)控所有對閃存的訪問。由安全處理器所提供的安全服務(wù)包括加密和閃存器件保護(hù)。
圖2:基于閃存的安全系統(tǒng)方框圖。 |
安全處理器及安全閃存服務(wù)
安全處理器為手機(jī)上運(yùn)行的應(yīng)用提供一個可信任的EE。手機(jī)OEM和網(wǎng)絡(luò)運(yùn)營商嚴(yán)格控制安全處理器上運(yùn)行的軟件,并且是與主機(jī)相互隔離的。只有經(jīng)驗(yàn)證且信任的程序才能安裝到安全處理器上。安全處理器上運(yùn)行的軟件比手機(jī)上運(yùn)行的一般OS要小得多,故軟件的驗(yàn)證比較容易。安全處理器提供與手機(jī)安全相關(guān)的四種安全服務(wù)(鑒權(quán)、數(shù)據(jù)完整性、數(shù)據(jù)保密性和非抵賴性)。圖3給出了基于閃存的安全系統(tǒng)的軟件結(jié)構(gòu)。在主機(jī)平臺上實(shí)現(xiàn)的API提供安全存儲服務(wù),以及加密服務(wù)。API將功能呼叫轉(zhuǎn)換成通過存儲器接口發(fā)往安全處理器的消息。
為了消除對安全處理器的惡意消息攻擊,利用精心定義的語法和語義設(shè)計這些消息被。在一個消息中,每個變量長度的數(shù)據(jù)域的開始帶有一個特殊標(biāo)記,隨后是域長度,它在數(shù)據(jù)之前。這與C字符串不一樣,其長度只有當(dāng)你瀏覽字符串并發(fā)現(xiàn)一個無效字符后方可知道其長度。有一個消息分析器來分析消息并檢查是否是有效的語法,直到語法檢查通過后才對數(shù)據(jù)進(jìn)行處理,這就對緩沖器溢出這類的攻擊提供了保護(hù)。然后,才根據(jù)消息中特定域?qū)⑾⒎职l(fā)到正確的中介(agent)。該中介根據(jù)消息中的規(guī)定為緩沖器分配足夠的空間,并經(jīng)消息分析器驗(yàn)證。只有有限的中介來處理有限的消息,這些中介將仔細(xì)地分析安全漏洞。消息不能生成能夠在安全處理器中執(zhí)行的任意的本地代碼。消息中沒有功能指針。
安全處理器提供安全存儲器服務(wù),包括存儲密鑰、證書、代碼和數(shù)據(jù)??梢愿鶕?jù)應(yīng)用中的安全需求來制訂這些內(nèi)容的訪問權(quán)限。
圖3:基于閃存的安全軟件結(jié)構(gòu)。 |
安全分區(qū)
非易失性存儲器可以被分成獨(dú)立的存儲器分區(qū),每個分區(qū)具有單獨(dú)的訪問控制。有一個單獨(dú)的硬件強(qiáng)制性訪問控制來控制程序的讀取、程序的擦除,以及改變分區(qū)的訪問權(quán)限的其它動作。訪問可以通過密碼控制,為了增強(qiáng)安全性,也可以采用PKI鑒權(quán)。在不同的壽命階段,由不同的保管者來創(chuàng)建這些分區(qū)。例如,網(wǎng)絡(luò)運(yùn)營商可以創(chuàng)建一個代碼分區(qū),其中包括OS和運(yùn)營商的其他驗(yàn)證軟件。該分區(qū)將只有一個讀取訪問,沒有任何的鑒權(quán),故代碼可以任意地執(zhí)行。而同時,程序的擦除卻需要運(yùn)營商的PKI鑒權(quán)。這就防止了主機(jī)平臺上運(yùn)行的任何流氓軟件來修改代碼分區(qū)。從而在并非只是啟動過程中的所有時間內(nèi),維持了OS和其他相關(guān)軟件的完整性。
具有豐富的訪問控制的安全分區(qū)提供了數(shù)據(jù)完整性和保密性。該分區(qū)可以被保護(hù),免于未授權(quán)的人利用密碼或PKI鑒權(quán)來讀取訪問。從而提供了所需數(shù)據(jù)的保密性。相似地,分區(qū)還可以被保護(hù)避免未授權(quán)的寫操作,從而保持了數(shù)據(jù)的完整性。
該訪問控制還具有一個附加功能,即定義了單獨(dú)分區(qū)的可用性。例如,在通過SIM卡鎖檢查之前,主代碼分區(qū)被鎖定到只能讀取。這就迫使在SIM卡鎖檢查沒有通過之前無法使用手機(jī)。
存儲對象
基于閃存的安全系統(tǒng)被用來存儲數(shù)據(jù)、代碼、密鑰、證書以及代幣。移動設(shè)備通常將密鑰存在ROM中,但與閃存相比其靈活性較差且容量有限。在非易失性存儲器中加密的密鑰也能夠提供保密性,但無法防止密鑰被流氓軟件擦除。而基于閃存的安全系統(tǒng)則允許存儲一個虛擬的數(shù)量無限的密鑰。在任何時候可以利用OTA更新來增加更多的密鑰。通過將存儲對象存儲到合適的分區(qū)中,可以提供保密性,完整性和鑒權(quán)。
動態(tài)加密和加密服務(wù)
安全處理器還提供一個動態(tài)加密功能。該功能允許主機(jī)向存儲器發(fā)送純文本,文本在寫入閃存時被加密。所用的加密算法是AES-CTR。
密碼服務(wù)是PKCS#11 API的一個子集。API獨(dú)立于主機(jī)平臺,并支持對稱密鑰和公鑰。API將功能呼叫轉(zhuǎn)換成送往安全處理器的消息,在這里利用加密閃存內(nèi)核進(jìn)行處理。密鑰的完整性和保密性得到很好的保護(hù),因?yàn)樗鼈儾粫x開安全處理器。由安全處理器提供的加密服務(wù)允許人們在安全處理器與外部服務(wù)器之間創(chuàng)建一個安全的通信信道。該通信通道的安全與主機(jī)平臺無關(guān)。從而可以實(shí)現(xiàn)FOTA和移動商業(yè)這類的應(yīng)用。安全處理器提供一個高級的設(shè)備鑒權(quán),這是由于根密鑰根本不會離開安全處理器。
結(jié)論
基于閃存的安全系統(tǒng)提供了一個可信任的EE,以及一個具有豐富的訪問控制機(jī)制的安全非易失性存儲器,支持多方保管。具有PKI的安全非易失性存儲器意味著代碼和數(shù)據(jù)的完整性得到保護(hù),結(jié)果使數(shù)據(jù)完整性和保密性更加安全。鑒權(quán)和非抵賴性是安全處理器的結(jié)果,構(gòu)成一個具有嵌入式加密閃存內(nèi)核的隔離式可信任EE。此外,安全非易失性存儲器使得數(shù)據(jù)在任何時候都可用。僅僅利用編碼是不可能實(shí)現(xiàn)這一性能的。利用加密學(xué),像MTM這類的其它方案雖然能夠監(jiān)測到數(shù)據(jù)是否被篡改,但卻無法防止篡改。如果沒有保護(hù),病毒還能摧毀成千上萬手機(jī)上的信用卡號,從而使得用戶無法進(jìn)行移動支付。
有基于閃存的安全系統(tǒng)提供的存儲器完整性保護(hù)使得密鑰的配置更加靈活。具有較大的容量來存儲加密密鑰和數(shù)字證書。更進(jìn)一步,還能夠通過空中無線接口進(jìn)行密鑰更新。
對PC和手機(jī)的許多攻擊可以追溯到非易失性存儲器中數(shù)據(jù)和代碼的篡改。基于閃存的安全系統(tǒng)保護(hù)存儲器免受這類攻擊,而其他類型的手機(jī)安全方案則不能。像MTM或基帶安全解決方案倚賴的是安全啟動以及在運(yùn)行時間內(nèi)檢查數(shù)據(jù)和代碼有無變化。實(shí)際上,在檢查時,修改的代碼可能已經(jīng)對敏感數(shù)據(jù)進(jìn)行了篡改。而防止對數(shù)據(jù)和代碼的篡改,構(gòu)建一個可信任的EE是至關(guān)重要的。
采用基于閃存的安全存儲器來創(chuàng)建并維護(hù)一個可信任EE將有助于實(shí)現(xiàn)更先進(jìn)的手機(jī)應(yīng)用,例如手機(jī)支付安全和可靠性應(yīng)用,并增加公共機(jī)構(gòu)和消費(fèi)者的采用。
編輯:博子
評論