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

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

浏览人次:【1699】
  

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


    相关文章
    减速发力驱动智慧化 国内外大厂竞推传动解决方案
    台湾太阳能「脱惨」还要几步路
    汉诺威EMO 2019展前预览 打造创新技术与应用平台
    未来汽车紧急传呼系统
    功能安全(Functional Safety)在八位元微控制器的实现及应用
    comments powered by Disqus
    相关讨论
      相关新品
    Arduino Motor Shield
    原厂/品牌:RS
    供应商:RS
    產品類別:
    mbed
    原厂/品牌:RS
    供应商:RS
    產品類別:
    Arduino
    原厂/品牌:RS
    供应商:RS
    產品類別:
      相关新闻
    » 思科创开发新创材料 实现5G互联世界
    » 贸泽电子持续扩展总部 推动全球布局
    » 广和通选用是德科技5G测试解决方案加速开发PC的5G模组
    » 「震守家园 民生公共物联网」主题展 展示地震防灾科技产业链
    » 2019美国生技展落幕 政府民间齐心推升台湾生医能见度
      相关产品
    » 戴尔科技推出第10代Latitude行动商用PC
    » 英飞凌新款 80 V DC-DC 降压 LED 驱动 IC 提供高调光效能
    » 意法半导体推出新一代宽电压DCDC开关稳压器 性能稳定电压输出灵活
    » 明纬新增符合DALI2的HBGC-300-DA系列版本
    » 魏德米勒工业分析软体自动化机器学习 使数据分析生成有形模型
      相关资源
    » Power Management Solutions for Altera FPGAs

    AD

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

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