STM32保“密”訣竅,你都造嗎?

信息安全 | STM32保“密”訣竅,你都造嗎?

萬物互聯暢想下,如何應對安全挑戰?

物聯網(IoT)作為數字化轉型浪潮最熱門的科技風口或發展方向,全景融合了嵌入式技術、網絡技術、感知技術、通信技術和信息安全技術等於一身,成為智能家居、可穿戴、工業物聯網、智能城市、自動駕駛汽車等應用場景背後的核心技術支撐。隨著接入設備的指數級增長,我們在體驗了設備之間實現有效通信、自動化、大幅節省時間和成本等便捷後,而另一面指數級升級的“安全威脅“,也逐步成為物聯網(IoT)未來最關鍵的挑戰,諸如物聯網用戶受到網絡攻擊和身份盜用的隱私問題,老舊物聯網設備的加解密技術帶來的安全漏洞等等。


1、什麼是安全?

在英語中,安全一詞有兩種不同的定義:Safety, 通常指功能安全 Functional Safety,即保護系統不受那些隨機故障的影響,功能安全的失效通常造成對人身和環境的破壞及威脅;另一個

Security,強調信息安全 Information Security,保護資產不受惡意威脅而遭受損失。


在信息安全的框架下,我們提到資產,就是指一切我們認為有價值的對象;我們要保護資產,有安全的考量,說明資產有弱點,也叫漏洞,也就是系統的脆弱性;威脅,就是利用資產的弱點來破壞系統運行的一系列行為,令資產價值損失,讓惡意第三方獲益。資產、弱點、威脅構成了資產弱點威脅模型。當我們談信息安全時,首先要甄別需要保護的資產是什麼?明確了這一點,才可能針對有風險的系統弱點來制定安全方案、採取安全措施。

根據安全應用的不同,要保護的資產(或者叫屬性/property)也有所不同。與STM32應用領域相關的信息安全保護,就是保護完整可靠的數據,僅能被授權訪問


信息安全有三個基本要素:C.I.A,Confidentiality =保密;Integrity =完整;Availability =可用。

保密性,通俗講就是一般人不可知曉。它的另一層意思就是:只有被授權的主體才知道信息的內容。

完整性,Integrity。信息的完整性,要分成兩個方面來理解,狹義的完整, 就是信息本身沒有被修改被破壞;廣義的完整性,還包括該信息的來源方是可靠的。舉個例子,有人盜取了別人的身份證,然後號稱這是他。這個身份證本身是完整的,真正的身份證,符合狹義完整性;但這個身份證不是這個人的。這就不具有廣義的信息完整性。

可用性,表示被授權的主體,在需要的時候可以訪問到信息或者服務。

信息安全 | STM32保“密”訣竅,你都造嗎?

▲ 信息安全三要素

信息安全有三大工具標識(Identity)、認證(authentication)和授權(authorization)。標識,用來表明主體的身份,由主體提出,可能是真,可能是假,需要認證;認證,用於核實聲稱的內容,常用方法有詢問你知道的一些事情,你的身份證件,或者你獨有的特徵;對標識的認證完成後,就要授權該標識所代表的主體可以訪問的資源,和可以實施的行為。

那麼,問題來了,信息安全的三大工具是如何支持信息安全三要素的?

信息安全 | STM32保“密”訣竅,你都造嗎?

▲ 信息安全三要素 VS. 工具

機密性,表示信息不能被未授權的主體獲得。有主體,就有標識,有標識就需要認證;然後能訪問和不能訪問,就是授權的不同。

完整性,表示信息被未授權的主體修改後能被立即識別。廣義的消息完整性還要保證信息來源的可靠,即主體可靠。那麼自然也就需要標誌,和認證。

可用性,表示被授權的主體,在需要的時候能夠訪問到信息。自然也是有主體,就有認證,然後授權他可以使用某種服務或者訪問某種資源,比如信息。


2、安全,貫穿產品的整個生命週期

理解安全的定義、信息安全三要素和三大工具後,我們認識到要做好信息安全保護,需要建立安全分析模型,基本思路就是基於對主體的資產弱點威脅分析,列出所有資產,理解相關威脅,思考相關弱點,然後策劃對應的保護措施

。我們要理解,資產是安全第一關注的對象;認識安全風險來自資產、弱點、威脅的交集;運用安全與資產、弱點、威脅的依賴關係,設計對應的保護措施。

作為開發者,我們一定要建立體系化的安全思維:安全絕不是一個點,它是一個整體概念,不僅是系統上的整體,還是時間跨度上的整體。安全思維需要貫穿產品的整個生命週期,從功能定義,設計,開發,測試;到生產製造、傳輸,部署,以及使用壽命內的產品維護。


安全分析舉例:一個安全的家

信息安全 | STM32保“密”訣竅,你都造嗎?

信息安全 | STM32保“密”訣竅,你都造嗎?

安全是一個系統的設計和部署,它的安全性取決於整個系統中所有環節裡的最短板,必須通盤考慮。不是一個加密算法,一個安全芯片就可以簡單解決的。


3、應該學一點密碼學

密碼學的應用是基於一個需要保護的場景或者說模型。那麼為了通訊安全或者設備安全,我們會採用各種各樣的密碼,密碼的背後是加解密技術。 加解密技術說白了就是變換,加密變換和它的反變換 --- 解密變換。

加解密技術也有三個屬性,也叫 CIA,保密性,完整性以及可認證性。注意,加解密技術的A是指Authentication,與信息安全三要素CIA中的可用性 A (Availability) 不一樣。


加解密技術提供的服務就是傳輸機密數據(Confidentiality),校驗數據完整性(Integrity)和身份認證(Authentication)。我們通過加解密的過程來理解:

信息安全 | STM32保“密”訣竅,你都造嗎?

▲ 加解密過程

  • 能夠提供保密服務的算法有對稱加解密技術和非對稱加解密技術,實現機密數據傳輸;
  • 能夠提供狹義完整性服務的算法有哈希(單向散列)函數,校驗數據完整性;
  • 能夠提供認證鑑別類服務有基於非對稱密鑰技術的數字簽名技術,以及基於對稱密鑰的技術的消息驗證碼 MAC。

加解密技術確實很難,但我們不去發明算法,也不去嘗試攻擊和破解現有算法,我們只是去使用它;而且現在很多加解密庫已經對上封裝的很好,我們只要理解了密碼學基本原理,熟悉了加解密庫的API接口,就可以比較方便的使用它了。


4、STM32的安全特性

信息安全 | STM32保“密”訣竅,你都造嗎?

▲ STM32現有安全特性全景圖

如上圖,STM32安全特性涵蓋硬件、軟件例程、軟件工具,以及用於解決安全生產或者說安全固件燒錄的整套服務,SFI(安全固件安裝)。


藍色部分代表硬件,包括存儲與執行保護模塊、芯片UID、外部監測模塊和加解密模塊。

  • 存儲與執行保護模塊:包括讀保護RDP、寫保護WRP、私有代碼保護PCROP、唯一啟動入口UBE、安全用戶閃存、MPU、防火牆firmware;最新的產品系列L5中,還有TrustZone安全隔離功能,區分可信代碼和非可信代碼。
  • 芯片UID(unique ID):是ST提供給每個STM32芯片的唯一ID號,出廠前就寫在了片上閃存的系統flash,它與安全不直接相關,但會在安全相關應用中用到;
  • 外部監測模塊:如看門狗,Tamper外部入侵檢查;
  • 加解密模塊:包括真隨機數產生器 TRNG、對稱加解密加速器 AES、對稱加解密加速器 Crypto、哈希模塊 HASH、非對稱加解密加速器 PKA。

灰色部分是軟件例程包

  • 基於存儲與執行保護模塊的各個例程
  • 加解密庫,一方面有基於下面加解密硬件模塊的實現,也有僅依賴於Cortex-M內核的軟件實現。
  • SBSFU安全包,是結合了基本所有硬件模塊和加解密技術的應用,實現了安全啟動和安全升級。SBSFU是由ST開發的,針對嵌入式領域安全啟動和安全升級的免費開源參考實現。開發者可按需裁剪,集成到自己的應用中;或者參考它,做自己的實現。
  • 來自ARM的開源協議棧mbedTLS,集成在帶以太網IP的STM32系列的Cube包中。

安全固件安裝(SFI:Secure Firmware Install)用於解決安全生產或者說安全固件燒錄的整套服務,HSM是一個硬件,幫助SFI服務的實施。安裝,就是指在空片上燒錄初始版本的應用固件,通常發生在產線上。SFI適用於OEM把一批次的STM32和自己開發好的固件給到第三方或者不可信的產線去燒錄時,解決OEM對產線安全方面的顧慮;比如,OEM開發的固件會有私密性要求,防止知識產權洩露;另外,OEM可以控制固件燒錄的次數,規避品牌資產帶來風險。

作為STM32生態系統的一部分,STM32CubeProgrammer和TrustPackageCreator 是學習和操作SBSFU需要用到的軟件工具。CubeProgrammer是STLINKUtility的繼承者,主要用來燒寫、讀取、擦除STM32片上閃存以及選項字節;TrustPackageCreator專門服務於安全應用,SBSFU和SFI都會用到,TrustPackageCreator沒有單獨的下載包,它的GUI和命令行版本的程序,都是在CubeProgrammer的安裝目錄下。


分享到:


相關文章: