安全調(diào)試的前世今生
對(duì)于MCU的開發(fā)工程師來(lái)說(shuō),MCU的調(diào)試接口是必不可少的開發(fā)利器。透過(guò)調(diào)試接口,我們可以監(jiān)視MCU的運(yùn)行狀態(tài),查看或修改寄存器的數(shù)值,觀察內(nèi)存中的數(shù)據(jù)變化,通過(guò)IDE、調(diào)試器等開發(fā)工具配合,方便地排查各種棘手的問(wèn)題。
我們需要了解的一切信息,調(diào)試接口都知無(wú)不言,言無(wú)不盡。
那么問(wèn)題來(lái)了,在產(chǎn)品出廠后,黑客、攻擊者就可以利用強(qiáng)大的調(diào)試接口對(duì)設(shè)備進(jìn)行各種攻擊,竊取產(chǎn)品中的敏感信息;黑色產(chǎn)業(yè)鏈也可以通過(guò)調(diào)試接口,輕而易舉地讀取出設(shè)備的固件,從而生產(chǎn)制造廉價(jià)的“破解版”。
正是由于調(diào)試接口功能強(qiáng)大,這個(gè)開發(fā)過(guò)程中的利器,也給產(chǎn)品帶來(lái)了安全的漏洞和知識(shí)產(chǎn)權(quán)泄露的隱患。
針對(duì)這個(gè)問(wèn)題,很多高附加值或安全敏感的產(chǎn)品,會(huì)選擇在生產(chǎn)過(guò)程的最后一步,通過(guò)修改OTP Fuse等方式,將調(diào)試接口永久地禁掉。產(chǎn)品出廠后,調(diào)試接口已被封死,簡(jiǎn)單粗暴地解決調(diào)試接口帶來(lái)的風(fēng)險(xiǎn)。
但是,產(chǎn)品的售后、維護(hù)往往不是一帆風(fēng)順的。產(chǎn)品在客戶現(xiàn)場(chǎng),也許會(huì)出現(xiàn)各種各樣奇奇怪怪的問(wèn)題。此時(shí),由于調(diào)試接口被封掉,留給我們的調(diào)試排查手段捉襟見肘,產(chǎn)品出現(xiàn)問(wèn)題后,難以定位更難以解決。
有沒有一種方法,只能讓開發(fā)者合法地調(diào)試芯片,而不會(huì)被攻擊者利用呢?
Secure Debug安全調(diào)試
傳統(tǒng)的手段,是將調(diào)試接口永遠(yuǎn)的封死,那么Secure Debug就像是給調(diào)試接口加了一把堅(jiān)固的鎖,只有能打開這把鎖的人才能使用調(diào)試功能。
毫無(wú)疑問(wèn),“鎖”比“封”要更加靈活。那么,我們應(yīng)該選擇使用一把什么樣的鎖呢?
密碼鎖
這是一種簡(jiǎn)單有效的方案,適用于絕大多數(shù)芯片。其大致流程如下所示:
在產(chǎn)品的生產(chǎn)過(guò)程中,“解鎖密碼”提前燒錄至芯片的OTP內(nèi),然后將調(diào)試功能“上鎖”,此時(shí)調(diào)試功能是不可用的。
當(dāng)需要調(diào)試芯片時(shí),芯片會(huì)通過(guò)JTAG接口發(fā)送UUID,這時(shí)調(diào)試主機(jī)根據(jù)UUID發(fā)送相應(yīng)的解鎖密碼,若解鎖密碼與芯片中預(yù)存的密碼一致,芯片將會(huì)開放調(diào)試功能。
可以看到,按照上圖的機(jī)制,基本可以解決我們上文中提出的問(wèn)題,這也是目前i.MX RT10xx原生支持的Secure JTAG機(jī)制(詳情請(qǐng)參考應(yīng)用筆記AN12419)。
認(rèn)證鎖(Debug authentication)
MCU功能越來(lái)越豐富,越來(lái)越多的MCU擁有不止一個(gè)內(nèi)核,其中的內(nèi)核有可能還支持Trustzone。例如LPC5500家族的LPC55S69,擁有Core 0和Core 1兩個(gè)Cortex M33內(nèi)核,其中Core 0還支持Trustzone技術(shù)。
這同時(shí)也對(duì)我們的調(diào)試安全提出了更多的需求,我們不僅需要一把調(diào)試鎖控制調(diào)試功能的開與關(guān),還需要這把鎖足夠“聰明”,能夠提供更細(xì)粒度的權(quán)限管理。
例如,我們希望外部攻擊者不能調(diào)試LPC55S69;某些內(nèi)部人員只能調(diào)試LPC55S69的Core 1,不能調(diào)試LPC55S69的Core 0,某些內(nèi)部人員只能夠調(diào)試Core 0的非安全區(qū)域,某些內(nèi)部人員可以調(diào)試整個(gè)LPC55S69……
為了滿足靈活的調(diào)試權(quán)限管理需求,LPC5500提供了一種全新的機(jī)制:Debug authentication,利用非對(duì)稱加密機(jī)制(RSA2048/RSA4096),通過(guò)證書(DC:Debug Credential Certificate)來(lái)授予不同的權(quán)限,ODM或設(shè)計(jì)部門為不同的人員頒發(fā)不同的證書,證書中將會(huì)明確其所擁有的調(diào)試權(quán)限。
在調(diào)試認(rèn)證時(shí),芯片會(huì)根據(jù)某一個(gè)人員所持有的證書,對(duì)其進(jìn)行Challenge-Response驗(yàn)證,首先將Response(即DAR:Debug AuthenticationResponse)中的DC與芯片中預(yù)置的信息進(jìn)行匹配,當(dāng)驗(yàn)證DC為合法后,驗(yàn)證Response中的簽名,若證書與簽名都驗(yàn)證通過(guò),且請(qǐng)求的調(diào)試權(quán)限符合芯片的設(shè)置,芯片將會(huì)開放相應(yīng)的權(quán)限。其大致流程如下所示:
可以看出,這種Debug authentication機(jī)制解決了調(diào)試接口的安全問(wèn)題,也滿足了調(diào)試權(quán)限靈活管理的需求。
小結(jié)
相對(duì)來(lái)說(shuō),Debug authentication需要做的準(zhǔn)備工作比較多,本文簡(jiǎn)單描述了Debug authentication的基本機(jī)制,并未提供詳細(xì)的操作步驟。
如何生成DC/DAR、如何對(duì)芯片進(jìn)行預(yù)處理、如何完成一次Debug authentication,請(qǐng)參考應(yīng)用筆記AN13037,并且NXP提供了開源的工具,參考應(yīng)用筆記就能夠利用工具完成
來(lái)源:恩智浦MCU加油站
審核編輯:湯梓紅
-
芯片
+關(guān)注
關(guān)注
456文章
50965瀏覽量
424837 -
mcu
+關(guān)注
關(guān)注
146文章
17185瀏覽量
351724 -
接口
+關(guān)注
關(guān)注
33文章
8650瀏覽量
151412
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論