账号:
密码:
CTIMES / 文章 /   
非对称式Security Boot/Security Update的实作
 

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

浏览人次:【1346】
  

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运算。该运算量相当庞大,如下图若以CortexR-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应用工程师


    相关文章
    传统马达厂发挥关键优势 拓展驱动整合应用
    迈萃斯之质量竞争力 宋贤德:将藉产品模组化来提升产量与品质
    马达与减速机厂商亟待转型 从OEM设备升级协助智慧化
    台湾宽能隙技术专家 瀚薪科技聚焦SiC与GaN元件开发
    智慧型手机指纹辨识发展分析
    comments powered by Disqus
    相关讨论
      相关新品
    Arduino Motor Shield
    原厂/品牌:RS
    供应商:RS
    產品類別:
    mbed
    原厂/品牌:RS
    供应商:RS
    產品類別:
    Arduino
    原厂/品牌:RS
    供应商:RS
    產品類別:
      相关新闻
    » Digi-Key上海办事处乔迁新址
    » 社子大桥化身亚洲「桥」楚 台法携手监测市民安全
    » 北市府前进华府行销智慧城市经验 号召国际夥伴加入GO SMART
    » Littelfuse新电源半导体装配工厂破土动工
    » TrendForce:日韩贸易战与东芝跳电影响DRAM/NAND短期价格走势
      相关产品
    » igus无尘室等级的 chainflex 耐弯曲电缆具 IPA 证书
    » 大联大推出德州仪器AWR1642的77G毫米波雷达盲点侦测方案
    » Bourns推出新型抗硫化固定电阻系列
    » ROHM研发内建MOSFET升降压DC/DC转换器BD83070GWL
    » Microchip推出低功耗FPGA视讯和影像处理解决方案
      相关资源
    » Power Management Solutions for Altera FPGAs

    AD

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

    Copyright ©1999-2019 远播信息股份有限公司版权所有 Powered by O3
    地址:台北市中山北路三段29号11楼 / 电话 (02)2585-5526 / E-Mail: webmaster@ctimes.com.tw