


摘 要:由于傳統嵌入式軟件升級存在成本高、便捷性差、實時性差等問題,空中下載技術(Over-the-Air,OTA)被用于嵌入式軟件應用的敏捷在線升級。由于嵌入式OTA系統缺乏高效安全的加密和認證機制,升級包在傳輸過程中存在被惡意入侵、竊取或篡改的安全隱患。現結合對稱加密、非對稱加密和數字簽名算法,提出了一種基于國密SM2算法、SM3算法和SM4算法的嵌入式OTA安全傳輸方法,可以實現OTA服務器和嵌入式終端的雙向身份認證以及升級包的加解密傳輸,保證嵌入式OTA系統升級包在傳輸過程中的完整性、機密性和不可否認性。
關鍵詞:嵌入式應用;遠程升級;OTA系統;混合加密
中圖分類號:TN709" " 文獻標志碼:A" " 文章編號:1671-0797(2024)09-0013-04
DOI:10.19514/j.cnki.cn32-1628/tm.2024.09.003
0" " 引言
近年來,隨著云技術在嵌入式系統開發中的廣泛應用,云計算等IT技術加快了嵌入式軟件的開發、部署和升級。針對傳統嵌入式應用升級方式存在的成本高、便捷性差、實時性差等問題,空中下載技術(Over-the-Air,OTA)[1-3]可以實現分布式環境下的嵌入式軟件遠程升級。在OTA系統中,嵌入式終端用戶可以從OTA服務器上下載最新版本的系統軟件升級包并安裝,遠程實現軟件升級、應用開通和漏洞修復等功能[4-5]。這種遠程升級方式實現了應用的敏捷在線升級,加快了應用的更新迭代速度,將需求快速落實到嵌入式系統中。
然而,嵌入式OTA升級過程面臨著諸多安全威脅。在嵌入式終端從OTA服務器下載升級包的過程中,如果通信前不對OTA服務器和嵌入式終端的身份信息進行驗證,通信時采用不安全的通信協議或者直接明文通信,攻擊者就極有可能發起身份偽造、動態劫持、數據竊聽、數據篡改等攻擊[6],竊取升級包中的私密數據,篡改、偽造升級包并發送給終端,導致終端更新修復系統失敗,造成升級信息錯誤、升級包泄露、拒絕服務等安全風險。
近年來,一些學者致力于研究OTA安全升級問題。Petri等人[7]在2016年提出了一種針對車載軟件的安全OTA協議,該協議使用可信平臺模塊來保存加密密鑰,但是算法開銷非常大;Steger等人[8]在2018年設計了基于區塊鏈技術的車載OTA系統安全方案,當任何部件提出升級請求時,所有其他部件都要同意響應該請求;Asokan等人[9]在2018年提出了一個OTA固件安全升級框架,可以實現端到端的身份驗證和密鑰保護,但是不能抵御通信過程中的竊聽和篡改攻擊。
本文根據國密SM系列算法,提出了一種基于混合加密算法的OTA安全傳輸方法,使用SM2算法和SM4算法進行升級包數據加解密,使用SM3算法和SM2算法進行數字簽名和身份認證,確保OTA升級包的加密和傳輸過程具有足夠高的安全性和有效性。
1" " SM密碼學算法介紹
近年來,隨著各行業對信息安全需求的增加,國家密碼管理局頒布了國內商業加密標準并推出了一系列加密算法,例如SM2[10]、SM3[11]、SM4[12]等。與國際流行加密算法相比,國密算法具有安全性能高、計算量小、存儲成本低、計算速度快等優勢。
SM2算法是一種非對稱密鑰算法,與國際標準非對稱公鑰算法RSA相比具有安全性高、存儲空間小等優點。SM2算法采用ECC橢圓曲線加密機制,所使用的橢圓曲線方程為y2=x3+ax+b。SM2標準由一般規則、數字簽名算法、公鑰加密算法和密鑰交換協議四個部分組成,使用SM2公鑰加密和私鑰解密可以實現公鑰加密算法,使用SM2私鑰加密和公鑰解密可以實現數字簽名算法。
SM3算法是一種哈希算法,與SHA-256算法相比,SM3算法在壓縮函數中添加了消息雙字插入和P替換,能夠抵抗強碰撞差分分析和弱碰撞線性分析等攻擊。SM3算法可以將消息輸出為256比特的哈希值。SM3哈希過程如下:假設消息m的長度為l位,首先在消息末位添加比特1,再填充k個0使得l+1+k≡448(mod 512);然后添加一個64位的字符串,該字符串為長度l的二進制表示,填充后的消息m′長度為512的倍數;將消息m′按512位分組,m′=B0||B1||…||Bn-1,其中n=(l+k+65)/512;對分組進行n輪迭代運算,Vi+1=CF(Vi,Bi),其中CF為壓縮函數,i∈[0,n-1],V0為初始值,Bi為填充后的消息分組,Vn為256位迭代壓縮結果。
SM4算法是一種分組對稱加密算法,具有安全性高、加密速度快的優點。SM4算法的分組長度為128位,密鑰長度為128位。SM4的加解密流程分為兩部分,32輪非線性迭代運算和1輪R字節反序列轉換。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數字簽名算法對OTA服務器和嵌入式終端進行數字簽名和身份認證,以保證升級包數據的完整性和不可否認性。簽名過程描述如下:在發送數據之前,數據發送方首先使用SM3算法獲取升級包的哈希值,使用發送方的SM2私鑰和SM2加密算法對哈希值進行加密,獲取升級包的數字簽名,連同加密數據一并發送給接收方。接收方收到發送方發來的加密數據和數字簽名,需要驗證數字簽名以確保數據來自正確的發送方且沒有被篡改。簽名驗證過程描述如下:接收方通過解密算法獲得升級包數據后,將升級包數據作為SM3算法的輸入得到一個哈希值,用發送方的SM2公鑰解密數字簽名得到另一個哈希值,比較這兩個哈希值,如果二者一致則意味著簽名驗證通過,接收到的消息是正確的,否則簽名驗證失敗。
本文使用SM2公鑰加密算法和SM4分組加密算法對升級包數據進行加解密,以保證升級包數據的機密性。加密過程描述如下:發送方生成SM4隨機密鑰,該密鑰僅由發送方持有,通過接收方的公鑰分配機制獲得接收方的SM2公鑰;發送方使用SM4加密算法和SM4密鑰對升級包進行加密,得到密文升級包;然后使用公鑰加密算法SM2和接收方的SM2公鑰對SM4密鑰進行加密,得到加密密鑰;發送方將兩個密文打包作為最終密文發送給接收方。解密過程描述如下:接收方收到加密升級包和加密密鑰后,用接收方的SM2私鑰解密獲得SM4密鑰,然后使用SM4密鑰解密密文升級包,獲取明文升級包。
假設升級包的發送方為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)作為數字簽名算法SM2的輸入,使用OTA服務器的SM2私鑰KeypriA對其進行加密,得到升級包數據的數字簽名DigitalSig,得到簽名后的升級包Data′;
(3)OTA服務器使用隨機函數生成一個16字節的SM4隨機密鑰Keyrand,該密鑰僅由OTA服務器持有,隨后使用Keyrand對簽名后的升級包Data′執行SM4算法,生成加密升級包Data*;
(4)OTA服務器使用公鑰加密算法SM2和嵌入式終端的公鑰KeypubB對SM4密鑰Keyrand加密,生成加密密鑰Keyrand*;
(5)OTA服務器打包步驟(3)和(4)生成的加密升級包Data*和加密密鑰Keyrand*,作為最終密文Cipher*發送給嵌入式終端。
嵌入式終端B接收到OTA服務器A發送的最終密文,為正確地執行升級包,嵌入式終端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,解密數字簽名DigitalSig,得到哈希值HA~(Data);
(6)比較步驟(4)和步驟(5)得到的哈希值HA~(Data)和HB(Data),如果它們一致表示數字簽名驗證通過,接收到的消息是正確的,否則表示驗證失敗,丟棄該升級包。
3" " 實時性和安全性分析
建立嵌入式OTA系統仿真實驗平臺進行驗證,發送方節點和接收方節點之間安全通信的時間開銷為:
T=2tSM4+2tSM2-Digital+2tSM2-Cipher+2tSM3
式中:tSM4表示SM4算法執行加密或解密操作的時間;tSM2-Digital表示SM2算法生成數字簽名的時間;tSM2-Cipher表示SM2算法執行加密或解密操作的時間;tSM3表示SM3算法生成哈希值的時間。
在上述仿真實驗平臺中,基于國密混合算法的一次加密通信時間約為276 ms,可以滿足嵌入式系統對安全升級的實時要求。
本文設計的基于混合算法的遠程安全嵌入式OTA升級方法具備以下安全性:
(1)雙向身份驗證。OTA服務器使用SM2私鑰對SM3算法得到的哈希值進行數字簽名,又使用隨機生成的SM4密鑰對簽名后的升級包進行加密,嵌入式終端使用OTA服務器的SM2公鑰進行數字簽名驗證,又使用SM2私鑰解密得到SM4密鑰,能有效防止非法用戶接收OTA服務器發送的升級包,同時防止嵌入式終端接收非法用戶發送的升級包。
(2)升級包機密性和完整性。OTA服務器使用SM4分組加密算法對升級包進行加密,在SM4算法的加密過程中生成一個128位的隨機密鑰,每次通信的加密密鑰相互獨立,進一步使用SM2公鑰加密算法對SM4隨機密鑰進行加密,確保OTA升級包在傳輸過程中具有足夠高的機密性。同時使用SM3生成哈希值和數字簽名值對升級包進行完整性校驗,保證OTA升級包在傳輸過程中的完整性。
(3)升級包不可否認性。OTA服務器和嵌入式終端在傳輸升級包過程中,使用基于SM2算法的數字簽名技術,利用公私鑰對傳輸升級包進行數字簽名和驗證,保證OTA升級包在傳輸過程中的不可否認性。
4" " 結束語
本文針對嵌入式軟件OTA升級包在傳輸過程中存在被惡意入侵、竊聽和篡改的安全隱患,分析了國密SM2、SM3、SM4算法的基本原理,利用SM系列算法安全性能高、計算量小、存儲成本低、計算速度快等特點,提出了一種基于混合加密算法的嵌入式OTA升級包安全傳輸方法,使用SM2算法和SM4算法對升級包數據進行加解密傳輸,使用SM3算法和SM2算法對OTA服務器和嵌入式終端進行數字簽名和雙向身份認證,保證嵌入式OTA系統升級包在傳輸過程中的完整性、機密性和不可否認性。
[參考文獻]
[1] ZHANG J,LIAO Z,ZHU L.Research on design and imple-
mentation of automotive ECUs software remote update[J].Applied Mechanics and Materials,2015,740:847-851.
[2] 高潔,汪慶.一種電動汽車軟件OTA升級服務平臺的設計方案[J].電腦知識與技術,2017,13(8):209-211.
[3] KHURRAM M,KUMAR H,CHANDAK A,et al.Enhancing connected car adoption: Security and over the air update framework[C]//2016 IEEE 3rd World Forum on Internet of Things(WF-IoT),2016:194-198.
[4] CHEN L B,LI H Y,CHANG W J,et al.An intelligent vehicular telematics platform for vehicle driving safety supporting system[C]//2015 International Conference on Connected Vehicles and Expo(ICCVE),2016:210-211.
[5] 吳靜,葉樺,孫曉潔.車載終端遠程升級系統的設計與實現[J].工業控制計算機,2014,27(1):99-101.
[6] MANSOR H,MARKANTONAKIS K,AKRAM R N,et al.Don’t brick your car:Firmware confidentiality and rollback for vehicles[C]// 2015 10th International Conference on Availability,Reliability and Secur-ity,2015:139-148.
[7] PETRI R,SPRINGER M,ZELLE D,et al.Evaluation of lightweight TPMs for automotive software updates over the air[C]//4th International Conference on Embedded Security in Car USA,2016:1-15.
[8] STEGER M,DORRI A,KANHERE S S,et al.Secure wireless automotive software updates using blockchains:A proof of concept[J].Advanced Microsystems for Automotive Applications,2017:137-149.
[9] ASOKAN,N,NYMAN,T,RATTANAVIPANON N,et al.ASSURED:Architecture for secure software update of realistic embedded devices[J].IEEE Transactions on Computr-
Aided Design of Integrated Circuits and Systems,2018(37):2290-2300.
[10] SM2橢圓曲線公鑰密碼算法:GM/T 0003—2012[S].
[11] SM3密碼雜湊算法:GM/T 0004—2012[S].
[12] SM4分組密碼算法:GM/T 0002—2012[S].
收稿日期:2024-01-05
作者簡介:劉鐔稚(1995—),男,甘肅平涼人,工程師,研究方向:信息安全。