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

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

浏览人次:【4745】
  

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应用工程师


    相关文章
    UPS中配备LSIG断路器的使用建议
    深度学习在机器视觉领域的机遇与挑战
    机器视觉引导CTA计画第一架天文??远镜原型
    电力资源正危急 让我们明智使用它
    展??智慧显示制造大势 一窥纵横整合新契机
    comments powered by Disqus
    相关讨论
      相关新品
    Arduino Motor Shield
    原厂/品牌:RS
    供应商:RS
    產品類別:
    mbed
    原厂/品牌:RS
    供应商:RS
    產品類別:
    Arduino
    原厂/品牌:RS
    供应商:RS
    產品類別:
      相关新闻
    » 45位年轻学者获108年科技部吴大猷纪念奖 2位外籍人士入选
    » 智慧能源周闭幕 国外买主成长10%
    » 数位化及AI时代下的私家住宅 聚碳酸窬材料应用的最隹时机
    » 是德5G符合性测试解决方案 获必维国际检验集团选用
    » 跟Windows 7说觚觚 终止支援最後倒数88天
      相关产品
    » Basler AG与drag and bot GmbH合作开发机器人程式整合专案
    » u-blox最新公尺级定位技术 增强GNSS效能
    » 英飞凌雷达技术助力Google Pixel 4实现手势控制功能
    » 意法半导体推出下一代支付系统晶片 提升性能和保护功能
    » 贸泽供货ADI ADcmXL3021三轴震动感测器 适用於条件式监控
      相关资源
    » Power Management Solutions for Altera FPGAs

    AD

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

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