帳號:
密碼:
最新動態
產業快訊
CTIMES / 文章 /
非對稱式Security Boot/Security Update的實作
 

【作者: 顏睿余】   2019年06月25日 星期二

瀏覽人次:【11196】

Security Boot是一種用於確保系統內運作的應用程式碼被授權的方法,通常由設計與構建系統的廠商提供。通過確保應用程式碼為正確的授權版本可以防止不可預測的系統程式造成機器性能異常、安全性受損甚至財產損失。大多數電子系統使用可編程非揮發性存儲器 (Flash) 存放其應用程式碼 (Application Code),無論大小都可以利用Security Boot保護該程式碼不被惡意竄改。本文說明Security Boot的基本觀念,同時深入地介紹其處理方式並提供解決方案。


Security Update流程


前置作業:下圖紅色方框所代表的角色為程式碼簽發者(Code Publish),其包含一組唯一的公鑰(Public Key)和私鑰(Private Key)



1.要進行升級的應用程式(Firmware update)應該要先透過Hash Function(例如SHA256)獲取其Digest (此步驟就如同用XOR計算出程式碼的Checksum,只是SHA256 Digest為256-bit遠大於Checksum,具有絕對唯一性)。


2.接著程式碼的簽發機構(Code Publish)需要針對該程式碼的Digest透過其私鑰進行“加密” (ECDSA SIGN),加密過後的資料我們稱作數位簽章(Digital Signature)。因為擁有該私鑰即擁有權力簽發正式版本程式碼的數位簽章,故一般而言私鑰將會被存放於硬體保護的晶片裡(如ATECC608A),避免對外流傳。


3.將更新應用程式與數位簽章 (Data to Send)透過有線或是無線的方式傳送至待更新的裝置(Device to Upgrade)。進行更新之前,待更新裝置必須驗證此應用程式與數位簽章的正確性。


4.在非對稱的算法中,每個存在的私鑰會有一個相對的公鑰存在,其私鑰用來“加密”(ECDSA SIGN),公鑰則用來“解密” (ECDSA VERIFY),故更新裝置中應該要預先配備相對的公鑰。為了能限制僅搭配特定的程式碼簽發機構(Code Publish)作“解密”,其公鑰必須存放在一次性燒錄的記憶體中(OTP),避免被更換為駭客私鑰的對應公鑰。


5.更新裝置(Device to Upgrade)在收到更新程式(Firmware update)後即先透過Hash function(例如SHA256)獲取其Digest(如同第1步驟),為確認該Digest是否正確,必須透過公鑰對同步收到的數位簽章作解密並判斷是否符合更新程式的Digest (ECDSA VERIFY)。若是符合,則該更新程式允以更新該裝置。反之,假設該更新程式並非官方發行程式碼(沒有透過Code Publish簽發數位簽章),經過第5步驟的驗證,因為其計算出來的Digest將不同於透過公鑰所解密的數位簽章,該程式碼則不予運作。


Security Boot流程


如同Security Update流程第5步驟,開機後即先透過Hash Function(例如SHA256)計算應用程式之Digest,接著確認該Digest是否正確:透過公鑰對數位簽章作解密並判斷是否符合該應用程式的Digest (ECDSA VERIFY)。


運行Security Update之裝置需求


1.一次性燒錄的記憶體


為了能夠完成Security Update/Security Boot流程,其中步驟4提到裝置必須預先配備公鑰於一次性燒錄的記憶體中(OTP),目前市售MCU提供OTP功能的並不多,或者價錢相對不便宜。


2.進行ECDSA VERIFY運算


步驟5中提到需要對應用程式Digest與程式碼數位簽章利用OTP區的公鑰進行ECDSA VERIFY運算。該運算量相當龐大,如下圖若以Cortex®-M0+進行運算將耗費5秒。開機若需要耗費如此多的時間將不容易被使用者接受。



Microchip提供ATECC608A可外掛支援Security Boot 功能


ATECC608A提供基於硬體的密鑰儲存與加密算法加速器,用以實現各種身分驗證和加密協議,基於落實Security Boot。使用者能預先將公鑰存放於ATECC608A的Secured EEPROM中,並透過ECDSA 硬體加速器進行Digest和數位簽章的驗證運算(Verify)。而運算結果亦可以透過輸出保護密鑰(IO Protection Key)輸出,駭客無法判讀或進行複製。相關產品資訊請參考官方網站:


  • ATECC608A產品頁面https://www.microchip.com/wwwproducts/en/atecc608a

  • ATECC608A開發工具 https://www.microchip.com/DevelopmentTools/ProductDetails/DM320109


  • 作者 顏睿余 Microchip應用工程師


    相關文章
    AI高齡照護技術前瞻 以科技力解決社會難題
    3D IC 設計入門:探尋半導體先進封裝的未來
    SiC MOSFET:意法半導體克服產業挑戰的顛覆性技術
    意法半導體的邊緣AI永續發展策略:超越MEMS迎接真正挑戰
    CAD/CAM軟體無縫加值協作
    comments powered by Disqus
    相關討論
      相關新聞
    » 史丹佛教育科技峰會聚焦AI時代的學習體驗
    » 土耳其推出首台自製量子電腦 邁入量子運算國家行列
    » COP29聚焦早期預警系統 數位科技成關鍵
    » MIPS:RISC-V具備開放性與靈活性 滿足ADAS運算高度需求
    » 應材於新加坡舉行節能運算高峰會 推廣先進封裝創新合作模式

    
    刊登廣告 新聞信箱 讀者信箱 著作權聲明 隱私權聲明 本站介紹

    Copyright ©1999-2024 遠播資訊股份有限公司版權所有 Powered by O3  v3.20.2048.3.145.37.219
    地址:台北數位產業園區(digiBlock Taipei) 103台北市大同區承德路三段287-2號A棟204室
    電話 (02)2585-5526 #0 轉接至總機 /  E-Mail: webmaster@ctimes.com.tw