隨著物聯網(IoT)的興起,愈來愈多的新興應用開始競相嶄露頭角,例如:人工智慧(AI)、車聯網以及愈來愈聰明的日常用品。為了因應整個新興產業鏈——包含品牌廠商、代工廠商(ODM)、方案設計公司、甚至是終端產品和客戶——對安全性的要求,目前主要的主晶片(包含SoC系統單晶片、微控制器、微處理器、ASIC特殊應用積體電路)設計公司,多半已整合了硬體的加密引擎、亂數產生器(RNG)、以及安全(但有限)的記憶體儲存空間在主晶片上。

儘管如此,多數的系統仍必須將開機程式碼、韌體、作業系統、應用程式代碼、各項參數設定或使用者資訊等資料存在外部的快閃記憶體中,而現有的快閃記憶體皆使用幾乎兼容的指令、接腳和封裝,使得所有存在快閃記憶體中的資料,幾乎沒有門檻就能輕易地被複製而使用,導致產業鏈中各個環節都有可能被駭客攻擊而造成財務、商譽、隱私等損失。

本文將詳述安全認證快閃記憶體的獨特性和安全性,以及如何與授權的主控制器配對,而加強快閃記憶體在系統上的安全性。

現有方案的安全疑慮

有關外部快閃記憶體的儲存,我們可以從兩種狀態來思考,一是靜態資料儲存於記憶體中,另一是從外部快閃記憶體到主晶片的資料傳輸過程。

以最基本的防止產品或商標被盜用或複製為例,儲存於外部快閃記憶體的應用程式代碼在現行方案下,可以輕易的被複製、使用。若有心人士想要盜版某智慧家庭的空調自動溫度調節器,只要對自動溫度調節器的主機板進行拆解分析,就能精確識別所有標準化的零組件,進而正確而幾乎毫無門檻或困難地複製主機板的所有配置,包含存在快閃記憶體裡的應用程式代碼等。

有鑑於此,為了保護快閃記憶體裡的應用程式代碼不被直接複製使用,最常用的方法,就是利用快閃記憶體內的唯一識別碼(Unique IDentifier,UID)。然而,UID事實上卻只是個微不足道的屏障,任何具備基礎安全知識的工程師,都能根據快閃記憶體的規格書輕易找到UID,並解除了主晶片與快閃記憶體之間透過UID的信任配對。一旦配對被解除,所有信任根源就瓦解了,快閃記憶體裡的應用程式代碼又可以輕易的被複製使用,上述的自動溫度調節器也又回到了完全沒有保護的狀態。

上述所利用的安全系統弱點,在於所用的唯一識別碼UID的獨特性,不但永久不會改變,且為公開的明文,一旦從記憶體中讀出,即可刪除配對或直接複製此UID,而使非授權的系統可以正常運作。

上述僅以保護設計、商標、或是方案公司授權金為例。其實在物聯網的系統中,安全性所受到的威脅遠遠超過產品本身的仿冒,更嚴重的有可能是既有產品遭到惡意程式的植入和竄改,而使得原本的系統失去控制權,甚至被入侵後所發動的攻擊,有可能間接影響該產品或公司的商譽。

既然如此,如何提升外部快閃記憶體的安全性,提升其被複製、竄改、甚至非法存取的困難度而提供比較安全的外部儲存環境呢?

華邦的解決方案:安全密鑰儲存及動態一次性認證密碼

為防止產品或商標被盜用或複製、以及解決外部快閃記憶體透過網路被惡意程式植入和竄改的安全問題,華邦的安全認證快閃記憶體(Authentication Flash)提供特殊的密鑰儲存空間,以及透過單向性計數器(Monotonic Counter)和HMAC SHA-256的演算法所產生的一次性密鑰,來克服UID永久不變的明碼弱點,提升系統對於外接快產記憶體資料儲存、身分識別的安全性。

華邦的安全認證快閃記憶體(Authentication Flash)

華邦電子生產各種串列式NOR型及NAND型快閃記憶體,並以此聞名,是世界頂級的串列式快閃記憶體製造與供應商,光在2016年就出貨了超過21億顆SpiFlash®串列式快閃記憶體晶片,全球市佔率約為30%。身為串列式快閃記憶體領導者,華邦電子努力解決快閃記憶體可能會面臨到的安全疑慮,因此我們推出了W74M系列安全認證快閃記憶體(Authentication Flash)。透過對稱性加密,也就是讓主晶片和記憶體共用一個相同的「根鑰 (Root Key)」做綁定(Binding)。

20170927_Winbond_NT41P1 圖一:W74M多晶片封裝架構

一旦根鑰經過綁定,便絕不會在主機(認證者)和記憶體(被認證者)之間直接傳輸,W74M上的根鑰特殊儲存空間被設定為一次性寫入(OTP),以防止被覆寫,此外,根鑰一旦寫入,就再也讀不出來(沒有讀取的指令,即便原廠也沒有辦法讀出已寫入的根鑰)。

而安全認證的流程,則是由根鑰和隨機數經雜湊函數SHA-256產生訊息鑑別碼HMAC Key(Hash-based Message Authentication Code,HMAC),再將HMAC key和單向性計數器(Monotonic Counter)通過HMAC SHA-256加密演算法產生永遠不會重複的一次性密鑰 (One Time Password)。這個一次性認證用的密鑰A,需掛載於主晶片發給W74M記憶體的指令中。另一方面,W74M記憶體也以相同動作產生的密鑰B,並比對密鑰A與密鑰B,若相同則W74M才繼續正常執行主晶片下的指令。

SHA-256為256位元的安全雜湊演算法(Secure Hash Algorithm),由美國國家標準技術研究所(National Institute of Standards and Technology,NIST)作為聯邦資料處理標準(Federal Information Processing Standard,FIPS)發佈的加密散列函數。此加密函數亦被用於處理金融交易,在實務中通常被視為無法破解的加密函數。

由於HMAC有一部份是由隨機數生成,因此HMAC每次生成的數值皆不同。前面所提到的攻擊模式,可以成功讀取傳統固定的UID,卻無法對W74M進行攻擊(根鑰是讀不出來的)。而且由於SHA-256非常安全,實際上攻擊者不可能透過解密HMAC找出根鑰,因此這種方法可說是零風險。

圖一顯示了W74M兩個重要的特性。第一,非揮發性的單向性計數器加強了記憶體安全認證的強度。當根鑰完成初始化時,計數器便依據主晶片的指令從零開始逐一增加,無法重設或歸零。此計數器具有只限於記憶體和主晶片才知道的唯一值。如果雙方的計數器值不相等,記憶體的HMAC數值就不會與主晶片計算值相同,這時W74M認證設備會將遭篡改的信號回報系統。

主晶片也可以使用上述安全認證原理,防止攻擊者篡改存在快閃記憶體中的韌體,藉此保護主機系統免於遭受惡意軟體的入侵。此外,也可防止攻擊者使用儲存不同韌體或是應用程式代碼的W74M晶片取代正版安裝在主機板上的W74M晶片,而達到防止產品直接被複製使用的風險。

圖一所示W74M另一個重要的特性是每個W74M晶片中有四組根鑰、HMAC Key、單向性計數器的組合,其中任何一組可用於對主晶片的認證,而另外三組則可用於認證不同階層的物件,如圖二所示。

20170927_Winbond_NT41P2 圖二:由W74M啟用的多層認證

每個認證通道皆能安全地儲存一組獨立的根鑰,對應所要認證的物件。換言之,每一個W74M都可以分別跟主機設備、網際網路閘道器、雲端服務綁定不同的根鑰,且皆保持秘密,任何一台設備都不會知道另一台設備之根鑰。

這種多層認證能力可以實現另一個用途,那就是用一顆W74M晶片認證4個不同元件的合法性,例如下列無人機的複雜系統:

  • 無人機之主要處理器
  • 可拆卸電池模組
  • 遙控器
  • 相機模組

安全、加密的驗證,使無人機製造商能確保品牌相機及原廠電池的限定使用,並防止未經授權的遙控器劫持飛行中無人機的可能性。

華邦的安全認證快閃記憶體(Authentication Flash)導入

如上所述,W74M提供四組非常嚴謹的安全認證功能,且根鑰儲存於外部設備無法讀取的一次性可編程記憶空間內。然而,W74M安全認證的實施和導入還需要系統的安全配置,才能確保從生產到成品的製造流程中,每組W74M和主晶片或其他階層物件內的根鑰為各階層專屬的秘密。雖然華邦電子可以提供W74M的根鑰預燒錄,但是絕大部份仍是由客戶端依據W74M客製化的根鑰配置在既有的生產流程中導入根鑰的綁定。

W74M系列安全認證快閃記憶體晶片,提供32Mb至1Gb之間各種容量,並採用標準封裝。這意味著W74M可直接使用在目前標準快閃記憶體的PCB腳位,減少物料成本及元件數的同時,提供最安全的認證級別。

W74M也可應用於不需快閃記憶體的多層物件認證,(產品型號W74M00AVSSIG及W74M00AVSNIG)。

更多關於產品訊息請點擊:華邦電子安全認證快閃記憶體