CN113505363B - 通过软件方式实现存储空间防重放的方法和系统 - Google Patents
通过软件方式实现存储空间防重放的方法和系统 Download PDFInfo
- Publication number
- CN113505363B CN113505363B CN202110892794.7A CN202110892794A CN113505363B CN 113505363 B CN113505363 B CN 113505363B CN 202110892794 A CN202110892794 A CN 202110892794A CN 113505363 B CN113505363 B CN 113505363B
- Authority
- CN
- China
- Prior art keywords
- storage space
- file
- metadata
- hash value
- storage
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/45—Structures or tools for the administration of authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种通过软件方式实现存储空间防重放的方法和系统,包括:步骤1:在存储介质中选择两段长度相等的区域分别作为存储空间;步骤2:在任何非可信执行环境程序被引导之前,由引导程序或预设执行于可信执行环境内的程序对存储空间进行完整性检验,并根据完整性检验结果以及存储空间的版本比较结果,将两个存储空间分别设为当前激活存储空间和备份存储空间,按需初始化存储空间,并对备份存储空间进行上电写保护操作;步骤3:仅对当前激活存储空间进行读写操作,并在每次写操作时更新存储空间的版本号。本发明通过计算超级块内关键内容的认证码,使得超级块无法被任意篡改,一旦篡改认证码将无法与超级块内容匹配。
Description
技术领域
本发明涉及重放保护内存块技术领域,具体地,涉及一种通过软件方式实现存储空间防重放的方法和系统。尤其地,涉及一种基于可信执行环境的通过软件方式实现存储空间防重放的方法。
背景技术
在密码学中,消息认证码(英语:Message authentication code,缩写为MAC),又译为消息鉴别码、文件消息认证码、讯息鉴别码、信息认证码,是经过特定算法后产生的一小段信息,检查某段消息的完整性,以及作身份验证。它可以用来检查在消息传递过程中,其内容是否被更改过,不管更改的原因是来自意外或是蓄意攻击。同时可以作为消息来源的身份验证,确认消息的来源。
重放攻击(ReplayAttacks)又称重播攻击、回放攻击,是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。重放攻击可以由发起者,也可以由拦截并重发该数据的敌方进行。攻击者利用网络监听或者其他方式盗取认证凭据,之后再把它重新发给认证服务器。针对存储系统的重放攻击,通常指攻击者使用存储空间的一个旧的内容替换新的内容,或者使用一次旧的读请求内容响应新的读请求,或者使用旧的写请求替换新的写请求。若攻击成功,其最终效果通常为使得存储系统中特定区域的内容发生回退。在特定场景中,若存储空间旧有内容可以作为攻击整个系统的漏洞进行利用,那么针对存储系统的重放攻击则可视作为对整个系统攻击的起点。
重放保护内存块技术(Replay Protected Memory Block,后简称RPMB)是目前移动智能设备上的重要存储安全相关的硬件技术。该技术被应用于现有的EMMC和UFS存储介质中,能够为使用者提供一块防重放的独立安全存储空间。RPMB存储技术是主流的移动支付方案(微信支付、支付宝支付)中的必要组成部分,被用于存储根秘钥和根证书等保密性与完整性要求相对较高的内容。同时,安卓操作系统也推荐将系统的信任根存储在RPMB提供的安全存储空间中。
RPMB的可靠性依赖于RPMB秘钥的保密性。在目前实现中,RPMB秘钥通常使用设备CPU提供的安全设备唯一ID派生获得。该ID满足以下特性:
1.不变性:在任何一台设备上,ID的值永远不变;
2.唯一性:不同设备上ID值均不一致;
3.随机性:不同设备上的ID值随机分布且无法根据一台设备上的ID推断出其他设备的ID值;
4.保密性:该ID值仅对系统中部分可信组件可见。
上述RPMB秘钥的生成方式能够满足设备对于安全存储的要求,并将RPMB秘钥与设备CPU严格绑定在一起。由于RPMB内的OTP区域仅可一次编程特性,故一旦RPMB硬件与设备构建了绑定关系,RPMB(以及对应的EMMC/UFS Flash)将无法与新的CPU共同使用。这一定程度上造成了Flash使用的一次性现象,即一旦Flash在特定设备上使用后,便无法再其他设备上再次使用。该特性降低了EMMC/UFS Flash的可重复利用能力,一定程度上提高了相关硬件的维修成本,从而提高了使用EMMC/UFS Flash的整体成本。
专利文献CN103988185B(申请号:CN201180075706.9)公开了一种用于安全的重放保护存储的系统、装置和方法,在闪速存储器设备中创建底层基础设施使得可以保护它以免用户攻击-例如,替换SPI闪速存储器设备或中间人(MITM)攻击以在运行中修改SPI闪速存储器内容。然而该专利降低了底层基础设施的可重复利用能力,一定程度上提高了相关硬件的维修成本。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种通过软件方式实现存储空间防重放的方法和系统。
根据本发明提供的一种通过软件方式实现存储空间防重放的方法,包括:
步骤1:在存储介质中选择两段长度相等的区域分别作为存储空间;
步骤2:在任何非可信执行环境程序被引导之前,由引导程序或预设执行于可信执行环境内的程序对存储空间进行完整性检验,并根据完整性检验结果以及存储空间的版本比较结果,将两个存储空间分别设为当前激活存储空间和备份存储空间,按需初始化存储空间,并对备份存储空间进行上电写保护操作;
步骤3:仅对当前激活存储空间进行读写操作,并在每次写操作时更新存储空间的版本号。
优选的,选择区域的长度为存储介质上电写保护单元长度的整数倍;
存储空间内的数据以固定大小的块为单位进行组织,包括:
超级块:存储空间仅包含一个超级块,描述存储空间的整体情况;
文件元数据块:存放文件元数据节点;
普通数据块:记录存储空间内文件的实际内容;
所述文件元数据块中包含多个等长的元数据节点,每个元数据节点记录文件是否存在,若存在,则记录该文件的文件名、文件长度、该文件所包含的所有数据块,以及所有数据块拼接得到的哈希值。
优选的,存储空间的完整性检验包括:
--读取存储空间中超级块,验证超级块的魔数是否等于预期值,若不相等,则判定该存储空间已经损坏;
--遍历所有文件元数据块的文件元数据节点,若文件元数据节点指代的文件存在,则检查该文件节点,遍历该文件节点的所有数据块,将数据块拼接,对拼接后的内容进行散列运算得到哈希值,比较该哈希值与元数据节点的哈希值,若不同,则判定该存储空间已经损坏;
--拼接所有文件元数据块内容,若文件元数据指代的文件存在,则使用当前内容;若文件元数据指代的文件不存在,则视为长度与一个文件元数据等长的\0字符;对拼接后的内容进行散列运算得到哈希值;比较哈希值与超级块中的文件元数据哈希值,若不相等,则判定该存储空间已经损坏;
--使用存储空间根秘钥,通过消息认证码对除认证数据之外的超级块进行验证,将得到的结果与超级块中的认证数据进行比较,若不相等,则判定存储空间已经损坏;
当上述检验均通过时,判定存储空间通过完整性检验。
优选的,若两个存储空间均未通过完整性检验,则对任一存储空间进行初始化操作并设为激活存储空间;
若两个存储空间中有一个通过完整性检验,则对未通过完整性检验的存储空间进行初始化操作并设为激活存储空间,同时对通过完整性检验的存储空间进行上电写保护操作;
若两个存储空间均通过完整性检验,则比较两个存储空间版本记录的大小,将版本记录值较大的存储空间的内容复制至另一个存储空间,同时对版本记录值较大的存储空间进行上电写保护操作,并将版本记录值较小的存储空间设为激活存储空间。
优选的,存储空间的读操作包括:遍历文件元数据块中的文件元数据节点,找到当前文件存在且文件名符合预设要求的文件元数据节点,根据读请求找到该文件中的指定数据块,对整个存储空间进行完整性验证,若完整性验证通过,则读取请求继续进行,若未通过,则不再响应任何对存储空间的读写请求;
存储空间的写操作包括:修改指定的数据块,根据新的文件内容,重新计算该文件对应的原数据节点的数据哈希值;根据新的元数据节点,重新计算新的超级块中的文件元数据块哈希;将版本记录加1;使用存储空间根秘钥重新计算超级块的认证数据;将新的元数据块哈希、版本记录以及认证数据写入到超级块中。
根据本发明提供的通过软件方式实现存储空间防重放的系统,包括:
模块M1:在存储介质中选择两段长度相等的区域分别作为存储空间;
模块M2:在任何非可信执行环境程序被引导之前,由引导程序或预设执行于可信执行环境内的程序对存储空间进行完整性检验,并根据完整性检验结果以及存储空间的版本比较结果,将两个存储空间分别设为当前激活存储空间和备份存储空间,按需初始化存储空间,并对备份存储空间进行上电写保护操作;
模块M3:仅对当前激活存储空间进行读写操作,并在每次写操作时更新存储空间的版本号。
优选的,选择区域的长度为存储介质上电写保护单元长度的整数倍;
存储空间内的数据以固定大小的块为单位进行组织,包括:
超级块:存储空间仅包含一个超级块,描述存储空间的整体情况;
文件元数据块:存放文件元数据节点;
普通数据块:记录存储空间内文件的实际内容;
所述文件元数据块中包含多个等长的元数据节点,每个元数据节点记录文件是否存在,若存在,则记录该文件的文件名、文件长度、该文件所包含的所有数据块,以及所有数据块拼接得到的哈希值。
优选的,存储空间的完整性检验包括:
--读取存储空间中超级块,验证超级块的魔数是否等于预期值,若不相等,则判定该存储空间已经损坏;
--遍历所有文件元数据块的文件元数据节点,若文件元数据节点指代的文件存在,则检查该文件节点,遍历该文件节点的所有数据块,将数据块拼接,对拼接后的内容进行散列运算得到哈希值,比较该哈希值与元数据节点的哈希值,若不同,则判定该存储空间已经损坏;
--拼接所有文件元数据块内容,若文件元数据指代的文件存在,则使用当前内容;若文件元数据指代的文件不存在,则视为长度与一个文件元数据等长的\0字符;对拼接后的内容进行散列运算得到哈希值;比较哈希值与超级块中的文件元数据哈希值,若不相等,则判定该存储空间已经损坏;
--使用存储空间根秘钥,通过消息认证码对除认证数据之外的超级块进行验证,将得到的结果与超级块中的认证数据进行比较,若不相等,则判定存储空间已经损坏;
当上述检验均通过时,判定存储空间通过完整性检验。
优选的,若两个存储空间均未通过完整性检验,则对任一存储空间进行初始化操作并设为激活存储空间;
若两个存储空间中有一个通过完整性检验,则对未通过完整性检验的存储空间进行初始化操作并设为激活存储空间,同时对通过完整性检验的存储空间进行上电写保护操作;
若两个存储空间均通过完整性检验,则比较两个存储空间版本记录的大小,将版本记录值较大的存储空间的内容复制至另一个存储空间,同时对版本记录值较大的存储空间进行上电写保护操作,并将版本记录值较小的存储空间设为激活存储空间。
优选的,存储空间的读操作包括:遍历文件元数据块中的文件元数据节点,找到当前文件存在且文件名符合预设要求的文件元数据节点,根据读请求找到该文件中的指定数据块,对整个存储空间进行完整性验证,若完整性验证通过,则读取请求继续进行,若未通过,则不再响应任何对存储空间的读写请求;
存储空间的写操作包括:修改指定的数据块,根据新的文件内容,重新计算该文件对应的原数据节点的数据哈希值;根据新的元数据节点,重新计算新的超级块中的文件元数据块哈希;将版本记录加1;使用存储空间根秘钥重新计算超级块的认证数据;将新的元数据块哈希、版本记录以及认证数据写入到超级块中。
与现有技术相比,本发明具有如下的有益效果:
(1)本发明使用存储根秘钥通过信息认证码算法,计算超级块内关键内容的认证码,使得超级块无法被任意篡改,一旦篡改,认证码将无法与超级块内容匹配;
(2)将存储空间的超级块中存储文件元数据的哈希结果,在文件元数据中存储文件内容的哈希结果,使得文件内容无法被任意篡改,一旦文件内容被篡改,文件元数据的哈希将发生变动,因此超级块的内容也会随之发生改变,超级块的认证码将无法与超级块的内容匹配;
(3)在超级块中记录存储空间数据的版本,一旦对存储空间内文件进行任意写操作,版本的值都会增加1,存储空间内文件内容与超级块内容相关联,因此可以简单比较超级块内版本号得知两个存储空间内的数据的新旧关系;
(4)存储介质上使用两块大小相等的区域存储数据,分别作为备份存储空间和当前激活存储空间;每次设备启动时,选择版本较新的存储空间作为备份存储空间,选择版本较旧的存储空间作为当前激活存储空间,将备份存储空间的数据拷贝至当前激活存储空间,然后将备份存储空间进行上电写保护操作。支持数据可修改的同时,保证已经持久化的数据不会丢失,同时能够防止重放攻击。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为存储空间完整性校验流程图;
图2为系统启动时对存储空间的配置和保护流程图;
图3为存储空间读操作流程图;
图4为存储空间写操作流程图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
实施例:
根据本发明提供的基于可信执行环境的软件定义重放保护内存块技术,包括:
1、存储空间初始化
本系统需要在EMMC/UFS Flash中选择两段长度相等的符合要求的区域(长度需要为存储介质上电写保护单元长度的整数倍),此后将该两段区域分别称为存储空间A和存储空间B。一个合法的存储空间中符合下面的要求:
1)存储空间内的数据以固定大小的块为单位进行组织,可以分为三种不同类型的块:
a.超级元数据块,整个存储空间包含且仅包含一个超级元数据块,其描述了存储空间的整体情况;
b.文件元数据块,存放了数个文件元数据节点;
c.普通数据块,记录了存储空间内文件的实际内容。
2)超级元数据块,后简称超级块,需要包含三部分内容:
a.数据头:
i.该部分需要包含魔数,用于指明该区域为一个存储空间;
ii.版本记录,用于记录该存储空间被修改的次数,每次对存储空间内的数据进行任何修改,该版本记录需要递增1,该值为1;
b.文件元数据块哈希:存储空间中所有元数据块拼接后通过散列算法计算得到的值;
c.认证数据:本方法要求设备需提供一个设备唯一、不变且仅可被设备内可信软硬件使用的秘密数。本方法使用该秘密数派生一个存储空间根秘钥,并用该存储空间根秘钥对整个超级块内除认证数据之外的部分执行消息认证码算法(Message authenticatecode)算法,将得到的结果存储在认证数据中。
3)文件元数据块:文件元数据块中包含数个等长的元数据节点,每个元数据节点记录文件是否存在;若存在,则记录该文件的文件名,文件长度,并记录该文件所包含的所有数据块;记录一个所有数据块拼接得到的哈希值。
2、存储空间数据完整性的检验
如图1,一个存储空间需要经过下面的步骤验证其没有被篡改:
1)读取超级块,验证魔数是否等于预期值,若不相等,则认为该存储空间已经损坏;
2)遍历所有文件元数据块的所有元数据节点,若文件元数据节点指代的文件存在,则检查该文件节点;
a.遍历该文件节点的所有数据块,将数据块拼接;
b.对拼接后的内容进行散列运算得到哈希值;
c.比较该哈希值与元数据节点的哈希值,若不同,则认为该存储空间已经损坏;
3)拼接所有文件元数据块内容,若数据块中的一个文件元数据指代的文件存在,则使用其当前内容;若文件元数据指代的文件不存在,则将其内容视为长度与一个文件元数据等长的‘\0’字符;
4)对拼接后的内容进行散列运算得到哈希值;
5)比较哈希值与超级块中的文件元数据哈希,若不相等,则认为该存储空间已经损坏;
6)使用存储空间根秘钥对整个超级块内除认证数据之外的部分执行消息认证码算法,将得到的结果与超级块中的认证数据进行比较,若不相等,则认为存储空间已经损坏;
7)若上述检查都通过,则认为存储空间的完整性通过检测。
3、系统启动时保护存储空间
如图2,系统启动时,在所有对存储空间的数据访问前,分别对存储空间A与存储空间B进行描述的完整性检验;
1)若存储空间A和存储空间B均未通过完整性检查,则对存储空间A进行初始化操作,并将存储空间A设为激活的存储空间;
2)若存储空间A和存储空间B中有一个通过完整性检查,此处不妨设通过检查的存储空间为存储空间A,则对未通过完整性检查的存储空间,即存储空间B进行初始化工作,同时对存储空间A配置上电写保护,并将存储空间B设为激活的存储空间;
若存储空间A和存储空间B均通过完整性检查,则比较两存储空间版本记录的大小,此处不妨设存储空间A的版本记录值较大,即存储空间A的内容较新,则将存储空间A的内容复制至存储空间B,同时对存储空间A配置上电写保护,并将存储空间B设为激活的存储空间。
4、存储空间的读写操作
系统仅对当前激活的存储空间进行读写操作;相对的另一个存储空间由于进行了上电写保护配置,在当前供电周期结束前,其内容为只读。
4.1、对存储空间的读操作,如图3,当需要读取存储空间中的一个文件时:
1)遍历文件元数据块中的文件元数据节点,找到当前文件存在且文件名符合要求的文件元数据节点;
2)根据读请求找到该文件中的指定数据块;
3)对整个存储空间进行完整性验证;
4)若完整性验证通过,则读取请求可继续进行,若未通过,则不再响应任何对存储空间的读写请求;
通过上述操作,可以实现一旦激活的存储空间内容被未授权行为篡改,系统能够发现相关行为并避免进一步的数据损失。
4.2、对存储空间的写操作,如图4:
1)修改指定的数据块;
2)根据新的文件内容,重新计算该文件对应的原数据节点的数据哈希值;
3)根据新的元数据节点,重新计算新的超级块中的文件元数据块哈希;
4)将版本记录加1;
5)使用存储空间根秘钥重新计算超级块的认证数据;
6)将新的元数据块哈希、版本记录以及认证数据写入到超级块中;
每次写操作后,由于版本记录递增,使用旧的数据实施重放攻击将无法被通过存储空间的完整性检验。
存储介质的写保护机制通常指使得存储介质的特定区域无法被修改。在此基础上,上电写保护机制,指的是一旦开启该种类型的写保护之后,其带来的写保护特性将无法被关闭,直到下一个设备的供能周期(通常为设备重启,或者设备掉电后重新上电)。
RPMB存储技术的安全性取决于其对重放攻击的防御能力。通过精巧构造的重放攻击能够越过安全文件系统的完整性检查,使得应用读取到遭到部分篡改的数据,从而影响到其逻辑的执行,最终可能引发安全性问题)。通过下列的设计,RPMB能够抵御重放攻击。
1.RPMB中维护一个单调递增的硬件计数器,每次RPMB安全存储空间内的数据被成功修改后,硬件计数器的值增加1。该计数器可由外界读取,但不可由外界修改。硬件计数器的读取值后统称为RPMB写入计数。
2.RPMB中包含一个一次性可编程(One Time Programmable,后简称为OTP)的32字节区域,用于存放访问RPMB所需要的秘钥。存储在该区域的内容后统称为RPMB秘钥。
3.每次修改存储在RPMB内的数据时,修改者需要将待写入的内容与RPMB写入计数按照规范要求进行包装,并使用RPMB秘钥对包装后的内容进行HMAC_SHA256计算,并将计算后得出的结果按照规范与待写入内容、RPMB写入计数以及其他原数据包装在一起,最后将该数据包发送至RPMB硬件中。
4.RPMB硬件在数据包后,将比较数据包内的写入计数与硬件内的写入计数是否一致,若不一致,则RPMB硬件拒绝此次写请求,并报错。
5.RPMB硬件提取数据包的相关内容,并使用OTP区域内的RPMB秘钥对相关内容进行HMAC_SHA256操作,并将计算结果与传入数据包内的HMAC_SHA256计算结果进行比较。若不一致,则RPMB硬件拒绝此次写请求,并报错。
6.RPMB硬件更新安全存储空间内容,并更新内部维护的写入计数器。
上述机制能够保证软件系统中,RPMB秘钥的拥有者能够可靠地更新RPMB安全存储内的内容。而未拥有RPMB秘钥的第三方无法更新RPMB安全存储的内容,也无法部署重放攻击(通过比较写入计数的方式)。
根据本发明提供的通过软件方式实现存储空间防重放的系统,包括:模块M1:在存储介质中选择两段长度相等的区域分别作为存储空间;模块M2:在任何非可信执行环境程序被引导之前,由引导程序或预设执行于可信执行环境内的程序对存储空间进行完整性检验,并根据完整性检验结果以及存储空间的版本比较结果,将两个存储空间分别设为当前激活存储空间和备份存储空间,按需初始化存储空间,并对备份存储空间进行上电写保护操作;模块M3:仅对当前激活存储空间进行读写操作,并在每次写操作时更新存储空间的版本号。
选择区域的长度为存储介质上电写保护单元长度的整数倍;存储空间内的数据以固定大小的块为单位进行组织,包括:超级块:存储空间仅包含一个超级块,描述存储空间的整体情况;文件元数据块:存放文件元数据节点;普通数据块:记录存储空间内文件的实际内容;所述文件元数据块中包含多个等长的元数据节点,每个元数据节点记录文件是否存在,若存在,则记录该文件的文件名、文件长度、该文件所包含的所有数据块,以及所有数据块拼接得到的哈希值。
存储空间的完整性检验包括:读取存储空间中超级块,验证超级块的魔数是否等于预期值,若不相等,则判定该存储空间已经损坏;遍历所有文件元数据块的文件元数据节点,若文件元数据节点指代的文件存在,则检查该文件节点,遍历该文件节点的所有数据块,将数据块拼接,对拼接后的内容进行散列运算得到哈希值,比较该哈希值与元数据节点的哈希值,若不同,则判定该存储空间已经损坏;拼接所有文件元数据块内容,若文件元数据指代的文件存在,则使用当前内容;若文件元数据指代的文件不存在,则视为长度与一个文件元数据等长的\0字符;对拼接后的内容进行散列运算得到哈希值;比较哈希值与超级块中的文件元数据哈希值,若不相等,则判定该存储空间已经损坏;使用存储空间根秘钥,通过消息认证码对除认证数据之外的超级块进行验证,将得到的结果与超级块中的认证数据进行比较,若不相等,则判定存储空间已经损坏;当上述检验均通过时,判定存储空间通过完整性检验。
若两个存储空间均未通过完整性检验,则对任一存储空间进行初始化操作并设为激活存储空间;若两个存储空间中有一个通过完整性检验,则对未通过完整性检验的存储空间进行初始化操作并设为激活存储空间,同时对通过完整性检验的存储空间进行上电写保护操作;若两个存储空间均通过完整性检验,则比较两个存储空间版本记录的大小,将版本记录值较大的存储空间的内容复制至另一个存储空间,同时对版本记录值较大的存储空间进行上电写保护操作,并将版本记录值较小的存储空间设为激活存储空间。
存储空间的读操作包括:遍历文件元数据块中的文件元数据节点,找到当前文件存在且文件名符合预设要求的文件元数据节点,根据读请求找到该文件中的指定数据块,对整个存储空间进行完整性验证,若完整性验证通过,则读取请求继续进行,若未通过,则不再响应任何对存储空间的读写请求;
存储空间的写操作包括:修改指定的数据块,根据新的文件内容,重新计算该文件对应的原数据节点的数据哈希值;根据新的元数据节点,重新计算新的超级块中的文件元数据块哈希;将版本记录加1;使用存储空间根秘钥重新计算超级块的认证数据;将新的元数据块哈希、版本记录以及认证数据写入到超级块中。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (2)
1.一种通过软件方式实现存储空间防重放的方法,其特征在于,包括:
步骤1:在存储介质中选择两段长度相等的区域分别作为存储空间;
步骤2:在任何非可信执行环境程序被引导之前,由引导程序或预设执行于可信执行环境内的程序对存储空间进行完整性检验,并根据完整性检验结果以及存储空间的版本比较结果,将两个存储空间分别设为当前激活存储空间和备份存储空间,按需初始化存储空间,并对备份存储空间进行上电写保护操作;
步骤3:仅对当前激活存储空间进行读写操作,并在每次写操作时更新存储空间的版本号;
选择区域的长度为存储介质上电写保护单元长度的整数倍;
存储空间内的数据以固定大小的块为单位进行组织,包括:
超级块:存储空间仅包含一个超级块,描述存储空间的整体情况;
文件元数据块:存放文件元数据节点;
普通数据块:记录存储空间内文件的实际内容;
所述文件元数据块中包含多个等长的元数据节点,每个元数据节点记录文件是否存在,若存在,则记录该文件的文件名、文件长度、该文件所包含的所有数据块,以及所有数据块拼接得到的哈希值;
存储空间的完整性检验包括:
--读取存储空间中超级块,验证超级块的魔数是否等于预期值,若不相等,则判定该存储空间已经损坏;
--遍历所有文件元数据块的文件元数据节点,若文件元数据节点指代的文件存在,则检查该文件节点,遍历该文件节点的所有数据块,将数据块拼接,对拼接后的内容进行散列运算得到哈希值,比较该哈希值与元数据节点的哈希值,若不同,则判定该存储空间已经损坏;
--拼接所有文件元数据块内容,若文件元数据指代的文件存在,则使用当前内容;若文件元数据指代的文件不存在,则视为长度与一个文件元数据等长的\0字符;对拼接后的内容进行散列运算得到哈希值;比较哈希值与超级块中的文件元数据哈希值,若不相等,则判定该存储空间已经损坏;
--使用存储空间根秘钥,通过消息认证码对除认证数据之外的超级块进行验证,将得到的结果与超级块中的认证数据进行比较,若不相等,则判定存储空间已经损坏;
当上述检验均通过时,判定存储空间通过完整性检验;
若两个存储空间均未通过完整性检验,则对任一存储空间进行初始化操作并设为激活存储空间;
若两个存储空间中有一个通过完整性检验,则对未通过完整性检验的存储空间进行初始化操作并设为激活存储空间,同时对通过完整性检验的存储空间进行上电写保护操作;
若两个存储空间均通过完整性检验,则比较两个存储空间版本记录的大小,将版本记录值较大的存储空间的内容复制至另一个存储空间,同时对版本记录值较大的存储空间进行上电写保护操作,并将版本记录值较小的存储空间设为激活存储空间;
存储空间的读操作包括:遍历文件元数据块中的文件元数据节点,找到当前文件存在且文件名符合预设要求的文件元数据节点,根据读请求找到该文件中的指定数据块,对整个存储空间进行完整性验证,若完整性验证通过,则读取请求继续进行,若未通过,则不再响应任何对存储空间的读写请求;
存储空间的写操作包括:修改指定的数据块,根据新的文件内容,重新计算该文件对应的原数据节点的数据哈希值;根据新的元数据节点,重新计算新的超级块中的文件元数据块哈希;将版本记录加1;使用存储空间根秘钥重新计算超级块的认证数据;将新的元数据块哈希、版本记录以及认证数据写入到超级块中。
2.一种通过软件方式实现存储空间防重放的系统,其特征在于,包括:
模块M1:在存储介质中选择两段长度相等的区域分别作为存储空间;
模块M2:在任何非可信执行环境程序被引导之前,由引导程序或预设执行于可信执行环境内的程序对存储空间进行完整性检验,并根据完整性检验结果以及存储空间的版本比较结果,将两个存储空间分别设为当前激活存储空间和备份存储空间,按需初始化存储空间,并对备份存储空间进行上电写保护操作;
模块M3:仅对当前激活存储空间进行读写操作,并在每次写操作时更新存储空间的版本号;
选择区域的长度为存储介质上电写保护单元长度的整数倍;
存储空间内的数据以固定大小的块为单位进行组织,包括:
超级块:存储空间仅包含一个超级块,描述存储空间的整体情况;
文件元数据块:存放文件元数据节点;
普通数据块:记录存储空间内文件的实际内容;
所述文件元数据块中包含多个等长的元数据节点,每个元数据节点记录文件是否存在,若存在,则记录该文件的文件名、文件长度、该文件所包含的所有数据块,以及所有数据块拼接得到的哈希值;
存储空间的完整性检验包括:
--读取存储空间中超级块,验证超级块的魔数是否等于预期值,若不相等,则判定该存储空间已经损坏;
--遍历所有文件元数据块的文件元数据节点,若文件元数据节点指代的文件存在,则检查该文件节点,遍历该文件节点的所有数据块,将数据块拼接,对拼接后的内容进行散列运算得到哈希值,比较该哈希值与元数据节点的哈希值,若不同,则判定该存储空间已经损坏;
--拼接所有文件元数据块内容,若文件元数据指代的文件存在,则使用当前内容;若文件元数据指代的文件不存在,则视为长度与一个文件元数据等长的\0字符;对拼接后的内容进行散列运算得到哈希值;比较哈希值与超级块中的文件元数据哈希值,若不相等,则判定该存储空间已经损坏;
--使用存储空间根秘钥,通过消息认证码对除认证数据之外的超级块进行验证,将得到的结果与超级块中的认证数据进行比较,若不相等,则判定存储空间已经损坏;
当上述检验均通过时,判定存储空间通过完整性检验;
若两个存储空间均未通过完整性检验,则对任一存储空间进行初始化操作并设为激活存储空间;
若两个存储空间中有一个通过完整性检验,则对未通过完整性检验的存储空间进行初始化操作并设为激活存储空间,同时对通过完整性检验的存储空间进行上电写保护操作;
若两个存储空间均通过完整性检验,则比较两个存储空间版本记录的大小,将版本记录值较大的存储空间的内容复制至另一个存储空间,同时对版本记录值较大的存储空间进行上电写保护操作,并将版本记录值较小的存储空间设为激活存储空间;
存储空间的读操作包括:遍历文件元数据块中的文件元数据节点,找到当前文件存在且文件名符合预设要求的文件元数据节点,根据读请求找到该文件中的指定数据块,对整个存储空间进行完整性验证,若完整性验证通过,则读取请求继续进行,若未通过,则不再响应任何对存储空间的读写请求;
存储空间的写操作包括:修改指定的数据块,根据新的文件内容,重新计算该文件对应的原数据节点的数据哈希值;根据新的元数据节点,重新计算新的超级块中的文件元数据块哈希;将版本记录加1;使用存储空间根秘钥重新计算超级块的认证数据;将新的元数据块哈希、版本记录以及认证数据写入到超级块中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110892794.7A CN113505363B (zh) | 2021-08-04 | 2021-08-04 | 通过软件方式实现存储空间防重放的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110892794.7A CN113505363B (zh) | 2021-08-04 | 2021-08-04 | 通过软件方式实现存储空间防重放的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113505363A CN113505363A (zh) | 2021-10-15 |
CN113505363B true CN113505363B (zh) | 2022-11-29 |
Family
ID=78014940
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110892794.7A Active CN113505363B (zh) | 2021-08-04 | 2021-08-04 | 通过软件方式实现存储空间防重放的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113505363B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114244635B (zh) * | 2022-02-25 | 2022-08-19 | 深圳市华方信息产业有限公司 | 通信设备的加密型数据编码方法 |
CN115048046B (zh) * | 2022-05-26 | 2022-11-25 | 北京华昱卓程软件有限公司 | 日志文件系统以及数据管理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101436138A (zh) * | 2007-11-16 | 2009-05-20 | 苏州科达通信技术发展有限公司 | 一种用于软件升级且动态回滚的控制装置以及控制方法 |
CN109214219A (zh) * | 2017-07-01 | 2019-01-15 | 英特尔公司 | 用于使用压缩加密进行的存储器重放防止的技术 |
CN111108734A (zh) * | 2019-06-26 | 2020-05-05 | 阿里巴巴集团控股有限公司 | 基于存储空间互换的改进的防重放设备 |
CN112567339A (zh) * | 2018-06-20 | 2021-03-26 | 罗伯特·博世有限公司 | 用于更新目标设备上的软件的方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1707450A (zh) * | 2004-06-08 | 2005-12-14 | 侯方勇 | 保护存储设备中数据机密性与完整性的方法和装置 |
US20080320263A1 (en) * | 2007-06-20 | 2008-12-25 | Daniel Nemiroff | Method, system, and apparatus for encrypting, integrity, and anti-replay protecting data in non-volatile memory in a fault tolerant manner |
CN103049539A (zh) * | 2012-12-25 | 2013-04-17 | 华为技术有限公司 | 一种文件系统中文件数据的存储方法及其装置 |
US9710675B2 (en) * | 2015-03-26 | 2017-07-18 | Intel Corporation | Providing enhanced replay protection for a memory |
CN105069379B (zh) * | 2015-07-29 | 2017-11-21 | 哈尔滨工程大学 | 一种基于写计数器的存储器完整性保护方法 |
CN111723383B (zh) * | 2019-03-22 | 2024-03-19 | 阿里巴巴集团控股有限公司 | 数据存储、验证方法及装置 |
KR20200129776A (ko) * | 2019-05-10 | 2020-11-18 | 삼성전자주식회사 | 재전송 공격에 대한 방어책을 포함하는 메모리 시스템의 구동 방법 및 이를 수행하는 메모리 시스템 |
CN110443049B (zh) * | 2019-07-17 | 2023-05-23 | 南方电网科学研究院有限责任公司 | 一种安全数据存储管理的方法、系统及安全存储管理模块 |
-
2021
- 2021-08-04 CN CN202110892794.7A patent/CN113505363B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101436138A (zh) * | 2007-11-16 | 2009-05-20 | 苏州科达通信技术发展有限公司 | 一种用于软件升级且动态回滚的控制装置以及控制方法 |
CN109214219A (zh) * | 2017-07-01 | 2019-01-15 | 英特尔公司 | 用于使用压缩加密进行的存储器重放防止的技术 |
CN112567339A (zh) * | 2018-06-20 | 2021-03-26 | 罗伯特·博世有限公司 | 用于更新目标设备上的软件的方法 |
CN111108734A (zh) * | 2019-06-26 | 2020-05-05 | 阿里巴巴集团控股有限公司 | 基于存储空间互换的改进的防重放设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113505363A (zh) | 2021-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102092453B1 (ko) | 보안되는 실행 컨텍스트 데이터 | |
US10915633B2 (en) | Method and apparatus for device security verification utilizing a virtual trusted computing base | |
JP6373888B2 (ja) | 情報処理装置及び制御方法 | |
CN111030822B (zh) | 用于保护固件的方法和系统,以及计算机可读介质 | |
US11803366B2 (en) | Firmware updating system and method | |
US20090193211A1 (en) | Software authentication for computer systems | |
CN113505363B (zh) | 通过软件方式实现存储空间防重放的方法和系统 | |
CN109313690A (zh) | 自包含的加密引导策略验证 | |
JP2014513348A (ja) | 統合拡張ファームウェアインタフェース準拠計算装置内のシステムセキュリティデータベースおよびファームウェア格納部を変更する要求を処理するシステムおよび方法 | |
TW202036347A (zh) | 資料儲存、驗證方法及裝置 | |
CN109445705B (zh) | 固件认证方法及固态硬盘 | |
US9262631B2 (en) | Embedded device and control method thereof | |
WO2021249359A1 (zh) | 数据完整性保护的方法和装置 | |
CN113486360B (zh) | 基于risc-v的安全启动方法及系统 | |
JP5076110B2 (ja) | データを保証するためのシステム及び方法 | |
CN107563198B (zh) | 一种工业控制系统的主机病毒防治系统及方法 | |
CN113553115A (zh) | 一种基于异构多核芯片的启动方法以及存储介质 | |
CN111291381A (zh) | 一种基于tcm构建信任链的方法、设备及介质 | |
WO2019174647A1 (zh) | 磁盘阵列数据保护系统和方法 | |
CN112613011B (zh) | U盘系统认证方法、装置、电子设备及存储介质 | |
CN113360914A (zh) | 一种bios更新的方法、系统、设备及介质 | |
CN115310136B (zh) | 基于sata桥接芯片的数据安全保障方法 | |
JP6622360B2 (ja) | 情報処理装置 | |
CN108376055B (zh) | 通过可信通道技术保护磁盘阵列数据安全的方法和系统 | |
BRPI0611797A2 (pt) | monitor de aplicativo itso pvc2 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |