1.安全的重要性
(1)為什麼安全如此的重要?
對於嵌入式系統正越來越頻繁地遭到駭客入侵。
(2)如今為何需要安全性?
1) 裝置需要聯網,比如現在工業4.0的裝置,裝置連線雲
2) 安全攻擊和駭客入侵頻率的增加
3) 保護你的IP(智慧財產權),應用。
(3)嵌入式系統應用中的安全需求?
1) 機密性、隱私
確保任何意外實體都無法讀取儲存的資料或傳輸的報文。
2) 完整性
確保報文始終不發生改變(沒有丟包或被篡改)
3) 真實性
確保某件事務與宣告相符,
不可否認性(查明具體來源和傳送方的身份);
證明/安全引導/安全DFU(提供可靠證據來證明現有程式碼是真實的,支援本地或遠端證明)
(4)通過硬體加密實現的安全性更高。
硬體加密以數倍於軟體實現的速度執行加密/解密;
效能更高,程式碼更小。
1) 保證應用程式完整性
與軟體相比,硬體可信根更安全,更能保證程式碼/應用程式完整性
2) 抵禦逆向工程
軟體實現更易受逆向工程攻擊。
3) 抵禦非侵入性攻擊。
基於軟體的解決方案更容易受基於功耗分析的攻擊。
4) 祕鑰保護級別更高
使用硬體儲存祕鑰的保護級別要高於使用軟體儲存。
對稱金鑰加解密:所謂的對稱金鑰,就是加密金鑰和解密金鑰相同。由於通訊雙方的金鑰相同,因此金鑰的儲存非常關鍵。
金鑰分配很簡單
•一個金鑰可公開共用,我們稱其為「公鑰」
•另一個金鑰以極其私密的方式儲存,我們稱其為「私鑰」
•此金鑰的安全性和私密性對系統的安全至關重要
•在公鑰基礎架構(即PKI)中,每個元素都有自己的金鑰對
•金鑰對絕對不能共用
•每個元素都具有惟一身份是安全的基礎
非對稱演演算法:所謂的非對稱,指的是兩個數學上相關的金鑰,一個金鑰可以公開共用,稱為公鑰,另一個金鑰以及其私密的方式儲存,稱為私鑰,一般使用時,我們使用公鑰加密,私鑰來解密。我們可以使用使用非對稱演演算法來驗證身份,一般使用私鑰產生數位簽章,使用公鑰進行驗證,即驗證身份的合法性。
數位簽章
它不是對質詢的加密響應
•簽名是一種複雜的數學函數,它利用私鑰、隨機質詢和一個惟一亂數來建立結果
•得到的數位簽章只能使用簽名者的公鑰進行驗證
•…驗證不是解密
•驗證是另一種複雜的數學函數,其惟一目的在於確定傳送者的私鑰是否用於建立該數位簽章
•驗證函數的結果為「是/否」結果
證書:證書用於確保實體是真實可靠的。通訊雙方在通訊之前,必須要建立一個信任鏈,以便彼此共用共同的信任錨或信任根,信任錨通常是OEM,但也可以使證書頒發機構(CA)
(3)證書的簽名和結構
證書內容
•版本和序列號
•演演算法ID
•頒發者
•有效期
•開始日期/截止日期
•主題
•主題公鑰資訊
•公鑰演演算法
•主題公鑰
•證書籤名演演算法
•數位簽章
•頒發者惟一識別符號(可選)
•主題惟一識別符號(可選)
•擴充套件(可選)
使用加密安全亂數發生器同樣重要
•我們需要與承諾可從嵌入式系統操作中獲得高熵亂數的不法供應商作鬥爭
實現強安全性需要什麼條件?
高熵亂數發生器
•「熵」是一種嚴重的無序狀態,是隨機性的基礎
•可以信任的不可變真實程式碼區域
•用於儲存機密資訊和關鍵加密基元的硬體強制持久安全區域
•通過防篡改保護實現
•強大的加密方法和可靠的信任鏈
•本簡報中採用了橢圓曲線加密(ECC)方法,這是現行標準
•由於ECC的金鑰長度較短且安全級別相同,因此正在逐漸取代RSA
•ECC-256位= RSA-3072位
•考慮周全的生態系統和基礎架構
3.系統安全構件
1) 硬體可信根
所有安全系統都需要硬體可信根,其中包含2個屬性:
韌體驗證(又稱為安全引導,適用於所有系統)-- 確保即將執行的軟體為正確的軟體。它涉及映像簽名以及稍後啟動時的過程映像驗證。
可信身份(用於聯網系統)–祕鑰受防篡改保護和邊通道攻擊保護。
這是與可信鏈相關的私鑰或共用祕鑰,應具備根據相關認證標準測試的防篡改保護和邊通道攻擊保護。
2) 防偽
防止攻擊者仿造一次性物品或複製附件
3) IP保護
防止攻擊者竊取MCU韌體或FPGA RTL中的IP。
價值在於系統程式碼內的智慧財產權(IP)。因此,需要在系統執行期間的任何時刻對已簽名的程式碼進行驗證。
原理與安全引導類似,但驗證在執行時進行。
4) 安全更新
利用安全通訊和安全引導機制來確保安全傳送真實的映像。
對於聯網系統-安全遠端無線(OTA)更新
•對於非聯網系統-本地更新(例如:U盤),前提是待更新的軟體或韌體安全地儲存在相應的位置。
•程式碼/軟體/映像簽名和驗證
•安全載入程式(執行更新的軟體)需要對目標裝置、檔案或系統進行身份驗證
5) 安全連結
對裝置通訊進行身份驗證並選擇性進行加密
主機和使用者端所連隧道的加密/解密功能可確保安全通訊,從而防止中間人攻擊,即試圖在通訊隧道內攔截資料加以篡改。
在建立安全通訊的過程中,存在一個金鑰協定階段。該階段將請求必須加以保護的可信根,以便能夠開始推播資料和避免出現冒用身份的使用者端。
•通過IP網路的TCP或UDP實現TLS或DTLS層
•乙太網、Wi-Fi®和6LowPan等
•協定棧可位於MCU/MPU或無線模組(例如WINC1500)中。
•FPGA SmartFusion2整合了Cortex® -M3以處理通訊
•(D)TLS憑證應位於防篡改的第三方經測試物理安全邊界中,例如,JIL「高」等級安全元件或MCU/MPU上的等效安全元件(如果有)
•其他通訊協定棧
•Bluetooth® 、Zigbee® 、LoRa和其他802.15.4無線電等
•始終考慮真實性、保密性和完整性
•請記住:僅加密是不夠的
6) 應用層安全
利用系統的加密功能進一步強化實現(存取許可權)
安全性專門應用於應用層以防止未經授權的存取。
應用層安全是指保護OSI模型第7層應用免受惡意攻擊的方法,這些惡意攻擊可能暴露私人資訊。
機制範例:
•檢測到篡改時禁止金鑰或韌體操作
•完整性監視
•使用者許可權/存取授權
•核心分離
•硬體防火牆
•篡改宏
•歸零
•安全程式碼預設定
•映像簽名/驗證
4. 安全引導
可信根可保證客戶資料/引導檔案免於載入到執行環境
•安全引導載入程式可確保裝置的可信根
•安全引導可防止在裝置中執行未經授權的應用程式
•由於經過加密和簽名,因此允許載入可信的應用程式
•通過檢查完整性並對其進行解密,允許執行可信的應用程式
安全引導載入程式載入經過加密和簽名的應用程式
•將應用程式映像儲存到外部NVM中之前,先進行加密和簽名
•使用AES-CBC進行加密,實現機密性
•使用AES-CMAC或HASH+RSA進行簽名,實現身份驗證/完整性
•加密金鑰儲存在受保護的熔絲矩陣中
安全引導載入程式的原理
•安全引導載入程式執行經過加密和簽名的應用程式
•將映像從外部NVM下載到嵌入式SRAM中
•對映像進行身份驗證(HASH-RSA –AES-CMAC)
•如果通過身份驗證,則解密嵌入式SRAM中的引導檔案(AES-CBC)
•禁止存取包含身份驗證/加密金鑰的熔絲
•然後,啟動嵌入式SRAM中的映像
如果映像未通過身份驗證,則根據客戶設定,將檢查下一個記憶體或不執行任何操作,因為它可能是惡意的程式碼。
5. 物聯網安全
選擇在安全性方面值得信賴並且進行過試驗的供應商使用經過驗證的標準安全性架構和相關實踐
提供惟一、可信、受保護且可驗證的身份,從而確保身份驗證安全(信任根)
加密通訊(TLS1.2)
使用安全的OTA韌體驗證和安全引導。
將私鑰與使用者隔離
•人類是最難預測的安全風險
將私鑰與軟體隔離
•修補程式釋出後,會向攻擊者暴露軟體的弱點。為物聯網硬體開發修補程式往往需要幾個月的時間,而這樣會讓攻擊者有足夠的時間入侵系統。
將金鑰操作與製造階段隔離
•不僅與供應鏈裝置隔離,還應與供應鏈中的使用者隔離。
將金鑰與微控制器隔離
•請勿將私鑰儲存在快閃記憶體中
2)建立帶多個證書的裝置身份
裝置身份應惟一、可驗證且可信加密金鑰對一個私鑰和一個數學上相關的公鑰(一對一的關係)
身份的可信性依賴於在產品的使用壽命內保密的私鑰以及保持安全的加密演演算法實現:
•沒有遭受暴力攻擊的可能
•不存在已知協定弱點
•不存在會導致金鑰材料洩漏的邊通道攻擊
證書不是惟一的身份驗證安全模型。客戶只需使用基本公鑰/私鑰對即可對令牌進行簽名,之後會對令牌進行驗證(Google方案)
用於在聯網裝置的使用壽命內安全儲存金鑰材料。金鑰絕不存在於裝置之外
•金鑰由器件使用滿足NIST規範的「頂級」亂數發生器(RNG)生成,處於器件的安全邊界內
•所有加密演演算法都在防篡改邊界內執行
•將金鑰與應用軟體嚴格隔離
•這樣一來,金鑰、機密資訊和原語便可與所有易受攻擊的資源嚴格隔離