CN111143247B - 存储装置数据完整性保护方法及其控制器、片上系统 - Google Patents

存储装置数据完整性保护方法及其控制器、片上系统 Download PDF

Info

Publication number
CN111143247B
CN111143247B CN201911420621.4A CN201911420621A CN111143247B CN 111143247 B CN111143247 B CN 111143247B CN 201911420621 A CN201911420621 A CN 201911420621A CN 111143247 B CN111143247 B CN 111143247B
Authority
CN
China
Prior art keywords
data
storage device
access
main body
message authentication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911420621.4A
Other languages
English (en)
Other versions
CN111143247A (zh
Inventor
王海洋
姜莹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Haiguang Information Technology Co Ltd
Original Assignee
Haiguang Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Haiguang Information Technology Co Ltd filed Critical Haiguang Information Technology Co Ltd
Priority to CN201911420621.4A priority Critical patent/CN111143247B/zh
Publication of CN111143247A publication Critical patent/CN111143247A/zh
Application granted granted Critical
Publication of CN111143247B publication Critical patent/CN111143247B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

存储装置数据完整性保护方法及其控制器、片上系统,所述方法包括:基于接收到的访存请求,获取所述访存请求所包含的安全访存主体标识;根据所存储的安全访存主体标识与访存主体密钥之间的对应关系,获取所述安全访存主体标识对应的访存主体密钥,作为第一密钥;对所述第一密钥进行非线性变换,得到与访存地址相关的密钥,作为第二密钥;根据接收到的访存请求的请求类型,对第一存储装置进行相应的访存操作,并基于所述第二密钥和所述访存请求对应的数据,采用预设的运算方式进行哈希运算,生成对应的消息认证数据并存储,用以对所述第一存储装置中存储的相应数据读出时进行数据完整性校验。上述方案能够对第一存储装置中的数据提供完整性保护。

Description

存储装置数据完整性保护方法及其控制器、片上系统
技术领域
本说明书实施例涉及计算机技术领域,尤其涉及存储装置数据完整性保护方法及其控制器、片上系统。
背景技术
在计算机系统中,中央处理器(Central Processing Unit,CPU)数据写入到存储装置如内存中后,存在着被篡改的风险。比如,可以通过行锤击(RowHammer)方法翻转内存中的比特位,或者通过物理硬件攻击的方法,篡改内存数据。这样可以在CPU完全不知情的情况下,篡改已经写入内存中的数据,因此黑客能够达到恶意入侵虚拟机数据的目的。
即使部分CPU对写入内存中的数据进行了加密,仍然可以通过密文冲突攻击等方法修改加密后的数据,因此目前存在即使内存数据加密也难以抵御黑客的攻击的问题。
发明内容
有鉴于此,本说明书实施例提供了一种存储装置数据完整性保护方法及其控制器、片上系统,以对存储装置中的数据提供完整性保护,避免数据在存储装置存储期间被篡改。
本说明书实施例提供了一种存储装置数据完整性保护方法,包括:
基于接收到的访存请求,获取所述访存请求所包含的安全访存主体标识;
根据所存储的安全访存主体标识与访存主体密钥之间的对应关系,获取所述安全访存主体标识对应的访存主体密钥,作为第一密钥;
对所述第一密钥进行非线性变换,得到与访存地址相关的密钥,作为第二密钥;
根据接收到的访存请求的请求类型,对第一存储装置进行相应的访存操作,并基于所述第二密钥和所述访存请求对应的数据,采用预设的运算方式进行哈希运算,生成对应的消息认证数据并存储,用以对所述第一存储装置中存储的相应数据读出时进行数据完整性校验;
其中,安全处理装置响应于访存主体启动时发送的存储装置数据完整性保护请求,为所述访存主体分配唯一认证标识作为安全访存主体标识,并为所述访存主体分配访存主体密钥,将所分配的安全访存主体标识返回至所述访存主体,将为所述访存主体所分配的安全访存主体标识和访存主体密钥进行存储,建立所述安全访存主体标识与访存主体密钥之间的对应关系。
可选地,所述存储装置数据完整性保护方法还包括:所述安全处理装置响应于访存主体退出时发送的存储装置数据完整性保护取消请求,回收为所述访存主体分配的安全访存主体标识及访存主体密钥,并无效所存储的对应的安全访存主体标识与访存主体密钥之间的对应关系。
可选地,所述访存请求为写数据请求,所述根据接收到的访存请求的请求类型,对第一存储装置进行相应的访存操作,并基于所述第二密钥和所述访存请求对应的数据,采用预设的运算方式进行哈希运算,生成对应的消息认证数据并存储,以对所述第一存储装置中存储的相应数据读出时进行数据完整性校验,包括:
将所述写数据请求对应的待写入数据写入所述第一存储装置;
基于所述第二密钥和所述写数据请求对应的待写入数据,采用所述预设的运算方式进行哈希运算,生成所述消息认证数据;
基于所述待写入数据的地址,生成所述消息认证数据的地址,并基于所述消息认证数据的地址,将所述消息认证数据存储至预设的第二存储装置,用以待所述第一存储装置中对应的写入数据在后续读出时进行数据完整性校验。
可选地,所述访存请求为读数据请求,所述根据接收到的访存请求的请求类型,对第一存储装置进行相应的访存操作,并基于所述第二密钥和所述访存请求对应的数据,采用预设的运算方式进行哈希运算,生成对应的消息认证数据并存储,用以对所述第一存储装置的存储的相应数据读出时进行数据完整性校验,包括:
基于所述读数据请求对应的待读取数据的地址,从所述第一存储装置读取得到对应的数据;基于所述第二密钥和读取得到的数据,采用所述预设的运算方式进行哈希运算,生成对应的消息认证数据,作为第一消息认证数据;
基于所述待读取数据的地址,生成对应的消息认证数据的地址,基于生成的消息认证数据的地址,从第二存储装置中读取得到消息认证数据,作为第二消息认证数据;
基于所述第一消息认证数据与所述第二消息认证数据是否一致,确定所述读取得到的数据的数据完整性校验通过;
基于校验结果确定是否返回从所述第一存储装置读取得到的数据。
可选地,所述基于校验结果确定是否返回从所述第一存储装置读取得到的数据,包括:
在确定所述读出得到的数据的完整性校验未通过时,向所述安全处理装置发送中断请求,使得所述安全处理装置基于所述中断请求,对所述读数据请求进行预设的数据保护处理操作;
在确定所述读出得到的数据的完整性校验通过时,向所述读数据请求对应的访存主体返回读出数据。
可选地,所述存储装置数据完整性保护方法还包括:
生成所述消息认证数据在第一存储装置中的存储地址并存储至所述第二存储装置;
响应于预设的触发条件,在预设时长内阻止访存请求,并在所述预设时长内,按照所述第二存储装置中存储的消息认证数据在所述第一存储装置中的存储地址,将所述消息认证数据写入至所述第一存储装置中。
可选地,所述预设的触发条件包括以下至少一种:
所述第二存储装置的空闲存储空间小于预设存储量阈值;
所述第一存储装置的带宽处于空闲状态。
可选地,所述生成所述消息认证数据在第一存储装置中的存储地址,包括:
基于预设的所述第一存储装置中的地址划分规则,根据所述待写入数据的存储地址,按照预设的生成方法生成所述消息认证数据在第一存储装置中的存储地址。
可选地,所述预设的所述第一存储装置中的地址划分规则,包括:所述第一存储装置的地址段中写入数据对应的有效数据存储区域的第一地址段与对应的消息认证数据存储区域的第二地址段按照预设的存储空间比例关系分区划分。
可选地,在获取所述访存请求所包含的安全访存主体标识之前,还包括:确定所述访存请求中包含的数据完整性保护标识处于有效状态。
本说明书实施例还提供了一种片上系统,所述片上系统与置于所述片上系统内部或外部的第一存储装置耦接,以进行数据访存操作,所述片上系统包括:第二存储装置、存储装置控制器及安全处理装置,其中:
所述安全处理装置,适于响应于访存主体启动时发送的存储装置数据完整性保护请求,为所述访存主体分配唯一认证标识作为安全访存主体标识,并为所述访存主体分配访存主体密钥,将所分配的安全访存主体标识返回至所述访存主体,将为所述访存主体所分配的安全访存主体标识和访存主体密钥发送至所述存储装置控制器进行存储;
所述存储装置控制器,适于基于所述安全处理装置为所述访存主体所分配的安全访存主体标识和访存主体密钥,建立所述安全访存主体标识与访存主体密钥之间的对应关系并存储;基于接收到的访存请求,获取所述访存请求所包含的安全访存主体标识;根据所存储的安全访存主体标识与访存主体密钥之间的对应关系,获取所述安全访存主体标识对应的访存主体密钥,作为第一密钥;对所述第一密钥进行非线性变换,得到与访存地址相关的密钥,作为第二密钥;根据接收到的访存请求的请求类型,对第一存储装置进行相应的访存操作,并基于所述第二密钥和所述访存请求对应的数据,采用预设的运算方式进行哈希运算,生成对应的消息认证数据并存储至所述第二存储装置,用以对所述第一存储装置中存储的相应数据在读出时进行数据完整性校验;
所述第二存储装置,适于存储所述存储装置控制器在将数据写入所述第一存储装置中时所生成的消息认证数据。
可选地,所述安全处理装置还适于响应于访存主体退出时发送的存储装置数据完整性保护取消请求,回收为所述访存主体分配的安全访存主体标识及访存主体密钥,并向所述存储装置控制器发出信息无效指令,以无效所存储的对应的安全访存主体标识与访存主体密钥之间的对应关系。
可选地,所述存储装置控制器,适于将写数据请求对应的待写入数据写入所述第一存储装置;基于所述第二密钥和所述写数据请求对应的待写入数据,采用预设的运算方式进行哈希运算,生成所述消息认证数据;基于所述待写入数据的地址,生成所述消息认证数据的地址,并基于所述消息认证数据的地址,将所述消息认证数据存储至所述第二存储装置,用以待所述第一存储装置中对应的写入数据在后续读出时进行数据完整性校验。
可选地,所述存储装置控制器,适于基于读数据请求对应的待读取数据的地址,从所述第一存储装置读取得到对应的数据;基于所述第二密钥和读取得到的数据,采用所述预设的运算方式进行哈希运算,生成对应的消息认证数据,作为第一消息认证数据;基于所述待读取数据的地址,生成对应的消息认证数据的地址,基于生成的消息认证数据的地址,从所述第二存储装置中读取得到消息认证数据,作为第二消息认证数据;基于所述第一消息认证数据与所述第二消息认证数据是否一致,确定所述读取得到的数据的数据完整性校验是否通过;基于校验结果确定是否返回所述从所述第一存储装置读取得到的对应数据。
可选地,所述存储装置控制器,适于在确定所述读出得到的数据的完整性校验未通过时,向所述安全处理装置发送中断请求,使得所述安全处理装置基于所述中断请求,对所述读数据请求进行预设的数据保护处理操作;在确定所述读出得到的数据的完整性校验通过时,向所述读数据请求对应的访存主体返回读出数据。
可选地,所述存储装置控制器,还适于生成所述消息认证数据在第一存储装置中的存储地址并存储至所述第二存储装置,并响应于预设的触发条件,在预设时长内阻止访存请求,并在所述预设时长内,按照所述第二存储装置中存储的消息认证数据在所述第一存储装置中的存储地址,将所述消息认证数据写入至所述第一存储装置中。
可选地,所述存储装置控制器,适于基于预设的所述第一存储装置中的地址划分规则,根据所述待写入数据的存储地址,按照预设的生成方法生成所述消息认证数据在第一存储装置中的存储地址。
可选地,所述第一存储装置的地址段中写入数据对应的有效数据存储区域的第一地址段与对应的消息认证数据存储区域的第二地址段按照预设的存储空间比例关系分区划分。
可选地,所述片上系统还包括:处理器核心,适于运行所述访存主体;所述第二存储装置适于按照如下任意一种位置设置:
所述第二存储装置与所述处理器核心位于同一基板上不同的晶粒上;
所述第二存储装置与所述处理器核心位于两个封装结构中;
所述第二存储装置与所述处理器核心位于同一个晶粒上;
所述第二存储装置内置于所述存储装置控制器中。
本说明书实施例还提供了一种存储装置控制器,适于与第一存储装置耦接,对所述第一存储装置进行访存控制,所述存储装置控制器包括:
第一密钥获取单元,适于基于安全处理装置为访存主体启动时所分配的安全访存主体标识和访存主体密钥,建立访存主体标识和访存主体密钥之间的对应关系并存储;基于接收到的访存请求,获取所述访存请求中所包含的安全访存主体标识,根据所存储的安全访存主体标识与访存主体密钥之间的对应关系,获取所述安全访存主体标识对应的访存主体密钥,作为第一密钥;
密钥变换单元,适于对所述第一密钥进行非线性变换,得到与访存地址相关的密钥,作为第二密钥;
访存控制单元,适于根据接收到的访存请求的请求类型,对所述第一存储于装置进行相应的访存操作;
消息认证数据生成单元,适于基于所述第二密钥和所述访存请求对应的数据,采用预设的运算方式进行哈希运算,生成对应的消息认证数据并存储,以对所述第一存储装置的存储的相应数据读出时进行数据完整性校验。
可选地,所述第一密钥获取单元还适于在接收到安全处理装置响应于访存主体退出时所发送的存储装置数据完整性保护取消请求所生成的信息无效指令,无效所存储的对应的安全访存主体标识与访存主体密钥之间的对应关系。
可选地,所述访存控制单元,适于基于接收到的写数据请求,获取待写入数据及所述待写入数据的存储地址,基于所述待写入数据的存储地址,将所述待写入数据写入所述第一存储装置;
所述存储装置控制器还包括:校验数据处理单元,适于基于所述待写入数据的地址,生成所述消息认证数据的地址,并基于所述消息认证数据的地址,将所述消息认证数据存储至第二存储装置。
可选地,所述存储装置控制器还包括:数据完整性校验单元、数据返回单元和中断单元;
所述访存控制单元,还适于基于接收到的读数据请求,获取待读取数据的地址,基于所述待读取数据的地址,从所述第一存储装置读取对应数据;
所述数据完整性校验单元,适于基于所述访存控制单元读取得到的数据和所述第二密钥,采用所述预设的运算方式进行哈希运算,得到对应的消息认证数据,作为第一消息认证数据;基于待读取数据的地址,生成对应的消息认证数据的地址,并基于所生成的消息认证数据的地址,从所述第二存储装置中获取对应的消息认证数据,作为第二消息认证数据;基于所述第一消息认证数据与所述第二消息认证数据是否一致,确定所述读取得到的数据的数据完整性校验是否通过;
所述数据返回单元,适于在所述数据完整性校验单元确定所述读取得到的数据的完整性校验通过时,向所述读数据请求对应的访存主体返回读出数据;
所述中断单元,适于在所述数据完整性校验单元确定所述读出得到的数据的完整性校验未通过时,向所述安全处理装置发送中断请求,使得所述安全处理装置基于所述中断请求,对所述读数据请求进行预设的数据保护处理操作。
可选地,所述校验数据处理单元还适于基于待写入数据的地址,生成所述消息认证数据在所述第一存储装置中的地址,并将所述消息认证数据在所述第一存储装置中的地址与所述消息认证数据一并存储至所述第二存储装置,并响应于预设的触发条件,在预设时长内阻止访存请求,并在所述预设时长内将所述第二存储装置中存储的消息认证数据按照所述第二存储装置存储的地址写入至所述第一存储装置中。
采用本说明书实施例中的存储装置数据完整性保护方案,安全处理装置响应于访存主体启动时所发送的存储装置数据完整性保护请求,为所述访存主体分配安全访存主体标识及访存主体密钥,并将所分配的安全访存主体标识返回至所述访存主体,将为所述访存主体所分配的安全访存主体标识和访存主体密钥进行存储,建立所述安全访存主体标识与访存主体密钥之间的对应关系,之后,对于访存请求,存储装置控制器通过获取所述访存请求所包含的安全访存主体标识,并根据所存储的安全访存主体标识与访存主体密钥之间的对应关系,获取所述安全访存主体标识对应的访存主体密钥,作为第一密钥,对所述第一密钥进行非线性变换,得到与访存地址相关的密钥,作为第二密钥,并基于所述第二密钥和所述访存请求对应的数据,采用预设的运算方式进行哈希运算,生成对应的消息认证数据并存储,用以对所述第一存储装置存储的相应数据读出时进行数据完整性校验。一方面,对于访存主体,若没有安全处理装置分配的安全访存主体标识,则相应的访存请求中的安全访存主体标识信息位的值与安全处理装置所分配的访存主体标识具有明显的不同,进行访存操作时所生成的消息认证数据的第一密钥与安全处理装置已分配了安全访存主体标识的访存主体的第一密钥不同,进而基于所述第一密钥所生成的消息认证数据不同,因而采用消息认证数据在访存数据从所述第一存储装置读出时进行数据完整性校验,可以识别出数据在所述第一存储装置存储期间被篡改的情形;另一方面,通过对所述第一密钥进行非线性变换,得到第二密钥作为生成消息认证数据的部分输入数据,可以防止物理攻击破解消息认证数据生成算法。综上可知,采用本说明书实施例方案可以同时抵御硬件和软件对所述第一存储装置进行篡改数据的攻击。
进一步地,所述安全处理装置响应于访存主体退出时发送的存储装置数据完整性保护取消请求,回收为所述访存主体分配的安全访存主体标识及访存主体密钥,并无效所存储的对应的安全访存主体标识与访存主体密钥之间的对应关系,可以释放无用的安全访存主体标识和访存主体密钥,也可以避免无用的安全访存主体标识和访存主体密钥被未授权访存主体获取及篡改第一存储装置中的相应数据,进一步提高数据在第一存储装置存储期间的安全性。
进一步地,在确定所述读取得到的数据的完整性校验未通过时,通过向所述安全处理装置发送中断请求,使得所述安全处理装置可以对所述读数据请求进行预设的数据保护处理操作,从而可以实现数据保护,避免所述第一存储装置中的数据被篡改。
进一步地,通过将所述消息认证数据暂时存储在所述第二存储装置,并响应于预设的触发条件,在预设时长内阻止访存请求,并在所述预设时长内,按照所述第二存储装置中存储的消息认证数据在所述第一存储装置中的存储地址,将所述消息认证数据写入至所述第一存储装置中,因此为实现对第一存储装置中的写入数据进行数据完整性保护,仅需要扩展一个存储空间较小的第二存储装置即可,故可以以较小的存储成本实现对第一存储装置中的写入数据进行数据完整性校验。此外,第二存储装置中缓存的消息认证数据仅响应于预设的触发条件才写入至第一存储装置,因而无需在每个数据写操作后都插入写消息认证数据的操作,故可以避免破坏流水线,也可以降低所述消息认证数据存储的带宽开销。
进一步地,在所述第一存储装置的带宽处于空闲状态时,在预设时长内暂时阻止访存请求,并在所述预设时长内将所述第二存储装置中暂存的消息认证数据按照所述第二存储装置存储的存储地址写入至所述第一存储装置中,可以充分利用所述第一存储装置的带宽资源。
进一步地,所述第一存储装置的地址段中对应写入数据的有效数据存储区域的第一地址段与对应的消息认证数据存储区域的第二地址段按照预设的存储空间比例关系分区划分,因此可以将写数据请求对应的写入数据连续存储,所述消息认证数据对所述写数据请求对应的访存主体而言是透明的,所述写数据请求对应的访存主体看到的有效数据的地址是连续的,故可以避免写入数据的碎片化存储,也便于所述写数据请求对应的访存主体对所述第一存储装置进行地址管理。此外,由于所述写数据请求对应的访存主体感知不到所述消息认证数据的存在,故可以避免所述访存主体被恶意劫持而获取到所述第一存储装置中的有效数据,因而可以进一步提升所述第一存储装置中存储的数据的安全性。
进一步地,基于访存请求中包含的数据完整性保护标识是否处于有效状态,并在所述访存请求中包含的数据完整性保护标识处于有效状态时,再获取所述访存请求所包含的安全访存主体标识,基于所述访存主体标识获取第一密钥、第二密钥及生成消息认证数据,以及后续可能的数据完整性校验操作,而在访存请求中包含的数据完整性保护标识处于无效状态时可以执行存储装置普通的读访问和写访问,故可以满足对数据不同的安全需求,也可以避免浪费处理资源。
由于所述第二存储装置与预设的处理器或处理器核心位于同一基板上的不同晶粒上,在实现所述第一存储装置中数据完整性保护的同时,可以减小芯片体积,降低芯片成本。
进一步地,所述第二存储装置与预设的处理器或处理器核心位于同一晶粒上,可以减小片上系统封装结构的整体体积,提高系统集成度。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对本说明书实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了一种数据处理系统的结构示意图;
图2示出了本说明书实施例中一种存储装置数据完整性保护方法的流程图;
图3示出了本说明书实施例中一种写数据过程中的存储装置数据完整性保护方法的流程图;
图4示出了本说明书实施例中一种读数据过程中的存储装置数据完整性保护方法的流程图;
图5示出了本说明书实施例中一种片上系统的结构示意图;
图6示出了本说明书实施例中一种使用场景中的片上系统的结构示意图;
图7示出了本说明书实施例中一种存储控制控制器的结构示意图;
图8示出了本说明书实施例中一种第一存储装置中的存储区域划分示意图。
具体实施方式
如背景技术所述,CPU数据写入到存储装置后,存在着被篡改的风险。参照图1所示的一种数据处理系统的结构示意图,数据处理系统10包括:CPU 11、内存控制器12和内存13。CPU 11中的数据写入到内存13中后,黑客通过RowHammer方法或者通过物理硬件攻击等方法,可以在CPU 11完全不知情的情况下,篡改已经写入内存13中的数据,达到恶意入侵虚拟机数据的目的。其中,RowHammer方法通过重复访问一行存储器,可能导致相邻行中的位翻转,也即黑客可以改变存储器中该位的值。当在容易受到RowHammer攻击影响的机器运行时,该过程能够获得对所有物理内存的读写访问权,从而可以任意篡改所有物理内存中的数据。
即使部分CPU对写入内存中的数据进行了加密,仍然可以通过密文冲突攻击等方法修改加密后的数据,因此目前存在即使内存数据加密也难以抵御黑客的攻击的问题。
针对上述问题,本说明书实施例提供了相应的存储装置数据完整性保护方案。具体而言,为了能够对存储装置中的数据进行数据完整性验证,在将数据写入存储装置时,可以加入能够对数据进行完整性验证的信息,为描述方便,称为消息认证数据。当从存储装置中读数据时,将对应的消息认证数据一并读出,以便验证读出数据在所述存储装置存储期间是否被篡改。
在具体实施中,可以采用消息认证码(Message Authentication Code,MAC)作为消息认证数据。MAC是通信实体双方使用的一种验证机制,保证消息数据完整性的一种工具。MAC又称为带密钥的哈希函数,MAC是基于密钥和消息摘要所获得的一个值,可用于数据源发认证和完整性校验。
构造MAC的一个方法是,通过将一个密钥(key)作为要被哈希的消息的一部分,从而可以在一个不带密钥的哈希函数中接入一个密钥。可是,为了防止在无须知道密钥就可以构造消息的有效MAC值的攻击方法,可以使用嵌套MAC、构造随机密钥等方法来对哈希函数或密钥做一些处理。这些方法虽然可以有效抵御类似的物理攻击,然而,发明人经研究发现,上述方法无法抵御软件攻击。例如,当恶意软件向攻击的目标存储装置写入一段消息,MAC硬件生成装置会对修改后的消息生成MAC值,然而,由于MAC硬件生成装置对相同的写入地址采用相同的密钥和哈希算法生成MAC值,所以,MAC硬件生成装置对恶意软件篡改的消息生成的MAC值是合法的,被攻击的程序读取这段地址验证的MAC值是可以通过消息完整性验证的,但实际消息是被恶意软件篡改的,而被攻击软件却并不知晓。
有鉴于此,本说明书实施例提供了相应的存储装置数据完整性保护方案。首先,可以采用片上系统中的安全处理装置为访存主体分配安全访存主体标识及访存主体密钥。之后,可以基于访存请求,获取到访存主体的安全访存主体标识,进而基于存储的安全访存主体标识与访存主体密钥的对应关系,获取到所述访存请求对应的访存主体密钥,进而基于所述访存主体密钥及访存请求对应的数据生成消息认证数据并存储,用以对所述第一存储装置的存储的相应数据读出时进行数据完整性校验,可以对数据在第一存储装置存储期间进行数据完整性保护,避免数据在所述第一存储装置存储期间被篡改。
为使本领域技术人员更好地理解和实现本说明书实施例的技术构思、具体实现方案、工作原理及作用,以下通过具体实施例进行详细描述。
参照图2所示的存储装置数据完整性保护方法的流程图,在具体实施中,可以由存储装置控制器或者其他访存控制装置进行执行。在存在对第一存储装置的访存请求时,可以执行如下步骤:
S21,基于接收到的访存请求,获取所述访存请求所包含的安全访存主体标识。
在具体实施中,所述访存请求可以为读数据请求或者写数据请求,以对所述第一存储装置进行读写操作。
访存主体在启动时可以向安全处理装置发送存储装置数据完整性保护请求,所述安全处理装置可以为所述访存主体分配安全访存主体标识并分配对应的访存主体密钥,所述安全处理装置将所分配的安全访存主体标识返回至所述访存主体。
在具体实施中,所述安全访存主体标识和对应的访存主体密钥可以按照预设的生成算法生成,只要所生成的安全访存主体标识及所生成的访存主体密钥均具有唯一性即可。
在本说明书实施例中,访存主体可以为虚拟机、进程等其中至少一种。
S22,根据所存储的安全访存主体标识与访存主体密钥之间的对应关系,获取所述安全访存主体标识对应的访存主体密钥,作为第一密钥。
在具体实施中,安全处理装置响应于访存主体启动时发送的存储装置数据完整性保护请求,还可以为所述访存主体分配访存主体密钥,之后,可以将为所述访存主体所分配的安全访存主体标识和访存主体密钥进行存储,建立所述安全访存主体标识与访存主体密钥之间的对应关系。这样,在接收到访存主体的访存请求时,可以基于访存请求包含的安全访存主体标识,获取对应的访存主体密钥,不同访存主体对应的访存主体密钥自然不同。
在本说明书一些实施例中,可以设置相应的片上系统(System on Chip,SoC)硬件,由安全处理装置将分配的安全访存主体标识及访存主体密钥写入所述SoC硬件,所述SoC硬件可以建立安全访存主体标识与访存主体密钥之间的对应关系。
S23,对所述第一密钥进行非线性变换,得到与访存地址相关的密钥,作为第二密钥。
为防御物理攻击破解消息认证数据生成的算法,可以先对所述第一密钥进行非线性变换,得到与访存地址相关的密钥,作为第二密钥,用于步骤S24中消息认证数据的生成。
本说明书实施例中并不对非线性变换的具体方式作任何限定。例如,基于所述第一密钥生成所述第二密钥的非线性变换算法具体可以是直接映射方式,也可以是预设的非线性变换算法,或者可以是直接与访存地址进行预设的非线性变换。
S24,根据接收到的访存请求的请求类型,对第一存储装置进行相应的访存操作,并基于所述第二密钥和所述访存请求对应的数据,采用预设的运算方式进行哈希运算,生成对应的消息认证数据并存储,用以对所述第一存储装置中存储的相应数据读出时进行数据完整性校验。
本说明书中不对所述消息认证数据的编码形式、位数作任何限定。在本说明书一些实施例中,可以采用消息认证码(Message Authentication Code,MAC)作为消息认证数据。
作为具体示例,所述哈希运算具体的运算方式可以采用HMAC-MD5签名算法、HMAC-SHA1签名算法等其中至少一种算法,也可以采用其他哈希算法,在本说明书中不作任何限定。
其中,哈希运算消息认证码(Hash-based Message Authentication Code,HMAC)运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。
HMAC-MD5签名算法是从MD5(消息摘要算法5)哈希函数构造的一种键控哈希算法,被用作基于哈希的消息验证代码(HMAC),此HMAC进程将密钥与消息数据混合,使用哈希函数对混合结果进行哈希运算,将所得到的哈希值与该密钥混合,然后再次应用哈希函数,输出的哈希值长度为128位。
可以将所述待写入数据作为消息数据,基于待写入数据和所述第二密钥,采用预设的运算方式进行哈希运算,可以将最终运算结果作为MAC值。
在具体实施中,可以将所述消息认证数据存储与第二存储装置。
采用上述实施例,安全处理装置响应于访存主体启动时所发送的存储装置数据完整性保护请求,为所述访存主体分配安全访存主体标识及访存主体密钥,并将所分配的安全访存主体标识返回至所述访存主体,将为所述访存主体所分配的安全访存主体标识和访存主体密钥进行存储,建立所述安全访存主体标识与访存主体密钥之间的对应关系,之后,对于访存请求,存储装置控制器通过获取所述访存请求所包含的安全访存主体标识,并根据所存储的安全访存主体标识与访存主体密钥之间的对应关系,获取所述安全访存主体标识对应的访存主体密钥,作为第一密钥,对所述第一密钥进行非线性变换,得到与访存地址相关的密钥,作为第二密钥,并基于所述第二密钥和所述访存请求对应的数据,采用预设的运算方式进行哈希运算,生成对应的消息认证数据并存储,以对所述第一存储装置的存储的相应数据读出时进行数据完整性校验。
一方面,对于访存主体,若没有安全处理装置分配的安全访存主体标识,则相应的访存请求中无法携带安全访存主体标识,进行访存操作时所生成的消息认证数据的第一密钥与安全处理装置已分配了安全访存主体标识的访存主体的第一密钥不同,进而基于所述第一密钥所生成的消息认证数据不同,因而采用消息认证数据在访存数据从所述第一存储装置读出时进行数据完整性校验,可以识别出数据在所述第一存储装置存储期间被篡改的情形。由上可知,每个处于运行状态的安全访存主体均有一个唯一的安全访存主体标识,而恶意访存主体并不知晓安全处理装置的存在,因此无法申请安全访存主体标识,故恶意访存主体的访存请求中无法携带安全访存标识。或者,即使恶意访存主体知晓安全处理装置的存在,向安全处理装置发送存储装置数据完整性保护请求,由于安全处理装置为每个访存主体分配的安全访存主体标识及访存主体密钥均不同,因此,基于不同的访存主体密钥所生成的消息认证数据均不同,故各访存主体若篡改了其他访存主体在所述第一存储装置的存储数据,相应的其他访存主体在再次读取数据时通过消息认证数据校验可以发现,从而可以进行数据完整性保护。
另一方面,由步骤S22~S24可知,所述第一密钥可以作为后续生成消息认证数据的初始密钥。通过对所述第一密钥进行非线性变换,得到第二密钥作为生成消息认证数据的部分输入数据,可以防止物理攻击破解消息认证数据生成算法。
综上可知,采用本说明书实施例方案可以同时抵御硬件和软件对所述第一存储装置进行篡改数据的攻击。
在具体实施中,还可以对上述方案作进一步的扩展和优化。
在本说明书一些实施例中,所述安全处理装置响应于访存主体退出时发送的存储装置数据完整性保护取消请求,可以回收为所述访存主体分配的安全访存主体标识及访存主体密钥,并无效所存储的对应的安全访存主体标识与访存主体密钥之间的对应关系。
首先,访存主体在退出时,可以向所述安全处理装置发送存储装置数据完整性保护取消请求,则安全处理装置可以回收为所述访存主体所分配的安全访存主体标识及访存主体密钥,并无效所存储的对应的安全访存主体标识与访存主体密钥之间的对应关系。所述安全处理装置可以将已回收的安全访存主体标识及访存主体密钥永久时效,也可以在一段时长内时效,或者回收后重新分配至其他访存主体,并重新建立所分配的安全访存主体标识及访存主体密钥的对应关系。
采用上述方案,可以释放无用的安全访存主体标识资源和访存主体密钥资源,也可以避免无用的安全访存主体标识和访存主体密钥被未授权访存主体获取及篡改第一存储装置中的相应数据,进一步提高数据在第一存储装置存储期间的安全性。
参照图5所述的片上系统的结构示意图,片上系统50包括存储装置控制器51、安全处理装置52,存储装置控制器51可以基于访存请求,对第一存储装置5A进行访存操作。在具体实施中,片上系统还50还可以包括处理器核心54,如图5所示,访存请求可能来自于处理器核心54上可以运行程序、进程、虚拟机等。例如,在程序、虚拟机或进程启动时,可以向安全处理装置52发送数据完整性保护请求,以申请进行存储装置数据完整性保护。后续将对本说明书实施例采用的片上系统的结构及工作原理进行详细说明。
以下先分别从对第一存储装置进行写操作和读操作两个过程对第一存储装置中的数据完整性保护方法进行详细描述。
参照图3所示的存储装置数据完整性保护方法的流程图,以存储装置控制器基于写数据请求控制向第一存储装置写入数据的过程进行示例说明,具体步骤如下:
S31,访存主体启动时,向安全处理装置发送数据完整性保护请求。
S32,安全处理装置为所述访存主体分配安全访存主体标识及访存主体密钥,向所述访存主体返回所分配的安全访存主体标识,向所述存储装置控制器写入所分配的安全访存主体标识及对应的访存主体密钥。
在具体实施中,安全处理装置基于所述数据完整性保护请求,可以为所述访存主体分配唯一的标识作为安全访存主体标识,并返回至所述访存主体,这样,所述访存主体后续在访问存储装置时,访存请求中将包含所分配的安全访存主体标识。并且,所述安全处理装置基于所述数据完整性保护请求,可以分配相应的访存主体标识,并向所述存储装置控制器写入所分配的安全访存主体标识及对应的访存主体密钥。
在具体实施中,所述安全处理装置中可以内置相应的生成装置生成所述安全访存主体标识及访存主体密钥,所述生成装置可以通过软件、硬件或者软硬件结合的方式实现。所述生成装置中可以内置相应的生成电路、生成算法等。
本说明书实施例中,并不对生成安全访存主体标识及访存主体密钥的方法作任何限定,只要能够保证所述安全访存主体标识及访存主体密钥的唯一性即可。
S33,存储装置控制器存储写入的安全访存主体标识及对应的访存主体密钥,建立所述安全访存主体标识与访存主体密钥之间的对应关系。
在具体实施中,可以在存储装置控制器中内置专门的硬件单元,用于存储所述安全处理装置写入的安全访存主体标识及对应的访存主体密钥,并建立所述安全访存主体标识与访存主体密钥之间的对应关系。
S34,存储装置控制器接收到写数据请求,获取所述写数据请求包含的安全访存主体标识。
在具体实施中,对于访存主体在发送写数据请求前未获得安全处理装置分配的安全访存主体标识的情形,可以所述写数据请求中的安全访存主体标识信息位可以设置为能够表征为非安全访存主体的预设值,例如默认设置为0。
其中,写数据请求中可以包括待写入数据、所述待写入数据的地址以及安全访存主体标识。为提高访存效率,写入数据可以以固定大小的数据块为单位进行。
在具体实施中,处理单元(如CPU或CPU核心)中运行的访存主体(如虚拟机、进程等)可以向存储装置控制器发出写数据请求,待写入的数据块的具体大小可以由处理单元的策略进行对应设置。在本说明书一具体示例中,所述第一存储装置为内存,可以选取一个缓存行(Cache Line)或缓存块(Cache Block)作为一个数据块,由于缓存行或缓存块作为存储装置中数据交互的最小单元,因此选取缓存行或缓存块作为数据块单位,可以提高访存效率。
在具体实施中,完整的数据块可以不是一次性收到,也即可以基于多个写数据请求,获取到一个完整的待写入数据块。
可以理解的是,可以根据具体需要设置所述数据块的大小,以及对应的处理单元策略,本说明书实施例中对此不作任何限定。
S35,存储装置控制器根据所存储的安全访存主体标识与访存主体密钥之间的对应关系,获取所述安全访存主体标识对应的访存主体密钥,作为第一密钥。
在具体实施中,存储装置控制器在获取的写数据请求中包含的安全访存主体标识时,根据所存储的安全访存主体与访存主体密钥之间的对应关系,可以获取到所述安全访存主体对应的访存主体密钥。为描述方便,这里将访存主体密钥称为“第一密钥”。
S36,存储装置控制器对所述第一密钥进行非线性变换,得到与访存地址相关的密钥,作为第二密钥。
在本说明书实施例中,为了防止物理攻击破解后续的消息认证数据具体生成算法,可以通过破坏密钥的唯一性来实现。具体而言,可以将所述第一密钥作为初始密钥,进一步对其进行非线性变换,得到与访存地址相关的密钥。为描述方便,这里将与访存地址相关的密钥称为“第二密钥”。
在本说明书实施例中,非线性变换具体可以为直接映射,或者是预设的一种或多种密钥非线性变换算法,或者是与存储装置地址进行某种非线性转换。对于非线性变换的具体方式,这里不作任何限定。
S37,将所述写数据请求对应的待写入数据写入所述第一存储装置。
例如,内存控制器可以基于写数据请求,按照所述待写入数据的地址将对应的待写入数据写入内存中的相应存储区间。
S38,基于所述第二密钥和所述写数据请求对应的待写入数据,采用预设的运算方式进行哈希运算,生成消息认证数据。
在具体实施中,可以采用MAC作为一种消息认证数据,可以理解的是,消息认证数据也可以是其他的形式,本说明书中不对所述消息认证数据的编码形式、位数作任何限定。
作为具体示例,所述哈希运算具体的运算方式可以采用HMAC-MD5签名算法、HMAC-SHA1签名算法等其中至少一种算法,也可以采用其他哈希算法,在本说明书中不作任何限定。
S39,基于所述待写入数据的地址,生成所述消息认证数据的地址,并基于所述消息认证数据的地址,将所述消息认证数据存储至预设的第二存储装置,用以待所述第一存储装置中对应的写入数据在后续读出时进行数据完整性校验。
在具体实施中,可以基于所述待写入数据的地址,采用预设的生成方法生成所述消息认证数据的地址。本说明书实施例不对具体的生成方法作任何限定,可以是采用预设的软件、硬件或者软硬件结合的方式实现。对于具体采用的硬件电路、生成算法等均不作任何限定。例如,可以对待写入数据的地址,采用预设的直接映射、预设的非线性变换算法等得到所述消息认证数据的地址。
为进一步提高片上系统安全性能,可以设置所述第二存储装置不存储所述片上系统中处理单元(如:处理器或处理器核心)的运行数据,所述处理单元上的访存主体可以发出写数据请求,用以向所述第一存储装置存储数据。由于所述第二存储装置中不存储所述处理单元的运行数据,因此所述处理单元,或者片上系统芯片封装结构之外的设备均无法感知所述第二存储装置的存在,故可以避免所述预设的处理器或处理器核心被恶意劫持而非法获取所述第一存储装置中的数据,故可以进一步提升片上系统的安全性能。
在具体实施中,可以设置所述第二存储装置不存储所述片上系统中部分处理器核心或者全部处理器核心的运行数据。
在具体实施中,所述第一存储装置可以为片内内存,也可以为片外内存(如可以是主板上设置的内存条)。
在具体实施中,所述第二存储装置可以为片内内存,或者第二存储装置可以内置于存储装置控制器如内存控制器中,作为专用内存。
通过上述写数据过程,任一向安全处理装置申请了存储装置数据完整性保护的访存主体,在向第一存储装置写入数据时,均可以相应生成消息认证数据并存储在第二存储装置,由上述步骤可知,不同的访存主体对应的安全访存主体标识不同,对应的访存主体密钥也不同,因此对不同的访存主体对应的访存主体密钥进行非线性变换所生成的第二密钥也不同,进而基于生成的所述第二密钥和所述写数据请求对应的待写入数据,进行哈希运算所生成的消息认证数据也不同,故对于写入所述第一存储装置中的数据,若有其他访存主体篡改,相应的消息认证数据会发生变化,在安全访存主体后续读出时,通过消息认证数据进行数据完整性校验,可以发现数据在第一存储装置存储期间被篡改,故可以有效地识别出软件对第一存储装置数据篡改的攻击。并且,通过第二存储装置存储消息认证数据,以及通过非线性变换得到用于生成消息认证数据的密钥,可以有效地防御物理攻击。因此采用本说明书实施例方案可以很好地抵御软硬件针对第一存储装置数据篡改的攻击。
参照图4所示的存储装置数据完整性保护方法的流程图,以存储装置控制器基于读数据请求,从第一存储装置读出数据的过程进行示例说明,具体步骤如下:
S41,存储装置控制器接收到读数据请求,获取所述读数据请求所包含的安全访存主体标识。
S42,存储装置控制器根据所存储的安全访存主体标识与访存主体密钥之间的对应关系,获取所述安全访存主体标识对应的访存主体密钥,作为第一密钥。
S43,存储装置控制器对所述第一密钥进行非线性变换,得到与访存地址相关的密钥,作为第二密钥。
S44,基于读数据请求对应的待读取数据的地址,从第一存储装置读取相应数据。
S45,基于所述第二密钥和读取得到的数据,采用预设的运算方式进行哈希运算,生成对应的消息认证数据,作为第一消息认证数据。
其中,步骤S41~S45的实现过程具体可以参见前述步骤S34~S38,区别仅在于,前述实施例是向第一存储装置写数据,而本实施例是从第一存储装置读数据,其他生成消息认证数据的过程与前述实施例类似,此处不再展开描述。
S46,基于所述待读取数据的地址,生成对应的消息认证数据的地址,基于生成的消息认证数据的地址,从第二存储装置中读取得到消息认证数据,作为第二消息认证数据。
对于待读取数据,如前实施例所述,在向所述第一存储装置中写入时,即生成了对应的消息认证数据,并存储在第二存储装置中,因此可以从第二存储装置中读取得到消息认证数据。
在具体实施中,可以基于所述待读取数据的地址,采用预设的生成方法生成所述消息认证数据的地址。
本说明书实施例不对具体的生成方法作任何限定,只要读数据过程和写数据过程采用同样的消息认证数据生成方法即可。如前实施例所述,可以是采用预设的软件、硬件或者软硬件结合的方式实现。对于具体采用的硬件电路、生成算法等均不作任何限定。例如,可以对待读取数据的地址,采用预设的直接映射、预设的非线性变换算法等得到所述消息认证数据的地址。
可以理解的是,也可以将多种生成方法结合用来生成消息认证数据的地址,例如,可以将所述预设的直接映射方式和所述非线性变换方式结合来生成所述消息认证数据的地址。
S47,基于所述第一消息认证数据与所述第二消息认证数据是否一致,确定所述读取得到的数据的数据完整性校验是否通过。
具体而言,在确定所述第一消息认证数据与所述第二消息认证数据一致时,可以所述读取得到的数据的数据完整性校验通过;在确定所述第一消息认证数据与所述第二消息认证数据不一致时,则确定所述读取得到的数据的数据完整性校验未通过,确定所述读取得到的数据在所述第一存储装置存储期间被篡改。
S48,基于校验结果确定是否返回从所述第一存储装置读取得到的数据。
在本说明书一些实施例中,在确定所述读出得到的数据的完整性校验未通过时,可以向所述安全处理装置发送中断请求,使得所述安全处理装置基于所述中断请求,对所述读数据请求进行预设的数据保护处理操作;在确定所述读出得到的数据的完整性校验通过时,可以向所述读数据请求对应的访存主体返回读出数据。
在具体实施中,安全处理装置接收到中断请求时,可以终止输出控制指令终止运行所述读数据请求对应的访存主体,如进程、虚拟机等,或者输出告警提醒,提醒用户所述待读取的数据块不完整,可能已经被篡改。
由上述实施例可知,在具体数据读取过程中,通过基于读数据请求包含的安全访存主体标识及对应的待读取数据,重新生成消息认证数据,作为第一认证数据,与所述待读取数据在写入所述第一存储装置中所生成的第二消息认证数据进行比对,即可校验所述数据在所述第一存储装置存储期间是否被篡改,完整数据完整性校验,进而可以基于数据完整性校验结果采取相应的数据完整性保护措施,实现数据在所述第一存储装置存储期间的完整性保护。
可以理解的是,对于任一访存对象如任一虚拟机、任一进程,在启动后,可能存在对第一存储装置的多次写数据请求及读数据请求,因此仅需要在启动时向安全处理装置请求数据完整性保护,获得相应的安全访存主体标识,之后即可在写数据请求及读数据请求中携带相应的安全访存主体标识,在写数据时基于所述安全访存主体标识采用前述本说明书实施例的方法,可以生成相应的消息认证数据,而在读数据时,则可以通过所述存储的消息认证数据对所读取的数据进行数据完整性校验,并进而采用相应的数据完整性保护措施。而在所述访存对象退出时,则可以再次向安全处理装置发送存储装置数据完整性保护请求请求,所述安全处理装置可以回收为所述访存对象所分配的安全访存主体标识及访存主体密钥,并可以向所述存储装置控制器发出信息无效指令,则存储装置控制器可以将所存储的对应的安全访存主体标识与访存主体密钥之间的对应关系进行无效处理,例如可以删除相应数据,或者设置相应的标识位,使其处于禁用状态。
在具体实施中,还可以根据具体需要,从多个方面对上述实施例作进一步的扩展和优化。以下通过一些示例进行说明。
在本说明书一些实施例中,为了减少存储成本,第二存储装置可以用于暂时存储所述消息认证数据,在预设的条件满足时,可以将所述消息认证数据存入所述第一存储装置中。以下给出一种实施方式作为示例:
可以基于待写入数据的地址,生成所述消息认证数据在第一存储装置中的地址,并将所述消息认证数据在第一存储装置中的存储地址与所述消息认证数据一并缓存至所述第二存储装置。以及响应于预设的触发条件,可以在预设时长内阻止访存请求,并在所述预设时长内将所述第二存储装置中缓存的消息认证数据按照所述第二存储装置存储的存储地址写入至所述第一存储装置中。
所述消息认证数据,不论存储于所述第一存储装置中,还是存储于所述第二存储装置中,均适于对对应的写入所述第一存储装置的写入数据在后续从所述第一存储装置读出时进行数据完整性校验。
在具体实施中,可以根据具体需要设置所述触发条件。
在本说明书一些实施例中,所述预设的触发条件可以为:所述第二存储装置的空闲存储空间小于预设存储量阈值,这样,一旦所述第二存储装置的空闲存储空间小于所述预设的存储量阈值,即可将所述第二存储装置中存储的消息认证数据按照第二存储装置中存储的对应的消息认证数据的地址转存至第一存储装置中。例如,当所述第二存储装置存满,无空闲存储空间,可以将所述第二存储装置中存储的消息认证数据存储至所述第一存储装置中;或者也可以设置一定裕量,当所述第二存储装置的空闲存储空间小于预设的存储量阈值,例如小于256字节,即可将所述第二存储装置中存储的消息认证数据存储至所述第一存储装置中。
在本说明书另一些实施例中,所述预设的触发条件可以为:所述第一存储装置的带宽处于空闲状态,这样,一旦检测到所述第一存储装置的带宽处于空闲状态,即可将所述第二存储装置中存储的消息认证数据存储至所述第一存储装置中。例如,当检测到与第一存储装置的写数据总线空闲时,即可通过所述写数据总线将所述第二存储装置中存储的消息认证数据存储至所述第一存储装置中。
在具体实施中,所述预设的触发条件也可以为:所述第二存储装置的空闲存储空间小于预设存储量阈值且所述第一存储装置的带宽处于空闲状态。相应地,可以在这一触发条件满足时,将所述第二存储装置中存储的消息认证数据存储至所述第一存储装置中。
可以理解的是,也可以根据具体应用环境选择其他的触发条件,本说明书实施例不对所采用的触发条件作任何限制。
在所述预设的触发条件满足,将所述第二存储装置中的消息认证数据存储至第一存储装置期间,为避免接收访存请求的传输通道带宽堵塞,可以暂时阻止相应传输通道上的访存请求。例如,若存储装置控制器通过总线接收访存请求,则可以先暂时阻止总线上的访存请求,可以基于将所述第二存储装置中缓存的消息认证数据写入至所述第一存储装置中所需时长设置阻塞时长,例如阻塞时长可以设置为一个写操作时长,比如一个时钟周期。
其中,为对第一存储装置中存储的写入请求对应的写入数据与对应的消息认证数据进行区分,可以将写入请求对应的写入数据称为“有效数据”。
采用上述实施例,通过第二存储装置缓存所述消息认证数据,响应于预设的触发条件,在预设时长内阻止访存请求,并在所述预设时长内将所述第二存储装置中缓存的消息认证数据按照所述第二存储装置存储的存储地址写入至所述第一存储装置中,因此为实现对第一存储装置中的有效数据进行数据完整性保护,仅需要扩展一个存储空间较小的第二存储装置即可,故可以以较小的存储成本实现对第一存储装置中的有效数据进行数据完整性校验。
此外,响应于预设的触发条件,在预设时长内阻止访存请求,并在所述预设时长内将所述第二存储装置中缓存的消息认证数据按照所述第二存储装置存储的存储地址写入至所述第一存储装置中,因而无需在每个有效数据的写操作后都插入写消息认证数据的操作,故可以避免破坏流水线,也可以降低所述消息认证数据存储的带宽开销。
在具体实施中,可以采用随机存取存储器(Random Access Memory,RAM)作为第二存储装置,暂时存储所述消息认证数据及所述消息认证数据在所述第一存储装置中的存储地址。例如,可以采用静态随机存取存储器(Static Random Access Memory,SRAM)作为第二存储装置。
在本说明书一实施例中,内存作为第一存储装置,可以向内存中写入数据。例如,内存控制器对于接收到的写数据请求,生成所述写数据请求对应的待写入数据的消息认证数据,并将所述消息认证数据缓存至第二存储装置。在具体实施中,所述第二存储装置可以设置在所述内存控制器中,也可以设置在所述内存控制器的外部。例如,可以在所述内存控制器中专门设置一个RAM用于缓存MAC及MAC在内存中的地址。
为使写数据请求对应的访存主体感知不到所述消息认证数据的存在,使得消息认证数据对于写数据请求对应的访存主体而言是透明的,可以采用将第一存储装置中有效数据存储区域与消息认证数据存储区域按照比例关系划分区间。
具体而言,所述第一存储装置的地址段中对应的有效数据的有效数据存储区域的第一地址段与对应的消息认证数据存储区域的第二地址段按照预设的存储空间比例关系分区划分。相应地,对于每个访存请求,可以基于所述第一存储装置的地址段中对应有效数据存储区域的第一地址段与对应的消息认证数据存储区域的第二地址段预设的存储空间比例关系,以及根据访存请求对应的有效数据块的地址,以及获取的消息认证数据存储区域的基地址,按照预设的线性映射关系生成所述消息认证数据在所述第二地址段的偏移地址,并基于所述消息认证数据存储区域的基地址及所述偏移地址,得到所述消息认证数据在所述第一存储装置中的存储地址。
参照图8所示的一种第一存储装置中的存储区域划分示意图,第一存储装置80包括有效数据存储区81和消息认证数据存储区82。可以按照有效数据块与对应的消息认证数据的比特数大小关系,设置有效数据存储区81和消息认证数据存储区82的地址段的比例关系。例如,有效数据块的大小为m,所述有效数据块对应的MAC的大小为n,则可以将有效数据存储区域的第一地址段与对应的MAC的第二地址段按照m:n的比例划分。如图8所示,有效数据存储区81的空间大小所占比例为m,消息认证数据存储区82的空间大小所占比例为n。
在具体实施中,可以设置一个基地址寄存器BASE_ADDR来存储消息认证数据在第一存储装置中的基地址,基地址寄存器BASE_ADDR中存储的基地址在消息认证数据存储区82的边界。有效数据存储区81和消息认证数据存储区82的地址的对应关系可以为线性映射关系,如图8所示,有效数据存储区81中,有效数据块A、B、C通过线性映射,依次对应消息认证数据a、b、c。因此,通过有效数据存储区81与消息认证数据存储区82的空间比例关系,以及有效数据存储区81所存储的有效数据块的地址与消息认证数据存储区82存储的对应的消息认证数据的直接映射关系,基于有效数据块的地址A,可以通过A/m可以得到第一存储装置80中有效数据存储区81中从0开始算是第几个有效数据块,以及对应第几个消息认证数据,第几个消息认证数据乘以n即可得到消息认证数据的相对地址,即:通过BASE_ADDR+(A/m)*n可以得到对应的消息认证数据的地址。
在一些数据处理系统或数据处理设备中,存在对一些数据的数据完整性保护需求较高,而对另一些数据的数据完整性保护需求不敏感的情况。为此,对于数据完整性保护需求较高的访存主体,则可以在启动时向安全处理装置发送的数据完整性保护请求,接收安全处理装置分配的安全访存主体标识;否则,则无须向安全处理装置发送数据完整性保护请求。相应地,可以在访存请求中设置数据完整性保护标识,通过数据完整性保护标识是否处于有效状态,来确定是否对相应数据进行数据完整性保护。若获取到访存请求中包含的数据完整性保护标识处于有效状态时,则可以采用本说明书实施例中的方法对存储装置中的数据进行数据完整性保护;若获取到数据完整性保护标识处于无效状态,可以根据接收到的访存请求的类型,直接对第一存储装置进行相应的访存操作,而无需执行本说明书实施例中其他步骤中的生成消息认证数据的操作及进行数据完整性保护及校验的操作,即:直接基于写数据请求,将所述写数据请求对应的待写入数据写入所述第一存储装置;基于读数据请求,基于所述读数据请求携带的待读取数据的地址,从所述第一存储装置读取数据。采用上述实施例可以灵活满足数据的不同安全性需求,也可以更加有效地利用系统处理资源。
本说明书实施例还提供了可以对存储装置中的数据进行数据完整性保护的芯片系统及存储装置控制器。以下通过一些示例进行介绍,以便本领域技术人员更好地理解和实现。
在本说明书实施例中,参照图5所示的片上系统的结构示意图,片上系统50可以与第一存储装置5A耦接,以进行数据访存操作,可以基于写数据请求向所述第一存储装置5A写入数据,或者基于读数据请求从所述第一存储装置5A读取数据。如图5所示,所述第一存储装置5A可以置于片上系统50外部,可以理解的是,在具体实施中,所述第一存储装置5A也可以设置于片上系统内部。
如图5所示,片上系统50可以包括:存储装置控制器51、安全处理装置52及第二存储装置53,其中:
所述安全处理装置52,适于响应于访存主体启动时发送的存储装置数据完整性保护请求,为所述访存主体分配唯一认证标识作为安全访存主体标识,并为所述访存主体分配访存主体密钥,将所分配的安全访存主体标识返回至所述访存主体,将为所述访存主体所分配的安全访存主体标识和访存主体密钥发送至所述存储装置控制器51进行存储;
所述存储装置控制器51,适于基于所述安全处理装置52为所述访存主体所分配的安全访存主体标识和访存主体密钥,建立所述安全访存主体标识与访存主体密钥之间的对应关系并存储;基于接收到的访存请求,获取所述访存请求所包含的安全访存主体标识;根据所存储的安全访存主体标识与访存主体密钥之间的对应关系,获取所述安全访存主体标识对应的访存主体密钥,作为第一密钥;对所述第一密钥进行非线性变换,得到与访存地址相关的密钥,作为第二密钥;根据接收到的访存请求的请求类型,对第一存储装置5A进行相应的访存操作,并基于所述第二密钥和所述访存请求对应的数据,采用预设的运算方式进行哈希运算,生成对应的消息认证数据并存储至所述第二存储装置53,用以对所述第一存储装置5A中存储的相应数据在读出时进行数据完整性校验;
所述第二存储装置53,适于存储所述存储装置控制器51在将数据写入所述第一存储装置5A中时所生成的消息认证数据。
采用实施片上系统,安全处理装置52响应于访存主体启动时所发送的存储装置数据完整性保护请求,可以为所述访存主体分配安全访存主体标识及访存主体密钥,并将所分配的安全访存主体标识返回至所述访存主体,将为所述访存主体所分配的安全访存主体标识和访存主体密钥进行存储,建立所述安全访存主体标识与访存主体密钥之间的对应关系,之后,对于访存请求,存储装置控制器51通过获取所述访存请求所包含的安全访存主体标识,并根据所存储的安全访存主体标识与访存主体密钥之间的对应关系,可以获取所述安全访存主体标识对应的访存主体密钥,作为第一密钥,对所述第一密钥进行非线性变换,得到与访存地址相关的密钥,作为第二密钥,并基于所述第二密钥和所述访存请求对应的数据,采用预设的运算方式进行哈希运算,生成对应的消息认证数据并存储,用以对所述第一存储装置5A存储的相应数据读出时进行数据完整性校验。
一方面,对于访存主体,若没有安全处理装置52分配的安全访存主体标识,则相应的访存请求中无法携带安全访存主体标识,进行访存操作时所生成的消息认证数据的第一密钥与安全处理装置已分配了安全访存主体标识的访存主体的第一密钥不同,进而基于所述第一密钥所生成的消息认证数据不同,因而采用消息认证数据在访存数据从所述第一存储装置5A读出时进行数据完整性校验,可以识别出数据在所述第一存储装置5A存储期间被篡改的情形;另一方面,通过对所述第一密钥进行非线性变换,得到第二密钥作为生成消息认证数据的部分输入数据,可以防止物理攻击破解消息认证数据生成算法。综上可知,采用本说明书实施例的片上系统可以同时抵御硬件和软件对所述第一存储装置5A进行篡改数据的攻击。
在具体实施中,为使分配的安全访存主体标识和访存主体密钥资源得到有效利用,所述安全处理装置52还适于响应于访存主体退出时发送的存储装置数据完整性保护取消请求,回收为所述访存主体分配的安全访存主体标识及访存主体密钥,并向所述存储装置控制器51发出信息无效指令,以无效所存储的对应的安全访存主体标识与访存主体密钥之间的对应关系。在访存主体退出时由安全处理装置回收安全访存主体标识和访存主体密钥资源,可以释放无用的安全访存主体标识和访存主体密钥,也可以避免无用的安全访存主体标识和访存主体密钥被未授权访存主体获取及篡改第一存储装置中的相应数据,进一步提高数据在第一存储装置存储期间的安全性。
在具体实施中,所述存储装置控制器51,适于将写数据请求对应的待写入数据写入所述第一存储装置5A;基于所述第二密钥和所述写数据请求对应的待写入数据,采用预设的运算方式进行哈希运算,生成所述消息认证数据;基于所述待写入数据的地址,生成所述消息认证数据的地址,并基于所述消息认证数据的地址,将所述消息认证数据存储至所述第二存储装置53,用以待所述第一存储装置5A中对应的写入数据在后续读出时进行数据完整性校验。
在具体实施中,所述存储装置控制器51,适于基于所述读数据请求对应的待读取数据的地址,从所述第一存储装置5A读取得到对应的数据;基于所述第二密钥和读取得到的数据,采用所述预设的运算方式进行哈希运算,生成对应的消息认证数据,作为第一消息认证数据;基于所述待读取数据的地址,生成对应的消息认证数据的地址,基于生成的消息认证数据的地址,从所述第二存储装置53中读取得到消息认证数据,作为第二消息认证数据;基于所述第一消息认证数据与所述第二消息认证数据是否一致,确定所述读取得到的数据的数据完整性校验是否通过;基于校验结果确定是否返回所述从所述第一存储装置5A读取得到的对应数据。
在具体实施中,所述存储装置控制器51,适于在确定所述读出得到的数据的完整性校验未通过时,向所述安全处理装置52发送中断请求,使得所述安全处理装置52基于所述中断请求,对所述读数据请求进行预设的数据保护处理操作;在确定所述读出得到的数据的完整性校验通过时,向所述读数据请求对应的访存主体返回读出数据。采用上述方案,由所述安全处理装置52基于中断请求,对所述读数据请求进行预设的数据保护处理操作,从而可以实现数据保护,避免所述第一存储装置5A中的数据被篡改。
在具体实施中,所述存储装置控制器51,还适于生成所述消息认证数据在第一存储装置5A中的存储地址并存储至所述第二存储装置53,并响应于预设的触发条件,在预设时长内阻止访存请求,并在所述预设时长内,按照所述第二存储装置53中存储的消息认证数据在所述第一存储装置5A中的存储地址,将所述消息认证数据写入至所述第一存储装置5A中。
由上述实施例可知,通过第二存储装置暂存消息认证数据,使得进行数据完整性保护仅需要扩展一个存储空间较小的第二存储装置即可,故可以以较小的存储成本实现对第一存储装置中的写入数据进行数据完整性校验。此外,第二存储装置中缓存的消息认证数据仅响应于预设的触发条件才写入至第一存储装置,因而无需在每个数据写操作后都插入写消息认证数据的操作,故可以避免破坏流水线,也可以降低所述消息认证数据存储的带宽开销。
在具体实施中,所述存储装置控制器51,适于基于预设的所述第一存储装置5A中的地址划分规则,根据所述待写入数据的存储地址,按照预设的生成方法生成所述消息认证数据在第一存储装置5A中的存储地址。
在具体实施中,所述第一存储装置5A的地址段中写入数据对应的有效数据存储区域的第一地址段与对应的消息认证数据存储区域的第二地址段按照预设的存储空间比例关系分区划分。
采用上述方案,可以将写数据请求对应的写入数据连续存储,所述消息认证数据对所述写数据请求对应的访存主体而言是透明的,所述写数据请求对应的访存主体看到的有效数据的地址是连续的,故可以避免写入数据的碎片化存储,也便于所述写数据请求对应的访存主体对所述第一存储装置进行地址管理。此外,由于所述写数据请求对应的访存主体感知不到所述消息认证数据的存在,故可以避免所述访存主体被恶意劫持而获取到所述第一存储装置中的有效数据,因而可以进一步提升所述第一存储装置中存储的数据的安全性。
在具体实施中,继续参照图5,片上系统50还可以包括:处理器核心54,适于运行所述访存主体,如虚拟机、进程等。
在具体实施中,所述第二存储装置53与片上系统50中的处理器核心54、存储装置控制器51可以位于不同的封装结构中,也可以位于同样的封装结构中,例如,所述第二存储装置53可以按照如下任意一种位置设置:
所述第二存储装置53与所述处理器核心54位于同一基板上不同的晶粒(Die)上;
所述第二存储装置53与所述处理器核心54位于两个封装结构中;
所述第二存储装置53与所述处理器核心54位于同一个晶粒上;
所述第二存储装置53内置于所述存储装置控制器51中。
在具体实施中,可以采用多芯片封装技术,将所述第二存储装置53与处理器核心54封装于同一封装结构中。例如,所述第二存储装置53可以与部分或全部处理器核心54可以位于同一基板的不同的晶粒上,采用这种方式,可以节约芯片成本并减小芯片体积。又如,所述第二存储装置53可以与预设的部分或者全部处理器核心54可以位于同一个晶粒上,例如可以直接在CPU晶粒上集成专用内存,用于存储MAC值。采用这种方式,可以减小片上系统封装结构的整体体积,提高系统集成度。
在具体实施中,为进一步提升数据可靠性,所述第二存储装置53可以仅用于存储所述消息认证数据。
参照图6所示的一种使用场景中的片上系统的结构示意图,整个片上系统60可以位于一个晶粒上,片上系统60可以与片外内存6A通过总线连接,片上系统60可以包括:内存控制器61、安全处理器(Platform Security Processor,PSP)62、RAM 63以及处理器核心64,内存控制器61分别与安全处理器62、RAM 63、处理器核心64及片外内存6A可通信连接,例如可以通过总线连接。安全处理器62可以与处理器核心64可通信连接。内存控制器61可以基于处理器核心64上运行的访存主体如虚拟机、进程等的访存请求对片外内存6A进行访问,向片外内存6A中写入数据或从中读出数据。为对片外内存6A中存储的数据进行数据完整性保护,处理器核心64上的访存主体在启动时先向安全处理器62发送数据完整性保护请求从而可以获得安全处理器62为所述访存主体分配唯一的安全访存主体标识,并且,安全处理器62还为访存主体分配访存主体密钥,并将分配的安全访存主体标识及访存主体密钥写入内存控制器61,内存控制器61建立所分配的安全访存主体标识及访存主体密钥的对应关系,从而内存控制器61可以基于访存请求中包含的安全访存主体标识,查找到对应的访存主体密钥,作为第一密钥,并基于第一密钥,通过非线性变换,生成第二密钥,基于第二密钥和访存请求对应的数据,即可生成消息认证数据,所述消息认证数据可以存储在RAM 63中,用以对所述片外内存6A中存储的相应数据读出时进行数据完整性校验。具体的数据完整性校验流程以及后续发现数据被篡改时的数据完整性保护方案可以参见前述实施例,此处不再赘述。
可以理解的是,在具体实施中,采用本说明书实施例中片上系统,也可以对片内内存中的数据进行数据完整性保护,也即所述第一存储装置也可以设置于片上系统内部。
本说明书实施例还提供了相应的存储装置控制器,参照图7所示的存储装置控制器的结构示意图,存储装置控制器70可以与第一存储装置7A耦接,对所述第一存储装置7A进行访存控制,存储装置控制器70可以包括:第一密钥获取单元71、密钥变换单元72、访存控制单元73及消息认证数据生成单元74,其中:
第一密钥获取单元71,适于基于安全处理装置7B为访存主体启动时所分配的安全访存主体标识和访存主体密钥,建立访存主体标识和访存主体密钥之间的对应关系并存储;基于接收到的访存请求,获取所述访存请求中所包含的安全访存主体标识,根据所存储的安全访存主体标识与访存主体密钥之间的对应关系,获取所述安全访存主体标识对应的访存主体密钥,作为第一密钥;
密钥变换单元72,适于对所述第一密钥进行非线性变换,得到与访存地址相关的密钥,作为第二密钥;
访存控制单元73,适于根据接收到的访存请求的请求类型,对所述第一存储装置7A进行相应的访存操作;
消息认证数据生成单元74,适于基于所述第二密钥和所述访存请求对应的数据,采用预设的运算方式进行哈希运算,生成对应的消息认证数据并存储,以对所述第一存储装置7A的存储的相应数据读出时进行数据完整性校验。
在具体实施中,所述第一密钥获取单元71还适于在接收到安全处理装置7B响应于访存主体退出时所发送的存储装置数据完整性保护取消请求所生成的信息无效指令,无效所存储的对应的安全访存主体标识与访存主体密钥之间的对应关系。
在具体实施中,所述访存控制单元73,适于基于接收到的写数据请求,获取待写入数据及所述待写入数据的存储地址,基于所述待写入数据的存储地址,将所述待写入数据写入所述第一存储装置7A;
在具体实施中,所述存储装置控制器70还可以包括:校验数据处理单元75,适于基于所述待写入数据的地址,生成所述消息认证数据的地址,并基于所述消息认证数据的地址,将所述消息认证数据进行存储,如图7所示,可以存储至第二存储装置7C。
在具体实施中,所述的存储装置控制器70还可以包括:数据完整性校验单元76、数据返回单元77和中断单元78;
所述访存控制单元73,还适于基于接收到的读数据请求,获取待读取数据的地址,基于所述待读取数据的地址,从所述第一存储装置7A读取对应数据;
所述数据完整性校验单元76,适于基于所述访存控制单元73读取得到的数据和所述第二密钥,采用所述预设的运算方式进行哈希运算,得到对应的消息认证数据,作为第一消息认证数据;基于待读取数据的地址,生成对应的消息认证数据的地址,并基于所生成的消息认证数据的地址,从所述第二存储装置7C中获取对应的消息认证数据,作为第二消息认证数据;基于所述第一消息认证数据与所述第二消息认证数据是否一致,确定所述读取得到的数据的数据完整性校验是否通过;
所述数据返回单元77,适于在所述数据完整性校验单元76确定所述读取得到的数据的完整性校验通过时,向所述读数据请求对应的访存主体返回读出数据;
所述中断单元78,适于在所述数据完整性校验单元76确定所述读出得到的数据的完整性校验未通过时,向所述安全处理装置7B发送中断请求,使得所述安全处理装置7B基于所述中断请求,对所述读数据请求进行预设的数据保护处理操作。
在具体实施中,所述校验数据处理单元75还适于基于待写入数据的地址,生成所述消息认证数据在所述第一存储装置7A中的地址,并将所述消息认证数据在所述第一存储装置7A中的地址与所述消息认证数据一并存储至所述第二存储装置7C,并响应于预设的触发条件,在预设时长内阻止访存请求,并在所述预设时长内将所述第二存储装置7C中存储的消息认证数据按照所述第二存储装置7C存储的地址写入至所述第一存储装置7A中。
存储装置控制器各实施例的具体原理及作用、效果等可以参见前述存储装置数据完整性保护方法实施例及片上系统实施例中相应方案的介绍,此处不再展开介绍。
可以理解的是,本说明书实施例中多个实施例可以根据需要组合使用。
虽然本说明书披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

Claims (24)

1.一种存储装置数据完整性保护方法,其特征在于,包括:
基于接收到的访存请求,获取所述访存请求所包含的安全访存主体标识;
根据所存储的安全访存主体标识与访存主体密钥之间的对应关系,获取所述安全访存主体标识对应的访存主体密钥,作为第一密钥;
对所述第一密钥进行非线性变换,得到与访存地址相关的密钥,作为第二密钥;
根据接收到的访存请求的请求类型,对第一存储装置进行相应的访存操作,并基于所述第二密钥和所述访存请求对应的数据,采用预设的运算方式进行哈希运算,生成对应的消息认证数据并存储,用以对所述第一存储装置中存储的相应数据读出时进行数据完整性校验;
其中,安全处理装置响应于访存主体启动时发送的存储装置数据完整性保护请求,为所述访存主体分配唯一认证标识作为安全访存主体标识,并为所述访存主体分配访存主体密钥,将所分配的安全访存主体标识返回至所述访存主体,将为所述访存主体所分配的安全访存主体标识和访存主体密钥进行存储,建立所述安全访存主体标识与访存主体密钥之间的对应关系。
2.根据权利要求1所述的存储装置数据完整性保护方法,其特征在于,还包括:
所述安全处理装置响应于访存主体退出时发送的存储装置数据完整性保护取消请求,回收为所述访存主体分配的安全访存主体标识及访存主体密钥,并无效所存储的对应的安全访存主体标识与访存主体密钥之间的对应关系。
3.根据权利要求1所述的存储装置数据完整性保护方法,其特征在于,所述访存请求为写数据请求,所述根据接收到的访存请求的请求类型,对第一存储装置进行相应的访存操作,并基于所述第二密钥和所述访存请求对应的数据,采用预设的运算方式进行哈希运算,生成对应的消息认证数据并存储,以对所述第一存储装置中存储的相应数据读出时进行数据完整性校验,包括:
将所述写数据请求对应的待写入数据写入所述第一存储装置;
基于所述第二密钥和所述写数据请求对应的待写入数据,采用所述预设的运算方式进行哈希运算,生成所述消息认证数据;
基于所述待写入数据的地址,生成所述消息认证数据的地址,并基于所述消息认证数据的地址,将所述消息认证数据存储至预设的第二存储装置,用以待所述第一存储装置中对应的写入数据在后续读出时进行数据完整性校验。
4.根据权利要求1至3任一项所述的存储装置数据完整性保护方法,其特征在于,所述访存请求为读数据请求,所述根据接收到的访存请求的请求类型,对第一存储装置进行相应的访存操作,并基于所述第二密钥和所述访存请求对应的数据,采用预设的运算方式进行哈希运算,生成对应的消息认证数据并存储,用以对所述第一存储装置的存储的相应数据读出时进行数据完整性校验,包括:
基于所述读数据请求对应的待读取数据的地址,从所述第一存储装置读取得到对应的数据;基于所述第二密钥和读取得到的数据,采用所述预设的运算方式进行哈希运算,生成对应的消息认证数据,作为第一消息认证数据;
基于所述待读取数据的地址,生成对应的消息认证数据的地址,基于生成的消息认证数据的地址,从第二存储装置中读取得到消息认证数据,作为第二消息认证数据;
基于所述第一消息认证数据与所述第二消息认证数据是否一致,确定所述读取得到的数据的数据完整性校验是否通过;
基于校验结果确定是否返回从所述第一存储装置读取得到的数据。
5.根据权利要求4所述的存储装置数据完整性保护方法,其特征在于,所述基于校验结果确定是否返回从所述第一存储装置读取得到的数据,包括:
在确定所述读出得到的数据的完整性校验未通过时,向所述安全处理装置发送中断请求,使得所述安全处理装置基于所述中断请求,对所述读数据请求进行预设的数据保护处理操作;
在确定所述读出得到的数据的完整性校验通过时,向所述读数据请求对应的访存主体返回读出数据。
6.根据权利要求3所述的存储装置数据完整性保护方法,其特征在于,还包括:
生成所述消息认证数据在第一存储装置中的存储地址并存储至所述第二存储装置;
响应于预设的触发条件,在预设时长内阻止访存请求,并在所述预设时长内,按照所述第二存储装置中存储的消息认证数据在所述第一存储装置中的存储地址,将所述消息认证数据写入至所述第一存储装置中。
7.根据权利要求6所述的存储装置数据完整性保护方法,其特征在于,所述预设的触发条件包括以下至少一种:
所述第二存储装置的空闲存储空间小于预设存储量阈值;
所述第一存储装置的带宽处于空闲状态。
8.根据权利要求6所述的存储装置数据完整性保护方法,其特征在于,所述生成所述消息认证数据在第一存储装置中的存储地址,包括:
基于预设的所述第一存储装置中的地址划分规则,根据所述待写入数据的存储地址,按照预设的生成方法生成所述消息认证数据在第一存储装置中的存储地址。
9.根据权利要求8所述的存储装置数据完整性保护方法,其特征在于,所述预设的所述第一存储装置中的地址划分规则,包括:
所述第一存储装置的地址段中写入数据对应的有效数据存储区域的第一地址段与对应的消息认证数据存储区域的第二地址段按照预设的存储空间比例关系分区划分。
10.根据权利要求1所述的存储装置数据完整性保护方法,其特征在于,在获取所述访存请求所包含的安全访存主体标识之前,还包括:
确定所述访存请求中包含的数据完整性保护标识处于有效状态。
11.一种片上系统,其特征在于,与置于所述片上系统内部或外部的第一存储装置耦接,以进行数据访存操作,所述片上系统包括:第二存储装置、存储装置控制器及安全处理装置,其中:
所述安全处理装置,适于响应于访存主体启动时发送的存储装置数据完整性保护请求,为所述访存主体分配唯一认证标识作为安全访存主体标识,并为所述访存主体分配访存主体密钥,将所分配的安全访存主体标识返回至所述访存主体,将为所述访存主体所分配的安全访存主体标识和访存主体密钥发送至所述存储装置控制器进行存储;
所述存储装置控制器,适于基于所述安全处理装置为所述访存主体所分配的安全访存主体标识和访存主体密钥,建立所述安全访存主体标识与访存主体密钥之间的对应关系并存储;基于接收到的访存请求,获取所述访存请求所包含的安全访存主体标识;根据所存储的安全访存主体标识与访存主体密钥之间的对应关系,获取所述安全访存主体标识对应的访存主体密钥,作为第一密钥;对所述第一密钥进行非线性变换,得到与访存地址相关的密钥,作为第二密钥;根据接收到的访存请求的请求类型,对第一存储装置进行相应的访存操作,并基于所述第二密钥和所述访存请求对应的数据,采用预设的运算方式进行哈希运算,生成对应的消息认证数据并存储至所述第二存储装置,用以对所述第一存储装置中存储的相应数据在读出时进行数据完整性校验;
所述第二存储装置,适于存储所述存储装置控制器在将数据写入所述第一存储装置中时所生成的消息认证数据。
12.根据权利要求11所述的片上系统,其特征在于,所述安全处理装置还适于响应于访存主体退出时发送的存储装置数据完整性保护取消请求,回收为所述访存主体分配的安全访存主体标识及访存主体密钥,并向所述存储装置控制器发出信息无效指令,以无效所存储的对应的安全访存主体标识与访存主体密钥之间的对应关系。
13.根据权利要求11所述的片上系统,其特征在于,所述存储装置控制器,适于将写数据请求对应的待写入数据写入所述第一存储装置;基于所述第二密钥和所述写数据请求对应的待写入数据,采用预设的运算方式进行哈希运算,生成所述消息认证数据;基于所述待写入数据的地址,生成所述消息认证数据的地址,并基于所述消息认证数据的地址,将所述消息认证数据存储至所述第二存储装置,用以待所述第一存储装置中对应的写入数据在后续读出时进行数据完整性校验。
14.根据权利要求11至13任一项所述的片上系统,其特征在于,所述存储装置控制器,适于基于读数据请求对应的待读取数据的地址,从所述第一存储装置读取得到对应的数据;基于所述第二密钥和读取得到的数据,采用所述预设的运算方式进行哈希运算,生成对应的消息认证数据,作为第一消息认证数据;基于所述待读取数据的地址,生成对应的消息认证数据的地址,基于生成的消息认证数据的地址,从所述第二存储装置中读取得到消息认证数据,作为第二消息认证数据;基于所述第一消息认证数据与所述第二消息认证数据是否一致,确定所述读取得到的数据的数据完整性校验是否通过;基于校验结果确定是否返回所述从所述第一存储装置读取得到的对应数据。
15.根据权利要求14所述的片上系统,其特征在于,所述存储装置控制器,适于在确定所述读出得到的数据的完整性校验未通过时,向所述安全处理装置发送中断请求,使得所述安全处理装置基于所述中断请求,对所述读数据请求进行预设的数据保护处理操作;在确定所述读出得到的数据的完整性校验通过时,向所述读数据请求对应的访存主体返回读出数据。
16.根据权利要求13所述的片上系统,其特征在于,所述存储装置控制器,还适于生成所述消息认证数据在第一存储装置中的存储地址并存储至所述第二存储装置,并响应于预设的触发条件,在预设时长内阻止访存请求,并在所述预设时长内,按照所述第二存储装置中存储的消息认证数据在所述第一存储装置中的存储地址,将所述消息认证数据写入至所述第一存储装置中。
17.根据权利要求16所述的片上系统,其特征在于,所述存储装置控制器,适于基于预设的所述第一存储装置中的地址划分规则,根据所述待写入数据的存储地址,按照预设的生成方法生成所述消息认证数据在第一存储装置中的存储地址。
18.根据权利要求17所述的片上系统,其特征在于,所述第一存储装置的地址段中写入数据对应的有效数据存储区域的第一地址段与对应的消息认证数据存储区域的第二地址段按照预设的存储空间比例关系分区划分。
19.根据权利要求11所述的片上系统,其特征在于,所述片上系统还包括:处理器核心,适于运行所述访存主体;所述第二存储装置适于按照如下任意一种位置设置:
所述第二存储装置与所述处理器核心位于同一基板上不同的晶粒上;
所述第二存储装置与所述处理器核心位于两个封装结构中;
所述第二存储装置与所述处理器核心位于同一个晶粒上;
所述第二存储装置内置于所述存储装置控制器中。
20.一种存储装置控制器,适于与第一存储装置耦接,对所述第一存储装置进行访存控制,其特征在于,包括:
第一密钥获取单元,适于基于安全处理装置为访存主体启动时所分配的安全访存主体标识和访存主体密钥,建立访存主体标识和访存主体密钥之间的对应关系并存储;基于接收到的访存请求,获取所述访存请求中所包含的安全访存主体标识,根据所存储的安全访存主体标识与访存主体密钥之间的对应关系,获取所述安全访存主体标识对应的访存主体密钥,作为第一密钥;
密钥变换单元,适于对所述第一密钥进行非线性变换,得到与访存地址相关的密钥,作为第二密钥;
访存控制单元,适于根据接收到的访存请求的请求类型,对所述第一存储于装置进行相应的访存操作;
消息认证数据生成单元,适于基于所述第二密钥和所述访存请求对应的数据,采用预设的运算方式进行哈希运算,生成对应的消息认证数据并存储,以对所述第一存储装置的存储的相应数据读出时进行数据完整性校验。
21.根据权利要求20所述的存储装置控制器,其特征在于,所述第一密钥获取单元还适于在接收到安全处理装置响应于访存主体退出时所发送的存储装置数据完整性保护取消请求所生成的信息无效指令,无效所存储的对应的安全访存主体标识与访存主体密钥之间的对应关系。
22.根据权利要求20所述的存储装置控制器,其特征在于,所述访存控制单元,适于基于接收到的写数据请求,获取待写入数据及所述待写入数据的存储地址,基于所述待写入数据的存储地址,将所述待写入数据写入所述第一存储装置;
所述存储装置控制器还包括:校验数据处理单元,适于基于所述待写入数据的地址,生成所述消息认证数据的地址,并基于所述消息认证数据的地址,将所述消息认证数据存储至第二存储装置。
23.根据权利要求22所述的存储装置控制器,其特征在于,还包括:数据完整性校验单元、数据返回单元和中断单元;
所述访存控制单元,还适于基于接收到的读数据请求,获取待读取数据的地址,基于所述待读取数据的地址,从所述第一存储装置读取对应数据;
所述数据完整性校验单元,适于基于所述访存控制单元读取得到的数据和所述第二密钥,采用所述预设的运算方式进行哈希运算,得到对应的消息认证数据,作为第一消息认证数据;基于待读取数据的地址,生成对应的消息认证数据的地址,并基于所生成的消息认证数据的地址,从所述第二存储装置中获取对应的消息认证数据,作为第二消息认证数据;基于所述第一消息认证数据与所述第二消息认证数据是否一致,确定所述读取得到的数据的数据完整性校验是否通过;
所述数据返回单元,适于在所述数据完整性校验单元确定所述读取得到的数据的完整性校验通过时,向所述读数据请求对应的访存主体返回读出数据;
所述中断单元,适于在所述数据完整性校验单元确定所述读出得到的数据的完整性校验未通过时,向所述安全处理装置发送中断请求,使得所述安全处理装置基于所述中断请求,对所述读数据请求进行预设的数据保护处理操作。
24.根据权利要求22所述的存储装置控制器,其特征在于,所述校验数据处理单元还适于基于待写入数据的地址,生成所述消息认证数据在所述第一存储装置中的地址,并将所述消息认证数据在所述第一存储装置中的地址与所述消息认证数据一并存储至所述第二存储装置,并响应于预设的触发条件,在预设时长内阻止访存请求,并在所述预设时长内将所述第二存储装置中存储的消息认证数据按照所述第二存储装置存储的地址写入至所述第一存储装置中。
CN201911420621.4A 2019-12-31 2019-12-31 存储装置数据完整性保护方法及其控制器、片上系统 Active CN111143247B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911420621.4A CN111143247B (zh) 2019-12-31 2019-12-31 存储装置数据完整性保护方法及其控制器、片上系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911420621.4A CN111143247B (zh) 2019-12-31 2019-12-31 存储装置数据完整性保护方法及其控制器、片上系统

Publications (2)

Publication Number Publication Date
CN111143247A CN111143247A (zh) 2020-05-12
CN111143247B true CN111143247B (zh) 2023-06-30

Family

ID=70522918

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911420621.4A Active CN111143247B (zh) 2019-12-31 2019-12-31 存储装置数据完整性保护方法及其控制器、片上系统

Country Status (1)

Country Link
CN (1) CN111143247B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111736763B (zh) * 2020-05-25 2022-05-13 瑞芯微电子股份有限公司 一种存储数据读取控制方法和装置
CN112433737A (zh) * 2020-10-23 2021-03-02 苏州浪潮智能科技有限公司 一种服务器管理控制平台安全升级卡
CN112364324A (zh) * 2020-11-16 2021-02-12 深圳安捷丽新技术有限公司 一种基于声纹识别的高安全等级数据访问方法和装置
CN112364323A (zh) * 2020-11-16 2021-02-12 深圳安捷丽新技术有限公司 一种基于用户虹膜识别的高安全存储访问方法和装置
CN112579170B (zh) * 2020-12-10 2022-11-08 海光信息技术股份有限公司 一种用于减少虚拟地址计算的处理器及其方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1707450A (zh) * 2004-06-08 2005-12-14 侯方勇 保护存储设备中数据机密性与完整性的方法和装置
CN101159556A (zh) * 2007-11-09 2008-04-09 清华大学 基于组密钥服务器的共享加密文件系统中的密钥管理方法
CN102082668A (zh) * 2010-07-16 2011-06-01 北京邮电大学 一种基于耦合混沌映射的消息完整性认证方法
CN109086612A (zh) * 2018-07-06 2018-12-25 北京航空航天大学 一种基于硬件实现的嵌入式系统动态数据保护方法
CN109274480A (zh) * 2017-07-17 2019-01-25 科大国盾量子技术股份有限公司 基于hmac-sm3算法的数据认证方法及量子密钥分发系统
CN109960903A (zh) * 2017-12-26 2019-07-02 中移(杭州)信息技术有限公司 一种应用加固的方法、装置、电子设备及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4447977B2 (ja) * 2004-06-30 2010-04-07 富士通マイクロエレクトロニクス株式会社 セキュアプロセッサ、およびセキュアプロセッサ用プログラム。
US20150294123A1 (en) * 2014-04-11 2015-10-15 Krimmeni Technologies, Inc. System and method for sharing data securely
WO2017024579A1 (zh) * 2015-08-13 2017-02-16 华为技术有限公司 一种消息保护的方法、相关设备以及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1707450A (zh) * 2004-06-08 2005-12-14 侯方勇 保护存储设备中数据机密性与完整性的方法和装置
CN101159556A (zh) * 2007-11-09 2008-04-09 清华大学 基于组密钥服务器的共享加密文件系统中的密钥管理方法
CN102082668A (zh) * 2010-07-16 2011-06-01 北京邮电大学 一种基于耦合混沌映射的消息完整性认证方法
CN109274480A (zh) * 2017-07-17 2019-01-25 科大国盾量子技术股份有限公司 基于hmac-sm3算法的数据认证方法及量子密钥分发系统
CN109960903A (zh) * 2017-12-26 2019-07-02 中移(杭州)信息技术有限公司 一种应用加固的方法、装置、电子设备及存储介质
CN109086612A (zh) * 2018-07-06 2018-12-25 北京航空航天大学 一种基于硬件实现的嵌入式系统动态数据保护方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Shunrong Jiang et al.."An Efficient Anonymous Batch Authentication Scheme Based on HMAC for VANETs".《IEEE Transactions on Intelligent Transportation Systems》.2016,2193-2204页. *
常瑞."嵌入式终端可信执行环境构建与安全防护技术研究".《中国博士学位论文全文数据库 信息科技辑》.2018,(第06期),论文全文. *
肖达 等."基于组密钥服务器的加密文件系统的设计和实现".《计算机学报》.2008,第31卷(第04期),600-609页. *

Also Published As

Publication number Publication date
CN111143247A (zh) 2020-05-12

Similar Documents

Publication Publication Date Title
CN111143247B (zh) 存储装置数据完整性保护方法及其控制器、片上系统
CN107408081B (zh) 提供对存储器的加强重放保护
CN109858265B (zh) 一种加密方法、装置及相关设备
US8839001B2 (en) Infinite key memory transaction unit
EP3274850B1 (en) Protecting a memory
JP5646631B2 (ja) デバイスの監査
CN109800050B (zh) 一种虚拟机的内存管理方法、装置、相关设备及系统
CN103824032A (zh) 在微控制器中用于数据安全性处理的方法和装置
CN111159781B (zh) 存储装置数据完整性保护方法及其控制器、片上系统
KR102117838B1 (ko) 캐시 메모리의 보안-관련 데이터를 보호하기 위한 방법
KR20200031671A (ko) 메모리 보안용 카운터 무결성 트리
EP3271828B1 (en) Cache and data organization for memory protection
EP2990953B1 (en) Periodic memory refresh in a secure computing system
CN111159097A (zh) 一种片上访存保护系统及方法
CN116126463A (zh) 内存访问方法、配置方法、计算机系统及相关器件
CN112363800B (zh) 一种网卡的内存访问方法、安全处理器、网卡及电子设备
CN111125794B (zh) 访存控制方法、系统及存储装置控制器
CN112527205A (zh) 一种数据安全防护方法、装置、设备及介质
KR20170138412A (ko) 장치의 시스템 온 칩의 보안 모듈로의 복수의 액세스를 관리하기 위한 디바이스
CN112416526A (zh) 一种直接存储访问方法、装置及相关设备
CN116226870B (zh) 安全增强系统及方法
CN115017089A (zh) 一种远程内存访问的系统及方法
CN114297093A (zh) 一种数据的存储方法、装置、设备及存储介质
CN115777101A (zh) 使用高速缓存的部分散列值的存储器保护
CN116860666A (zh) 一种gpu内存保护方法、装置、芯片及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 300384 industrial incubation-3-8, North 2-204, No. 18, Haitai West Road, Tianjin Huayuan Industrial Zone, Binhai New Area, Tianjin

Applicant after: Haiguang Information Technology Co.,Ltd.

Address before: 300384 industrial incubation-3-8, North 2-204, No. 18, Haitai West Road, Tianjin Huayuan Industrial Zone, Binhai New Area, Tianjin

Applicant before: HAIGUANG INFORMATION TECHNOLOGY Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant