隨著(zhu)物聯網的(de)發展,智能化產(chan)(chan)品的(de)不斷涌現,信息安全問題也日漸(jian)受到關(guan)注(zhu)。因此,通(tong)用安全MCU產(chan)(chan)品也應(ying)運(yun)而生,能夠更好地幫(bang)助客戶在其產(chan)(chan)品設計中加強安全性(xing),助力IoT的(de)應(ying)用創(chuang)新。
本文將詳(xiang)細介紹(shao)上(shang)海航芯ACM32 MCU的(de)安(an)全特性。
安全(quan)啟(qi)動與安全(quan)更新(xin)
上海航芯(xin)MCU提供安全(quan)啟(qi)(qi)動(dong)與安全(quan)更(geng)(geng)新(xin)參考實(shi)現,具體可見(jian)對應(ying)的軟件(jian)包。安全(quan)啟(qi)(qi)動(dong)與安全(quan)更(geng)(geng)新(xin)利(li)用芯(xin)片(pian)的硬件(jian)安全(quan)特性來保證(zheng)啟(qi)(qi)動(dong)代碼(ma)和更(geng)(geng)新(xin)固(gu)件(jian)不被(bei)篡改,啟(qi)(qi)動(dong)入口(kou)唯一。
存儲保護(hu)
存儲保護主(zhu)要(yao)就(jiu)是保護存儲區的(de)代碼和數(shu)據不(bu)被篡改以及(ji)非法(fa)獲取,主(zhu)要(yao)需要(yao)抵抗三個方面的(de)攻(gong)擊,軟(ruan)件攻(gong)擊、非侵(qin)入(ru)式攻(gong)擊和侵(qin)入(ru)式攻(gong)擊。
? 軟(ruan)件攻擊主(zhu)要包括通過調試端口訪問數據,軟(ruan)件漏(lou)洞和緩沖(chong)區溢(yi)出(chu)等;
? 非侵入攻擊(ji)主要包括通過故障注入導致程(cheng)序和數據出(chu)錯(cuo),以及(ji)旁路攻擊(ji)獲取敏感信息;
? 侵入式(shi)攻擊主(zhu)要是通過開蓋或者(zhe)直接通過測試儀器來探(tan)測內部信號;
針(zhen)對(dui)這些攻擊,芯片主要從五個方面進行應(ying)對(dui),包括(kuo)存儲區域訪問控制、存儲地址加擾、數(shu)據(ju)加密和完(wan)整性校(xiao)驗(yan)以及(ji)環境檢(jian)測。
其中存儲(chu)區(qu)域(yu)訪問控制包括讀(du)保(bao)護(RDP),寫(xie)保(bao)護(WRP),專(zhuan)有(you)代碼(ma)讀(du)保(bao)護(PCROP),存儲(chu)區(qu)域(yu)權限(xian)控制以及(ji)安全存儲(chu)區(qu)。
具體(ti)配置可見(jian)《ACM32-在線編程器(qi)》://17gw7.com/index.php/product/detail/id/44.html
? 讀取保(bao)護(RDP)是全(quan)局Flash讀保(bao)護,可保(bao)護嵌入式固(gu)件代碼,避免(mian)復制、逆向工程、使用調試工具(ju)讀出或其他方式的入侵攻擊。該保(bao)護功(gong)能在(zai)(zai)用戶下(xia)載Flash代碼后,由用戶在(zai)(zai)下(xia)載固(gu)件時自行設(she)置。
eflash啟動:勾選表示從eflash啟動,未(wei)選表示從Boot模式;
SWD使能(neng):勾選表(biao)示使能(neng)SWD功(gong)能(neng),未選表(biao)示禁止SWD功(gong)能(neng);
讀保護配置(zhi)鎖(suo)(suo)定(ding):勾選(xuan)后,將鎖(suo)(suo)定(ding)“eflash啟動(dong)”和(he)“SWD使能(neng)”的設置(zhi),生(sheng)效后不可(ke)再更改;反(fan)之(zhi)未選(xuan)則不會鎖(suo)(suo)定(ding)。
勾選或取(qu)消選擇所要配置的項(xiang)目,點(dian)擊(ji)“配置”進行操(cao)作,操(cao)作完成,將在“發送顯(xian)(xian)示區”顯(xian)(xian)示操(cao)作結果(guo),復(fu)位或重新上(shang)電生(sheng)效。
注:此配(pei)置(zhi)可能(neng)會影響SWD或者BOOT功能(neng),請謹慎操作(zuo)。
? 寫保護(WRP)用于保護指定區域Flash數據,避免數據被惡(e)意更新或擦除(chu)。寫保護可應用于Flash內指定的內存空(kong)間。
寫(xie)保護(WRP)后,相應的區(qu)域將禁(jin)止擦寫(xie),片擦指(zhi)令將不能使用。
在所要配置的區(qu)域,輸入“起始地(di)址”和“操作(zuo)長度”,勾選(xuan)“配置”按鈕(niu),點擊“使能/禁止”進行操作(zuo),操作(zuo)完成,將在“發送顯示區(qu)”顯示操作(zuo)結果,復位或重新上電生(sheng)效。
若操作范圍超過eflash最大長度(du),或要使能的兩個區域地(di)址重(zhong)疊(die),將報錯。
注:使能(neng)/禁止(zhi)后,立即寫入(ru)相應NVR,讀取配置(zhi)為操(cao)作(zuo)后的設置(zhi),但需(xu)復位或(huo)重新上(shang)電方能(neng)生效。
? 專(zhuan)有(you)代碼(ma)讀(du)(du)保護(PCROP)用(yong)于保護指定(ding)區域Flash代碼(ma),保護專(zhuan)有(you)代碼(ma)不被最終用(yong)戶代碼(ma)、調(diao)試器(qi)工(gong)具或(huo)(huo)惡意代碼(ma)所修(xiu)改或(huo)(huo)讀(du)(du)取(qu)。
PCROP使能(neng)后(hou),所選(xuan)區域(yu)只能(neng)執行,不能(neng)讀取和擦(ca)寫(xie),片擦(ca)指令將不能(neng)使用。
在所要(yao)配(pei)置的區(qu)域(yu),輸入“起始地址”和(he)“操(cao)作(zuo)長度”,勾選“配(pei)置”按鈕,點擊“使能/禁(jin)止”進行操(cao)作(zuo),操(cao)作(zuo)完(wan)成,將(jiang)在“發送顯(xian)示區(qu)”顯(xian)示操(cao)作(zuo)結果,復(fu)位(wei)或重新上電生效。
若操作(zuo)范圍(wei)超過eflash最大長度,或要使能的兩個區域地址重疊,將(jiang)報錯(cuo)。
注:禁止(zhi)PCROP區域(yu)后,此時讀取配置依然是禁止(zhi)前的(de)設(she)置,需要將(jiang)SWD使能(neng)關閉,復位或重新上電(dian)方(fang)能(neng)生效。
? 存儲區(qu)域權(quan)限(xian)控制利(li)用內核本身(shen)自帶(dai)的(de)MPU單元,這(zhe)個(ge)單元可以劃分出(chu)幾(ji)個(ge)region,每個(ge)region可以設置不(bu)同的(de)訪問屬性(xing),配(pei)合內核的(de)User和Privilege模式,能夠(gou)實現對敏感(gan)數(shu)據的(de)訪問控制,使得敏感(gan)數(shu)據不(bu)能夠(gou)被惡意代碼獲取。這(zhe)樣隔離(li)能夠(gou)有效地(di)降低軟件漏洞帶(dai)來的(de)風(feng)險。
? 安全存(cun)(cun)(cun)儲(chu)區(qu)可以用于保(bao)護特有的(de)一些程序,安全存(cun)(cun)(cun)儲(chu)區(qu)的(de)大(da)小可以進行(xing)配置,程序運行(xing)期間可以通過寄存(cun)(cun)(cun)器打(da)開對這段安全存(cun)(cun)(cun)儲(chu)區(qu)的(de)保(bao)護,保(bao)護使(shi)能(neng)后(hou)則無法再(zai)次訪問其中的(de)任何內容。
在所(suo)要配(pei)置的區域,輸入“操(cao)(cao)作長(chang)度(du)”,點擊“使(shi)能/禁止”進(jin)行(xing)操(cao)(cao)作,操(cao)(cao)作完成,將在“發送顯示(shi)區”顯示(shi)操(cao)(cao)作結果,復位或重新(xin)上電生效(xiao)。若操(cao)(cao)作范圍超過(guo)eflash最大長(chang)度(du),將報錯。
注:使能/禁(jin)止后,立即寫入相應NVR,讀取配(pei)置(zhi)為操作后的(de)設(she)置(zhi),但需(xu)復位或重新上電方能生效。
存儲數(shu)(shu)據(ju)加(jia)(jia)密(mi)(mi)(mi)(mi)(mi),地(di)(di)址(zhi)加(jia)(jia)擾主要就是對片(pian)內FLASH和(he)SRAM上(shang)的數(shu)(shu)據(ju)進(jin)行(xing)加(jia)(jia)密(mi)(mi)(mi)(mi)(mi)存儲,并(bing)且存儲的地(di)(di)址(zhi)也(ye)被串擾。針對于部(bu)分代碼(ma)和(he)數(shu)(shu)據(ju)需(xu)要放在片(pian)外存儲器的情況,公司(si)也(ye)有(you)部(bu)分系列帶有(you)OTFDEC(On The Fly DECryption)硬(ying)件(jian),OTFDEC模塊在總(zong)線(xian)與OSPI之(zhi)間,可以(yi)實時地(di)(di)解(jie)(jie)密(mi)(mi)(mi)(mi)(mi)外部(bu)Flash上(shang)的密(mi)(mi)(mi)(mi)(mi)文代碼(ma)和(he)數(shu)(shu)據(ju),只(zhi)需(xu)要設置好相應的區域(yu)、密(mi)(mi)(mi)(mi)(mi)鑰等,OTFDEC就可以(yi)自動解(jie)(jie)密(mi)(mi)(mi)(mi)(mi)被訪問的密(mi)(mi)(mi)(mi)(mi)文數(shu)(shu)據(ju),無(wu)需(xu)額外的軟件(jian)參與解(jie)(jie)密(mi)(mi)(mi)(mi)(mi),不(bu)(bu)需(xu)要將解(jie)(jie)密(mi)(mi)(mi)(mi)(mi)數(shu)(shu)據(ju)加(jia)(jia)載到內部(bu)RAM,可以(yi)直接運(yun)行(xing)片(pian)外Flash上(shang)的加(jia)(jia)密(mi)(mi)(mi)(mi)(mi)代碼(ma)。OTFDEC模塊也(ye)支持加(jia)(jia)密(mi)(mi)(mi)(mi)(mi),但(dan)不(bu)(bu)是實時加(jia)(jia)密(mi)(mi)(mi)(mi)(mi),數(shu)(shu)據(ju)首(shou)先被加(jia)(jia)密(mi)(mi)(mi)(mi)(mi)到RAM中,需(xu)要另外將RAM中的密(mi)(mi)(mi)(mi)(mi)文寫回(hui)外部(bu)FLASH。
存(cun)儲(chu)數據完整(zheng)性校驗主要(yao)就是對(dui)存(cun)儲(chu)區的數據進行奇偶校驗,可以有效抵(di)抗(kang)故障注(zhu)入(ru)攻擊。
環境檢測主要是檢測芯片工(gong)作(zuo)電壓是否在(zai)正常(chang)范(fan)圍,如果(guo)不在(zai)正常(chang)工(gong)作(zuo)范(fan)圍則進行(xing)報警(jing),以抵抗電壓故障注入攻擊。
密碼學算法引擎
上海航芯MCU系列(lie)都帶有(you)HASH,AES,TRNG和CRC硬件模塊(kuai)。直(zhi)接調用對應(ying)的(de)API函數即可使用相(xiang)應(ying)的(de)算法功能,有(you)效滿足數據傳(chuan)輸及其完整性校驗中(zhong)的(de)密(mi)碼(ma)需(xu)求。
入侵(qin)保護
入(ru)侵保護(hu)主要是(shi)芯(xin)片可以檢測遭受(shou)的物理入(ru)侵從(cong)而(er)刪除備份寄存器中的敏感(gan)數據,從(cong)而(er)保護(hu)芯(xin)片敏感(gan)數據不會竊取。該功能主要由RTC和備份寄存器完成(cheng)。
備(bei)(bei)份寄(ji)存器(qi)處于備(bei)(bei)份域中。待機(ji)模式喚醒(xing)或系(xi)統復(fu)(fu)位操作都不(bu)會影響這(zhe)(zhe)些(xie)寄(ji)存器(qi)。只有(you)當(dang)被(bei)檢測到(dao)有(you)侵入事件和備(bei)(bei)份域復(fu)(fu)位時,這(zhe)(zhe)些(xie)寄(ji)存器(qi)才會復(fu)(fu)位。
RTC支持兩個外(wai)部IO侵入事件檢測,并可以記錄侵入時間。并且需要(yao)輸入私鑰(yao)才允許對RTC寄存器(qi)進行寫操作(zuo),避免(mian)攻擊(ji)者篡改RTC寄存器(qi)。
生命(ming)周期管理
生命(ming)周期管理(li)主要針對芯片(pian)測試(shi)開發(fa)到芯片(pian)使(shi)用(yong)階(jie)段中可能存(cun)在的一些(xie)安全風險,例如調用(yong)測試(shi)或者調試(shi)接口非法(fa)獲取(qu)數(shu)據。具體對應的功能包括測試(shi)模式禁(jin)止,JTAG禁(jin)止和128位(wei)唯一序列號。
? 測試(shi)模式(shi)禁(jin)止(zhi):芯(xin)片測試(shi)完成之后(hou)將測試(shi)模式(shi)禁(jin)止(zhi),交給(gei)客戶(hu)的芯(xin)片不能(neng)再返回到測試(shi)模式(shi),這樣(yang)攻擊者就不能(neng)通過(guo)測試(shi)接口獲取(qu)敏(min)感數(shu)據;
? JTAG禁止(zhi):當讀保護(hu)(RDP)設置(zhi)Level 1以上(shang)時,則會將JTAG功能禁止(zhi),使得攻擊者不能通過調試接口獲(huo)取(qu)敏感數據;
? 128位唯一(yi)序(xu)(xu)列號:128位唯一(yi)序(xu)(xu)列號綁(bang)定了芯(xin)片(pian)出廠(chang)的(de)(de)LOT/WAFER ID和坐(zuo)標等。該(gai)序(xu)(xu)列號唯一(yi)且不(bu)可復制,開發者可將應用(yong)程(cheng)序(xu)(xu)與(yu)該(gai)芯(xin)片(pian)的(de)(de)序(xu)(xu)列號綁(bang)定,這樣可以使每個下(xia)載應用(yong)程(cheng)序(xu)(xu)的(de)(de)芯(xin)片(pian)不(bu)可被復制。管(guan)理員需(xu)要管(guan)控好每顆芯(xin)片(pian)的(de)(de)序(xu)(xu)列號,這樣便于產(chan)品(pin)的(de)(de)定位和追蹤,防止安全產(chan)品(pin)的(de)(de)復制。
安全生產
安全生產主要是保(bao)證交由第三方工廠進行燒寫的代碼或者數(shu)據不(bu)被盜(dao)取(qu)和篡改(gai)以(yi)及過量生產。
針(zhen)對安(an)全(quan)(quan)生(sheng)產,上(shang)海航芯(xin)提供了一(yi)套安(an)全(quan)(quan)的(de)解決方(fang)案,全(quan)(quan)程代(dai)碼加密燒錄(lu),并(bing)帶動態校(xiao)(xiao)驗碼(動態校(xiao)(xiao)驗碼與芯(xin)片(pian)唯一(yi)序(xu)列(lie)號(hao)綁定),而(er)且(qie)可以進(jin)行燒錄(lu)計數,進(jin)行產量控制(zhi),避(bi)免過量生(sheng)產。并(bing)且(qie)支持(chi)在線/離線燒錄(lu),遠程交付(fu)和更新固(gu)件,在保證固(gu)件安(an)全(quan)(quan)性(xing)的(de)前提下極(ji)大方(fang)便客(ke)戶進(jin)行燒錄(lu)固(gu)件。
如需銷售(shou)咨詢(xun),