双系统的通信方法及计算机可读存储介质与流程

文档序号:18899440发布日期:2019-10-18 21:44阅读:182来源:国知局
双系统的通信方法及计算机可读存储介质与流程

本发明涉及trustzone技术领域,尤其涉及一种双系统的通信方法及计算机可读存储介质。



背景技术:

随着armtrustzone技术越来越受关注,基于armtrustzone技术的双系统架构也越来越普及,比如智能手机上双系统,车载多媒体端双系统等。但是一个不可避免的问题就是如何实现这种架构上的双系统通信,比如传统的有经过双系统下面的管理层进行存储转发的,也有简单的直接利用共享内存进行数据共享的。前者在使用效率上存在缺陷,而后者则没有相对安全的设计机制或者规范性设计导致容易出现安全隐患。



技术实现要素:

本发明所要解决的技术问题是:提供一种双系统的通信方法及计算机可读存储介质,通过通道对的通信方式来解决双系统通信中的效率和安全隐患问题。

为了解决上述技术问题,本发明采用的技术方案为:一种双系统的通信方法,包括:

当第一操作系统上的第一系统任务需要与第二操作系统上的第二系统任务进行通信时,则在第一操作系统中创建第一通信通道;

所述第二系统任务将其对应的过滤器编号写入共享内存中;

所述第一通信通道从共享内存中获取所述过滤器编号;

所述第一系统任务将通信数据及其地址和长度写入至所述第一通信通道;

所述第一通信通道将所述通信数据及其地址和长度发送给所述过滤器编号对应的过滤器进行过滤校验;

若校验通过,则将所述通信数据拷贝到共享内存中的数据块中,并将所述数据块的编号加入至第一队列;

所述第二系统任务从所述第一队列中获取数据块的编号,并根据所述数据块的编号从对应的数据块中获取通信数据。

本发明还涉及一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现以下步骤:

当第一操作系统上的第一系统任务需要与第二操作系统上的第二系统任务进行通信时,则在第一操作系统中创建第一通信通道;

所述第二系统任务将其对应的过滤器编号写入共享内存中;

所述第一通信通道从共享内存中获取所述过滤器编号;

所述第一系统任务将通信数据及其地址和长度写入至所述第一通信通道;

所述第一通信通道将所述通信数据及其地址和长度发送给所述过滤器编号对应的过滤器进行过滤校验;

若校验通过,则将所述通信数据拷贝到共享内存中的数据块中,并将所述数据块的编号加入至第一队列;

所述第二系统任务从所述第一队列中获取数据块的编号,并根据所述数据块的编号从对应的数据块中获取通信数据。

本发明的有益效果在于:一个操作系统中的通信通道先从共享内存中获取另一个操作系统中的系统任务指定的过滤器编号,当接收到通信数据时,即用该过滤器编号对应的过滤器对通信数据进行过滤校验,防止恶意攻击,提高安全性;通过将校验通过后的通信数据存储到共享内存的数据块中,另一个操作系统中的系统任务通过从队列中获取数据块编号,进而从相应的数据块中获取通信数据,提高通信效率以及通信安全性。本发明通过具象化、对象化通信通道模型,可以像使用具体硬件资源一样使用对应的通道资源,方便维护管理,同时增强安全性;通过使用共享内存映射方式进行读写操作,提高通信效率,实现有效、可靠、安全的通道模型。

附图说明

图1为本发明的一种双系统的通信方法的流程图;

图2为本发明实施例一的方法流程图;

图3为本发明实施例二的双系统通信通道架构示意图;

图4为本发明实施例二的t-channel过滤器的工作示意图。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图详予说明。

本发明最关键的构思在于:具象化、对象化通信通道模型,并使用共享内存映射方式进行读写操作。

请参阅图1,一种双系统的通信方法,包括:

当第一操作系统上的第一系统任务需要与第二操作系统上的第二系统任务进行通信时,则在第一操作系统中创建第一通信通道;

所述第二系统任务将其对应的过滤器编号写入共享内存中;

所述第一通信通道从共享内存中获取所述过滤器编号;

所述第一系统任务将通信数据及其地址和长度写入至所述第一通信通道;

所述第一通信通道将所述通信数据及其地址和长度发送给所述过滤器编号对应的过滤器进行过滤校验;

若校验通过,则将所述通信数据拷贝到共享内存中的数据块中,并将所述数据块的编号加入至第一队列;

所述第二系统任务从所述第一队列中获取数据块的编号,并根据所述数据块的编号从对应的数据块中获取通信数据。

从上述描述可知,本发明的有益效果在于:可提高通信效率,增强安全性。

进一步地,所述在第一操作系统中创建第一通信通道时,还包括:

在第二操作系统中创建第二通信通道。

由上述描述可知,两个操作系统中的通信通道是成对出现的。

进一步地,所述第一通信通道从共享内存中获取所述过滤器编号之后,进一步包括:

判断所述过滤器编号在第一操作系统中的过滤器池中是否有效;

若有效,则启用所述过滤器编号对应的过滤器。

由上述描述可知,通过对过滤器编号的有效范围进行检查,确认是否使用过滤器进行过滤。

进一步地,所述过滤校验包括:

确认所述通信数据的地址的有效性;

确认所述通信数据的长度的有效性;

判断是否存在重复的通信数据;

判断所述通信数据是否具有dos攻击特征。

进一步地,所述第一通信通道将所述通信数据及其地址和长度发送给所述过滤器编号对应的过滤器进行过滤校验之后,进一步包括:

若校验不通过,则返回出错信息给第一系统任务,并丢弃所述通信数据。

由上述描述可知,通过对通信数据进行过滤校验,防止恶意攻击,增强安全性。

本发明还提出一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现以下步骤:

当第一操作系统上的第一系统任务需要与第二操作系统上的第二系统任务进行通信时,则在第一操作系统中创建第一通信通道;

所述第二系统任务将其对应的过滤器编号写入共享内存中;

所述第一通信通道从共享内存中获取所述过滤器编号;

所述第一系统任务将通信数据及其地址和长度写入至所述第一通信通道;

所述第一通信通道将所述通信数据及其地址和长度发送给所述过滤器编号对应的过滤器进行过滤校验;

若校验通过,则将所述通信数据拷贝到共享内存中的数据块中,并将所述数据块的编号加入至第一队列;

所述第二系统任务从所述第一队列中获取数据块的编号,并根据所述数据块的编号从对应的数据块中获取通信数据。

进一步地,所述在第一操作系统中创建第一通信通道时,还包括:

在第二操作系统中创建第二通信通道。

进一步地,所述第一通信通道从共享内存中获取所述过滤器编号之后,进一步包括:

判断所述过滤器编号在第一操作系统中的过滤器池中是否有效;

若有效,则启用所述过滤器编号对应的过滤器。

进一步地,所述过滤校验包括:

确认所述通信数据的地址的有效性;

确认所述通信数据的长度的有效性;

判断是否存在重复的通信数据;

判断所述通信数据是否具有dos攻击特征。

进一步地,所述第一通信通道将所述通信数据及其地址和长度发送给所述过滤器编号对应的过滤器进行过滤校验之后,进一步包括:

若校验不通过,则返回出错信息给第一系统任务,并丢弃所述通信数据。

实施例一

请参照图2,本发明的实施例一为:一种双系统的通信方法,所述方法基于trustzone,即在带armtrustzone硬件架构的cpu核上运行两个操作系统,分别为安全操作系统(运行在trustzone上)和普通操作系统(运行在普通区域)。由于本实施例中,安全操作系统向普通操作系统进行通信的过程与普通操作系统向安全操作系统进行通信的过程大体一致,因此,本实施例将两个操作系统以第一操作系统和第二操作系统来进行区分,当第一操作系统为安全操作系统时,第二操作系统即为普通操作系统,当第一操作系统为普通操作系统时,则第二操作系统为安全操作系统。

如图2所示,所述方法包括如下步骤:

s1:当第一操作系统上的第一系统任务需要与第二操作系统上的第二系统任务进行通信时,则在第一操作系统中创建第一通信通道。在第一操作系统中创建第一通信通道的同时,还在第二操作系统创建第二通信通道,也就是说,第一通信通道和第二通信通道是成对出现的。

进一步地,在创建第一通信通道和第二通信通道时,需要确定是否需要配置互斥锁来进行竞态保护,互斥锁包含读互斥(对通道读时的同步)和写互斥(对通道写时的同步)。具体地,以第一通信通道为例,如果多个第一操作系统上有多个系统任务共用一个第一通信通道时,则需要进行配置,如果只有一个系统任务在使用第一通信通道,则无需配置互斥锁。

s2:所述第二系统任务将其对应的过滤器编号写入共享内存中,即第二操作系统上的第二系统任务创建第二通信通道时需要指定一个过滤器id,通过该过滤器id对应的过滤器来过滤第一系统任务发送过来的通信数据。所指定的过滤器id根据应用需求进行选择,不同使用场景需要的过滤器不一样,当出现某些新的攻击类型时就可以选用新的过滤器进行过滤,有效保证灵活性和安全性。

s3:所述第一通信通道从共享内存中获取所述过滤器编号;

s4:判断所述过滤器编号在第一操作系统中的过滤器池中是否有效,若是,则执行步骤s5,若否,则后续不对第一系统任务写入的信息进行过滤(图2中未示出,但相当于直接执行步骤s6后执行步骤s8)。本步骤即对过滤器id的有效范围进行检查,如果过滤器id为0或者不在有效范围则认为不使用过滤器,不对第一通信通道写入的信息进行过滤。

s5:启用所述过滤器编号对应的过滤器。

s6:所述第一系统任务将通信数据及其地址和长度写入至所述第一通信通道。

s7:所述第一通信通道将所述通信数据及其地址和长度发送给所述过滤器编号对应的过滤器进行过滤校验,判断是否校验通过,若是,则执行步骤s8,若否,则执行步骤s9。具体地,过滤器根据相应的过滤规则进行过滤校验,比如确认所述通信数据的地址的有效性,确认所述通信数据的长度的有效性,确认是否存在重复的通信数据,确认所述通信数据是否具有dos攻击特征(dos是denialofservice的简称,即拒绝服务,造成dos的攻击行为被称为dos攻击,其目的是使计算机或网络无法提供正常的服务)等等。

s8:将所述通信数据拷贝到共享内存中的数据块中,并将所述数据块的编号加入至第一队列;执行步骤s10。即通过过滤校验的通信数据会被拷贝到第一通信通道分配的共享内存中的某个数据块,并把该数据块的id加入至共享内存中的第一fifo队列(先进先出队列)。

s9:返回出错信息给第一系统任务,并丢弃所述通信数据。

s10:所述第二系统任务从所述第一队列中获取数据块的编号,并根据所述数据块的编号从对应的数据块中获取通信数据。

当第二操作系统上的第二系统任务需要与第一操作系统上的第一系统任务进行通信时,方法与上述步骤类似。但在该方向的通信中,共享内存中存储数据库id的队列为第二队列,也是一个fifo队列。

本实施例通过具象化、对象化通信通道模型,可以像使用具体硬件资源一样使用对应的通道资源,方便维护管理,同时增强安全性;通过使用共享内存映射方式进行读写操作,提高通信效率,实现有效、可靠、安全的通道模型。

实施例二

本实施例是实施例的一具体应用场景。

本实施例的双系统通信通道架构如图3所示,在带armtrustzone硬件架构的cpu核上运行两个操作系统,两个操作系统分别为trustedos(可信操作系统)和richos(富操作系统),其中,trustedos运行在trustzone上,richos运行在普通区域。在trustedos上的t-task(需要使用t-channel的任务)如果需要和richos进行通信,则会去申请一个t-channel(双系统通信通道中trustedos端的通道,richos端的通道为r-channel,可以把该通道理解为一个类似硬件资源的外设比如串口资源之类的),如果申请成功则t-task就可以利用该t-channel进行数据读写以及与richos上的r-task(richos上能够访问r-channel的特权任务)进行通信;其中,并不是richos上的所有任务都可以访问r-channel,只有被加入到能访问r-channel的组中的特权任务才可以,这样可以杜绝恶意程序以及未经验证程序访问r-channel而使通信通道受到攻击。同样richos上的r-task也可以使用r-channel与trustedos上的t-task进行通信。

进一步地,在创建t-channel和r-channel时需要确定是否需要配置互斥锁进行竞态保护,以t-channel举例来说,如果多个t-task共用同一个t-channel时需要考虑,如果只有一个t-task在使用t-channel时则无需互斥锁,互斥锁包含读互斥(对通道读时的同步)和写互斥(对通道写时的同步)。

一对t-channel/r-channel通信通道对应的共享内存区域上的数据结构主要包括2个过滤器id、数据块和两个fifo队列。其中,一个过滤器id对应t-channel上的过滤器,另一个过滤器id对应r-channel上的过滤器,也就是说,一对t-channel/r-channel通信通道有两个过滤器,一个运行在trustedos,用来对t-task发往r-task的数据进行过滤,另一个运行在richos,用来对r-task发往t-task的数据进行过滤。数据块为t-channel/r-channel通道用来存/取数据的地方,通道可以在创建时指定需要多少个数据块,数据块可以从共享内存池获取,每个数据块的大小的是固定的。fifo队列即先进先出队列,一个为t-channel方向的,即由t-channel写入,由r-channel读出;另一个为r-channel方向,即由r-channel写入,由t-channel读出。t-channel/r-channel只往fifo写入/读取数据块的id,再通过相应的数据块id从数据块中读取对应的数据。

两个方向的通信流程类似,本实施例以t-task到r-task的通信为例进行说明。图4为t-channel过滤器的工作示意图,在r-task创建r-channel时需要指定一个过滤器id(比如图4中的t-filer3)用来过滤t-task的发送过来的数据。当t-task往t-channel写入通信数据及其地址和长度时,t-channel内部就会把这些信息发送给t-filer3进行过滤,t-filer3根据相应的过滤规则(比如确认缓存地址的有效性,长度范围的有效性,是否重复数据,是否具有dos攻击特征等等)进行过滤校验,通过t-filer3过滤校验的数据会被拷贝到t-channel分配的共享内存中的某个数据块,并把数据块id入队fifo,未通过过滤校验的话则返回出错信息给t-task并丢弃数据缓存。r-task对fifo进行出队操作获取数据块id并从数据块中读取该次的通信数据。

进一步地,图4中的t-filer1,t-filer2,t-filer3的具体实现可以是回调函数(trustedos一般基于c语言实现),可以把这些t-filer回调函数的地址放在一个数组,对应的过滤器id就是数组的下标,t-channel需要对r-task设置的过滤器id的有效范围进行检查,如果过滤器id为0或者不在有效范围则认为不使用过滤器,不对t-channel写入的信息进行过滤。

本实施例通过具体化、对象化通信通道模型,可以像使用具体硬件资源一样使用对应的通道资源,方便维护管理,且提高安全性;通过把相应的模型使用共享内存映射(就像把硬件资源映射到内存一样)方式进行读写操作,提高通信效率。

实施例三

本实施例是对应上述实施例的一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现以下步骤:

当第一操作系统上的第一系统任务需要与第二操作系统上的第二系统任务进行通信时,则在第一操作系统中创建第一通信通道;

所述第二系统任务将其对应的过滤器编号写入共享内存中;

所述第一通信通道从共享内存中获取所述过滤器编号;

所述第一系统任务将通信数据及其地址和长度写入至所述第一通信通道;

所述第一通信通道将所述通信数据及其地址和长度发送给所述过滤器编号对应的过滤器进行过滤校验;

若校验通过,则将所述通信数据拷贝到共享内存中的数据块中,并将所述数据块的编号加入至第一队列;

所述第二系统任务从所述第一队列中获取数据块的编号,并根据所述数据块的编号从对应的数据块中获取通信数据。

进一步地,所述在第一操作系统中创建第一通信通道时,还包括:

在第二操作系统中创建第二通信通道。

进一步地,所述第一通信通道从共享内存中获取所述过滤器编号之后,进一步包括:

判断所述过滤器编号在第一操作系统中的过滤器池中是否有效;

若有效,则启用所述过滤器编号对应的过滤器。

进一步地,所述过滤校验包括:

确认所述通信数据的地址的有效性;

确认所述通信数据的长度的有效性;

判断是否存在重复的通信数据;

判断所述通信数据是否具有dos攻击特征。

进一步地,所述第一通信通道将所述通信数据及其地址和长度发送给所述过滤器编号对应的过滤器进行过滤校验之后,进一步包括:

若校验不通过,则返回出错信息给第一系统任务,并丢弃所述通信数据。

综上所述,本发明提供的一种双系统的通信方法及计算机可读存储介质,一个操作系统中的通信通道先从共享内存中获取另一个操作系统中的系统任务指定的过滤器编号,当接收到通信数据时,即用该过滤器编号对应的过滤器对通信数据进行过滤校验,防止恶意攻击,提高安全性;通过将校验通过后的通信数据存储到共享内存的数据块中,另一个操作系统中的系统任务通过从队列中获取数据块编号,进而从相应的数据块中获取通信数据,提高通信效率以及通信安全性。本发明通过具象化、对象化通信通道模型,可以像使用具体硬件资源一样使用对应的通道资源,方便维护管理,同时增强安全性;通过使用共享内存映射方式进行读写操作,提高通信效率,实现有效、可靠、安全的通道模型。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1