Soc芯片系统中控制保密数据搬运的dma控制器的制作方法

文档序号:6443394阅读:368来源:国知局
专利名称:Soc芯片系统中控制保密数据搬运的dma控制器的制作方法
技术领域
本发明涉及SOC芯片安全技术领域,尤其是涉及一种SOC芯片系统中用于控制保密数据安全搬运的直接存储器访问(Direct Memory Access, DMA)控制器。
背景技术
随着科技的发展,信息的通过电子设备进行交换和传输越来越频繁和广泛。不管是互联网的电子商务,还是金融银行业务,或者是个人的手提设备等都会涉及到信息的安全问题。各种保密技术、加密算法和数字签名技术在不断的升级,同时窃取保密信息的手段也在不断进步。由于SOC (System on Chip)在信息处理和交换中有着广泛的应用。如何保证信息安全,已是当今SOC规划和设计的一个非常重要的课题之一。在信息安全要求比较高的应用场景,SOC芯片必须具有可靠的安全特性以确保保密数据不会泄露,否则会给整个系统的信息安全带来隐患。为了防止保密数据泄漏,在安全SOC芯片中,既要采取安全措施对保密数据的存储地址进行保护,防止非正常访问这些存储地址导致数据泄漏;又要采取保护措施对传输通道进行保护,防止保密数据被传输到非安全的存储地址导致数据泄漏。在安全SOC芯片中,保密数据往往只能在一个受保护的安全空间内进行传输,如果保密数据需要从一个受保护的安全空间经过公共的未保护的路径传输到另一个受保护的安全空间时,需要采用加密方式传输。为了防止受保护的安全空间内的保密数据泄漏,在 SOC芯片中有三种常见的保密数据传输方式直接的点对点传输方式、安全总线传输方式、 公用总线传输方式。I、直接的点对点传输方式即是在两个模块间建立独立的数据传输通道,通过该通道,实现两个模块之间保密数据的交互,第三方无法获取。点对点传输方式具有比较高的安全性。但是这种实现方式要为两模块单独建立数据传输通道,增加了设计的复杂度和系统的面积开销。特别是有很多模块之间都涉及到保密数据传输应用的情况下,对芯片复杂性和面积会是一个考验。在有的情况下,保密数据量并不大,或许只有几个字节;有的情况下保密数据只需要传输一次,为此而设计一个专门的点对点传输通道,是不值得的。2、安全总线传输方式即是将所有的保密数据存储区域只能通过专门的安全总线进行访问,公用的总线无法访问到保密数据。安全总线传输方式需要一个安全的总线主设备来完成数据传输。这种方式也具有比较髙的安全性。由于安全总线上的主设备需要和外界交互,这种方式需要采取额外的安全措施防止安全总线上主设备通过和外界的交互通道泄密。同时,采用这种方式,SOC芯片需要增加额外的总线,一些模块不得不同时考虑多个总线接口,这些都将增加芯片的复杂性和成本。3、公用总线传输方式指保密数据在公用总线上传输。这种方式相比前两种方式而言,好处在于SOC芯片的总线系统设计容易实现。在公用总线传输方式下,负责保密数据传输的安全总线主设备和负责普通数据传输的普通总线主设备都在公用总线上,总线地址分配是一致的,因此需要采取安全措施防止普通总线主设备通过访问存储保密数据的地址泄漏保密数据。在这种传输方式下,SOC芯片多采用三种方法防止保密数据泄漏目标地址的自保护、总线的存储保护、加密保护。目标地址的自保护即存储安全数据的寄存器具有自我保护功能,比如只写功能,防止保密数据从该地址泄漏。总线的存储保护即是用存储保护单元对指定的存储空间进行保护,禁止普通主设备访问保密数据存储区域,禁止安全主设备将保密数据传输到非安全的存储区域,只允许安全主设备在保密数据存储区域内搬运数据。加密保护即保密数据在公用总线上传输时是加密的,只有芯片的安全处理引擎才能解密获得保密数据。目标地址的自保护是离不开另外两种保护方式的,因为它需要保密数据的输入或保密数据的输出。总线的存储保护在比较简单的安全存储器区域的系统中,具有成本小、设计简单的优势,但是如果安全存储区域分散且众多,各安全存储区域安全属性可不相同,这将显著增加存储保护单元的数量,对公用总线时钟频率产生不利影响,导致总线性能下降,且扼杀其成本优势。加密保护涉及到加解密密钥管理的问题,且需要专门的密码模块来实现加解密,适用于多个受保护的安全空间之间的保密数据传输,在一个公用总线的SOC系统中,加密保护方式具有安全方面的优势,但将对系统的复杂性、性能、成本带来较大的负面影响。在公用总线传输方式的单处理器安全SOC芯片中,由于软件安全本身的复杂性, 处理器一般不作为安全主设备。为了防止处理器直接或间接访问到保密数据,保密数据的传输都由硬件传输引擎完成。最常见的硬件传输引擎是直接存储器访问(Direct Memory Access, DMA)控制器。总线上的存储保护单元可以禁止处理器直接访问保密数据存储地址,但允许处理器控制DMA控制器去完成保密数据传输任务。传统的DMA控制器的传输数据的源地址和目的地址都可以受处理器控制,因此面临这样一种风险处理器通知DMA将源地址存储的保密数据搬运到一个处理器可以访问的普通的目的地址,然后处理器可以访问这个目的地址间接获得保密数据,从而导致保密数据泄漏。为了避免这种风险,存储保护单元将只允许DMA控制器向处理器不可访问的安全的地址区域搬运数据,禁止DMA控制器向非安全的普通的地址区域搬运数据。如果需要搬运的安全的目的地址分散且数量较多, 这就需要较多的存储保护单元来实现总线访问保护,将降低公用总线性能,增加芯片成本。 同时,在有些安全应用中,不同的保密数据具有不同的目的,即要求特定的保密数据只能搬运到特定的目的地址。点对点的传输方式很容易实现这种安全要求,但在公用总线传输方式下,传统的DMA控制器或其它硬件传输引擎是很难实现这种安全要求的。为了减少公用总线传输方式下存储保护单元的数量,优化总线性能和芯片成本, 并实现特定保密数据的点对点搬运要求,有必要设计一种安全的硬件传输引擎来完成保密数据的安全传输。

发明内容
本发明的目的在于提供一种SOC芯片系统中用于控制保密数据安全传输(或搬运) 的直接存储器访问(Direct Memory Access, DMA)控制器,DMA控制器通过对每一个任务链表进行链表存储地址检测和隔离保护规则检测,确保每个任务链表都是安全的链表而且没有被错误使用,保证点对点传输的正确性,数据传输的安全性。本发明采用如下技术方案实现一种SOC芯片系统中控制保密数据搬运的DMA控制器,其包括用于对总线上的从设备发出读写操作的主机接口;
用于提供处理器对DMA控制器的寄存器进行配置和查询的从机接口 ;
包含用于设定安全链表地址范围的链表范围寄存器、链表地址寄存器、软件请求寄存器和状态寄存器的寄存器模块;
用于对链表地址寄存器中的链表地址对应的链表信息进行隔离保护规则检查,监测链表信息是否符合安全要求的安全引擎;
用于在链表信息符合安全要求时,根据该链表信息的数据源地址从非易失性存储器读取保密数据,将读取的保密数据写到该链表信息的数据目的地址的数据传输引擎。其中,链表范围寄存器是一次性可编程寄存器,链表范围寄存器在SOC芯片系统初始化时被设置后不可更改。其中,处理器通过读取链表范围寄存器得知安全链表地址的范围;处理器通过配置链表地址寄存器通知DMA控制器从哪个地址获取链表;处理器通过配置软件请求寄存器触发DMA控制器读取链表并进行数据传输;处理器通过读取状态寄存器查询DMA控制器的状态。其中,处理器将链表地址寄存器的初值指向安全链表地址范围内的一个链表起始地址,DMA控制器才会进行保密数据传输。其中,安全引擎检测链表地址寄存器中的链表地址是否属于安全链表地址范围, 并根据检测结果设置状态寄存器的相关标志。处理器可以通过查询状态寄存器对应的标志位得知链表地址寄存器中的配置是否正确。若是,则处理器配置软件请求寄存器控制启动 DMA控制器。其中,DMA控制器根据链表地址寄存器中的链表地址,从到非易失性存储器中读取对应的任务链表,由数据传输引擎解析任务链表并得到链表信息。其中,若链表地址寄存器中的链表地址不属于安全链表地址范围,则DMA控制器不执行该链表地址对应的任务链表。其中,每个链表信息具有如下有序结构信息该链表的数据长度、该链表的数据源地址、该链表的数据目的地址、该链表的下一个链表地址、该链表的隔离保护数据。数据长度定义该链表时要传输的数据字节数量;数据源地址指示数据的数据来源;数据目的地址指示数据去向;下一个链表地址指示下一个链表的地址和当前链表是否是最后一个链表; 链表隔离保护值是一个特定的值,用于隔离相邻的链表,一般定义为全“O”值或全“ I”值。其中,链表信息中各个结构信息的顺序是固化的。其中,安全引擎对链表信息进行隔离保护规则检查包括链表信息的数据长度、数据源地址、数据目的地址、下一个链表地址都不能是全“O”值或全“ I ”值,而链表的隔离保护数据必须为全“O”值或全“ I”值。其中,数据传输引擎一旦接收到有效的DMA传输请求,将开始读取链表并传输数据。当下面任何情况发生时,数据传输引擎将结束数据传输,并清除DMA传输请求安全引擎指示链表地址寄存器中链表地址不在链表范围寄存器定义的链表存储地址范围内;安全引擎指示链表信息不满足隔离保护规则;当前链表是最后一个链表且当前链表定义的数据传输全部完成;总线传输错误。与现有技术相比,本发明具有如下有益效果I.传统的DMA控制器、处理器可以直接配置其数据传输的源地址、目的地址和数据长度,因此用传统的DMA控制器来传输保密数据,处理器可以通过配置错误的链表信息的方式让DMA控制器将保密数据搬运到非安全的存储地址,增加了保密数据泄漏的风险。本发明源地址、目的地址、数据长度等关键链表信息是本发明直接从安全链表存储地址读入的, 处理器是无法直接控制链表信息,降低了处理器通过DMA控制器间接泄漏保密数据的风险。2.本发明的安全引擎可以检查处理器配置的链表地址是否在安全链表地址范围内,本发明将不会从安全链表地址范围外的存储地址读取链表,避免了处理器通过错误配置链表地址的方式让DMA控制器执行非安全的链表,从而降低了数据泄漏的风险。3.本发明的安全引擎将对每一个链表进行隔离保护规则检查,不能通过隔离保护规则检查的链表,本发明将拒绝执行。这种安全措施能避免处理器错误设置链表起始地址, 让DMA控制器错误执行安全链表,从而导致数据泄漏。4.本发明能有效地解决点对点的保密数据传输问题。每个点对点的保密数据传输任务可以预先定义在安全链表存储地址,并用存储保护单元将安全链表存储地址保护起来,防止安全链表被修改。当需要点对点的保密数据传输时,处理器只要将链表地址寄存器指向对应的点对点传输任务的链表起始地址,启动DMA控制器即可实现点对点的安全传输。5.本发明的安全传输任务预先定义在安全链表存储区,当保密数据源地址集中在一个安全存储器区,目的地址分散且数量较多时,且目的地址具有自保护功能时,本发明能减少存储保护单元的数量,优化总线性能和芯片成本,提高安全性。这种应用场景在很多安全SOC芯片是常见的。比如保密数据的源地址区和安全链表存储区可以是安全SOC芯片的非易失性存储器,目的地址具有只写的自保护属性。本发明应用在这样的场景中,只需要本发明的安全链表范围寄存器指向非易失性存储器的安全链表区,用一个存储保护单元保护非易失性存储器中的保密数据只能由本发明读取,用另一个存储保护单元保护非易失性存储器的安全链表区不可修改,即可构建一个基于本发明的保密数据传输的受保护的安全空间。如果用传统的实现方式,每一个目的地址均需要一个专门的存储保护单元来提供保护, 当保密数据的目的地址越多时,本发明的优势越明显。


图I为本发明SOC芯片系统的结构示意图2为本发明DMA控制器的结构示意图3为本发明数据搬运的流程示意图4为本发明的链表存储格式和链表信息的结构示意图。
具体实施例方式如图I所示,为本发明SOC芯片系统的结构示意图。该SOC芯片内部包含用于控制着整个芯片的运作的处理器11 ;用于搬运保密数据的DMA控制器12 ;总线阵列13 ;存储保护单元14,用于根据安全要求对处理器11和DMA控制器的访问行为做一定的限制;静态存储器15 ;非易失性存储器16,用于存储DMA控制器的任务链表以及保密数据;数据处理设备17,用于解密接收到的密文。其中,处理器11和DMA控制器12作为主设备,而存储保护单元14、静态存储器15、 非易失性存储器16和数据处理设备17均为连接总线阵列13的从设备。主设备通过总线阵列13并在存储保护单元14的保护下可以访问非易失性存储器16,实现对非易失性存储器16的访问保护。结合图2所示,DMA控制器12的总线接口包括一个从机接口 121和一个主机接口 125。寄存器模块122包含链表范围寄存器、链表地址寄存器、软件请求寄存器和状态寄存器,处理器11通过配置寄存器模块122激活(启动)DMA控制器12从非易失性存储器16 中读取任务链表,由DMA控制器12按照任务链表信息完成数据搬运。安全引擎123用于对链表地址寄存器作链表地址范围检查,对链表信息作隔离保护规则检查。数据传输引擎124 用于控制主机接口 125对总线阵列13发出读写操作,从而使DMA控制器12实现读取任务链表和根据任务链表信息搬运数据。结合图3所示,DMA控制器12从非易失性存储器16搬运保密数据的处理流程包括
步骤S311、处理器11通过DMA控制器12的从机接口 121设置DMA控制器12的链表地
址寄存器。步骤S312、安全引擎123检测链表地址寄存器中的链表地址是否符合安全要求。 链表地址寄存器指向的链表地址必须属于安全链表地址范围,否则无法通过安全引擎123 的检测。如果链表地址寄存器没有通过安全引擎123的检测,安全引擎123禁止启动DMA 控制器12,并置位DMA控制器12的状态寄存器对应的状态标志,DMA控制器12等待处理器 11查询处理。步骤S313和步骤S314、等待处理器11配置DMA控制器12的软件请求寄存器控制启动DMA控制器12。步骤S315、DMA控制器12根据链表地址寄存器中的链表地址,从到非易失性存储器16中读取对应的任务链表。数据传输引擎124解析任务链表并得到链表信息。其中,如图4所示,每个链表信息至少包括该链表的数据长度、该链表的数据源地址、该链表的数据目的地址、该链表的下一个链表地址、该链表的隔离保护数据。步骤S316、安全引擎123监测链表信息是否符合安全要求,包括对链表信息进行隔离保护规则检查链表信息的数据长度、数据源地址、数据目的地址、下一个链表地址都不能是全“O”值或全“I”值,而链表隔离保护数据必须为全“O”值或全“I”值。如果链表信息不符合安全要求,安全引擎123置位DMA控制器12的状态寄存器对应的状态标志,等待处理器11查询处理。步骤S317、如果链表信息符合安全要求,则数据传输引擎124开始从链表数据源地址处读取数据,然后写到该链表的数据目的地址对应的存储空间。步骤S318、判断数据搬运是否完成和是否无异常发生。在数据搬运过程中,如果遇到总线错误或异常则停止数据搬运,直接进入流程320。步骤S319、数据搬运完成后,判断当前链表是否最后一个链表。如果不是,则会根据当前链表信息中的下一个链表地址读取下一个链表,即回到步骤S315。继续根据链表信息搬运数据。
步骤S320、停止数据传输,设置对应的错误标志。步骤S321、直到当前链表信息中的下一个链表地址指示为最后一个链表,则完成当前链表要求的数据搬运的后停止读取链表,置位全部链表完成标志,数据传输引擎124 进入空闲状态。在步骤S320或步骤S321之后,处理器11通过查询DMA控制器12的状态寄存器判断DMA控制器12的状态,从而得知数据搬运是完成还是出错停止。一个由DMA控制器完成保密数据点对点直接数据传输的应用实例
根据应用场景,需要把非易失性存储器16绝密空间里面的一个特定密钥搬运到数据处理设备17,用于解密从外界接收到的密文。基于安全要求,该密钥只能被写到数据处理设备17的一个指定寄存器,而不能被写到其他地址空间。为实现上述数据传输需求,具体实施方案如下
DMA控制器12的链表范围寄存器在非易失性存储器16里面定义了一段安全链表存储空间,里面存储一系列安全链表。而且该安全链表存储空间在系统安全初始化完成后受存储保护单元14保护,只能由DMA控制器12访问。在安全链表存储空间里面,有而且只有一个链表实现把非易失性存储器16绝密空间里面的上述特定密钥搬运到数据处理设备17的上述指定寄存器。除此之外没有第二个链表访问非易失性存储器16绝密空间里面的上述特定密钥或数据处理设备17的上述指定寄存器。受存储保护单元14的保护,非易失性存储器16绝密空间和数据处理设备17的上述指定寄存器只能由DMA控制器12访问。处理器11配置DMA控制器12的链表地址寄存器,通过链表地址寄存器选择需要 DMA控制器12执行的任务链表。DMA控制器12的安全引擎123对链表地址寄存器进行监测,如果链表地址寄存器指向的链表不在安全链表存储空间里面,则安全引擎123认为该链表地址寄存器的值不符合安全要求,禁止DMA控制器12读取该链表。在链表地址寄存器的安全检测通过的情况下,处理器11配置软件请求寄存器控制启动DMA控制器12,激活DMA控制器12从非易失性存储器16读取指定的任务链表,解析任务链表得到链表信息。如果链表信息无法通过安全引擎123关于链表信息隔离保护规则检查,链表信息被认为是不安全的,禁止DMA控制器12执行该链表信息;如果安全引擎 123对链表信息的隔离保护规则检查通过,那么DMA控制器12根据链表信息把上述特定密钥(或保密数据)搬运到数据处理设备17的上述指定寄存器。通过上面分析可以知只有通过安全DMA读取安全链表存储空间里面的一个特定的链表才可以读取非易失性存储器16绝密空间中的保密数据,也只有该链表才可以把该密钥写入数据处理设备17的上述指定寄存器。所以本次保密数据搬运等效于点对点的直接数据传输,具有很高的安全性。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种SOC芯片系统中控制保密数据搬运的DMA控制器,其特征在于,所述DMA控制器包括用于对总线上的从设备发出读写操作的主机接口;用于提供处理器对DMA控制器的寄存器进行配置和查询的从机接口 ;包含用于设定安全链表地址范围的链表范围寄存器、链表地址寄存器、软件请求寄存器和状态寄存器的寄存器模块;用于对链表地址寄存器中的链表地址对应的链表信息进行隔离保护规则检查,监测链表信息是否符合安全要求的安全引擎;用于在链表信息符合安全要求时,根据该链表信息的数据源地址从非易失性存储器读取保密数据,将读取的保密数据写到该链表信息的数据目的地址的数据传输引擎。
2.根据权利要求I所述SOC芯片系统中控制保密数据搬运的DMA控制器,其特征在于, 链表范围寄存器是一次性可编程寄存器,链表范围寄存器在SOC芯片系统初始化时被设置后不可更改。
3.根据权利要求I所述SOC芯片系统中控制保密数据搬运的DMA控制器,其特征在于, 处理器通过读取链表范围寄存器得知安全链表地址的范围;处理器通过配置链表地址寄存器通知DMA控制器从哪个地址获取链表;处理器通过配置软件请求寄存器触发DMA控制器读取链表并进行数据传输;处理器通过读取状态寄存器查询DMA控制器的状态。
4.根据权利要求I所述SOC芯片系统中控制保密数据搬运的DMA控制器,其特征在于, 安全引擎检测链表地址寄存器中的链表地址是否属于安全链表地址范围,并根据检测结果设置状态寄存器的标志位,而处理器通过查询状态寄存器对应的标志位得知链表地址寄存器中的配置是否正确。
5.根据权利要求4所述SOC芯片系统中控制保密数据搬运的DMA控制器,其特征在于, DMA控制器根据链表地址寄存器中的链表地址,从到非易失性存储器中读取对应的任务链表,由数据传输引擎解析任务链表并得到链表信息。
6.根据权利要求4所述SOC芯片系统中控制保密数据搬运的DMA控制器,其特征在于, 若链表地址寄存器中的链表地址不属于安全链表地址范围,则DMA控制器不执行该链表地址对应的任务链表。
7.根据权利要求I所述SOC芯片系统中控制保密数据搬运的DMA控制器,其特征在于, 处理器将链表地址寄存器的初值指向一个安全链表地址范围内的一个链表起始地址,DMA 控制器才会进行保密数据传输。
8.根据权利要求I任何一项所述SOC芯片系统中控制保密数据搬运的DMA控制器,其特征在于,数据传输引擎一旦接收到有效的DMA传输请求,将开始读取链表并传输数据;当下面任何情况发生时,数据传输引擎将结束数据传输,并清除DMA传输请求安全引擎指示链表地址寄存器中链表地址不在链表范围寄存器定义的链表存储地址范围内;或安全引擎指示链表信息不满足隔离保护规则;当前链表是最后一个链表且当前链表定义的数据传输全部完成;或总线传输错误。
9.根据权利要求1-8任何一项所述SOC芯片系统中控制保密数据搬运的DMA控制器, 其特征在于,每个链表信息具有如下有序结构信息该链表的数据长度、该链表的数据源地址、该链表的数据目的地址、该链表的下一个链表地址、该链表的隔离保护数据;其中,数据长度定义该链表时要传输的数据字节数量;数据源地址指示数据的数据来源;数据目的地址指示数据去向;下一个链表地址指示下一个链表的地址和当前链表是否是最后一个链表;链表隔离保护值为全“0”值或全“ I ”值,用于隔离相邻的链表。
10.根据权利要求9所述SOC芯片系统中控制保密数据搬运的DMA控制器,其特征在于,安全引擎对链表信息进行隔离保护规则检查包括链表信息的数据长度、数据源地址、 数据目的地址、下一个链表地址都不能是全“0”值或全“ I ”值,而链表的隔离保护数据必须为全“0”值或全“I”值。
全文摘要
本发明公开一种SOC芯片系统中控制保密数据搬运的DMA控制器,其包括主机接口;从机接口;包含用于设定安全链表地址范围的链表范围寄存器、链表地址寄存器、软件请求寄存器和状态寄存器的寄存器模块;用于对链表地址寄存器中的链表地址对应的链表信息进行隔离保护规则检查,监测链表信息是否符合安全要求的安全引擎;用于在链表信息符合安全要求时,根据该链表信息的数据源地址从非易失性存储器读取保密数据,将读取的保密数据写到该链表信息的数据目的地址的数据传输引擎。本发明由DMA控制器对每一个链表进行隔离保护规则检测,确保每个链表没有被错误使用,保证点对点传输的正确性,降低了数据泄漏的风险,提高了SOC芯片系统的安全性。
文档编号G06F13/28GK102591824SQ201110443628
公开日2012年7月18日 申请日期2011年12月27日 优先权日2011年12月27日
发明者林青盛, 王良清 申请人:深圳国微技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1