基于混合加密的遠程安全嵌入式0TA升級方法研究
引言
近年來,隨著云技術在嵌入式系統(tǒng)開發(fā)中的廣泛應用,云計算等IT技術加快了嵌入式軟件的開發(fā)、部署和升級。針對傳統(tǒng)嵌入式應用升級方式存在的成本高、便捷性差、實時性差等問題,空中下載技術(Over—the—Air,OTA)[1—3]可以實現(xiàn)分布式環(huán)境下的嵌入式軟件遠程升級。在OTA系統(tǒng)中,嵌入式終端用戶可以從OTA服務器上下載最新版本的系統(tǒng)軟件升級包并安裝,遠程實現(xiàn)軟件升級、應用開通和漏洞修復等功能[4—5]。這種遠程升級方式實現(xiàn)了應用的敏捷在線升級,加快了應用的更新迭代速度,將需求快速落實到嵌入式系統(tǒng)中。
然而,嵌入式OTA升級過程面臨著諸多安全威脅。在嵌入式終端從OTA服務器下載升級包的過程中,如果通信前不對OTA服務器和嵌入式終端的身份信息進行驗證,通信時采用不安全的通信協(xié)議或者直接明文通信,攻擊者就極有可能發(fā)起身份偽造、動態(tài)劫持、數(shù)據(jù)竊聽、數(shù)據(jù)篡改等攻擊[6],竊取升級包中的私密數(shù)據(jù),篡改、偽造升級包并發(fā)送給終端,導致終端更新修復系統(tǒng)失敗,造成升級信息錯誤、升級包泄露、拒絕服務等安全風險。
近年來,一些學者致力于研究OTA安全升級問題。Petri等人[7]在2016年提出了一種針對車載軟件的安全OTA協(xié)議,該協(xié)議使用可信平臺模塊來保存加密密鑰,但是算法開銷非常大;Steger等人[8]在2018年設計了基于區(qū)塊鏈技術的車載OTA系統(tǒng)安全方案,當
任何部件提出升級請求時,所有其他部件都要同意響應該請求;Asokan等人[9]在2018年提出了一個OTA固件安全升級框架,可以實現(xiàn)端到端的身份驗證和密鑰保護,但是不能抵御通信過程中的竊聽和篡改攻擊。
本文根據(jù)國密SM系列算法,提出了一種基于混合加密算法的OTA安全傳輸方法,使用SM2算法和SM4算法進行升級包數(shù)據(jù)加解密,使用SM3算法和SM2算法進行數(shù)字簽名和身份認證,確保OTA升級包的加密和傳輸過程具有足夠高的安全性和有效性。
1 SM密碼學算法介紹
近年來,隨著各行業(yè)對信息安全需求的增加,國家密碼管理局頒布了國內商業(yè)加密標準并推出了一系列加密算法,例如SM2[10]、SM3[11]、SM4[12]等。與國際流行加密算法相比,國密算法具有安全性能高、計算量小、存儲成本低、計算速度快等優(yōu)勢。
SM2算法是一種非對稱密鑰算法,與國際標準非對稱公鑰算法RSA相比具有安全性高、存儲空間小等優(yōu)點。SM2算法采用ECC橢圓曲線加密機制,所使用的橢圓曲線方程為y2=x3+ax+b。SM2標準由一般規(guī)則、數(shù)字簽名算法、公鑰加密算法和密鑰交換協(xié)議四個部分組成,使用SM2公鑰加密和私鑰解密可以實現(xiàn)公鑰加密算法,使用SM2私鑰加密和公鑰解密可以實現(xiàn)數(shù)字簽名算法。
SM3算法是一種哈希算法,與SHA—256算法相比,SM3算法在壓縮函數(shù)中添加了消息雙字插入和P替換,能夠抵抗強碰撞差分分析和弱碰撞線性分析等攻擊。SM3算法可以將消息輸出為256比特的哈希值。SM3哈希過程如下:假設消息m的長度為l位,首先在消息末位添加比特1,再填充k個0使得l+1+k三448(mod 512);然后添加一個64位的字符串,該字符串為長度l的二進制表示,填充后的消息m/長度為512的倍數(shù);將消息m/按512位分組,m/=B0||B1||…||Bn—1,其中n=(l+k+65)/512;對分組進行n輪迭代運算,vi+1=CF(vi,Bi),其中CF為壓縮函數(shù),i∈[0,n—1],v0為初始值,Bi為填充后的消息分組,vn為256位迭代壓縮結果。
SM4算法是一種分組對稱加密算法,具有安全性高、加密速度快的優(yōu)點。SM4算法的分組長度為128位,密鑰長度為128位。SM4的加解密流程分為兩部分,32輪非線性迭代運算和1輪R字節(jié)反序列轉換。SM4加密過程如下:設加密輸入為長度為128位的明文D,將D分為四組,D=(D0,D1,D2,D3);非線性迭代運算輸入密鑰為rki∈(GF(232))4,非線性迭代運算公式為Di+4=Di田P(Di+1,Di+2,Di+3,rki),其中非線性迭代運算P為先非線性變化后線性變化的復合運算;32輪非線性迭代運算后對結果進行R反序列變換,(X35,X34,X33,X32)=R(X32,X33,X34,X35)。SM4解密過程的線性變化與加密流程類似,只是輪密鑰順序與加密相反。
2基于混合加密的安全OTA升級方法
本文使用SM3加密哈希算法和SM2數(shù)字簽名算法對OTA服務器和嵌入式終端進行數(shù)字簽名和身份認證,以保證升級包數(shù)據(jù)的完整性和不可否認性。簽名過程描述如下:在發(fā)送數(shù)據(jù)之前,數(shù)據(jù)發(fā)送方首先使用SM3算法獲取升級包的哈希值,使用發(fā)送方的SM2私鑰和SM2加密算法對哈希值進行加密,獲取升級包的數(shù)字簽名,連同加密數(shù)據(jù)一并發(fā)送給接收方。接收方收到發(fā)送方發(fā)來的加密數(shù)據(jù)和數(shù)字簽名,需要驗證數(shù)字簽名以確保數(shù)據(jù)來自正確的發(fā)送方且沒有被篡改。簽名驗證過程描述如下:接收方通過解密算法獲得升級包數(shù)據(jù)后,將升級包數(shù)據(jù)作為SM3算法的輸入得到一個哈希值,用發(fā)送方的SM2公鑰解密數(shù)字簽名得到另一個哈希值,比較這兩個哈希值,如果二者一致則意味著簽名驗證通過,接收到的消息是正確的,否則簽名驗證失敗。
本文使用SM2公鑰加密算法和SM4分組加密算法對升級包數(shù)據(jù)進行加解密,以保證升級包數(shù)據(jù)的機密性。加密過程描述如下:發(fā)送方生成SM4隨機密鑰,該密鑰僅由發(fā)送方持有,通過接收方的公鑰分配機制獲得接收方的SM2公鑰;發(fā)送方使用SM4加密算法和SM4密鑰對升級包進行加密,得到密文升級包;然后使用公鑰加密算法SM2和接收方的SM2公鑰對SM4密鑰進行加密,得到加密密鑰;發(fā)送方將兩個密文打包作為最終密文發(fā)送給接收方。解密過程描述如下:接收方收到加密升級包和加密密鑰后,用接收方的SM2私鑰解密獲得SM4密鑰,然后使用SM4密鑰解密密文升級包,獲取明文升級包。
假設升級包的發(fā)送方為OTA服務器A,接收方為嵌入式終端B,明文升級包為Data,OTA服務器的SM2公鑰為keypubA、SM2私鑰為keypriA,嵌入式終端的SM2公鑰為keypubB、SM2私鑰為keypriB。圖1為基于混合加密的安全OTA升級包加密過程圖。
具體過程描述如下:
(1)OTA服務器使用SM3算法獲取升級包Data的哈希值HA(Data);
(2)OTA服務器將升級包哈希值HA(Data)作為數(shù)字簽名算法SM2的輸入,使用OTA服務器的SM2私鑰keypriA對其進行加密,得到升級包數(shù)據(jù)的數(shù)字簽名Digitalsig,得到簽名后的升級包Data/;
(3)OTA服務器使用隨機函數(shù)生成一個16字節(jié)的SM4隨機密鑰keyrand,該密鑰僅由OTA服務器持有,隨后使用keyrand對簽名后的升級包Data/執(zhí)行SM4算法,生成加密升級包Data*;
(4)OTA服務器使用公鑰加密算法SM2和嵌入式終端的公鑰keypubB對SM4密鑰keyrand加密,生成加密密鑰keyrand*;
(5)OTA服務器打包步驟(3)和(4)生成的加密升級包Data*和加密密鑰keyrand*,作為最終密文Cipher*發(fā)送給嵌入式終端。
嵌入式終端B接收到OTA服務器A發(fā)送的最終密文,為正確地執(zhí)行升級包,嵌入式終端B需要使用相應的解密算法對接收到的密文進行解密,獲得原始的升級包。圖2為基于混合加密的安全OTA升級包解密過程圖。
具體過程描述如下:
(1)嵌入式終端將最終密文cipher*分割為加密升
級包Data*和加密密鑰keyrand*兩部分;
(2)嵌入式終端使用自身的SM2私鑰keypriB對加密
密鑰keyrand*進行解密,獲得SM4密鑰keyrand;
(3)嵌入式終端使用SM4密鑰keyrand對加密升級包Data*進行解密,獲取明文升級包Data;
(4)將解密得到的明文升級包Data作為SM3算法
的輸入,得到明文升級包的哈希值HB(Data);
(5)使用OTA服務器的SM2公鑰keypubA,解密數(shù)字簽名Digitalsig,得到哈希值HA~(Data);
(6)比較步驟(4)和步驟(5)得到的哈希值HA
(Data)和HB(Data),如果它們一致表示數(shù)字簽名驗證通過,接收到的消息是正確的,否則表示驗證失敗,丟棄該升級包。
3實時性和安全性分析
建立嵌入式OTA系統(tǒng)仿真實驗平臺進行驗證,發(fā)送方節(jié)點和接收方節(jié)點之間安全通信的時間開銷為:
在上述仿真實驗平臺中,基于國密混合算法的一次加密通信時間約為276 ms,可以滿足嵌入式系統(tǒng)對安全升級的實時要求。
本文設計的基于混合算法的遠程安全嵌入式OTA升級方法具備以下安全性:
(1)雙向身份驗證。OTA服務器使用SM2私鑰對SM3算法得到的哈希值進行數(shù)字簽名,又使用隨機生成的SM4密鑰對簽名后的升級包進行加密,嵌入式終端使用OTA服務器的SM2公鑰進行數(shù)字簽名驗證,又使用SM2私鑰解密得到SM4密鑰,能有效防止非法用戶接收OTA服務器發(fā)送的升級包,同時防止嵌入式終端接收非法用戶發(fā)送的升級包。
(2)升級包機密性和完整性。OTA服務器使用SM4分組加密算法對升級包進行加密,在SM4算法的加密過程中生成一個128位的隨機密鑰,每次通信的加密密鑰相互獨立,進一步使用SM2公鑰加密算法對SM4隨機密鑰進行加密,確保OTA升級包在傳輸過程中具有足夠高的機密性。同時使用SM3生成哈希值和數(shù)字簽名值對升級包進行完整性校驗,保證OTA升級包在傳輸過程中的完整性。
(3)升級包不可否認性。OTA服務器和嵌入式終端在傳輸升級包過程中,使用基于SM2算法的數(shù)字簽名技術,利用公私鑰對傳輸升級包進行數(shù)字簽名和驗證,保證OTA升級包在傳輸過程中的不可否認性。
4結束語
本文針對嵌入式軟件OTA升級包在傳輸過程中存在被惡意入侵、竊聽和篡改的安全隱患,分析了國密SM2、SM3、SM4算法的基本原理,利用SM系列算法安全性能高、計算量小、存儲成本低、計算速度快等特點,提出了一種基于混合加密算法的嵌入式OTA升級包安全傳輸方法,使用SM2算法和SM4算法對升級包數(shù)據(jù)進行加解密傳輸,使用SM3算法和SM2算法對OTA服務器和嵌入式終端進行數(shù)字簽名和雙向身份認證,保證嵌入式OTA系統(tǒng)升級包在傳輸過程中的完整性、機密性和不可否認性。