发布企业信息

STM32F103RB的 Bootloader软件安全设计方案

作者:  信息来源:无忧机械电子  2009-10-27

字体大小:    

引 言随着嵌入式系统产品的发展,其功能趋向系统化、复杂化,不同场合和具体应用对产品的升级维护提出了更多的需求。Bootloader引导应用程序结构的嵌入式软件,在产品升级和维护过程中只需提供升级程序包由Bootloader在升级模式下更新产品的应用程序,即可快捷地实现产品升级。嵌入式系统处理器的有限硬件资源和高效率要求使...

  引 言

  随着嵌入式系统产品的发展,其功能趋向系统化、复杂化,不同场合和具体应用对产品的升级维护提出了更多的需求。厂商针对这一问题普遍采用。Bootloader引导应用程序结构的嵌入式软件,在产品升级和维护过程中只需提供升级程序包由Bootloader在升级模式下更新产品的应用程序,即可快捷地实现产品升级。

  一直以来,嵌入式软件的安全和知识产权保护是厂商面对市场竞争着重关心的焦点。嵌入式系统处理器的有限硬件资源和高效率要求使得其难以应用复杂和大运算量的加密算法,对代码的保护更多依赖于硬件,这往往具有很多潜在的安全隐患。本文就.Bootloader引导应用程序结构的软件在STM32F103RB芯片上应用时,遭到篡改攻击后所面临的代码泄漏风险进行研究和验证,并提出了改进Bootloader的安全设计方案,加强代码的安全性。

  1 篡改攻击风险研究

  1.1 研究的意义

  嵌入式系统产品的开发往往成本高、开发周期长,一旦产品中的嵌入式软件被抄袭或盗窃都将给厂商带来巨大的损失。随着嵌入式处理器设计技术的发展,对片内Flash中的代码保护也日渐完善。芯片在保护状态下,可以完全禁止通过调试接口或SRAM中运行的程序读取Flash内容,但产品阶段保存在Flash中的代码运行时对自身的读取是允许的,如果非法使用者通过特殊手段篡改了Flash中的部分代码为非法读取程序,并使之在Flash中成功运行,将使产品代码发生部分泄漏,这就是产品面临的篡改攻击风险。针对这一风险的研究在实际应用中显得十分重要。

  ST公司推出的STM32系列微处理器采用ARM新一代Cortex-M3内核,其中增强型的STM32F103RB具有72 MHz主频、20 KB片内SRAM、128 KB片内Flash以及丰富的接口资源,可以很好地满足广泛的嵌入式产品的应用需求。较低的芯片价格和简单的开发方式使之应用前景非常广阔,对该芯片上代码的安全研究也具有深远意义。

  1.2 风险研究

  Bootloader引导应用程序结构的嵌入式软件可以满足产品功能升级和维护的需求,在实际应用中被厂商普遍采用。Bootloader程序是在系统上电复位后在Flash中首先执行的一小段代码,其基本功能模块如图1所示。

  对于具有Bootloader引导应用程序结构的嵌入式软件,Bootloacler部分和应用程序是相对独立的。产品有了升级版本后,用户可以得到产品和升级程序包。在对产品的篡改攻击中,一旦Bootloader代码泄漏,非法使用者通过升级模式更新应用程序部分,将可以复制产品的全部软件代码,这就使得产品被抄袭的潜在风险急剧增大。在STM32F103RB上进行的实验也证明了抄袭的可能性。

  2 基于STM32F103RB芯片的风险验证

  STM32F103RB芯片对片内Flash的保护通过特殊位置的Option Bytes读写保护控制字实现。读、写保护有效时将禁止调试接口和SRAM中运行的程序对Flash读、写操作。芯片特殊设计为:去除读保护时,首先整片擦除片内Flash,从而销毁产品软件代码;写保护的去除并不影响Flash中代码的完整性;读保护有效时,Flash的前3片区写保护自动有效,防止中断向量表被非法修改。

  实验在STM32F103RB的开发板上进行,在前3片区写入Bootloader程序代码后,利用升级程序包将应用程序下载至应用程序片区。检验程序功能正常后置芯片读保护和所有片区写保护有效,从而得到产品阶段的芯片。对芯片的篡改攻击风险验证实验流程如图2所示。

  用于篡改攻击的软件包括非法读取Flash内容并通过串口输出的程序和用于跳转到非法读取程序的指针。篡改攻击的实现原理是芯片的读、写保护只包括主Flash区域,对Option Bytes区域的擦除操作可以去除无自动写保护片区的写保护状态,而读保护仍然有效。在SRAM中运行的程序可以使芯片转变为代码完整而应用程序区域无写保护的状态。一般情况下,产品为了保持升级的空间,软件没有占据整个Flash空间且采取自顶向下的顺序摆放。为了最大程度保持原有应用程序,实验中将非法读取程序写入Flash的尾部片区,并将用于跳转至非法程序的指针自底向上遍历Flash地址尝试应用程序的入口地址。

  实验的结果通过PC端接收到非法读取程序输出的代码数据验证,读取的过程是芯片上电复位后自Flash起始地址启动执行口,Bootloader在运行模式下将跳转至应用程序入口地址执行。在非法跳转指针移动过程中,应用程序入口地址被跳转指针覆盖时,非法读取程序将得到执行机会。所进行的实验结果如图3所示。

  通过实验,验证了当部分应用程序内容被修改时,Bootloader可以正常进入运行模式,在放置的跳转指针尝试至应用程序函数入口地址时,程序可以跳转至非法读取程序执行读取命令,得到Bootloader程序和被部分修改的应用程序代码。复制到新的芯片中后运行启动Bootloader升级模式,将升级程序下载升级程序包覆盖应用程序区域,就得到了完整的Bootloader程序和应用程序代码。

分页: [1] [2] [下一页] 

推荐图文

电子热点图文

  • 新型太阳能充电器的研究与设计
  • 基于EDA的交通灯控制系统
  • 电子元件基础知识--半导体三极管
  • 半导体业界的HKMG攻防战:详解两大工艺流派之争

电子风云人物

Copyright © 2004 51base.com Inc. All rights reserved.

无忧基地 版权所有│粤ICP备06098418号│XHTML | CSS

客服:+86-755-2212 2202 工作时间:周1~5 10点~16点

感谢中国网络提供带宽支持

银河盘口在线平台