||
MCU被用作幾乎所有可想象的應用程序的主要控制元件。它們的力量和靈活性使它們成為大多數設計的核心部件。因為重要的是要確保您的設計不容易復制、反向設計或篡改,現代MCU現在提供了幾個不同的選項來保護您的設計;對能力和權衡的良好理解是重要的,以確定哪種方法是對于給定的設計最好。
本文將回顧一些常見的設計保護方法,例如使MCU無法從外部世界讀取,使用片上功能來驗證要執行的代碼未被修改,并使用外部組件來提供更高級的安全能力。還將描述用于篡改檢測的板上技術和可能應用的可能的“懲罰”。
保護你的設計
你可能沒有太多的考慮到復制你的設計是多么容易,但是經歷過設計盜竊的工程師會告訴你,一旦它發生了,你就不希望它再次發生。例如,如果你的MCU設計的片上代碼可以由競爭對手或者甚至是一個不道德的合同制造商讀出,你的整個設計可以很容易地被復制和轉售——或者是在不同的品牌下,或者甚至是在黑市上使用你的品牌。超過了產品容量的流行設計已經成熟了,如果賣方不能從你們那里得到產品,他們可能會進入黑市以滿足他們的客戶需求。
同樣脆弱的是實際設計或算法隱藏在你的MCU代碼的心臟。也許你有一個創新的方法來分析傳感器數據,大大降低了電力或處理時間所需的。你想讓競爭對手能夠復制你的代碼并逆向設計你的算法嗎?甚至還有軟件工具,可以采取二進制和再生合理的“C”代碼,使算法細節更容易破譯。即使是像登機測試程序那樣平凡的事情,也可能需要幾個月才剛剛好。你想讓競爭對手得到與基礎設施相關的代碼的捷徑,從而大幅降低開發成本,這樣他們就可以不公平地降低其市場價格來贏得你的生意嗎?
保護的另一個方面與硬件認證有關。通常,設計將允許外圍設備或附加卡,從而可以升級或增強基礎設計。如果設計不包括一些檢測附加模塊硬件被授權的能力,則其他廠商可能會創建較低成本的模塊來競爭附加業務。打印機墨盒可能是最常見的硬件認證應用程序,以確保您購買制造商的品牌墨盒。通常打印機打折出售,墨盒價格膨脹,以彌補打印機壽命的折扣。一個競爭對手可以以較低的價格出售一個墨盒,因為它不需要收回打印機的折扣,并且仍然能獲得可觀的利潤。
因此,現在應該清楚的是,在很多情況下,重要的是能夠保護您的硬件免受復制、逆向工程和偽造。此外,在沒有安全硬件作為起點的情況下,不可能在連接家庭(如圖1)等應用程序中創建各種安全設備。
德克薩斯儀器在連接家庭中的安全設備
圖1:連接家庭中安全設備的常見示例。
隨著時間的推移,一些技術已經發展,其中許多使用標準化的安全算法來保護和認證存儲在MCU或MCU外圍存儲器中的代碼。讓我們來看看一些最常用的保護技術和安全標準以及它們的用途。然后我們將能夠查看支持這些標準的MCU和外設的各種類型,并可以用來保護您的設計。
保護技術與通用安全標準
也許保護硬件免于復制的最常見的技術是在一個時間可編程(OTP)模式中編程MCU,其中編程的數據不能從設備外部訪問。JTAG和調試設備必須關閉,使得數據不能使用調試“后門”訪問,F代設計發現OTP方法非常限制,因為調試是故障分析和現場測試中的一個有用的特征。OTP方法消除的另一個重要能力是對片上MCU代碼的遠程更新,用于升級、bug修復和其他類似的更改,以提高操作完整性或服務質量。理想情況下,我們希望保護我們的代碼不受逆向工程和復制,但仍然能夠輕松地進行更新和更改。
一些MCU為訪問片上存儲器提供了一種安全的方法。德克薩斯儀器,其MSP430FR MCU系列,提供了一種方法,通過密碼來保護JTAG端口,或者通過編程一個片上禁用的熔絲簽名來完全禁用JTAG端口。當JTAG被禁用時,只允許通過引導加載程序使用密碼來訪問設備。提供不正確的密碼會導致整個代碼存儲區被大量擦除。
TI還提供了一種在MSP430FR內存空間內創建安全區域和非安全區域的方法。安全代碼可以通過將安全代碼存儲在第一個上電周期后映射到啟動代碼區域的特殊存儲區域中來封裝(通過IP封裝或IPE)。IPE區域不能被JTAG、BSL或甚至在系統讀取中訪問,因此它對于設備的生存期保持安全。安全區域內的代碼可以訪問安全區域內的數據,因此安全算法和密鑰都可以共存于安全區域內。
保護IP的最常用的安全算法用于加密和/或解密安全數據或驗證數據,以證明它來自已知和可信的源。MCU可以提供專用的硬件來實現通用的工業標準,而微芯片PIC32 MZ單片機家族就是其中一個例子。PIC32 MZ設備包括硬件加密引擎,它實現通用的批量加密解密“密碼”,如AES、DES和三重DES。這些功能被用來通過加密來保護安全數據,使用一個秘密密鑰,使得只有一個“知道”密鑰的進程可以解密數據。認證由SHA-1、SHA256、MD—5、AES-GCM和HMAC—所有硬件實現。在圖2中示出了密碼引擎硬件結構和由此產生的性能(在輸入時鐘的MbPS/MHz和100 MHz時鐘的Mbps中)。性能值遠優于軟件實現,并且表明如果大量數據需要頻繁地處理(也許在高速數據傳輸期間)或在時間關鍵事件期間(例如在引導過程中),硬件加密引擎的使用可能是關鍵的。滿足系統要求。
微芯片PIC32 MZ MCU加密引擎的圖像及性能指標
圖2:微芯片PIC32 MZ MCU加密引擎和性能指標。
雙核MCU
在更復雜的系統中實現安全的另一種方法是使用雙核MCU。其中一個MCU內核可以專門用于實現安全功能,而另一個內核可以用于更標準的操作。NXP半導體LPC4370雙核MCU(圖3)有兩個CPU核心,一個是ARM CORTEX-M4,另一個是ARM CORTEX-M0。CORTEX-M4內核可以用于應用程序的“重載”部分,而CORTEX-M0內核可以用于實現與安全相關的功能和通用外圍功能——也許管理以太網和USB端口,配置各種端口,并管理任何端口。F芯片資源。
NXP LPC43XX雙核MCU的圖像
圖3:NXP LPC43XX雙核心MCU可以用來保護您的設計。
對于更高級的安全設計,可在LPC43Sxx設備上提供的可選AES加密和解密引擎可用于加速標準密碼功能,如AES、CMAC和隨機數生成。AES密鑰可以安全地存儲在片上一次性可編程(OTP)存儲器中,并且可選地加密以進行額外的保護。AES硬件甚至可以用來實現安全引導能力(確保引導代碼未被篡改——黑客用來攻擊嵌入式系統安全性的共同目標)從加密圖像中進一步保護設計IP。
安全外圍設備
如果你想增加一個現有的MCU與一些額外的安全功能,您可能能夠添加一個安全外設,以獲得您需要的安全能力。例如,ATMEL ATHA204A設備提供防篡改的安全密鑰存儲和認證。EEPROM安全存儲器的片上4.5 kb可以用來存儲多個密鑰,執行讀寫來管理密碼或秘密數據。內存可以組織、配置,然后鎖定以防止更改。每個設備具有唯一的72位序列號,并支持常見的密碼算法(帶有消息認證碼的SHA 256和基于哈希的消息認證碼選項)和高質量的隨機數生成器。I/C接口使設備易于連接到標準MCU。ATHA204A通常與主機MCU一起使用挑戰和響應事務,如下面的圖4所示。
Atmel ATHA204認證圖像
圖4:使用Atmel ATHA204認證和保護設計的IP。
使用存儲的秘密和消息認證碼(MAC)命令,由ATAH204處理MCU挑戰,以創建發送回主機的響應。主機可以通過執行相同的MAC命令來驗證響應是否正確。事務的觀察員從不看到秘密密鑰,因此實際上不可能確定復制設計所需的密鑰或確定存儲在ATAH204中的任何秘密信息。ATSH204可以用來防止復制的設計,在執行之前驗證它(例如安全引導),保護和存儲固件或媒體,存儲和管理由主機MCU使用的會話密鑰,用于保密通信、存儲秘密配置、校準或消耗數據,或用于有效。處理用戶密碼。Atmel還為ATAH204工程師提供了一個密碼認證產品培訓模塊。
總之,在使用現代MCU和各種支持設備的高級安全能力時,保護您的設計免受逆向工程和黑客攻擊是可能的。保護網絡化嵌入式系統是至關重要的,因為基于網絡的攻擊對嵌入式系統的持續增長。