嵌入式应用软件安全性测试系统设计与实现

2018-04-07 19:10韩丽芳
电子设计工程 2018年5期
关键词:故障注入通信协议嵌入式

周 亮,张 楠,韩丽芳

(1.中国电力科学研究院北京100192;2.南京南瑞集团公司江苏南京210000)

随着嵌入式系统的广泛应用,对于安全问题逐渐引起了人们的关注,尤其是在航空航天领域中或者军事装备武器领域中,任何软件失效的发生,都会导致经济上发生巨大的损失,或者军事政治的严峻问题[1-2]。软件使用周期的延长需要软件安全性的测试,软件测试的目的就是使用较少的实例、时间、财力来实现尽可能多地找出软件中存在的潜在性故障,从而确保系统的质量。

传统测试系统存在测试性能低,故障不能灵活注入,测试速度慢等问题,不能满足软件测试高标准的要求,为此,提出了一种故障注入的嵌入式应用软件安全性测试系统设计。针对系统硬件,构造了安全性测试系统框架,该框架是由测试敏感器、实际执行组件、计算机控制器共同组成的,并通过数字仿真测试平台的建立,设置故障状态;建立测试环境通信渠道,使用GDB技术对故障底层机理进行调试,利用RSP通信协议实现程序间交叉测试,由此完成系统设计。通过实验验证表明,该系统设计具有更加全面的测试性能,且速度较快,实用性价值较高。

1 故障注入的嵌入式应用软件安全性测试框架

故障注入的嵌入式应用软件安全性测试框架是由测试的敏感器、实际执行的组件、计算机控制器等共同组成的,如图1所示。

图1 软件安全性测试系统硬件框架

由图1可知:该硬件设计主要实现的功能有:对敏感器采集到的数据进行处理;控制嵌入式应用软件运行的姿态;控制输出执行机构;通过总线完成数据的分类,并使串口与遥控的单元进行通信连接。针对嵌入式应用软件的运行特性,将变换所需要的物理条件进行输入,并模拟接口主要包括计算机通信的总线接口和串、并口以及为电源提供敏感数据、执行机构的数据、遥感控制的数据等。

为了构造软件运行环境,需要模拟CPU以及常用的芯片组合构建全数字仿真平台[3-4],如图2所示。

图2 全数字仿真平台

由图2可知:该平台建立的主要部件有:CPU模拟器、虚拟硬件模型块、仿真模型库、输入接口、记录接口、故障注入模型库。

1)CPU模拟器:用来模拟软件运行的真实环境,主要包括CPU、内外的存储单元。

2)虚拟硬件模型块:用来模拟总线的连接,串并口、芯片的采集。

3)仿真模型库:为软件运行提供动力学的仿真环境,并对模拟的软件进行实时控制。

4)输入接口:测试人员能够通过输入接口进行脚本的设置,从而控制软件安全状态。

5)记录接口:该部分的设计能够实现对测试进行实时的监控和分析,并对模型产生的数据、被测试软件的实时信息、覆盖率[5]进行处理。

6)故障注入模型库:该部分的设计主要是将故障信息进行输入。通过敏感器采集的异常数据对接收的信息进行设置,然后向被测试软件提供激励[6-7],通常将处理器、总线、外设设置为故障的状态,再根据该部分的设计作为运行环境的约束条件,从而完成硬件部分的设计。

2 安全性测试系统软件设计

根据上述硬件中设计的设备模型构造了一组可运行的虚拟设备[8],比如存储器和处理器。该硬件模型的设计能够在虚拟的机器中加入实例化的设备,并进行加载和卸载,通过模型引入配置文件来定义虚拟嵌入式系统。该文件的引入能够为软件设计提供可变的参数和配置的函数,进而实现处理器和内存容量的控制[9]。

进行GDB调试环境之前,需要加载该模块,并与主机之间的IP进行连接,如图3所示。

图3 测试环境通信渠道

基于上述的全数字软件开发平台中启动一个新程序的时候,必须执行如下命令:

在该运行环境中必须建立新的IP协议,其端口与平台中的端口一致。该过程主要包括GDB调试技术和RSP通信协议:

1)GDB技术对故障底层机理的调试

GDB是一个重要的程序调试工具,能够支持多种语言的编程,还可以根据不同的操作系统进行调用接口的选择。在嵌入式应用软件安全性测试系统中选择系统调用,该系统的选择能够为执行进程的控制提供支持,使用GDB调试技术能够实现:按照用户自定义要求启动目标程序;使被调试的程序在相应位置处停住;当程序停住后,可以检查目标程序的安全运行状态;通过动态的实施来改变程序的执行环境。

GDB可用于对故障底层机理的调试,检测软件的安全性,如图4所示。

图4 GDB调试机理

由图4可知:1表示创建目标程序进程;2表示内核程序的创建;3表示将目标程序设置为可追踪的;4表示目标程序被执行;5表示目标进程唤醒注入;6表示请求目标程序被改变;7表示内核改变目标进程并恢复执行能力;8表示目标进程结束;9表示故障注入进程结束。

2)RSP通信协议实现程序间交叉测试

RSP通信协议能够为GDB调试器与远程目标程序之间的通信提供高级的秘密协议。如果GDB调试结束能够实现RSP通信协议,那么该调试技术就能够连接到目标机,从而实现程序间的交叉测试[10-11]。

RSP通信协议具有广泛的连接方法,主要包括:TCP/IP、串口、管道,适用于嵌入式应用软件测试系统的交叉安全性能检验。该通信协议是一种简单的编码协议[12-13],采用的是半双工通信的方法[14-15],其报文如下所示:

$ 字节流 # 校验和

当接收者接到完整的RSP通信协议信息包消息,那么只需要回复“-”或者“+”就可以表示正确无误的接收到安全测试通过的消息,或者接收到失败的消息[16]。

3 实验

为了验证上述系统设计的合理性,进行了如下的实验。

3.1 实验环境

选择某卫星轨道的应用性软件,使该软件在数字平台上运行,并模拟卫星围绕行星飞行的状态,根据接收到的数据进行运行轨道的绘制。其中需要被测试的硬件主要有:CPU模拟器、处理器、串口。

3.2 实验结果与分析

嵌入式应用软件在正常环境中各个执行程序运行的结果如图5所示。

图5 正常环境运行绘制结果

如果使用本文设计的故障注入式系统来模拟粒子事件,进而改变程序运行中各个重量信息的计算,通过观察在正常环境下运行的结果来判断应用性软件程序是否具有安全性。

启动本文设计的故障注入式系统之后,自行的选择维护故障类型,加载程序维护的同时执行故障注入,结果如图6所示。

图6 故障注入后运行绘制结果

由图6可知:通过对系统注入故障能够改变硬件存储器的重力状态,但是被测试的软件仍然具有正常工作的能力,只是在绘制中受到了干扰。因此,本文设计的系统能够模拟嵌入式应用软件在运行时所处的环境,并融合故障注入,动态测定硬件、软件发生的故障类型,促使嵌入式应用软件的执行,与传统的测试行为和功能相比,具有更高的软件测试性能。

构建完整的测试框架之后,针对故障类型测试过程如下所示:

1)测试需求分析,获取故障模式和测试点,审查被测程序是否具有完全覆盖软件的要求,比如:针对关键性的软件,是否需要单独测试;针对设计中出现的安全性结构、冗余是否具有特殊项需要被测试;针对中断问题,是否具有未中断、中断标志处理等针对性的问题出现;故障类型中,是否需要特殊处理等。

2)根据安全性需求的分析,从故障注入数据库中选择故障的类型,设置相应的时间、故障点,选择适当的时机由输入接口向系统注入故障。

3)测试结果保存与分析,如果注入为输入故障,那么通过保存的结果就可以掌握被测试软件异常输入是否执行了正确的行为;如果注入为运行故障,那么通过对被测试软件的结果评估,就可以验证该系统的有效性,进而实现软件能够在恶劣环境中克服的能力。

4)回归测试,如果软件中具有缺陷问题,那么需要对更改后的软件进行重新确认。

采用上述方法对故障类型进行测试,结果如表2所示。

表2 注入故障结果

由表2可知,通过本文的设计,能够模拟软件运行的环境,可以方便灵活注入异常故障,促进软件能够快速的达到故障状态,进而快速完成软件测试。

3.3 实验结论

文中设计的系统能够模拟嵌入式应用软件在运行时所处的环境,并融合故障注入,动态测定硬件、软件发生的故障类型,促使嵌入式应用软件的执行,与传统测试行为和功能相比,具有更高的软件测试性能;根据模拟软件运行的环境,可以方便灵活注入异常故障,促进软件能够快速的达到故障状态,进而快速完成软件测试。

4 结束语

确保应用性软件能够在恶劣环境中正常运行、避免失效,是生命周期的关键所在,为此,进行验证就需要模拟在实际运行环境中出现的各种异常现象。故障注入的嵌入式应用软件安全性测试能够融合故障模型,激励实现有效的故障注入,进而获取执行的结果,与传统的系统设计相比,本文设计的嵌入式应用软件安全性测试系统具有更加全面的测试性能,实用性价值较高。

参考文献:

[1]胡宝,张文,李先彬,等.智能变电站嵌入式平台测试系统设计及应用[J].电力系统保护与控制,2017,45(10):129-133.

[2]徐志刚.基于嵌入式的火灾检测系统设计[J].现代电子技术,2017,40(10):168-171.

[3]刘庆,何志琴,边鹏飞,等.基于嵌入式技术的农药残留快速检测系统设计[J].电子器件,2015(6):1368-1373.

[4]林永峰,陈亮.面向安全性分析的嵌入式软件测试方法研究[J].现代电子技术,2016,39(13):80-83.

[5]刘飞,蒲海峰,李柯达,等.一种弹载嵌入式软件数学模型测试方法的设计与实现[J].弹箭与制导学报,2016,36(3):25-27.

[6]韩德强,冯云贺,王宗侠,等.Simics环境下故障注入的研究与实现[J].电子技术应用,2015,41(1):21-24.

[7]仵志鹏,黄志球,王珊珊,等.一种基于故障扩展SysML活动图的安全性验证框架研究[J].计算机科学,2015,42(7):222-228.

[8]胡倩,王超,王海霞,等.基于Simics的系统级故障注入平台[J].计算机工程,2015,41(2):57-62.

[9]王飞,沈国华,黄志球,等.一种结合线性时序逻辑和故障树的软件安全验证方法[J].计算机科学,2015,42(12):71-75.

[10]黄传林,黄志球,胡军,等.基于扩展SysML活动图的嵌入式系统设计安全性验证方法研究[J].小型微型计算机系统,2015,36(3):408-417.

[11]季玉香,唐晓强.嵌入式模块自动测试系统软件设计[J].电子设计工程,2015,23(23):116-118.

[12]胡凤忠,高金定,龙贻建.嵌入式运动目标检测及跟踪系统的设计与实现[J].计算机测量与控制,2016(12):133-135.

[13]张舜尧.嵌入式车载行人检测系统的设计及应用[J].电子技术与软件工程,2017(6):195.

[14]吴志强,印娟,朱欣华.MEMS加速度计嵌入式批量自动化测试系统设计[J].自动化仪表,2015,36(9):77.

[15]夏佳佳,邹毅军,周江伟,等.嵌入式软件自动化测试系统研究[J].计算机测量与控制,2016,24(4):22-25.

[16]林验森.软硬结合的嵌入式软件在线测试系统的探究[J].无线互联科技,2015(10):59-60.

猜你喜欢
故障注入通信协议嵌入式
模拟训练装备故障注入系统研究
SM4算法前四轮约减轮故障注入分析
采用修改-回放原理的1553B故障注入方法
搭建基于Qt的嵌入式开发平台
基于Z-Stack通信协议栈的红外地温采集电路设计
嵌入式软PLC在电镀生产流程控制系统中的应用
列车MVB总线故障注入研究
基于DMX512通信协议的多路转发器设计与研究
基于NS-3的PLC多频通信协议仿真平台设计与实现
Altera加入嵌入式视觉联盟