一种面向智能设备控制指令的系统级安全防护方法
技术领域
本发明属于信息安全中系统安全领域,具体涉及一种系统级的控制指令防护方法,该方法保证进入智能设备的控制指令在其生命周期过程中(从进入系统到控制到具体的硬件)不会因为恶意任务的存在而遭受篡改。
背景技术
智能设备是具备硬件(机械、传感)、智能和连接能力的综合性产品,是硬件功能从本地向互联网的延伸,互联功能也使设备的一些功能在设备之外实现,即云端,这也使得用户对智能设备实现远程控制,极大的扩展了智能设备的应用场景。智能设备相比于智能终端(如智能手机)而言计算能力相对较低,硬件配置也相对较为薄弱,不过随着智能设备产业整体的发展,借助于云端协助处理功能的实现,其用户体验和计算能力也正逐渐提升。动态加载功能便是一个典型的例子,该功能允许设备通过云端动态地下载部分执行代码到本地智能设备中运行,而不需要像传统的OTA形式一样需要从云端加载整个系统镜像。这种方式极大的扩展了智能设备的功能,厂商不需要把自己的系统全部开源给开发者,而仅仅需要提供给开发者一些开发工具,开发者如果需要为设备添加功能,也可以在不改变系统原有功能的基础上继续集成新的方法。
然而,这种模式在给予厂商和开发者便利的同时,也给予攻击者以可乘之机。攻击者可以通过这种方式动态的注入一些恶意代码,对系统施加影响。智能设备不如智能终端一样拥有MMU等高端的硬件安全单元,通常不具备虚拟内存等任务隔离方案。利用这一缺失,虽然远程控制指令可以“安全”(使用SSL等密码学方法)的进入设备,但从其进入设备开始,便面临恶意代码的威胁,到具体控制某一具体硬件进行相应的操作之前,恶意代码可以在控制指令生命周期内的任意节点对该指令施加影响,实现恶意目的。典型的,攻击者可以在系统内部对设备接收到的远程控制指令数据进行修改或者修改对控制指令进行操作的相关方法,进而对设备造成恶意控制、数据窃取等不良后果。因此对智能设备系统内部进行安全加固,保证控制指令在设备内部生命周期不被篡改,是目前迫切需要解决的问题。然而,针对智能设备,其内部的安全漏洞尚未引起相关研究机构和企业组织的足够重视,以至于这方面的研究相对滞后。相关的研究机构和企业组织还没明确提出较为合理完善的远程控制指令防护方案,来应对智能设备内部的安全漏洞。
已公开中国专利申请(智能家居物联网安全防护系统及其控制方法,2015103202442;智能家居防护系统,2014100888817;一种智能家居物联网安全防护方法及系统,2014104657991等)均通过密码学方法对网络层面的数据进行加密传输,而对于设备内部可能面临的安全隐患却缺乏有效的防护手段。
发明内容
本发明技术解决问题:旨在应对智能设备控制指令在系统内部传输过程中可能被恶意攻击而造成设备错误控制问题,提供一种控制指令在设备内部全生命周期过程中的安全防护方法。
本发明技术解决方案:一种控制指令在设备内部全生命周期过程中的安全防护方示,包括以下步骤:
步骤一:首先部署智能设备控制指令安全运行的软件系统环境,利用基于MPU的硬件隔离模块划分用于存放敏感数据结构与方法的安全区域和用于执行控制指令解析、动态加载模块常规任务的非安全区域,所有非安全区域对安全区域的访问都需要通过预先设计好的软件接口才可以进行访问;在安全区内设定向量表偏移量寄存器VTOR,确保硬件隔离模块运行时对这些标记进行识别,把标记的方法全部放到位于系统态的安全区域,形成安全方法,而没有放到系统态的方法即定义为非安全方法,非安全方法需要通过设定好的接口才能对安全区域内容进行访问,否则将产生访问异常;其次部署访问控制列表,即ACL列表,用于标记安全区域内的方法对硬件的访问权限;最后在非安全区域下加载嵌入式操作系统,嵌入式操作系统指运行于智能设备上的实时操作系统,集成控制指令解析任务,并可以使用动态加载模块在网络层面加载新的控制指令解析任务;
步骤二:在安全区域内部署处理控制指令的重要数据结构与方法,设计针对控制指令的处理框架,对控制指令相关的数据结构和方法进行重新的部署,具体部署:Msg(消息)处理方法接收控制指令,其他异常处理方法用于处理其他异常情况,消息队列和备用队列实现控制指令的存储,请求验证模块实现对消息队列和备用队列的管理,ACL模块实现对敏感硬件的保护,用以满足对进入智能设备的控制指令进行安全存储、解析的需求;
步骤三:结合安全区域内的重要数据结构与方法,设计安全处理控制指令的相关流程,确保非安全区域代码无法直接对与控制指令处理相关的重要数据结构和方法进行修改,确保控制指令在传输以及解析过程中的完整性和安全性,至此防护过程结束,控制指令将得到安全解析。
所述步骤一实现如下:
(11)智能设备启动时,硬件隔离模块首先运行于智能设备中的系统态;
(12)在硬件隔离模块中设定向量表偏移量寄存器VTOR,指向嵌入式系统的异常向量;
(13)硬件隔离模块在运行时,需要根据编译时对敏感数据结构以与方法设定的标记,利用MPU对拥有标记的敏感数据结构与方法进行防护;
(14)部署ACL访问控制列表,硬件隔离模块根据该列表使用MPU实现物理地址与设备寄存器物理地址的对应映射,仅运行在该物理地址的代码拥有对对应设备寄存器物理地址的访问权限,实现对智能设备的访问控制;
(15)步骤(11)至(14)部分在系统态执行,给整个内存划分了安全区域,剩余部分开始为非安全区域;此时,智能设备需要切换特权级,从系统态切换到用户态随后嵌入式操作系统启动,该嵌入式操作系统即与无隔离模块时的操作系统相同,实现嵌入式系统的所有工作,但不会被划分到安全区域,即该嵌入式系统上运行的任务均为非受保护的任务;
(16)部署原系统解析任务,其中原系统解析任务指嵌入式操作系统上缺省附带的任务,该任务完成对控制指令的解析;
(17)部署动态加载模块,用于从网络层动态的加载新的任务进行工作,动态加载模块记录新加载模块的校验信息,包括起始地址、长度、哈希值;
(18)部署其他解析任务,其他解析任务指通过动态加载模块加载而来的新的控制指令解析任务,该任务辅助步骤(16)部署的任务,对步骤(16)无法解析的新控制指令进行解析,实现智能设备功能的扩展;
(19)部署硬件隔离模块到被保护方法的接口,嵌入式操作系统中的非受保护任务若想访问敏感数据,需要通过这一接口,否则将产生异常。
所述步骤二具体实现如下:
(21)部署Msg处理方法,当智能设备通过外设接收到数据时,调用Msg处理方法获取数据,并准备存储到消息队列;
(22)部署其他异常处理方法,用于处理除接收指令外的其他异常情况;
(23)部署消息队列,该队列用于存储从未被系统解析过的消息;
(24)部署备用队列,该队列用于存储系统原系统解析任务无法解析的控制指令数据;
(25)部署请求验证模块,该模块作为安全区域与非安全区域的访问控制接口,验证向其发起数据交互请求的方法的完整性,并提供对控制指令队列适当的访问控制服务;
(26)部署ACL检测模块,用于确保敏感硬件不会直接被用户态非安全区域的代码直接访问。
所述步骤三具体实现如下:
(31)确保智能设备的正常运行,硬件隔离模块将自动对控制指令流生命周期过程中的重要数据结构与方法进行防护;
(32)在步骤(31)的基础上,当智能设备接收到外界传递的数据后,硬件隔离模块会自动触发硬件异常,触发异常向量表进行异常处理方法的索引;
(33)异常处理方法分为对指令的处理方法与对智能设备重启、异常访问其他情况的异常处理方法,所述异常向量直接指向(21)部署的Msg处理方法,Msg处理方法将控制指令数据直接存入消息队列中;所有的异常处理方法都存在于向量表偏移量寄存器VTOR所指向的异常向量表中,而这个向量表由硬件隔离模块放入到安全区域中,非安全区域代码无法进行直接访问与修改,从而保证注入智能设备的恶意代码无法对这个向量表进行攻击,保证控制指令在进入智能设备后马上就得到安全的处理;
(34)部署的原系统解析任务将周期性的查看消息队列中是否存在使用(33)步骤存入的控制指令数据,如果存在即可以进一步进行解析;
(35)原系统解析任务对消息队列的查询权限受到请求验证引擎的管理,该请求验证引擎首先在验证通过的情况下,若为确定为部署的原系统解析任务,则从指令队列中弹出一个指令供解析任务解析;若验证失败,则直接产生一个验证的异常,触发异常处理方法;
(36)原系统解析任务对获取的数据进行解析,若解析成功则调用(26)中部署的ACL检测模块准备对智能设备进行控制,若解析失败则将数据填写到备用队列中;
(37)根据部署的其他解析任务,如果想要访问控制指令,只能访问备用队列中的控制指令,其他解析任务对备用队列的访问同样需要经过(35)中部署的请求验证引擎的验证,请求验证引擎首先在验证通过的情况下,若为确定为部署的其他解析任务,则将会获得备用队列中的指令,且指令暂时不删除;若验证失败,则直接产生一个验证的异常,触发异常处理方法;
(38)步骤(36)与(37)对指令解析成功后,均需要通过对智能设备进行访问,确保非安全区域内代码不能直接对受保护的硬件直接访问;
(39)对步骤(37)中的备用队列进行一定的操作,若备用队列中存在长时间未被删除的数据,经过一个自定义时间后,被请求验证引擎删除。
所述智能设备,指低计算能力的智能硬件设备,与计算能力较高的智能终端如手机、PDA不同,智能设备使用低功耗的MCU如ARM Cortex-M3/4系列,运行专门为智能设备设计的低功耗嵌入式操作系统如FreeRTOS,UCOS,且智能设备的MCU内部需要集成内存保护单元MPU,支持系统态和用户态两个特权等级。
所述(17)中,在智能设备动态加载某一个新的任务时,动态加载模块在加载任务到嵌入式系统中进行执行前,需要把加载后任务的校验信息传递给硬件隔离模块进行保存。
本发明原理:本发明充分考虑到智能设备在系统层面面临的实际安全问题,利用基于MPU(Micro Processor Uint,微处理器单元)的硬件隔离技术,提供了一种面向智能设备内部控制指令流的系统级安全防护实现方法,针对上述三个主要攻击点进行防护,具体来说,本发明技术方案包括下列几个方面:
第一,部署智能设备控制指令安全运行的软硬件系统环境。设计基于MPU硬件隔离技术的硬件隔离模块,模块运行于系统态特权级,设备启动时首先运行该模块,针对智能设备仅拥有用户态/系统态两级特权级状态的特点,使嵌入式系统完全运行在用户态。使用不可随意进入的系统态特权级,为设备控制指令的传输建立安全运行环境,对相关的关键数据、方法进行防护,并设定向量表偏移量寄存器VTOR从而形成智能设备基础信任根。该过程实施的前提条件是对编译器进行一定的修改,在编程时注意使用特殊的宏定义对欲保护的数据结构以及方法添加标记,便于编译器在进行编译时可以识别这些特殊的标记,确保硬件隔离模块运行时可以对这些标记进行识别,把标记的方法全部放到位于系统态的安全区域,形成安全方法。而没有放到系统态的方法即定义为非安全方法;其次部署ACL列表(访问控制列表)用于标记安全区域内的方法对硬件的访问权限;最后在非安全环境下加载操作系统,设计操作系统访问安全环境的接口,系统内部除集成控制指令解析任务外,还集成了动态加载模块用于在网络侧加载新的控制指令解析任务。
第二,利用方面一提供的安全运行环境,通过硬件隔离模块使用MPU将划分出安全区域与非安全区域,被保护的安全方法即位于安全区域。所有非安全区域对安全区域的访问都将触发预先设计好的硬件异常,这里开始对控制指令相关的数据结构和方法进行重新的部署,具体有:设计Msg(消息)处理方法接收控制指令,其他异常处理方法用于处理其他异常,消息队列和备用队列实现控制指令的存储,请求验证模块实现对消息队列和备用队列的管理,ACL模块实现对敏感硬件的保护,用以满足对进入设备的控制指令进行安全解析的要求。
第三,在部署新的安全数据结构与方法的基础上,重新设计智能设备对进入设备的控制指令的解析流程,确保非安全区域代码无法直接对与控制指令处理相关的重要数据结构和方法进行修改,不通过此流程进行访问的方法将产生一个系统异常,控制指令在系统内部将不会遭到恶意的篡改,至此防护过程结束,控制指令将得到安全的解析。
本发明与现有技术相比,具有以下显著优点:
(1)本发明专注于系统防护,增强系统安全能力,使系统具有更高的安全性
本发明首先部署智能设备控制指令安全运行的软件系统环境,使用MPU把系统划分为安全区域与非安全区域,为智能设备内部重要数据与方法提供了安全的运行以及存储环境;其次,部署处理控制指令的重要数据结构与方法,把它们安排在安全区域,防止非安全区域代码对这些方法的篡改;最后设计控制指令在智能设备内部的实际运行、处理流程,确保,安全的完成控制指令流在智能设备内部从接收、存储到解析、执行。一个安全的系统应该包含其网络环境和系统内部两部分内容,而现有技术主要关注网络传输层面的数据安全,对智能设备内部的安全能力关注较少,当面对恶意代码对控制指令在智能设备传输过程中所使用的重要数据结构与方法进行篡改的时候,往往没有有效的方案进行应对。而本发明关注系统内部控制指令的传输、存储安全,使用MPU针对处理控制指令的关键数据结构和方法进行防护,并设计针对控制指令在智能设备中的安全处理方案,确保智能设备的安全性。
(2)本发明还具有无需用户管理、通用性强的优点。
附图说明
图1未经安全加固的控制指令在设备内部的生命周期流程图;
图2本发明实施总体框架;
图3控制指令在系统内部的安全加固示意图;
图4改进的控制指令在设备内部的生命周期流程图;
图5为本发明整体实现流程图。
具体实施方式
在以上描述的基础上,为使本发明的目的、优点以及技术方案更加清楚明白,以下结合一个实例并结合附图对本发明作进一步阐述,但该实施例不构成对本发明的任何限制。
图1描述了IoT智能设备处理控制指令的一般流程并介绍了使用动态加载功能加载恶意模块后,可能对原设备控制指令流造成的影响。
在传统的控制指令处理流程中,智能设备系统在接收到远程控制指令的时候,会触发硬件异常,通知系统接收设备(Wifi模块、串口等)有数据来临,此时调度器会直接中断当前运行的任务,转而进行对应的异常处理方法(这里称为消息处理方法——Msg处理方法);Msg处理方法不会对数据进行翻译而是直接存入消息队列中,消息队列作为控制指令的缓冲池,无法即时执行的指令可以暂时存储在这里等待后续调用,这样可以保证系统的健壮;系统同时也将维护一个周期性的控制指令解析任务,该任务负责查询控制指令队列中存在的任务,并进行解析翻译;最后,翻译后的指令应直接作用于硬件,完成一次指令的操作。
然而,智能设备软件能力的扩充给恶意代码以可乘之机,智能设备可以通过动态加载的方式加载新的任务到设备中运行,这些任务中可能包含恶意漏洞与后门程序。由于智能设备的物理内存通常不会划分访问的边界,攻击者可以利用新加载任务的漏洞,使用ROP的方式巧妙构造恶意代码,针对控制指令在系统内部生命周期的各个环节进行攻击。具体的,表现为:1)直接修改或替换控制指令方法,控制指令数据将被一个完全陌生的方法所处理;2)在已存在的控制指令解析任务前插入一个指令片段,在实际处理控制指令前对数据进行预处理;3)不对控制指令相关处理函数进行破坏,转而直接修改存储控制指令相关的数据结构如控制指令队列。
对于图5,本发明从整体概括了为达到保护智能设备控制指令不被恶意篡改而进行的三个步骤,概括来说,首先利用基于MPU的硬件隔离模块,为智能设备划分出可以安全执行代码的内存空间;其次在安全区域内部署与处理控制指令相关的敏感数据结构以及方法;最后设计安全处理控制指令的流程,恶意代码无法篡改被保护的控制指令,完成对智能设备控制指令的安全防护。智能设备包括低计算能力的智能设备(如:智能电表、手环、水壶等)和高计算能力的智能终端(手机、PDA等),且智能设备的MCU内部需要集成内存保护单元MPU,支持系统态和用户态两个特权等级。
具体来说,主要包含以下内容:
如图2所示,步骤一实现如下:
(11)智能设备启动时,缺省将运行在系统态,在运行最初的引导程序(汇编)指令后,需要自行添加引导代码,设立堆栈指针,使程序首先跳转到硬件隔离模块。
(12)硬件隔离模块由C语言实现,该模块首先需要设定向量表偏移量寄存器VTOR,目的在于当智能设备发生软硬件异常为其提供所对应的处理方法。
(13)硬件隔离模块在运行时,需要根据编译时对敏感数据结构以及方法设定的标记,对拥有标记的结构与方法进行防护。
这里,敏感数据以及方法在编程时需要进行一些标记,通常为使用宏定义进行标记,标记的目的在于在编译器进行编译时,通过链接脚本可以把所有被标记的数据结构与方法编译到一个特定的安全方法区域S中去,便于硬件隔离模块在S区域内遍历这些数据结构与方法。随后隔离模块使用MPU把整个区域S中的数据以及方法统一设置为仅智能设备在进入系统态时才可以访问,阻止当智能设备处于用户态时,其代码对这些数据的访问。
(14)部署ACL访问控制列表,硬件隔离模块可以根据该列表使用MPU实现物理地址设备与寄存器物理地址的对应映射,仅运行在该物理地址的代码可以拥有对对应设备寄存器物理地址的访问权限,从而实现对设备的访问控制。
这里,对智能设备上面硬件(如:LED灯、马达或其他可控制的模块)的控制,实际上是对设备内部MCU对应的GPIO或其他设备控制器等端口的控制,而为了可以编程操作这些端口,设备即需要把这些端口映射到某一块内存上,并赋予相应的地址,程序通过访问这些地址,即可以对对应的端口进行操作。硬件隔离模块正是通过使用这一性质,把需要保护的硬件对应的端口地址直接放入系统态的安全区域中,则非安全区域的代码将不能直接对这些地址进行访问,也就不能操作对应的硬件了。ACL访问控制列表即规定了在智能设备启动的时候,哪些设备(端口)需要被放入安全区域中。
(15)步骤(11)到(14)部分在系统态执行,给整个内存划分了安全区域,即可信部分,剩余部分开始为不可信部分,切换特权级:从系统态切换到用户态,随后引导嵌入式操作系统启动,该嵌入式操作系统即与无隔离模块时的操作系统相同,实现普通嵌入式操作系统的所有工作,但不会被划分到安全区域,即该嵌入式操作系统上运行的任务均为非受保护的任务;
这里,所述嵌入式操作系统即驱动智能设备运行的操作系统,主要特点在于在此嵌入式操作系统运行之前首先运行了硬件隔离模块,利用MPU对需要进行防护的方法与数据结构首先进行防护,之后再激活嵌入式操作系统的运行。同时,硬件隔离模块在将控制权交给嵌入式操作系统前,应确保其把智能硬件从系统态转换到了用户态,由于用户态的代码无法直接访问系统态的数据,这也就保证了嵌入式操作系统内运行的任务不能随意访问由硬件隔离模块保护的数据。
(16)部署原系统解析任务,其中原系统解析任务指在步骤(15)部署的操作系统上缺省附带的任务,该任务完成对控制指令的解析;
这里,注意在部署时应该存储该任务的校验信息,即代码起始地址、长度和哈希值,这些数据应该直接写入硬件隔离模块的安全区域中。
(17)部署动态加载模块,用于从网络层面动态的加载新的任务进行工作,该模块应该可以记录新加载模块的校验信息(如:起始地址、长度、哈希值)。
这里,注意在动态加载某一个新的任务时,动态加载模块在加载任务到嵌入式系统中进行执行前,需要把加载后任务的校验信息传递给硬件隔离模块进行保存。
(18)部署其他解析任务,其他解析任务指通过步骤(17)部署的模块加载而来的新的控制指令解析任务,该任务可以辅助步骤(16)部署的任务,对(16)无法解析的新控制指令进行解析,实现智能设备功能的扩展。
这里,智能设备通常可以通过插拔新的硬件模块从而扩展新的功能,而为了控制新的硬件模块,智能设备应该可以解析新的控制指令。但是,原设备内部集成的控制指令的解析方法将不能处理,因而在保证不覆盖原设备内部的系统解析方法的基础上,需要使用动态加载的功能添加处理新控制指令的方法,辅助完成对新的控制指令的解析。
(19)部署硬件隔离模块到被保护方法的接口,嵌入式操作系统中的非受保护任务若想访问敏感数据,需要通过这一接口,否则将产生异常。
这里,由于安全区域内部的数据全部存在于系统态,用户态的代码无法直接访问,那么为了访问系统态中的数据,需要一个统一的接口用于进入系统态进而访问数据。这里,该过程将封装一个可以触发SVC异常的方法(SVC异常是ARM的一种异常类型),用户态代码使用该方法,可以触发SVC异常。而在(12)中部署的VTOR寄存器对应的异常向量表中,可以设定该SVC异常的处理函数,进而进入系统态完成对敏感数据以及方法的访问。
如图3所示,步骤二具体实现如下:
(21)在步骤一部署VTOR寄存器指向系统异常向量表的基础上,首先部署Msg处理方法,当智能设备通过外设(WiFi、Uart等)接收到数据时,调用Msg处理方法获取数据,并准备存储到消息队列;
(22)部署其他异常处理方法,用于处理除接收指令外的其他异常,比如对于敏感数据的越界访问;
(23)部署消息队列,该队列用于存储从未被系统解析过的消息;
(24)部署备用队列,该队列用于存储系统原系统解析任务无法解析的控制指令数据;
这里,消息队列和备用队列可以同时部署于安全区域,与非安全区域进行隔离,消息队列中的信息是未被处理过的信息,这些信息最终将会被步骤一(16)部署的原系统解析任务进行解析,备用队列中的内容是步骤一(16)中未被解析的任务,将会留存等待步骤一(18)中的任务进行解析。
(25)部署请求验证模块,该模块作为安全区域与非安全区域的访问控制接口,验证向其发起数据交互请求的方法的完整性,并提供对控制指令队列适当的访问控制服务;(26)部署ACL检测模块,该模块通过查看步骤一(14)中所述访问控制列表用于确保敏感硬件不会直接被用户态非安全区域的代码直接访问。
如图4所示,步骤三具体实现如下:
(31)首先确保智能设备的正常运行,硬件隔离模块将自动对控制指令流生命周期过程中的重要数据结构与方法进行防护。
(32)在步骤(31)的基础上,当智能设备接收到外接传递的数据后,会自动触发硬件异常,使用异常向量表进行异常处理方法的索引;
(33)异常处理方法分为对指令的处理方法与对如设备重启、异常访问等其他情况的异常处理方法,这里异常向量直接指向控制指令相关处理方法,该方法将控制指令数据直接存入消息队列中;
这里,所有的异常处理方法都存在于VTOR寄存器所指向的异常向量表中,而这个向量表已经在步骤一(12)中由硬件隔离模块放入了特权级的安全区域中,非安全区域代码无法进行直接访问与修改,进而保证注入智能设备的恶意代码无法对这个向量表进行攻击,保证控制指令的得到正确的处理。
(34)将步骤一(16)中部署的原系统解析任务将周期性的查看消息队列中是否存在使用(33)步骤存入的控制指令数据,如果存在即可以进一步进行解析;
(35)(34)中原系统解析任务对消息队列的查询权限受到请求验证引擎的管理,该请求验证引擎首先对欲访问消息队列的方法的合法性进行检查;在验证通过的情况下,若为确定为步骤一(16)中部署的原系统解析任务,则从指令队列中弹出一个指令供解析任务解析;若验证失败,则直接产生一个验证的异常,触发异常处理方法;
这里,请求验证模块用于接受非安全区域程序的请求进而访问安全区域数据的接口由步骤一(19)提供,验证方法使用经典的HMAC算法,如果是对于新加载任务的验证,则需要根据步骤一(17)中获得的校验信息计算哈希值,并与存储的值进行对比;如果是步骤一(16)中部署的原系统解析任务,则利用系统内部存储好的校验信息直接计算哈希值。
(36)原系统解析任务对获取的数据进行解析,若解析成功则调用于步骤二(26)中部署的ACL检测模块准备对设备进行控制,若解析失败则将数据填写到备用队列中;
这里,由于使用步骤一(18)可以加载的其他的控制指令解析任务,虽然在(35)可以保证该任务不被恶意篡改,但是仍然不能保证其在未被篡改的情况下行使恶意目的,例如从消息队列中弹出一个消息,之后直接丢弃这个消息,使智能设备忽略掉一些命令。故而设计一个备用队列,只有当步骤一(16)部署的系统原控制指令解析任务无法解析某一个控制指令的时候,才把这个指令暂时放入备用队列,等待其他新家在的解析任务使用。
(37)根据步骤一(18)中部署的其他解析任务,如果想要访问控制指令,只能访问备用队列中的控制指令,其他解析任务对备用队列的访问同样需要经过(35)中部署的请求验证引擎的验证,验证流程与(36)相似,所不同的是验证成功任务将会获得备用队列中的指令,且指令暂时不删除;
这里,控制指令暂时不删除的主要原因在于考虑到步骤一(18)加载的其他解析任务可能有多个,当某一个新加入的解析任务不能解析后,仍然留给其他任务以解析该指令的机会。
(38)过程(36)与(37)对指令解析成功后,均需要通过步骤二(26)对设备进行访问。
这里,主要是通过步骤二(26)部署的解析模块,访问时需要遵循步骤一(14)配置好的硬件ACL访问控制策略列表,确保非受保护区域的代码不可以直接对该硬件映射的寄存器进行访问,需要通过安全区域代码进行访问。
(39)步骤(37)将对步骤二(24)部署的备用队列进行一定的操作,若备用队列中存在长时间未被删除的数据,经过一个自定义时间后,可以被(35)中部署的请求验证引擎删除。
该过程借助内存保护单元的安全能力,提供安全隔离环境,确保动态加载的任务无法利用系统漏洞对与设备控制指令的相关数据结构以及方法进行代码或语义上的篡改。
本发明未详细阐述部分属于本领域的公知技术。