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

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

浏览人次:【1467】
  

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


    相关文章
    新一届技术企业家从CRL加速器专案毕业
    为电子元件制造厂产量提升44%之秘桫
    NB-IoT设计的不简单任务
    测试难题一网打尽 逻辑分析仪不可或缺
    利用数位分身即时预测钻油机的效能
    comments powered by Disqus
    相关讨论
      相关新品
    Arduino Motor Shield
    原厂/品牌:RS
    供应商:RS
    產品類別:
    mbed
    原厂/品牌:RS
    供应商:RS
    產品類別:
    Arduino
    原厂/品牌:RS
    供应商:RS
    產品類別:
      相关新闻
    » 新能源汽车需求高涨 各国政策支持将成汽车业发展核心
    » 台积电:5G与高阶智慧手机将推动下半年业绩
    » 东芝记忆体10月更新名:「??侠(Kioxia)」
    » TrendForce:Q3全球太阳能模组需求暂时放缓 全年仍有??突破120GW
    » 科技部长陈良基与美方科技高层会谈 拓展台美科技合作新方向
      相关产品
    » Maxim发布高效率低EMI的LED驱动器 效率高达90%
    » 康隹特推出 10 款嵌入式边缘计算模组
    » 大联大世平推出弘凯光电ICLed ISCxxxx / ISAxxxx / ISDxxxx系列方案的气氛灯应用方案
    » 魏德米勒新一代INSTA-POWER开关电源
    » Basler推出新款 3D 相机blaze
      相关资源
    » Power Management Solutions for Altera FPGAs

    AD

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

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