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