帳號:
密碼:
CTIMES / 文章 /   
非對稱式Security Boot/Security Update的實作
 

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

瀏覽人次:【4853】
  

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應用工程師


    相關文章
    在Google Cloud IoT Core雲端實現安全聯網開發
    高彈性高靈活 模組化儀器滿足各種量測需求
    「打造機聯網 完整架構你的IIoT應用趨勢研討會」會後報導
    UPS中配備LSIG斷路器的使用建議
    深度學習在機器視覺領域的機遇與挑戰
    comments powered by Disqus
    相關討論
      相關新品
    Arduino Motor Shield
    原廠/品牌:RS
    供應商:RS
    產品類別:PC Board
    mbed
    原廠/品牌:RS
    供應商:RS
    產品類別:PC Board
    Arduino
    原廠/品牌:RS
    供應商:RS
    產品類別:PC Board
      相關新聞
    » 是德與IDT合作 共同分析5G毫米波波束成形積體電路
    » 贏進新南向 2019新南向電子產業地圖登場
    » 台灣代表團出席泰國安全技術展覽會 行銷台灣科技
    » 工研院iRoadSafe勇奪2019年ITS世界大會產業成就獎
    » 甲骨文最新調查:64%員工信任機器人更勝於老闆
      相關產品
    » Arm全新矽智財為主流市場帶來智慧沉浸式體驗
    » 工業4.0中的快速和安全 長行程中使用igus智慧供能系統
    » 新型扁纖填料射出 現在可以模擬了
    » 意法半導體推出64通道高壓開關IC 提升醫療與工業影像系統性能
    » DELO推出緊湊型LED固化燈DELOLUX 503
      相關資源
    » Power Management Solutions for Altera FPGAs

    AD

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

    Copyright ©1999-2019 遠播資訊股份有限公司版權所有 Powered by O3
    地址:台北市中山北路三段29號11樓 / 電話 (02)2585-5526 / E-Mail: webmaster@ctimes.com.tw