发明内容
有鉴于此,本说明书实施例提供了一种存储装置数据完整性保护方法及其控制器、片上系统,以对存储装置中的数据提供完整性保护,避免数据在存储装置存储期间被篡改。
本说明书实施例提供了一种存储装置数据完整性保护方法,包括:
基于接收到的写数据请求,获取待写入数据块;
针对所述待写入数据块,按照预设的第一生成方法生成对应的消息认证数据,以及根据所述待写入数据块的地址,按照预设的第二生成方法生成所述消息认证数据的地址;
基于所述写数据请求中包含的待写入数据块及所述待写入数据块的地址,将所述待写入数据块写入第一存储装置中所述待写入数据的地址对应的存储区;将所述消息认证数据写入第二存储装置中所述消息认证数据的地址对应的存储区;
其中,所述消息认证数据适于对对应的写入所述第一存储装置的数据块在后续从所述第一存储装置读出时进行数据完整性校验。
可选地,在针对待写入数据块,按照预设的第一生成方法生成对应的消息认证数据,以及根据待写入数据块的地址,按照预设的第二生成方法生成所述消息认证数据的地址之前,还包括:确定所述写数据请求中包含的数据完整性保护标识处于有效状态。
可选地,所述第二存储装置中未存储预设的处理器的运行数据,所述预设的处理器适于发出写数据请求。
可选地,所述第二存储装置仅用于存储所述消息认证数据。
可选地,所述第二存储装置与所述预设的处理器满足如下任意一种位置关系:
所述第二存储装置与所述预设的处理器位于同一基板上的不同的晶粒上;
所述第二存储装置与所述预设的处理器位于不同的封装结构中;
所述第二存储装置与所述预设的处理器位于同一个晶粒上。
可选地,所述基于接收到的写数据请求,获取待写入数据块,包括:基于接收到的多个写数据请求,获取得到待写入的完整的数据块。
可选地,所述根据所述待写入数据块的地址,按照预设的第二生成方法生成所述消息认证数据的地址,包括以下至少一种:
对所述待写入数据块的地址,按照预设的映射关系进行直接映射,得到所述消息认证数据的地址;
对所述待写入数据块的地址,按照预设的非线性变换方式进行变换,得到所述消息认证数据的地址。
本说明书实施例还提供了另一种存储装置数据完整性保护方法,包括:
基于接收到的读数据请求,获取待读取的数据块的地址;
根据所述数据块的地址,按照预设的第二生成方法生成所述数据块对应的消息认证数据的地址;
基于所述数据块的地址,从第一存储装置中读取得到对应的数据块,基于所述数据块,按照预设的第一生成方法生成对应的消息认证数据,作为第一消息认证数据;
基于生成的所述数据块对应的消息认证数据的地址,从第二存储装置中读取得到消息认证数据,作为第二消息认证数据;
在所述第一消息认证数据和所述第二消息认证数据一致时,确定所述数据块的数据完整性校验通过;否则,确定所述数据块的完整性校验未通过。
可选地,在所述根据所述数据块的地址,按照预设的第二生成方法生成所述数据块对应的消息认证数据的地址之前,还包括:确定所述读数据请求中包含的数据完整性保护标识处于有效状态。
可选地,所述第二存储装置中未存储预设的处理器的运行数据,所述预设的处理器适于发出读数据请求。
可选地,所述第二存储装置与所述预设的处理器满足如下任意一种位置关系:
所述第二存储装置与所述预设的处理器位于同一基板上的不同的晶粒上;
所述第二存储装置与所述预设的处理器位于不同的封装结构中;
所述第二存储装置与所述预设的处理器位于同一个晶粒上。
可选地,所述存储装置数据完整性保护方法还包括:
在确定所述数据块的完整性校验通过时,向发出所述读数据请求的处理器返回所述数据块;
在确定所述数据块的完整性校验未通过时,向预设的安全处理装置发送中断请求,使得所述安全处理装置对所述读数据请求进行预设的处理操作。
可选地,所述向预设的安全处理装置发送中断请求,使得所述安全处理装置对所述读数据请求进行预设的处理操作,包括以下至少一种:
向所述发出读数据请求的处理器发送所述中断请求,使得所述发出读数据请求的处理器终止运行所述读数据请求对应的软件;
向预设的安全处理装置发送所述中断请求,使得所述安全处理装置向所述发出读数据请求的处理器发出控制指令,控制所述发出读数据请求的处理器终止运行所述读数据请求对应的软件,其中,所述安全处理装置与所述预设的处理器位于同一封装结构中。
本说明书实施例提供了一种片上系统,所述片上系统与置于所述片上系统内部或外部的第一存储装置耦接,以进行数据读写操作,包括:
处理器核心,适于发出写数据请求,所述写数据请求包括待写入数据块和待写入数据块的地址;
存储装置控制器,包括:校验数据生成单元,适于基于接收到的写数据请求,获取待写入数据块,针对所述待写入数据块,按照预设的第一生成方法生成对应的消息认证数据,根据待写入数据块的地址,按照预设的第二生成方法生成所述消息认证数据的地址;将所述待写入数据块写入所述第一存储装置中所述待写入数据的地址对应的存储区,将所述消息认证数据写入第二存储装置中所述消息认证数据的地址对应的存储区;
第二存储装置,适于存储所述消息认证数据,所述消息认证数据适于对对应的写入所述第一存储装置的数据块在后续从所述第一存储装置读出时进行数据完整性校验。
可选地,所述校验数据生成单元还适于在针对待写入数据块,按照预设的第一生成方法生成对应的消息认证数据,以及根据待写入数据块的地址,按照预设的第二生成方法生成所述消息认证数据的地址之前,确定所述写数据请求中包含的数据完整性保护标识是否处于有效状态。
可选地,所述第二存储装置禁止存储预设的处理器核心的运行数据。
可选地,所述第二存储装置与所述预设的处理器核心满足如下任意一种位置关系:
所述第二存储装置与所述预设的处理器核心位于同一基板上不同的晶粒上;
所述第二存储装置与所述预设的处理器核心位于两个封装结构中;
所述第二存储装置与所述预设的处理器核心位于同一个晶粒上。
本说明书实施例提供了另一种片上系统,所述片上系统与置于所述片上系统内部或外部的第一存储装置耦接,以进行数据读写操作,包括:
处理器核心,适于发出读数据请求,所述读数据请求包括待读取的数据块的地址;
第二存储装置,适于存储所述待读取的数据块在写入所述第一存储装置时生成的消息认证数据;
存储装置控制器,包括:数据完整性校验单元,适于接收读数据请求,获取待读取的数据块的地址,根据所述待读取的数据块的地址,按照预设的第二生成方法生成所述数据块对应的消息认证数据的地址;基于所述数据块的地址,从所述第一存储装置中读取得到对应的数据块,基于所述数据块,按照预设的第一生成方法生成对应的消息认证数据,作为第一消息认证数据,并基于生成的所述数据块对应的消息认证数据的地址,从所述第二存储装置中读取得到消息认证数据,作为第二消息认证数据;在所述第一消息认证数据和所述第二消息认证数据一致时,确定所述数据块的完整性校验通过;否则,确定所述数据块的完整性校验未通过。
可选地,所述数据完整性校验单元还适于在根据所述待读取的数据块的地址,按照预设的第二生成方法生成所述数据块对应的消息认证数据的地址之前,确定所述读数据请求中包含的数据完整性保护标识是否处于有效状态。
可选地,所述第二存储装置禁止存储预设的处理器核心的运行数据。
可选地,所述第二存储装置与所述预设的处理器核心满足如下任意一种位置关系:
所述第二存储装置与所述预设的处理器核心位于同一基板上不同的晶粒上;
所述第二存储装置与所述预设的处理器核心位于不同的封装结构中;
所述第二存储装置与所述预设的处理器核心位于同一个晶粒上。
可选地,所述片上系统还包括:安全处理装置,所述数据完整性校验单元还适于在确定所述数据块的完整性校验通过时,向发出所述读数据请求的处理器核心返回所述数据块;在确定所述数据块的完整性校验未通过时,向所述安全处理装置发送中断请求;
所述安全处理装置,适于基于所述中断请求,对所述读数据请求进行预设的处理操作。
本说明书实施例还提供了一种片上系统,所述片上系统与置于所述片上系统内部或外部的第一存储装置耦接,以进行数据读写操作,包括:
处理器核心,适于发出读数据请求和写数据请求,其中,所述读数据请求包括待读取的数据块的地址;所述写数据请求包括待写入数据块和待写入数据块的地址;
第二存储装置,适于存储所述待读取的数据块在写入所述第一存储装置时生成的消息认证数据;
存储装置控制器,包括:
校验数据生成单元,适于基于接收到的写数据请求,获取待写入数据块,针对所述待写入数据块,按照预设的第一生成方法生成对应的消息认证数据,根据待写入数据块的地址,按照预设的第二生成方法生成所述消息认证数据的地址;将所述待写入数据块写入所述第一存储装置中所述待写入数据的地址对应的存储区,将所述消息认证数据写入第二存储装置中所述消息认证数据的地址对应的存储区;
数据完整性校验单元,适于接收读数据请求,获取待读取的数据块的地址,根据所述待读取的数据块的地址,按照预设的第二生成方法生成所述数据块对应的消息认证数据的地址;基于所述数据块的地址,从所述第一存储装置中读取得到对应的数据块,基于所述数据块,按照预设的第一生成方法生成对应的消息认证数据,作为第一消息认证数据,并基于生成的所述数据块对应的消息认证数据的地址,从所述第二存储装置中读取得到消息认证数据,作为第二消息认证数据;在所述第一消息认证数据和所述第二消息认证数据一致时,确定所述数据块的完整性校验通过;否则,确定所述数据块的完整性校验未通过。
可选地,所述存储装置控制器还包括:数据完整性保护标识识别单元,适于确定接收到的写数据请求或读数据请求中包含的数据完整性保护标识是否处于有效状态,并在所述数据完整性保护标识处于有效状态时,基于所述写数据请求触发所述校验数据生成单元执行相应操作,基于所述读数据请求触发所述数据完整性校验单元执行相应操作。
可选地,所述第二存储装置未存储预设的处理器核心的运行数据。
可选地,所述的片上系统还包括:安全处理装置;
所述数据完整性校验单元还适于在确定所述数据块的完整性校验通过时,向发出所述读数据请求的处理器核心返回所述数据块;在确定所述数据块的完整性校验未通过时,向所述安全处理装置发送中断请求;
所述安全处理装置,适于基于所述中断请求,对所述读数据请求进行预设的处理操作。
本说明书实施例还提供了一种存储装置控制器,适于分别与处理器核心、第一存储装置及第二存储装置耦接,所述存储装置控制器包括:
校验数据生成单元,适于基于接收到的写数据请求,获取待写入数据块,针对所述待写入数据块,按照预设的第一生成方法生成对应的消息认证数据,根据待写入数据块的地址,按照预设的第二生成方法生成所述消息认证数据的地址;将所述待写入数据块写入所述第一存储装置中所述待写入数据的地址对应的存储区,将所述消息认证数据写入第二存储装置中所述消息认证数据的地址对应的存储区;
数据完整性校验单元,适于接收读数据请求,获取待读取的数据块的地址,根据所述待读取的数据块的地址,按照预设的第二生成方法生成所述数据块对应的消息认证数据的地址;基于所述数据块的地址,从所述第一存储装置中读取得到对应的数据块,基于所述数据块,按照预设的第一生成方法生成对应的消息认证数据,作为第一消息认证数据,并基于生成的所述数据块对应的消息认证数据的地址,从所述第二存储装置中读取得到消息认证数据,作为第二消息认证数据;在所述第一消息认证数据和所述第二消息认证数据一致时,确定所述数据块的完整性校验通过;否则,确定所述数据块的完整性校验未通过。
一方面,采用本说明书实施例中的存储装置数据完整性保护方案,可以基于写数据请求,针对待写入数据块,生成对应的消息认证数据及所述消息认证数据的地址,之后,将所述待写入数据块写入第一存储装置中所述待写入数据的地址对应的存储区,将所述消息认证数据写入第二存储装置中所述消息认证数据的地址对应的存储区,经上述数据处理后,在对应的写入所述第一存储装置的数据块在后续从所述第一存储装置读出时可以通过所述第二存储装置中获取的所述消息认证数据进行数据完整性校验,从而可以避免数据在所述第一存储装置存储期间被篡改。
另一方面,采用本说明书实施例中的存储装置数据完整性保护方案,对于读数据请求,根据待读取的数据块的地址,生成所述数据块对应的消息认证数据的地址,并基于所述数据块的地址,从第一存储装置中读取得到对应的数据块,基于所述数据块,生成对应的消息认证数据,作为第一消息认证数据,基于生成的所述数据块对应的消息认证数据的地址,从第二存储装置中读取得到的消息认证数据,作为第二消息认证数据,基于所述第一消息认证数据和所述第二消息认证数据是否一致,确定所述数据块的完整性校验是否通过。在数据从所述第一存储装置读出时,通过上述数据完整性校验处理过程,可以避免数据在所述第一存储装置存储期间被篡改。
进一步地,基于写数据请求或读数据请求中包含的数据完整性保护标识是否处于有效状态,并在写数据请求中包含的数据完整性保护标识处于有效状态时再生成待写入数据块对应的消息认证数据,以及在读数据请求中包含的数据完整性保护标识处于有效状态时再进行数据完整性校验操作,而在读数据请求或写数据请求中包含的数据完整性保护标识处于无效状态时可以执行存储装置普通的读访问和写访问,从而可以满足用户对数据不同的安全需求,也可以避免浪费处理资源。
进一步地,由于所述第二存储装置未存储预设的处理器或处理器核心的运行数据,因此,所述预设的处理器或处理器核心,或片上系统芯片封装结构之外的设备无法感知所述第二存储装置的存在,故可以避免所述预设的处理器或处理器核心被恶意劫持而非法获取所述第一存储装置中的数据,故可以进一步提升片上系统的安全性能。
进一步地,由于所述第二存储装置与预设的处理器或处理器核心位于同一基板上的不同晶粒上,在实现所述第一存储装置中数据完整性保护的同时,可以减小芯片体积,降低芯片成本。
进一步地,所述第二存储装置与预设的处理器或处理器核心位于同一晶粒上,可以减小片上系统封装结构的整体体积,提高系统集成度。
进一步地,所述第二存储装置仅存储所述消息认证数据,可以保证所述消息认证数据的可靠性。
进一步地,基于接收到的多个写数据请求,获取得到待写入的完整的数据块,可以基于多个写数据请求,生成一次消息认证数据并执行一次写操作,可以提高访问存储器的效率。
进一步地,在确定所述数据块的完整性校验未通过时,通过向预设的安全处理装置发送中断请求,使得所述安全处理装置对所述读数据请求进行预设的处理操作,从而可以实现数据保护,避免所述第一存储装置中的数据被篡改。
具体实施方式
如背景技术所述,CPU数据写入到存储装置后,存在着被篡改的风险。参照图1所示的一种数据处理系统的结构示意图,数据处理系统10包括:CPU 11、内存控制器12和内存13。CPU中的数据写入到内存13中后,黑客通过RowHammer方法或者通过物理硬件攻击等方法,可以在CPU 11完全不知情的情况下,篡改已经写入内存13中的数据,达到恶意入侵虚拟机数据的目的。其中,RowHammer方法通过重复访问一行存储器,可能导致相邻行中的位翻转,也即黑客可以改变存储器中该位的值。当在容易受到RowHammer攻击影响的机器运行时,该过程能够获得对所有物理内存的读写访问权,从而可以任意篡改所有物理内存中的数据。
即使部分CPU对写入内存中的数据进行了加密,仍然可以通过密文冲突攻击等方法修改加密后的数据,因此目前存在即使内存数据加密也难以抵御黑客的攻击的问题。
针对上述问题,本说明书实施例提供了相应的存储装置数据完整性保护方案,为使本领域技术人员更好地理解和实现本说明书实施例中存储装置数据完整性保护方案,以下通过具体实施例从写数据过程和读数据过程分别进行详细介绍。
首先参照附图,从基于写数据请求向对应的存储装置写数据进行详细描述。
参照图2所示的一种存储装置数据完整性保护方法的流程图,在具体实施中,可以由存储装置控制器或者其他访存控制装置进行执行。对于第一存储装置,在存在向所述第一存储装置的写数据请求时,可以执行如下步骤:
S21,基于接收到的写数据请求,获取待写入数据块。
其中,写数据请求中可以包括待写入数据块及所述待写入数据块的地址。
在具体实施中,对于CPU或者CPU核心或者是其他处理器(如安全处理器)可以向存储装置控制器发出写数据请求,待写入的数据块的具体大小可以由CPU或者对应处理器的策略进行对应设置。在本说明书一具体示例中,所述第一存储装置为内存,可以选取一个缓存行(Cache Line)或缓存块(Cache Block)作为一个数据块,由于缓存行或缓存块作为存储装置中数据交互的最小单元,因此选取缓存行或缓存块作为数据块单位,可以提高访存效率。
在具体实施中,完整的数据块可以不是一次性收到,也即可以基于多个写数据请求,获取到一个完整的待写入数据块。
可以理解的是,可以根据具体需要设置所述数据块的大小,以及对应的CPU策略,本说明书实施例中对此不作任何限定。
S22,针对所述待写入数据块,按照预设的第一生成方法生成对应的消息认证数据,以及根据所述待写入数据块的地址,按照预设的第二生成方法生成所述消息认证数据的地址。
本说明书中不对所述消息认证数据的编码形式、位数作任何限定,也不对所述第一生成方法和所述第二生成方法所采用的具体的数据生成算法作任何限定。
在本说明书一些实施例中,可以采用消息认证码(Message AuthenticationCode,MAC)作为消息认证数据。
作为具体示例,所述第一生成方法可以采用HMAC-MD5签名算法、HMAC-SHA1签名算法等其中至少一种算法,也可以采用其他成熟的数据生成算法,或者专用算法、改进算法,在本说明书中不作任何限定。
其中,哈希运算消息认证码(Hash-based Message Authentication Code,HMAC)运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。
HMAC-MD5签名算法是从MD5(消息摘要算法5)哈希函数构造的一种键控哈希算法,被用作基于哈希的消息验证代码(HMAC),此HMAC进程将密钥与消息数据混合,使用哈希函数对混合结果进行哈希运算,将所得到的哈希值与该密钥混合,然后再次应用哈希函数,输出的哈希值长度为128位。
HMAC-SHA1签名算法可以用于对一段消息数据进行生成签名摘要。
在本说明书一些实施例中,可以将所述待写入的数据块作为消息数据,将最终运算结果作为MAC值。
在本说明书一些实施例中,所述第二生成方法具体可以为:可以对所述待写入数据块的地址,按照预设的映射关系进行直接映射,可以得到所述消息认证数据的地址。
在本说明书另一些实施例中,可以对所述待写入数据块的地址,按照预设的非线性变换方式进行变换,可以得到所述消息认证数据的地址。
可以理解的是,也可以将多种生成方法结合用来生成消息认证数据的地址,例如,可以将所述预设的直接映射方式和所述非线性变换方式结合来生成所述消息认证数据的地址。
S23,基于所述写数据请求中包含的待写入数据块及所述待写入数据块的地址,将所述待写入数据块写入第一存储装置中所述待写入数据的地址对应的存储区;将所述消息认证数据写入第二存储装置中所述消息认证数据的地址对应的存储区。
其中,所述消息认证数据适于对对应的写入所述第一存储装置的数据块在后续从所述第一存储装置读出时进行数据完整性校验。
在具体实施中,处理器或处理器核心可以与所述第二存储装置形成片上系统的组成结构,在本说明书一些实施例中,所述片上系统还可以包括安全处理器或者其他功能的处理器。
在具体实施中,为进一步提高片上系统安全性能,可以设置所述第二存储装置不存储所述预设的处理器或处理器核心的运行数据,所述预设的处理器或处理器核心可以发出写数据请求,用以向所述第一存储装置存储数据。由于所述第二存储装置中不存储所述预设的处理器或处理器核心的运行数据,因此所述预设的处理器或处理器核心,或者片上系统芯片封装结构之外的设备均无法感知所述第二存储装置的存在,故可以避免所述预设的处理器或处理器核心被恶意劫持而非法获取所述第一存储装置中的数据,故可以进一步提升片上系统的安全性能。在具体实施中,可以设置所述第二存储装置不存储所述片上系统中部分处理器核心或者全部处理器核心的运行数据。
在具体实施中,所述第一存储装置可以为片内内存,也可以为片外内存(如可以是主板上设置的内存条)。
在具体实施中,所述第二存储装置可以为片内内存。
在具体实施中,所述第二存储装置与所述预设的处理器可以位于不同的封装结构中。
在具体实施中,可以采用多芯片封装技术,将所述第二存储装置与预设的处理器或处理器核心可以封装于同一封装结构中。例如,所述第二存储装置与预设的CPU或者CPU核心可以位于同一基板的不同的晶粒(Die)上,采用这种方式,可以节约芯片成本并减小芯片体积。又如,所述第二存储装置与预设的CPU或CPU核心可以位于同一个晶粒上,例如可以直接在CPU晶粒上集成专用内存,用于存储MAC值。采用这种方式,可以减小片上系统封装结构的整体体积,提高系统集成度。
在具体实施中,为进一步提升数据可靠性,所述第二存储装置可以仅用于存储所述消息认证数据。
采用上述存储装置数据完整性保护方法,可以基于写数据请求,针对待写入数据块,生成对应的消息认证数据及所述消息认证数据的地址,并将所述待写入数据块存储至第一存储装置中,将所述消息认证数据存储于第二存储装置中,经上述数据处理后,在对应的写入所述第一存储装置的数据块在后续从所述第一存储装置读出时可以通过所述第二存储装置中获取的所述消息认证数据进行数据完整性校验,从而可以避免数据在所述第一存储装置存储期间被篡改。
在具体实施中,还可以根据具体需要对上述实施例作进一步的优化或扩展。
例如,在一些数据处理系统或数据处理设备中,存在对一些数据的数据完整性保护需求较高,而对另一些数据的数据完整性保护需求不敏感的情况。针对这些数据处理系统或数据处理设备,可以在写数据请求中设置数据完整性保护标识,通过获取写数据请求中包含的数据完整性标识是否处于有效状态,确定是否对待写入的数据块进行数据完整性保护。
具体而言,参照图2,在可以在前述实施例中步骤S22之前,可以先执行步骤S24,判断所述写数据请求中包含的数据完整性保护标识(如M比特位)是否处于有效状态,如果是,则可以执行步骤S22;否则,可以仅执行步骤S25:基于所述写数据请求中包含的待写入数据块及所述待写入数据块的地址,将所述待写入数据块写入第一存储装置中所述待写入数据的地址对应的存储区。
接下来参照附图,从基于读数据请求从对应的存储装置读数据进行详细描述。
如图3所示的另一种存储装置数据完整性保护方法的流程图,在具体实施中,可以由存储装置控制器或者其他访存控制装置进行执行。对于第一存储装置,在存在向所述第一存储装置的读数据请求时,可以执行如下步骤:
S31,基于接收到的读数据请求,获取待读取的数据块的地址。
其中,读数据请求中可以包括待读取的数据块的地址。
在具体实施中,可能存在片上系统内部的处理器或者外部设备的读数据请求。例如,片上系统中的CPU或者CPU核心或者是其他处理器(如安全处理器)可以向存储装置控制器发出读数据请求,待读取的数据块的具体大小可以由CPU或者对应处理器的策略进行对应设置。在本说明书一具体示例中,所述第一存储装置为内存,可以选取一个缓存行(CacheLine)或缓存块(Cache block)作为一个数据块,选取缓存行或缓存块作为数据块单位,可以提高访存效率。
在本说明书实施例中,同一数据处理系统中,读数据请求中包含的待读取数据块的大小可以和写数据请求中待写入数据块的大小保持一致。
可以理解的是,可以根据具体需要设置所述数据块的大小,以及对应的CPU策略,本说明书实施例中对此不作任何限定。
S32,根据所述数据块的地址,按照预设的第二生成方法生成所述数据块对应的消息认证数据的地址。
如前述实施例所述,本说明书中不对所述消息认证数据的编码形式、位数等作任何具体限定,也不对所述第二生成方法所采用的具体的数据生成算法作任何限定。
在本说明书一些实施例中,可以采用消息认证码(Message AuthenticationCode,MAC)作为消息认证数据。
在本说明书一些实施例中,所述第二生成方法具体可以为:对所述待写入数据块的地址,按照预设的映射关系进行直接映射,得到所述消息认证数据的地址。
在本说明书另一些实施例中,可以对所述待写入数据块的地址,按照预设的非线性变换方式进行变换,得到所述消息认证数据的地址。
可以理解的是,也可以将多种生成方法结合用来生成消息认证数据的地址,例如,可以将所述预设的直接映射方式和所述非线性变换方式结合来生成所述消息认证数据的地址。
S33,基于所述数据块的地址,从第一存储装置中读取得到对应的数据块,基于所述数据块,按照预设的第一生成方法生成对应的消息认证数据,作为第一消息认证数据。
作为具体示例,所述第一生成方法可以采用HMAC-MD5签名算法、HMAC-SHA1签名算法等其中至少一种算法,也可以采用其他成熟的数据生成算法,或者专用算法、改进算法,在本说明书中不作任何限定。
其中,HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。
HMAC-MD5签名算法是从MD5哈希函数构造的一种键控哈希算法,被用作(HMAC),此HMAC进程将密钥与消息数据混合,使用哈希函数对混合结果进行哈希运算,将所得到的哈希值与该密钥混合,然后再次应用哈希函数,输出的哈希值长度为128位。
HMAC-SHA1签名算法可以用于对一段消息数据进行生成签名摘要。
在本说明书一些实施例中,可以将所述待读取的数据块作为消息数据,将最终运算结果作为MAC值。
S34,基于生成的所述数据块对应的消息认证数据的地址,从第二存储装置中读取得到消息认证数据,作为第二消息认证数据。
S35,在所述第一消息认证数据和所述第二消息认证数据一致时,确定所述数据块的完整性校验通过;否则,确定所述数据块的完整性校验未通过。
在具体实施中,可以设置所述第二存储装置未存储预设的处理器或处理器核心的运行数据,所述预设的处理器适于发出读数据请求,用以获取所述第一存储装置中存储的数据。由于所述第二存储装置未存储所述预设的存储器或处理器核心的运行数据,因此所述预设的处理器或处理器核心,或者片上系统芯片封装结构之外的设备均无法感知所述第二存储装置的存在,故可以避免所述预设的处理器或处理器核心被恶意劫持而非法获取所述第一存储装置中的数据,故可以进一步提升片上系统的安全性能。根据需要,可以设置所述第二存储装置不存储所述片上系统中部分处理器核心或者全部处理器核心的运行数据。
在具体实施中,处理器或处理器核心可以与所述第二存储装置形成片上系统的组成结构,在本说明书一些实施例中,所述片上系统还可以包括安全处理器或者其他功能的处理器。
在具体实施中,所述第一存储装置可以为片内内存,也可以为片外内存(如可以是主板上设置的内存条)。
在具体实施中,所述第二存储装置可以为片内内存。
在具体实施中,所述第二存储装置与所述预设的处理器或处理器核心可以位于不同的封装结构中。
在具体实施中,也可以采用多芯片封装技术,将所述第二存储装置与发出所述预设的处理器或处理器核心封装于同一封装结构中。作为一示例,所述第二存储装置与预设的CPU或者CPU核心可以位于同一基板的不同的晶粒(Die)上,采用这种方式,可以节约芯片成本并减小芯片体积。作为另一示例,所述第二存储装置与预设的CPU或CPU核心可以位于同一个晶粒上例如可以直接在CPU晶粒上集成专用内存,用于存储MAC值。采用这种方式,可以减小片上系统封装结构的整体体积,提高系统集成度。
在具体实施中,为进一步提升数据可靠性,所述第二存储装置可以仅用于存储所述消息认证数据。
片上系统的一些具体实现方式可以参照图4至图7所示的片上系统的结构示意图,本说明书将在后述实施例中进行相应的详细说明。
采用上述存储装置数据完整性保护方法,可以基于读数据请求,根据待读取的数据块的地址,从第一存储装置中读取得到对应的数据块,并基于所述数据块,生成对应的消息认证数据,作为第一消息认证数据,之后,基于生成的所述数据块对应的消息认证数据的地址,从第二存储装置中读取得到的消息认证数据,作为第二消息认证数据,基于所述第一消息认证数据和所述第二消息认证数据是否一致,确定所述数据块的完整性校验是否通过。在数据从所述第一存储装置读出时,通过上述数据完整性校验处理过程,可以避免数据在所述第一存储装置存储期间被篡改,为所述第一存储装置中的数据提供完整性保护。
在具体实施中,还可以根据具体需要对上述实施例作进一步的优化或扩展。
例如,在一些数据处理系统或数据处理设备中,存在对一些数据的数据完整性保护需求较高,而对另一些数据的数据完整性保护需求不敏感的情况。针对这些数据处理系统或数据处理设备,可以在读数据请求中设置数据完整性保护标识,通过获取读数据请求中包含的数据完整性标识是否处于有效状态,确定是否对待读取的数据块进行数据完整性校验。
具体而言,参照图3,可以在前述实施例中步骤S32之前,可以先执行步骤S36:判断所述读数据请求中包含的数据完整性保护标识(如M比特位)是否处于有效状态,如果是,则可以执行步骤S32;否则,可以执行步骤S37:从所述第一存储装置中所述待读取的数据块的地址对应的存储区读取数据块,并向发出所述读数据请求的处理器返回。
继续参照图3,步骤S38(可以作为可选步骤执行),在确定所述数据块的完整性校验通过时,可以向发出所述读数据请求的处理器返回所述数据块;而在确定所述数据块的完整性校验未通过时,可以向预设的安全处理装置发送中断请求,使得所述安全处理装置对所述读数据请求进行预设的处理操作。
在一些具体实施例中,所述发出请求的处理器可以作为所述安全处理装置,基于所述中断请求,对所述读数据请求进行预设的处理操作。例如,所述发出请求的处理器可以终止运行所述读数据请求对应的软件,或者输出告警提醒,提醒用户所述待读取的数据块不完整,可能已经被篡改。
在另一些具体实施中,可以在片上系统中设置专门的安全处理器或者其他片内安全单元作为所述安全处理装置,可以向所述预设的安全处理装置,如安全处理器(PlatformSecurity Processor,PSP),发送所述中断请求,使得所述安全处理装置可以向所述发出读数据请求的处理器发出控制指令,控制所述发出数据请求的处理器终止运行所述读数据请求对应的软件,或者终止所述数据访问操作。或者,所述预设的安全处理装置可以基于所述中断请求,输出告警提醒,提醒用户所述待读取的数据块可能已经被篡改,使得用户基于所述提醒可以采用相应的安全防护操作或数据恢复操作。
接下来通过具体实施例对存储装置中的数据能够进行完整性保护的系统及装置等进行相应的描述。
参照图4所示的一种片上系统的结构示意图,在本说明书实施例中,如图4所示的片上系统40,可以与置于所述片上系统内部或外部的第一存储装置4A耦接,片上系统40可以与所述第一存储装置4A交互,以进行数据写操作。在具体实施中,片上系统40可以包括:
处理器核心41,适于发出写数据请求,所述写数据请求包括待写入数据块和待写入数据块的地址;
存储装置控制器42,可以包括:校验数据生成单元421,适于基于接收到的写数据请求,获取待写入数据块,针对所述待写入数据块,按照预设的第一生成方法生成对应的消息认证数据,根据待写入数据块的地址,按照预设的第二生成方法生成所述消息认证数据的地址;将所述待写入数据块写入所述第一存储装置中所述待写入数据的地址对应的存储区,将所述消息认证数据写入第二存储装置中所述消息认证数据的地址对应的存储区;
第二存储装置43,适于存储所述消息认证数据,所述消息认证数据适于对对应的写入所述第一存储装置的数据块在后续从所述第一存储装置读出时进行数据完整性校验。
在具体实施中,所述处理器核心41可以为一个,也可以为多个,一个或多个处理器核心可以形成在同一基底上。
采用上述片上系统,通过在数据写入过程中在第二存储装置中存储待写入数据块对应的消息认证数据,使得对应的写入所述第一存储装置4A的数据块在后续从所述第一存储装置4A读出时可以通过所述第二存储装置43中获取的所述消息认证数据进行数据完整性校验,因而,可以识别出数据在所述第一存储装置4A存储期间是否被篡改,进而可以为所述第一存储装置4A中存储的数据提供数据完整性保护。
在具体实施中,所述校验数据生成单元421还适于在针对待写入数据块,按照预设的第一生成方法生成对应的消息认证数据,以及根据待写入数据块的地址,按照预设的第二生成方法生成所述消息认证数据的地址之前,确定所述写数据请求中包含的数据完整性保护标识是否处于有效状态。在确定所述写请求中包含的数据完整性标识处于有效状态时,所述校验数据生成单元421可以针对所述待写入数据块,按照预设的第一生成方法生成对应的消息认证数据,根据待写入数据块的地址,按照预设的第二生成方法生成所述消息认证数据的地址;以及将所述待写入数据块写入所述第一存储装置中所述待写入数据的地址对应的存储区,将所述消息认证数据写入第二存储装置中所述消息认证数据的地址对应的存储区。若确定所述写请求中包含的数据完整性标识处于有效状态时,所述校验数据生成单元421可以停止后续数据生成操作,由所述存储装置控制器42直接将所述待写入数据块写入所述第一存储装置4A即可。
在具体实施中,所述第二存储装置43可以禁止运行预设的处理器核心的运行数据,这样一来,所述预设的处理器或处理器核心,或片上系统40的芯片封装结构之外的设备无法感知所述第二存储装置43的存在,故可以避免所述预设的处理器或处理器核心被恶意劫持而非法获取所述第一存储装置4A中的数据,故可以进一步提升片上系统的安全性能。在具体实施中,所述第二存储装置43与所述预设的处理器核心可以封装于不同的封装结构中,也可以封装于同一封装结构中,例如,所述预设的处理器核心为处理器核心41,则所述第二存储装置43与所述处理器核心41可以位于同一基板上的不同的晶粒上,所述第二存储装置43与所述处理器核心41可以位于同一个晶粒上所述半导体封装结构中的基板的材质可以是硅、锗、碳化硅等,可以根据具体需要选用。
参照图5所示的一种片上系统的结构示意图,在本说明书实施例中,如图5所示的片上系统50,可以与置于所述片上系统内部或外部的第一存储装置5A耦接,片上系统50可以与所述第一存储装置5A交互,以进行数据读操作。在具体实施中,片上系统50可以包括:处理器核心51、第二存储装置52和存储装置控制器53,其中:
处理器核心51,适于发出读数据请求,所述读数据请求包括待读取的数据块的地址;
第二存储装置52,适于存储所述待读取的数据块在写入所述第一存储装置时生成的消息认证数据;
存储装置控制器53,包括:数据完整性校验单元531,适于接收读数据请求,获取待读取的数据块的地址,根据所述待读取的数据块的地址,按照预设的第二生成方法生成所述数据块对应的消息认证数据的地址;基于所述数据块的地址,从所述第一存储装置中读取得到对应的数据块,基于所述数据块,按照预设的第一生成方法生成对应的消息认证数据,作为第一消息认证数据,并基于生成的所述数据块对应的消息认证数据的地址,从所述第二存储装置中读取得到消息认证数据,作为第二消息认证数据;在所述第一消息认证数据和所述第二消息认证数据一致时,确定所述数据块的完整性校验通过;否则,确定所述数据块的完整性校验未通过。
采用上述片上系统50,可以基于处理器核心51的读数据请求,根据待读取的数据块的地址,从第一存储装置5A中读取得到对应的数据块,并基于所述数据块,生成对应的消息认证数据,作为第一消息认证数据,之后,基于生成的所述数据块对应的消息认证数据的地址,从第二存储装置52中读取得到的消息认证数据,作为第二消息认证数据,基于所述第一消息认证数据和所述第二消息认证数据是否一致,确定所述数据块是否完整,因此可以保护所述第一存储装置5A中数据的完整性,避免所述第一存储装置5A中的数据被篡改。
在具体实施中,所述数据完整性校验单元531还适于在根据所述待读取的数据块的地址,按照预设的第二生成方法生成所述数据块对应的消息认证数据的地址之前,确定所述读数据请求中包含的数据完整性保护标识是否处于有效状态。若确定获取到的所述数据完整性保护标识处于有效状态,则可以继续执行数据完整性校验操作,即可以执行如下操作:
根据所述待读取的数据块的地址,按照预设的第二生成方法生成所述数据块对应的消息认证数据的地址,以及基于所述数据块的地址,从所述第一存储装置中读取得到对应的数据块,基于所述数据块,按照预设的第一生成方法生成对应的消息认证数据,作为第一消息认证数据,并基于生成的所述数据块对应的消息认证数据的地址,从所述第二存储装置中读取得到消息认证数据,作为第二消息认证数据;在所述第一消息认证数据和所述第二消息认证数据一致时,确定所述数据块的完整性校验通过;否则,确定所述数据块的完整性校验未通过。
在本说明书一些实施例中,可以设置所述第二存储装置禁止存储预设的处理器或处理器核心的运行数据,所述预设的处理器适于发出读数据请求,用以获取所述第一存储装置中存储的数据。由于所述第二存储装置未存储所述预设的存储器或处理器核心的运行数据,因此所述预设的处理器或处理器核心,或者片上系统芯片封装结构之外的设备均无法感知所述第二存储装置的存在,故可以避免所述预设的处理器或处理器核心被恶意劫持而非法获取所述第一存储装置中的数据,故可以进一步提升片上系统的安全性能。根据需要,可以设置所述第二存储装置不存储所述片上系统中部分处理器核心或者全部处理器核心的运行数据。
在具体实施中,所述预设的处理器核心可以为所述处理器核心51。所述处理器核心51可以为一个处理器核心,也可以为多个处理器核心,或者为一个片上系统中的所有处理器核心。
在具体实施中,所述第二存储装置52与所述预设的处理器核心可以位于不同的封装结构中。所述第二存储装置52与所述预设的处理器核心也可以封装于同一封装结构中,例如,所述第二存储装置52与所述预设的处理器核心51可以位于同一基板上不同的晶粒上,也可以位于同一晶粒上。
在具体实施中,继续参照图5,片上系统50还可以包括:安全处理装置54,所述数据完整性校验单元531还适于在确定所述数据块的完整性校验通过时,向发出所述读数据请求的处理器核心返回所述数据块;在确定所述数据块的完整性校验未通过时,向所述安全处理装置54发送中断请求;
所述安全处理装置54,适于基于所述中断请求,对所述读数据请求进行预设的处理操作。
可以在片上系统50中设置专门的安全处理器或者其他片内安全单元作为所述安全处理装置54,可以向所述预设的安全处理装置,如安全处理器(Platform SecurityProcessor,PSP),发送所述中断请求,使得所述安全处理装置54可以向所述发出读数据请求的处理器发出控制指令,控制所述处理器终止运行所述读数据请求对应的软件,或者终止所述数据访问操作。或者,所述安全处理装置54可以基于所述中断请求,输出告警提醒,提醒用户所述待读取的数据块的完整性校验未通过,可能已经被篡改,使得用户基于所述提醒可以采用相应的安全防护操作或数据恢复操作。
参照图6所示的片上系统的结构示意图,在本说明书一些实施例中,如图6所示的片上系统60,可以与置于所述片上系统内部或外部的第一存储装置6A耦接,片上系统60可以与所述第一存储装置6A进行数据交互,以进行数据读写操作,所述片上系统60可以包括:
处理器核心61,适于发出读数据请求和写数据请求,其中,所述读数据请求包括待读取的数据块的地址;所述写数据请求包括待写入数据块和待写入数据块的地址;
第二存储装置62,适于存储所述待读取的数据块在写入所述第一存储装置时生成的消息认证数据;
存储装置控制器63,可以包括:校验数据生成单元631和数据完整性校验单元632,其中:
校验数据生成单元631,适于基于接收到的写数据请求,获取待写入数据块,针对所述待写入数据块,按照预设的第一生成方法生成对应的消息认证数据,根据待写入数据块的地址,按照预设的第二生成方法生成所述消息认证数据的地址;将所述待写入数据块写入所述第一存储装置中所述待写入数据的地址对应的存储区,将所述消息认证数据写入第二存储装置中所述消息认证数据的地址对应的存储区;
数据完整性校验单元632,适于接收读数据请求,获取待读取的数据块的地址,根据所述待读取的数据块的地址,按照预设的第二生成方法生成所述数据块对应的消息认证数据的地址;基于所述数据块的地址,从所述第一存储装置中读取得到对应的数据块,基于所述数据块,按照预设的第一生成方法生成对应的消息认证数据,作为第一消息认证数据,并基于生成的所述数据块对应的消息认证数据的地址,从所述第二存储装置中读取得到消息认证数据,作为第二消息认证数据;在所述第一消息认证数据和所述第二消息认证数据一致时,确定所述数据块的完整性校验通过;否则,确定所述数据块的完整性校验未通过。
采用上述实施例中的片上系统,一方面,在向所述第一存储装置写数据时,通过生成与待写入数据块对应的消息认证数据及所述消息认证数据的地址,并将所述数据块写入所述第一存储装置,将所述消息认证数据写入第二存储装置;另一方面,在从所述第一存储装置读取数据块时,通过获取待读取的数据块,生成对应的消息认证数据,并将其与从所述第二存储装置获取的消息认证数据进行比对,确定二者是否一致,通过校验结果可以确定所述数据块在所述第一存储装置存储期间是否被篡改,从而可以为所述第一存储装置中存储的数据提供数据完整性保护。
在具体实施中,如图6所示,所述存储装置控制器63还可以包括:数据完整性保护标识识别单元633,适于确定接收到的写数据请求或读数据请求中包含的数据完整性保护标识是否处于有效状态,并在所述数据完整性保护标识处于有效状态时,基于所述写数据请求触发所述校验数据生成单元执行相应操作,基于所述读数据请求触发所述数据完整性校验单元执行相应操作。
通过所述数据完整性保护标识识别单元对所述写数据请求或读数据请求中包含的数据完整性保护标识的有效状态进行识别,以确定是否对相应数据提供数据完整性保护,可以满足用户对数据不同的安全需求,也可以避免浪费处理资源。
在具体实施中,如前述片上系统的实施例所述,所述第二存储装置可以不存储预设的处理器核心的运行数据。
在具体实施中,继续参照图6,片上系统60还可以包括:安全处理装置64;
相应地,所述数据完整性校验单元632还适于在确定所述数据块的完整性校验通过时,向发出所述读数据请求的处理器返回所述数据块;在确定所述数据块的完整性校验未通过时,向所述安全处理装置发送中断请求;
所述安全处理装置64,适于基于所述中断请求,对所述读数据请求进行预设的处理操作。
可以在片上系统60中设置专门的安全处理器或者其他片内安全单元作为所述安全处理装置64,可以向所述预设的安全处理装置,如安全处理器(Platform SecurityProcessor,PSP),发送所述中断请求,使得所述安全处理装置54可以向所述发出读数据请求的处理器发出控制指令,控制所述发出读数据请求的处理器终止运行所述读数据请求对应的软件,或者终止所述数据访问操作。或者,所述安全处理装置64可以基于所述中断请求,输出告警提醒,提醒用户所述待读取的数据块不完整,可能已经被篡改,使得用户基于所述提醒可以采用相应的安全防护操作或数据恢复操作。
在具体实施中,以上各实施例所述片上系统对应的实施例中,所述第一存储装置可以为片内内存,也可以为片外内存(如可以是主板上设置的内存条)。
在具体实施中,所述第二存储装置可以为片内内存。
如图7所示,为一种使用场景中的片上系统的结构示意图,片上系统70整体作为一个CPU芯片,可以与片外内存7A通信,以进行数据读写操作,片上系统70可以包括处理器核心71、内存控制器72和片内内存73,其中:
处理器核心71可以通过内存控制器与片外内存进行数据交互,进行数据读写操作,所述内存控制器72中可以包括校验数据生成单元721及数据完整性校验单元722,校验数据生成单元721及数据完整性校验单元722的具体实现可以参见前述实施例所述的校验数据生成单元及数据完整性校验单元,此处不再赘述。
片内内存73可以存储所述校验数据生成单元721所生成的消息认证数据。
其中,CPU核心71与内存处理器可以制作于同一晶粒上,如图7所示的CPU晶粒71S,所述片内内存73也可以制作于所述CPU晶粒71S上;或者所述片内内存73也可以在内存晶粒73S上单独制作,之后利用多芯片封装技术将所述内存晶粒73S与所述CPU晶粒71S封装在一起,形成CPU芯片。
此外,内存控制器还可以包括数据完整性保护标识识别单元723,具体实现可以参见前述实施例中详细介绍。
如前实施例所述,所述片上系统70还可包括安全处理器74,可以用于处理来自所述内存控制器的中断请求,对数据完整性校验单元722确定所述片外内存中的数据被篡改时,采用相应的保护措施。
本说明书实施例还提供了一种存储装置控制器,参照图8,存储装置控制器80适于分别与处理器核心81、第一存储装置82及第二存储装置83耦接,所述存储装置控制器80可以包括:
校验数据生成单元801,适于基于接收到的写数据请求,获取待写入数据块,针对所述待写入数据块,按照预设的第一生成方法生成对应的消息认证数据,根据待写入数据块的地址,按照预设的第二生成方法生成所述消息认证数据的地址;将所述待写入数据块写入所述第一存储装置中所述待写入数据的地址对应的存储区,将所述消息认证数据写入第二存储装置中所述消息认证数据的地址对应的存储区;
数据完整性校验单元802,适于接收读数据请求,获取待读取的数据块的地址,根据所述待读取的数据块的地址,按照预设的第二生成方法生成所述数据块对应的消息认证数据的地址;基于所述数据块的地址,从所述第一存储装置中读取得到对应的数据块,基于所述数据块,按照预设的第一生成方法生成对应的消息认证数据,作为第一消息认证数据,并基于生成的所述数据块对应的消息认证数据的地址,从所述第二存储装置中读取得到消息认证数据,作为第二消息认证数据;在所述第一消息认证数据和所述第二消息认证数据一致时,确定所述数据块的完整性校验通过;否则,确定所述数据块的完整性校验未通过。
所述存储装置控制器80的具体实施方式可以参见前述实施例中片上系统及存储装置数据完整性保护方法中的介绍实施,此处不再详述。
本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令运行时可以执行本说明书上述任一实施例方法的步骤。其中,所述计算机可读存储介质可以是内存、光盘、机械硬盘、固态硬盘、云存储介质等各种适当的可读存储介质。所述计算机可读存储介质上存储的指令执行上述任一实施例所述的方法,具体可参照上述实施例,不再赘述。
虽然本说明书披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。