设为首页  收藏
  • 网站首页
  • 岭南通简介
  • 客户服务
  • 产品中心
  • 产业联盟
  • 行业动态
  • 关于我们
  • 岭南通研究

    关于一卡通联机终端程序远程升级方法的研究

    发布时间:2016-02-03 16:35:27

    方秋水,徐锋,何建兵

    发表于《卡技术与安全》2015年8月刊

    摘要:随着各地公交一卡通应用的兴起,一卡多用和跨区应用的技术受到了行业领域的关注。文章通过对传统一通卡终端程序在应用更新过程中存在的不合理现象进行分析,提出一种IAP在线一卡通终端的远程升级方案,该方案具有硬件要求不高、维护及升级成本低等优势,有望成为一卡通行业终端升级的解决方案。
    关键词:一卡通;安全验证体系;IAP;一卡通终端升级


    1 引言
    IC卡凭借其应用简单、便于携带的优点,目前已被广泛应用于多个领域。由于不同应用场景,对终端程序的要求也有所相同。如何根据业务需求,快速更新一卡通兼容终端机具的应用程序[1],成为目前一卡通行业普遍关注的技术问题。
    传统的终端程序更新需要对原有设备进行拆卸,容易损坏电路板,而且更新过程繁琐、损耗较大。而远程终端应用程序更新方法主要通过无线网络进行,具备较强的可操作性,能有效延长终端的使用周期,同时改善性能、降低成本,因此越来越受到重视。


    2 远程IAP升级技术
    IAP(In-Application Programming),即在线应用编程技术,是一种对通过微控制器的对外接口(如USART,IIC,CAN,USB,以太网接口甚至是无线射频通道)对正在运行程序的微控制器进行内部程序的更新的技术。该技术能在不改变硬件设计的前提下,通过软件程序实现上电复位通过外围硬件触发等实现在线升级[2]。在应用编程(IAP)技术为系统在线升级和远程升级提供了良好的解决方案,也为数据存储和现场固件的升级带来了极大的灵活性。
    IAP函数是固化在微处理器内部FLASH上的函数代码,最终的用户程序可以直接通过调用这些函数来对内部FLASH进行擦除和编程操作。具备IAP功能的固件包含两个部分,Bootloader程序和App程序。这两个程序分别存放在STM32内部 FLASH的不同地址范围,一般从最低地址区开始存放Bootloader,紧跟其后的就是APP程序。Bootloader程序和App程序的项目代码都同时烧录在微处理器的内部Flash中,当芯片上电后,Bootloader程序的项目代码首先开始运行,待Bootloader成功加载后,即可进行APP升级,具体操作如下图1所示:


     
    图1 APP升级流程原理图


    3 基于IAP的一卡通终端程序远程升级技术
    基于一卡通安全验证体系的终端程序远程升级方案采用基于软件触发的IAP在线升级技术,终端通过串口或者USB等接收升级代码,用户应用程序通过修改中断服务程序、添加或改变FLASH系统应用参数区来更新标志位[3]。当系统需要进行升级时,使用特定命令报文,改变升级标志位,使升级系统进入Bootloader,从而完成应用代码区的更新操作。
    (1)一卡通终端模块的功能设计
    一卡通终端IAP在线升级流程需要调用四个模块,这四个模块分别实现不同功能:(1)数据收发模块:实现与IAP服务器通信,接受后台的控制命令、数据传输、反馈信息等;(2)FLASH擦除与写入操作模块:先擦出加载的用户应用代码区域,将接收的数据写入指定FLASH区域,实现APP的更新。此模块为IAP的关键;(3)校验模块:对数据接收缓存区的数据与FLASH写入的数据进行循环冗余校验码(CRC32)校验,保证用户应用代码区域代码更新加载的准确性、安全性;(4)差错控制模块:采用ARQ 等重传机制保证写入Flash的代码的高准确率。
    (2)MCU的对接及升级流程设计
    通过调用以上四个模块,可以实现对MCU的升级,如图2所示。


     
    图2  IAP在线升级流程模块调用示意图


    IAP在线升级的主要流程可大致描述如下:

     
    图3 基于IAP在线升级流程图


    值得注意的是,在网络升级过程中,有可能会出现阻塞或短时断开状态等通信故障或者设备故障,导致升级文件数据传输中断或升级会话中断。如果在重建升级会话链接后,重新下发全部升级文件数据,这就意味着终端需要重复下载大量升级文件数据,在实际无线网络环境的制约下,将严重影响终端设备程序升级的效率[4]。
    因此,需要采用ARQ等重传机制保证写入Flash的代码的高准确率。一旦某次升级会话链接因故障而中断,则终端设备将无法接收到完整、正确的升级文件数据。在上位机重建升级会话后,终端设备向上位机返回“设备升级信息”,里面包含上一次升级失败、无效数据包、未接收数据包等信息。上位机根据这些信息组织相应的数据包,从上一次升级会话的断点处继续下发升级文件数据包,而不需要重新下发全部升级文件数据包,从而提高上位机下发升级文件数据的效率和升级文件数据的利用率。
    引导程序通过检测该更新升级标记的值,进一步判断应用空间的程序是否需要升级。本方案将升级标志位设在Flash系统参数区的某个地址中。程序升级更新标志位在应用程序接收到升级命令时擦除。若在引导程序中检测该标志不为0,就一直处于升级状态,通知上位机重传,直到最后升级成功时都清0为止。


    4 升级方案的关键要素及升级建议
    在线升级需要考虑的关键要素包括[5]:(1)安全性:升级代码需要完整准确的写到 Application Area,另外还要考虑升级过程中断电、强干扰等意外事件;(2)保密性:升级过程有可能被商业竞争对手入侵,因此需要采取加密算法;(3)灵活性:终端采用的内部FLASH芯片只有256K大小,IAP会挤占Flash空间,因此应该尽量减小IAP 占用的 FLASH 大小。
    针对上述要求,本升级方案采取了以下多种措施以保障升级过程,主要包括:(1)采用CRC32循环冗余检验进行数据校验;(2)采用3DES数据加密,对终端和升级文件双向认证,对代码进行保护;(3)采用断点续传,保证升级数据完整性、正确性和高效率;(4)设置系统更新升级标志位;(5)与上位机的通讯协议采用岭南通核心模块相同的协议,即龙杰通讯协议;(6)采用软件触发即检测升级标志实现跳转IAP功能;
    而在代码保护方面,本方案主要实施了以下两个方面的措施:(1)程序下载时的数据采用加密密钥3DES进行加密。设备收到数据进行解密并校验通过,然后写入程序区;(2)使用FLASH芯片自带的保护机制,页写入保护、读出保护,可以防止非法读出,同时对闪存区的页加以保护,防止在程序崩溃的情况下不被以外的改变。


    5 总结
    本方案采用基于软件触发的IAP技术进行远程升级,具有硬件要求低,维护升级成本低、方便快捷等优势,同时方案中采用了CRC32循环冗余校验、断点续传、双向认证等多种机制保证数据传输和写入的可靠性和安全性。由于一卡通联机终端的硬件采用了256K的内部FLASH,对FLASH空间要求显得尤为紧凑,因此本方案没有采用先备份后下载的IAP升级方案。但是在具体实现过程,本方案采用了升级标志位、断点续传等方法保证每次启动,通过检测标志位、确认是否调用IAP的方式引导终端再次升级,使整个升级过程变得安全可靠。
    6 参考文献
    [1]欧昊,刘强,林源. 一卡通交易模块程序安全性验证的方法研究[J]. 卡技术与安全, 2014,03(149):49-52.
    [2]许文杰,丁志冈,张泉等. 基于ARM 处理器的IAP设计及应用[J],计算机应用与软件,2009,03:68-70.
    [3]蒋建春,王正树,冯辉宗,刘涛等. 基于软件触发的在应用编程在线升级技术的设计与实现[J],计算机应用,2014,06(32):1721-1723.
    [4]黄绳雄,张荣芬.嵌入式设备远程在线升级技术的研究[J]. 电子设计工程,2012,20(239):172-174.
    [5]刘志刚,郭艳颖.一种关键点控制的嵌入式设备自动在线升级[J]. 现代电子技术,2012(08):21-24.