雅特力AT32 sLib安全庫為算法保駕護航
隨著AIoT市場的發展,MCU承擔的運算度越來越復雜,推動著MCU性能不斷提升,部分高性能MCU可以支持AI深度學習。過去由于MCU性能和安全等原因,大部分算法需在服務器完成后再下傳到終端執行,邊緣計算的發展,許多核心算法可在終端完成,大大提高了效率。因此,如何保護開發者開發出來的核心算法等知識產權代碼,便成為微控制器應用中一項很重要的課題。在MCU開發中,我們常用的加密方式主要有以下幾種:
本文引用地址:http://www.j9360.com/article/202005/412784.htm● 通過設置特定配置寄存器
● 增加外部加密芯片
● 程序固件加密
● UID校驗加密
這些加密方法配置通常在擦除flash時都會隨芯片而被擦除,而且下游客戶除非拿到方案商的源代碼或者庫(.LIB),否則無法進行進行二次開發。但就算只提供庫(.LIB)給客戶進行二次開發,核心算法也就泄漏了,導致方案商即使僅修改簡單的LED燈指示功能,也必須重新編譯完整 BIN 檔給客戶,無法快速擴展客戶群。
雅特力科技AT32系列MCU從設計之初便考慮了這一重要需求,全系列芯片均提供了安全庫區(security library,簡稱sLib)的功能。方案商通過將核心算法代碼燒錄在MCU特定的sLib區域,以防止重要的代碼被惡意修改或讀取,并可將芯片提供給終端客戶在剩余空白空間進行二次開發,且通過調試工具進行整片擦除時,不會將保護區sLib里的核心代碼擦除掉,增加了開發的靈活性。
■ 安全庫區sLib應用原理
下圖1是包含安全庫區的主閃存區映射示意圖,安全庫區的程序代碼可以很容易地被終端用戶調用并執行,但不能直接被讀取,因而達到保護的功能。安全庫區的范圍大小是以頁(Page)為單位做設定,每一頁的大小依不同型號而不同。安全庫區的程序代碼及數據,除非輸入正確的密碼,否則無法被擦除。
圖1 安全庫區在主閃存區映射
■ 安全庫區啟用
默認狀態下,安全庫區設定寄存器始終是不可讀且被寫保護。要想對安全庫區設定寄存器進行寫操作,首先要對安全庫區設定寄存器解鎖,對SLIB_KEYR寄存器寫入指定數值,然后指定的寄存器設定要保護的區域和安全區域密碼。
■ 安全庫區保護解除
當安全庫區的保護功能被啟動后,可以透過在SLIB_PSW寄存器寫入先前設置的密碼來
解除保護功能。當解除安全庫區的保護時,芯片將會執行主閃存的整片擦除(包含安全庫區的內容)。因此即使算法方案商設置的密碼被泄漏,也不會有程序代碼外泄的疑慮。
■ 燒錄方式
1. 方案商和終端用戶代碼分別燒錄:方案商先燒錄sLib代碼到MCU,然后終端用戶再燒錄應用代碼到MCU;
2. 方案商和終端用戶代碼合并燒錄:方案商的sLib代碼和終端用戶的應用代碼整合到一個離線項目工程中,通過雅特力的離線燒錄工具AT-Link一次下載到MCU。可以根據最終需求配置各種參數,比如限制下載次數、項目文件綁定AT-Link、下載完成后開啟RDP等;
■ 安全庫區應用案例
在智能掃地機領域,路徑規劃是衡量掃地機性能的重要指標之一,同步定位與建圖(simultaneous localization and mapping,SLAM)是實現掃地機高度智能化的關鍵技術。SLAM技術讓掃地機在未知的環境中,能夠利用一種或多種傳感器對周圍環境進行探測,建立相應的地圖,同時定位自身在地圖中的位置。掃地機廠商或方案商可將SLAM算法放置在sLib保護區,并提供函數接口供應用程序調用。下圖2為方案商在實際項目中的應用示意圖。
圖2 應用示意圖
■ 安全庫區其他用途:
除了保護方案商軟件,提供下游客戶二次開發之外,還具備下列用途:
● 保護產品公司核心算法: 核心算法由公司特定人員開發,完成后燒錄到安全庫區,再交由其他人員調用開發,避免離職員工帶走公司核心技術;
● 保護出廠參數: 為避免軟件升級時將產品出廠參數也擦除,可以將出廠數據放在安全庫區,沒有密碼時無法擦除出廠參數;
安全庫詳細使用方法及范例程序,請參考雅特力官網應用筆記F403A_sLib:http://www.arterytek.com/html/product/product_AT32F403A.jsp?t=1587549382043
評論