丁魏
摘要:本文結(jié)合實(shí)際的項(xiàng)目情況,從升級(jí)包安全角度出發(fā),探索了智能設(shè)備在進(jìn)行FOTA升級(jí)的過程中,需要對(duì)升級(jí)包做哪些方面的防護(hù),有時(shí)如何使用各種加解密技術(shù)達(dá)到安全防護(hù)效果的。
[關(guān)鍵詞]FOTA安全 升級(jí)包安全 文件驗(yàn)簽 文件加密
1 安全需求
身份認(rèn)證:認(rèn)證升級(jí)包是從真正的服務(wù)器上下發(fā)下來的,并確保下載下來的文件為客戶經(jīng)過認(rèn)證并簽發(fā)的升級(jí)包。同時(shí)智能設(shè)備必須驗(yàn)證服務(wù)器的真實(shí)性。
信息機(jī)密性:升級(jí)包為智能設(shè)備廠商的核心資產(chǎn),因此我們需保障升級(jí)包在網(wǎng)絡(luò)上傳輸過程中不被竊取,竄改;保障即使該升級(jí)包落入惡意攻擊者手中,也無法通過逆向工程,反編譯等手段破解程序包中的核心程序及重要的軟件資產(chǎn)信息。
數(shù)據(jù)防篡改:在進(jìn)行FOTA升級(jí)的時(shí)候,必須保障每個(gè)字節(jié)的正確性,否則就會(huì)導(dǎo)致升級(jí)失敗。所以在進(jìn)行軟件更新時(shí),必須保證系統(tǒng)更新包是從真實(shí)的FOTA服務(wù)器下載下來的并沒有被篡改。
數(shù)據(jù)完整性:一個(gè)不完成的升級(jí)包是無法進(jìn)行FOTA升級(jí)的。因此我們?cè)谏?jí)包到達(dá)智能設(shè)備之后,都要進(jìn)行反復(fù)的進(jìn)行完整性校驗(yàn),確保升級(jí)包的完整性。
2 技術(shù)說明
在升級(jí)包防護(hù)措施實(shí)施中,我們會(huì)用到各種加密算法。為了更能理解后面做的防護(hù)措施,我們把一些主要使用到的技術(shù)及其特點(diǎn)列舉如下:
HASH:中文名為哈希,該算法可以把任意長度的輸入,通過散列算法變成固定長度的消息摘要函數(shù),相當(dāng)于信息指紋。常用的HASH算法包括MD5、SHA256等。在這我們使用文件的HASH值來判斷文件完整性以及是否被篡改。
AES:常用的的對(duì)稱加密算法,有速度快,簡單等特點(diǎn)。主要分為AES128,AES192,AES256三種算法。從安全性來看,AES256安全性最高,從性能來看,AES128性能最高。在這我們使用該算法對(duì)升級(jí)包進(jìn)行加密處理,加密之后能夠保障升級(jí)包的隱私性。
RAS:常用非對(duì)稱加密算法,公開密鑰密碼體制,使用了不同的加密密鑰與解密密鑰對(duì)。其中一個(gè)稱為公鑰,一個(gè)稱為私鑰。在這我們使用私鑰對(duì)升級(jí)包的HASH值進(jìn)行簽名,使用私鑰對(duì)升級(jí)包的HASH進(jìn)行驗(yàn)簽。
HTTPS:HTTPS為HTTP協(xié)議,上添加了SSL安全證書,用于安全的數(shù)據(jù)傳輸和身份驗(yàn)證。在這我們使用HTTPS技術(shù)下發(fā)升級(jí)包,保障升級(jí)包傳輸過程的安全和下載來源的可靠性。
KMS:秘鑰管理服務(wù)器,提供秘鑰的分發(fā),秘鑰管理,公私鑰對(duì)的生成等功能。
3 架構(gòu)設(shè)計(jì)
如圖1所示。
根據(jù)實(shí)際安全需求以及項(xiàng)目詳情,構(gòu)思了一套完成的升級(jí)包防護(hù)方案,該方案能有效的對(duì)升級(jí)包的身份認(rèn)證,保障升級(jí)包的信息機(jī)密性,數(shù)據(jù)完整性,隱私性等要求。以下結(jié)合具體的流程步驟,闡述升級(jí)過程具體的防護(hù)措施。
流程步驟:
步驟1:計(jì)算獲取原始升級(jí)包的HASH值,使用該HASH值作為參數(shù)去獲取升級(jí)包加密需要的加密因子。文件的HASH值可以認(rèn)為是文件的指紋,使用它作為獲取加密因子的參數(shù),能達(dá)到不同文件得到不同加密因子的效果。
步驟2:使用獲取到的加密因子和AES256算法對(duì)文件進(jìn)行加密處理,得到加密后的升級(jí)包。
步驟3:獲取加密包的HASH值,把它作為對(duì)升級(jí)包簽名的內(nèi)容。
步驟4:獲取對(duì)稱加解密的秘鑰對(duì),用來做文件簽名使用。
步驟5:使用獲取到的秘鑰對(duì)中的私鑰,采用RSA加密算法對(duì)加密包的HASH值進(jìn)行簽名,簽名后生成了一段字符串,此段字符串即為數(shù)字簽名的憑證。對(duì)升級(jí)包進(jìn)行簽名之后,只有使用公鑰進(jìn)行才能驗(yàn)簽通過,從而達(dá)到身份認(rèn)證的功能。
步驟6:把簽名好的字符串和簽名秘鑰對(duì)中的公鑰拼接在升級(jí)包后面,作為升級(jí)包的一部分,下發(fā)到智能設(shè)備中。
步驟7:使用HTTPS加密通道,下發(fā)升級(jí)包,采用TLS1.2加密協(xié)議,保障升級(jí)包來源的可靠性,以及升級(jí)包在傳輸過程中不被監(jiān)聽和截取。
步驟8:升級(jí)包下載到智能終端之后,程序根據(jù)預(yù)先約定的規(guī)則對(duì)升級(jí)包進(jìn)行拆解。拆解后為加密包、驗(yàn)簽公鑰及簽名字符串三塊。
步驟9:使用智能設(shè)備預(yù)置的根證書對(duì)拆分好的公鑰進(jìn)行認(rèn)證,認(rèn)證通過說明該公鑰為合法的公鑰。
步驟10:使用認(rèn)證過的公鑰對(duì)簽名字符串進(jìn)行驗(yàn)簽,驗(yàn)簽過程也就是對(duì)簽名字符串進(jìn)行解密的過程,解密后和加密升級(jí)包的HASH值進(jìn)行比較,如果一致,則代表驗(yàn)簽通過。從而達(dá)到了認(rèn)證了升級(jí)包來源的可靠性及完整性的效果。
步驟11:驗(yàn)簽通過后的升級(jí)包還是個(gè)加密的升級(jí)包,需要對(duì)其進(jìn)行解密之后才能使用。我們?cè)偈褂蒙?jí)包的原始HASH值,去獲取升級(jí)包的解密秘鑰,并使用AES256算法對(duì)該文件進(jìn)行解密,解密之后得到的文件即為原始文件。至此,我們可以使用該升級(jí)包進(jìn)行對(duì)固件進(jìn)行后續(xù)的升級(jí)操作。
4 結(jié)論
安全為FOTA升級(jí)過程中非常重要的一環(huán),升級(jí)包的安全作為整個(gè)安全體系中的一部分至關(guān)重要。我們既要保障升級(jí)包來源的可靠性,安全性,隱密性,同時(shí)還需要考慮實(shí)際上設(shè)備的處理能力。
我們?cè)谠搶?shí)踐方案中使用AES256算法保障了升級(jí)包的隱私性,使用RSA簽名算法認(rèn)證了升級(jí)包的身份,使用文件的HASH驗(yàn)證了文件的完整性,使用HTTPS技術(shù)保障了傳輸過程中的安全。我們從安全需求角度出發(fā),使用了各種加解密算法及安全流程,保障了升級(jí)包的安全,可靠,機(jī)密,完整等特性。
參考文獻(xiàn)
[1]劉楊。基于混沌映射的分組密碼研究[D].華東理工大學(xué),2011.
[2]趙劍?;贏ndroid的手機(jī)銀行系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].西安電子科技大學(xué)碩士論文,2014.