嵌入式系統制造商面臨的IP安全性的挑戰
公司的未來發展取決于知識產權(IP)的開發與保護。知識產權(IP) 在維基百科中被定義為法律概念,指的是被賦予專有權的智力創作。盡管該定義只涉及法律含義,但IP其實是組織或個人開展創新和努力工作的成果。IP是公司創新的制勝法則,相對于競爭對手能夠為產品帶來優勢。對于生產嵌入式系統的企業來說,知識產權可能是:
· 系統的固件實現方案
· 硬件實現方案;例如利用創新方法實現信號鏈或輸出控制,從而讓產品脫穎而出
· 任何解決系統中特殊問題的創新方法
例如,采用盡可能少的硬件資源的嵌入式系統實現方案就是一個很好的例證。這種實現方案可以降低產品制造成本,使產品在競爭激烈的市場中更加。
知識產權 (IP) 安全問題公司任何成功所面臨的主要挑戰。每種產品都需要經過大量的研發和創新才能夠成功推出。嵌入式系統制造商向市場推出產品后始終要關注的是逆向工程攻擊。這在當今的市場中是個棘手的現實問題。如果競爭對手竊取IP并復制設計,那么您的產品銷售收入將會受到極大影響。
通常在談到嵌入式系統的IP安全性時,人們首先想到的是與微控制器或微處理器配合使用的固件。當說到MCU時一些系統設計人員會戛然而止。而硬件會怎樣?是的,有些人很重視硬件,并通過多種方法設法隱藏硬件實現方法。任何完整的嵌入式系統的組成部分不僅僅包含固件,還涉及大量硬件(圖1)。
其中的硬件負責與外設進行交互,用以感應輸入,生成輸出,以及進行信號調節。讓我們以電動自行車的控制系統為例。圖2給出了這種系統的一種可能的實現方案。
如圖2所示,為MCU編寫的固件通常用來接收總線(電源)電壓、速度命令等輸入內容,執行信號調節,并將信號轉換為數字,然后進行各種計算,并根據為MCU編寫的固件制定決策,例如控制電機和LED輸出。
嵌入式系統的IP安全性可分為兩部分。
· 防止發生未經授權的固件訪問
· 隱藏模擬與數字資源及其互連情況
防止發生未經授權的固件訪問
不同微控制器采用不同方法來防止閃存中的代碼遭到未授權訪問,而有的微控制器根本不采取任何保護措施。進一步說,所有解決方案都采用禁止從閃存存儲區域讀取數據來解決安全問題。有些設備會禁用整個閃存存儲系統的讀/寫訪問。這種解決方案無法在終端系統中添加引導加載程序。如果需要在系統中實現引導加載程序且IP安全性同樣重要,那么系統設計人員就需要選擇合適的微控制器。
有些微控制器將閃存分為多個模塊,并對每個模塊采取不同的安全等級保護。對于這種器件,我們可以在實現引導加載程序的同時獲得同樣高的保護等級。讓我們看一下賽普拉斯半導體的PSoC 1器件所提供的閃存保護功能。這些器件支持各種閃存保護模式:
· 無保護模式
· 工廠升級模式
· 現場升級模式
· *保護模式
所選的保護模式只能在編程時載入NVL(非易失性)位,不能在運行時間更改,以免保護等級發生意外更改,也是為了防止攻擊者通過在閃存無保護區域寫入特定代碼試圖修改固件。
無保護模式:這種模式下允許執行所有外部和內部寫入/讀取操作。該保護模式適合在開發階段使用,因為此時無需將器件提供給第三方。該模式不應用于生產階段。
工廠升級模式:這種保護模式適用于需要由外部程序員對各個閃存模塊進行升級的系統。這種保護模式不允許外部讀取,但允許外部寫入、內部讀取和內部寫入。如果某個特定模塊需要在不擦除整個存儲器的前提下由外部程序員進行升級,那么可以使用這種模式。例如對于需要由客戶或安裝團隊校正系統并將校正數據存儲在閃存中的這種情況,這種模式就很有用。盡管在系統中進行的這種升級非常有用,但在能夠使用安全性更高的模式的情況下必須避免使用該模式。原因在于該模式缺乏對外部寫入的保護。如果有人在可升級區域插入用以讀取閃存內容的代碼,那么IP就會失去保護。然而對于這些器件,為特定模塊只能設定此類安全級別,其他模塊則可以設定更高的安全等級。因此必須確保將非關鍵代碼存儲在這些特定模塊中。
現場升級模式:這種保護模式禁用外部寫入和讀取操作,只允許內部寫入和讀取,因此無法通過程序員接口讀/寫閃存。該模式支持引導加載支持的系統。在采用引導加載程序的嵌入式系統中,引導加載程序通過通信協議接收需要寫入的閃存數據,然后使用內部程序將數據寫入閃存。類似地,也是使用內部命令來執行讀取操作。因此,引導加載程序可以使閃存成為只讀狀態。引導加載程序可存儲在具有更高安全等級(*保護模式)的模塊中,因此引導加載程序本身不會被修改。額外對引導加載程序的通信進行加密還能進一步降低閃存讀取可能性。
*保護模式:如果無需對閃存模塊進行現場或使用外部程序進行升級,那么這種保護模式理想適用于生產階段。這種模式禁止以任何形式訪問閃存,并禁用內/外部讀/寫操作。
在生成十六進制文件(將在生產就緒型系統編程)的同時,系統設計人員必須設定合適的保護等級,想方設法實現zui高IP安全性。
對于需要為不同閃存區域設定不同保護等級的系統而言,檢查一下閃存粒度保護的設定情況。有些微控制器只允許為閃存賦予一個保護等級。有些器件允許將閃存分為容量為數kB的塊,有的閃存塊甚至低至64字節。應使用可將閃存分為小塊的器件,這樣能zui大程度地縮小處于較低保護等級的閃存區域。否則會造成閃存浪費或使更多閃存內容面臨安全威脅。
隱藏模擬與數字資源及其互聯方式
目前我們已經討論了系統固件部分的IP保護問題。一些OEM廠商為了防止競爭對手讀取部件編號,會在PCB板上涂焦油或環氧樹脂。對于大批量系統還可以在IC器件上印刷定制部件編號。定制部件編號同樣可以使實際部件編號難以識別。然而,這些方法都無法做到*。競爭對手可以跟蹤各種連接,觀察各種引腳上的信號,并找出設計中所使用的部件,而且找到各種模塊在PCB板上的連接方式也并非難事。因此,隱藏各種外設及其互連方式的*辦法就是使用物理隱藏。例如,如果所有連接都能隱藏到單個芯片內部,那么要弄懂信號鏈并確定系統使用的外設就變得更加困難。將各種外設集成到單個芯片中有助于隱藏硬件相關信息,考慮到這一事實,因此在防止受逆向工程攻擊時,片上系統(SoC)器件應該是*選擇。然而,有些SoC的引腳存在逆向工程漏洞,例如當器件為外設提供引腳時,就很容易判斷出所使用的外設類型。因此,那些具有靈活布線功能、可以讓任意外設連接任意引腳的SoC能夠更好地防止受逆向工程攻擊。
圖3(a)、3(b)和3(c)分別給出了電動自行車控制系統的三個實現實例(為了簡便,只給出了比較抽象的方框圖,并未包含PCB上的各種其它組件)。這些實現方案包括:
· 使用焊接在印刷電路板上的各個模塊
· 使用帶外設引腳的SoC
· 使用帶靈活I/O布線功能的SoC
如果讓工程師對以不同方式實現同一系統的這三種PCB板進行逆向工程設計,哪種更容易被還原工程?答案很明顯應該是圖3(a)中的實現方案,因為一切都清晰暴露在PCB板上。要對3(b)中的方案進行反逆向工程設計就需要更長的時間,但仍可獲得基本的實現方法。那么圖3(c)方案會怎樣?可以說很難甚至不可能摸清這種實現方案,因為它更像是一個只有輸出和輸出的黑盒子。工程師根本無法找到該系統中實現的模擬信號鏈,因為SoC可以讓所有外設連接任何一個引腳,而且這些外設在內部的互連無需借助任何物理引腳。此外,由于可編程邏輯沒有使用引腳,因此無法找到保護邏輯。
對這種方案進行逆向工程設計的*可能方法是讀取決定外設與引腳連接的寄存器。但是競爭對手必須首先解決閃存讀取這個難題。如果有人能破解閃存的安全機制,或者系統設計人員忘了設置必要的閃存保護功能,那么如果外設與大部分MCU一樣有固定地址,這種情況下信號鏈才可能被破解。
賽普拉斯半導體公司的PSoC 1器件在這方面能提供*的安全功能。這些器件采用通用模擬和數字模塊以及可編程布線方式。同一通用模塊可實現任意外設。例如,可編程模擬模塊可用于實現可編程增益放大器 (PGA)、模數轉換器(ADC)、比較器、濾波器甚至電容式感應模塊。可編程數字模塊可配置成定時器、計數器、UART、PRS生成器或SPI。這些模塊都可以連接到任意引腳。這一切都由一些寄存器位來確定。這些寄存器值存儲在閃存中并在啟動過程中加載。寄存器值在閃存中的存儲位置并不固定,而是由程序來決定。系統設計人員可在編譯過程中改變寄存器值的存儲位置。此外,還可以在運行過程中修改這些寄存器值,以便重新配置模塊從而實現不同外設。例如,在啟動階段配置成可編程增益放大器的模塊可重新配置成比較器或ADC。因此,幾乎不可能對包含這類器件的設計中的硬件資源進行逆向工程設計。
如今的產品要想取得成功必須面對逆向工程設計這一殘酷現實,為此應在系統中添加IP安全功能用以避免IP遭到未授權訪問。其中很重要的一點就是要隱藏硬件與固件實現方案,從而實現zui高安全等級。不同的MCU制造商提供不同的方法來防止閃存遭到非法讀/寫,因此選擇系統器件之前必須評估該產品的安全技術與效果。采用可編程資源和可編程布線技術的SoC對系統中所有底層實現方案都進行了抽象化,留給競爭對手的只是一個無法實現逆向工程的黑盒子。