嵌入式系統(tǒng)制造商面臨的IP安全性的挑戰(zhàn)
在生成十六進制文件(將在生產就緒型系統(tǒng)編程)的同時,系統(tǒng)設計人員必須設定合適的保護等級,想方設法實現最高IP安全性。
對于需要為不同閃存區(qū)域設定不同保護等級的系統(tǒng)而言,最好檢查一下閃存粒度保護的設定情況。有些微控制器只允許為閃存賦予一個保護等級。有些器件允許將閃存分為容量為數kB的塊,有的閃存塊甚至低至64字節(jié)。應使用可將閃存分為小塊的器件,這樣能最大程度地縮小處于較低保護等級的閃存區(qū)域。否則會造成閃存浪費或使更多閃存內容面臨安全威脅。
隱藏模擬與數字資源及其互聯(lián)方式
目前我們已經討論了系統(tǒng)固件部分的IP保護問題。一些OEM廠商為了防止競爭對手讀取部件編號,會在PCB板上涂焦油或環(huán)氧樹脂。對于大批量系統(tǒng)還可以在IC器件上印刷定制部件編號。定制部件編號同樣可以使實際部件編號難以識別。然而,這些方法都無法做到萬無一失。競爭對手可以跟蹤各種連接,觀察各種引腳上的信號,并找出設計中所使用的部件,而且找到各種模塊在PCB板上的連接方式也并非難事。因此,隱藏各種外設及其互連方式的唯一辦法就是使用物理隱藏。例如,如果所有連接都能隱藏到單個芯片內部,那么要弄懂信號鏈并確定系統(tǒng)使用的外設就變得更加困難。將各種外設集成到單個芯片中有助于隱藏硬件相關信息,考慮到這一事實,因此在防止受逆向工程攻擊時,片上系統(tǒng)(SoC)器件應該是最佳選擇。然而,有些SoC的專用引腳存在逆向工程漏洞,例如當器件為外設提供專用引腳時,就很容易判斷出所使用的外設類型。因此,那些具有靈活布線功能、可以讓任意外設連接任意引腳的SoC能夠更好地防止受逆向工程攻擊。
圖3(a)、3(b)和3(c)分別給出了電動自行車控制系統(tǒng)的三個高端實現實例(為了簡便,只給出了比較抽象的方框圖,并未包含PCB上的各種其它組件)。這些實現方案包括:
· 使用焊接在印刷電路板上的各個模塊
· 使用帶專用外設引腳的SoC
· 使用帶靈活I/O布線功能的SoC
圖3(a):基于單個組件的實現方案
圖3(b):帶專用外設引腳的SoC
圖3(c):采用帶靈活I/O布線功能的SoC
如果讓工程師對以不同方式實現同一系統(tǒng)的這三種PCB板進行逆向工程設計,哪種更容易被還原工程?答案很明顯應該是圖3(a)中的實現方案,因為一切都清晰暴露在PCB板上。要對3(b)中的方案進行反逆向工程設計就需要更長的時間,但仍可獲得基本的實現方法。那么圖3(c)方案會怎樣?可以說很難甚至不可能摸清這種實現方案,因為它更像是一個只有輸出和輸出的黑盒子。工程師根本無法找到該系統(tǒng)中實現的模擬信號鏈,因為SoC可以讓所有外設連接任何一個引腳,而且這些外設在內部的互連無需借助任何物理引腳。此外,由于可編程邏輯沒有使用專用引腳,因此無法找到保護邏輯。
對這種方案進行逆向工程設計的唯一可能方法是讀取決定外設與引腳連接的寄存器。但是競爭對手必須首先解決閃存讀取這個難題。如果有人能破解閃存的安全機制,或者系統(tǒng)設計人員忘了設置必要的閃存保護功能,那么如果外設與大部分MCU一樣有固定地址,這種情況下信號鏈才可能被破解。
賽普拉斯半導體公司的PSoC 1器件在這方面能提供最佳的安全功能。這些器件采用通用模擬和數字模塊以及可編程布線方式。同一通用模塊可實現任意外設。例如,可編程模擬模塊可用于實現可編程增益放大器 (PGA)、模數轉換器(ADC)、比較器、濾波器甚至電容式感應模塊??删幊虜底帜K可配置成定時器、計數器、UART、PRS生成器或SPI。這些模塊都可以連接到任意引腳。這一切都由一些寄存器位來確定。這些寄存器值存儲在閃存中并在啟動過程中加載。寄存器值在閃存中的存儲位置并不固定,而是由程序來決定。系統(tǒng)設計人員可在編譯過程中改變寄存器值的存儲位置。此外,還可以在運行過程中修改這些寄存器值,以便重新配置模塊從而實現不同外設。例如,在啟動階段配置成可編程增益放大器的模塊可重新配置成比較器或ADC。因此,幾乎不可能對包含這類器件的設計中的硬件資源進行逆向工程設計。
評論