CN110443070A - 多主机共享存储系统及数据完整性保护方法 - Google Patents
多主机共享存储系统及数据完整性保护方法 Download PDFInfo
- Publication number
- CN110443070A CN110443070A CN201910747019.5A CN201910747019A CN110443070A CN 110443070 A CN110443070 A CN 110443070A CN 201910747019 A CN201910747019 A CN 201910747019A CN 110443070 A CN110443070 A CN 110443070A
- Authority
- CN
- China
- Prior art keywords
- data
- fingerprint
- address
- access
- shared memory
- 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.)
- Pending
Links
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/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
-
- 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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting 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/79—Protecting 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Abstract
一种多主机共享存储系统及数据完整性保护方法。本发明根据数据所有者系统的特征信息和需要存储的地址信息等计算出针对该数据的指纹,将指纹与数据一起写入存储介质中。由此,本发明能够在数据访问过程中基于访问者所对应系统的系统身份标识及其所提供的地址等信息判断是否与原先指纹信息对应,由此在不同系统之间保护数据的完整性。尤其,由于本发明的数据访问过程需要预先对请求访问的系统进行指纹匹配,因而能够在判断指纹不匹配时阻止该非法访问并及时上报该发出异常数据访问请求的系统,具有追溯性,能够检测并阻止数据的非法读取和篡改,保护不同系统间数据的完整性,大大增强数据的安全性。
Description
技术领域
本发明涉及信息安全领域,具体而言涉及一种数据保护方法及存储系统。
背景技术
现在的芯片和系统中,数据存储的需求越来越大,存储的安全性需求也与日俱增。很多系统都存在多个主机系统,每个主机系统又分别有自己对应的私有存储空间。对于一个系统中存在多个主机的这种情况,存储介质出于成本考虑往往需要在多个主机之间共享。也就是说,每个主机都可以访问该存储介质,各个主机之间的区别仅仅在于对存储空间的读取过程。因此,不同系统之间数据的完整性保护显得格外重要。
而对于单一主机,由于现在的很多主机都支持虚拟化,虚拟化后,一个主机也可以运行多个主机系统,这些主机系统拥有各自的计算资源和存储资源,互不干扰,各主机系统所运行的软件也可以独立开发,不需要考虑其他主机系统的存在。这样的系统,其应用的场景和实现的功能更丰富,也更复杂。但同时,由于实际存在多个主机或者多个主机系统同时运行,每个主机或者主机系统都需要保证其私有资源的独立性和完整性。需要限制其他主机或主机系统对其私有资源的读写。
现有技术中,虽然可以对这些私有资源采用对称加密算法进行加密存储,但是由于多个主机系统之间存在访问对方私有数据的可能,一旦这种非法读取发生,则会导致数据泄露。而更危险的在于,一旦非法写入发生,则会引起数据被篡改,数据被篡改轻则导致数据错误,重则导致系统崩溃。也就是说,现有多主机共享存储系统,其面临的一大问题是合法的主机和存储控制系统无法阻止其私有数据被非法读取或者篡改,并且,也没有办法获知数据是否已经被非法读取或者非法篡改。由于非法篡改所致的数据错误能够直接导致系统崩溃,现有多主机共享存储系统的数据完整性,实际上面临着很大的安全隐患,是一个极其迫切的问题。
发明内容
本发明针对现有技术的不足,提供一种多主机共享存储系统及数据完整性保护方法,可以大大提升多主机系统数据存储的安全性,保护多主机系统中各系统数据的完整性,防止私有数据被非法获取或修改,并且能够在数据被非法获取或修改后获知该安全风险。本发明具体采用如下技术方案。
首先,为实现上述目的,提出一种多主机共享存储系统及数据完整性保护方法,其在数据写入过程中,至少根据该数据所需要写入的地址以及该数据所对应系统的系统身份标识生成该数据的指纹,存储所述指纹和所述数据;在数据访问过程中,至少根据请求访问的系统的系统身份标识及其所提供的地址判断是否与该地址所对应的指纹匹配,若匹配则提供数据访问,否则阻止该非法访问并上报异常。
可选的,上述多主机共享存储系统的数据完整性保护方法,其在数据写入过程中,同时根据该数据所需要写入的地址、该数据所对应的系统的系统身份标识以及该系统所对应的特征信息进行单项运算,生成所述指纹;对应的,数据访问过程中,同时根据请求访问的系统的系统身份标识、其所提供的地址以及该系统所对应的特征信息进行单项运算,生成待验证指纹,判断所述待验证指纹是否与该地址所存储的指纹匹配。
可选的,上述多主机共享存储系统的数据完整性保护方法,其中,所述系统所对应的特征信息包括以下任一或其组合:该系统的用户自定义数据,该系统要访问的数据部分;每一个系统的所述系统身份标识唯一对应该系统;所述系统的用户自定义数据包括用户自己定义的公开数据、用户自己保密的秘密数据、该系统的系统参数或其组合。
可选的,上述多主机共享存储系统的数据完整性保护方法,其中,若所述写入的地址所对应的存储单元为易失性存储单元,则所述系统所对应的特征信息还包括:该易失性存储单元本次上电所对应的至少一个随机数。
可选的,上述多主机共享存储系统的数据完整性保护方法,其中,所述单项运算具有单项性、强混淆性、抗碰撞性。
可选的,上述多主机共享存储系统的数据完整性保护方法,其中,所述单项运算所生成的指纹的数据长度,根据所述多主机共享存储系统的安全需求,以及所述写入的地址所对应的存储单元的存储空间大小共同确定。
可选的,上述多主机共享存储系统的数据完整性保护方法,其中,数据访问过程中,在根据请求访问的系统及其所提供的地址判断与该地址所存储的指纹不匹配时,上报的所述异常至少包括:请求访问的系统所对应的系统身份标识。
一种多主机共享存储系统,其包括:指纹计算单元,连接至少两个系统,用于在数据写入过程中,至少根据该数据所需要写入的地址以及该数据所对应系统的系统身份标识生成该数据的指纹;还用于在数据访问过程中,至少根据请求访问的系统的系统身份标识及其所提供的地址判断是否与该地址所存储的指纹匹配,在不匹配时阻止该非法访问并上报异常;存储单元,其连接所述指纹计算单元,用于在数据写入过程中,存储该数据及其所对应的所述指纹;还用于在数据访问过程中,在所述指纹计算单元判断匹配时提供针对该数据的访问,在所述指纹计算单元判断不匹配时不提供数据访问。
可选的,上述多主机共享存储系统,其中,所述存储单元中对应每一个数据所写入的地址范围内均分别存储有该数据及其所对应的指纹。
可选的,上述多主机共享存储系统,其中,所述指纹计算单元包括有单项函数运算模块,其根据数据所需要写入的地址、该数据所对应的系统和/或该系统所对应的特征信息进行单项运算,生成对应该数据的指纹;其中,所述指纹的数据长度,根据所述多主机共享存储系统的安全需求,以及所述写入的地址所对应的存储单元的存储空间大小共同确定。
有益效果
本发明至少根据所有系统的特征信息和需要存储的地址信息等计算出针对该数据的指纹,将指纹与数据一起写入存储介质中。由此,本发明能够在数据访问过程中基于访问者所对应系统的系统身份标识及其所提供的地址等信息判断是否与原先指纹信息对应,由此在不同系统之间保护数据的完整性。尤其,由于本发明的数据访问过程需要预先对请求访问的系统进行指纹匹配,因而能够在判断指纹不匹配时阻止该非法访问并及时上报该发出异常数据访问请求的系统,具有追溯性,能够检测并阻止数据的非法读取和篡改,保护不同系统间数据的完整性,大大增强数据的安全性。
进一步,本发明中的指纹根据HASH等单项运算而唯一确定,并且运算过程中可以将系统所对应的特征信息设计为包括信号所对应系统的系统身份标识、该系统的用户自定义数据、该系统所写入或要访问的数据部分和/或随机数的形式,进一步增加与其他系统的区分度,增加反向获得加密数据的难度。
尤其,对于使用非易失性存储的应用,本发明在每次断电复位之后可以加载新的真随机数,根据该随机数生成对应于本次上电过程所使用的指纹,这样可以在每次复位后获得不同的指纹。在系统当发生安全事件后,可快速更新随机数,保护存储单元中的数据,使其对于攻击者来说都会变成无意义的乱码。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,并与本发明的实施例一起,用于解释本发明,并不构成对本发明的限制。在附图中:
图1是本发明一种实现方式下的多主机共享存储系统的框图;
图2是本发明的针对多主机共享存储系统的数据完整性保护方法的步骤流程示意图。
具体实施方式
为使本发明实施例的目的和技术方案更加清楚,下面将结合本发明实施例的附图,对本发明实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于所描述的本发明的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
本发明中所述的“和/或”的含义指的是各自单独存在或两者同时存在的情况均包括在内。
本发明中所述的“连接”的含义可以是部件之间的直接连接也可以是部件间通过其它部件的间接连接。
图1为根据本发明的一种多主机共享存储系统,其连接不同系统以及至少一个存储介质,用于在各系统读写该存储介质的过程中进行数据保护,保护各系统自身的数据无法被非法的获取,保护系统自身对应的存储单元不会被其他方错误的写入。这种对各系统数据的数据完整性的保护包括写入过程的数据加密和访问过程的数据解密。对此,该装置包括有:
指纹计算单元,其连接至少两个系统,用于在数据写入过程中,至少根据该数据所需要写入的地址以及该数据所对应的系统生成该数据的指纹;还用于在数据访问过程中,至少根据请求访问的系统及其所提供的地址判断是否与该地址所存储的指纹匹配,在不匹配时上报异常;
存储单元,其连接所述指纹计算单元,用于在数据写入过程中,存储该数据及其所对应的所述指纹;还用于在数据访问过程中,在所述指纹计算单元判断匹配时提供针对该数据的访问,在所述指纹计算单元判断不匹配时不提供数据访问。
其中,所述存储单元,可以分别在独立的存储空间内分别存储所述指纹和数据,也可以同时将该数据和指纹共同存储在同一个指定的存储空间内以方便对指纹的调取。
上述过程中,各系统由唯一对应该系统的系统身份标识进行区别,配合数据所唯一对应的存储地址,生成指纹,已通过该指纹验证访问是否为非法。在数据访问过程中判断指纹不匹配时阻止该非法访问并及时上报该发出异常数据访问请求的系统。由此,本发明的多主机共享存储系统具有追溯性,能够检测并阻止数据的非法读取和篡改,保护不同系统间数据的完整性,大大增强数据的安全性。
在一种具体的方式下,该指纹计算单元可连接在Soc内部总线与存储介质之间,接收Soc内部总线上由各个子系统或虚拟系统发出的数据存储信号或数据读取信号,相应的通过上述的指纹计算单元进行身份的验证而避免数据被非法篡改,保护数据完整性。或者,该指纹计算单元还可连接在分别独立的主机与共同的存储单元之间,对各主机各系统的数据进行分别的加密解密提供隔离和保护。
这种应用场景下,上述系统针对于多主机系统的存储数据完整性保护的迫切需求提供了基于单项算法的数据安全性保护方式。其为每一个数据块增加数据所有者的“指纹”信息,“指纹”录入存储单元后,每次读写数据都需要验证一下“指纹”,当“指纹”匹配时,数据被允许访问,否则视为非法操作,会报告至数据所有者的主机系统,完备的保护数据不会被盗取和篡改。其具体的保护步骤可参考图2所示。
对于数据存储、写入过程:
在接收到任意系统的存储请求信号后,至少根据该数据所需要写入的地址以及该数据的存储请求信号所对应的系统的系统身份标识生成该数据的指纹,存储所述指纹和所述数据。
对于数据读取、访问过程:
在接收到任意系统的数据读取信号时,至少根据请求访问的系统的系统身份标识及其所提供的地址判断是否与该地址所对应的指纹匹配,若匹配则提供数据访问,否则阻止该非法访问并上报异常。比如,可以上报请求访问的系统所对应的系统身份标识,实现对异常访问的追溯。
上述的指纹,参考图2所示,可同时根据数据所对应的写入的地址、该数据所对应的系统的系统身份标识以及该系统所对应的特征信息,例如,以下任一或其组合:该系统的用户自定义数据、该系统所写入或要访问的数据部分,进行单项运算而生成或进行验证。其中,每一个系统可通过系统身份标识唯一对应进行识别;所述系统的用户自定义数据包括用户自己定义的公开数据、用户自己保密的秘密数据、或该系统的系统参数。
在一些应用场景中,系统所对应的特征信息还可选择为:该系统所对应的系统身份标识、该系统所对应的一个或若干随机数n、用户自定义信息等。还可以增加写入时的数据内容,和读取时存储的数据内容,作为系统所对应的至少一部分特征信息输入单项函数,以参与指纹的计算。这些数据均为可选项,可根据需要,选择加入所述加单项运算函数的运算过程中,也可以选择不参与该运算。所述的单项运算在一些场景下,用HASH或者叫散列运算较多,在一些场景下也用作加密运算。
上述的随机数,主要用于写入的地址所对应的存储单元为易失性存储单元的应用场景。该随机数与该易失性存储单元本次上电对应。在掉电后重新上电的过程中,上一次上电状态对应的随机数丢失,而无法在新的上电过程中访问或修改之前上电的数据,由此本发明能够进一步的实现对数据的保护。
指纹的匹配验证过程与其生成过程对应。首先获取数据访问者所提供的各项数据,根据与上述指纹生成过程相同的单项运算步骤进行待验证指纹的生成,然后根据访问者所提供的地址查找对应的指纹,比较原先存储的指纹知否与待验证指纹一致,或存在符合要求的对应关系。如果对应一致或者符合上述的对应关系,则判断所述待验证指纹与该地址所存储的指纹匹配,否则判断为不匹配,不提供数据访问,并且可以报告访问者所提供的数据,尤其是报告访问者所提供的系统身份标识,实现对异常访问的追溯。上述过程中,系统所对应的特征信息作为指纹生成和验证过程中可以选择加入的数据内容,可以进一步的保证不同的数据内容对应的指纹不同。如果指纹的生成过程中增加了上述随机数n、用户自定义信息等数据,则验证过程也需要请求访问的系统提供相应的信息才能正确获得对应的待验证指纹;如果生成过程未增加上述参数,则验证过程也无需上述参数的参与。
这里的系统,可以理解为虚拟化技术中,同一芯片上运行的不同操作系统,也可理解为一个运算装置或运算装置组合中独立运行的子系统。只要各系统之间需要保护其数据独立加密解密、无法由外界读取有效信息,均可使用本发明的技术实现。
参考图1所示的上述装置,其进行指纹的生成和验证的运算过程中,所述的单项运算可通过哈希(HASH)运算函数实现。该单项运算通常可选择为具有如下特性的散列算法:
1.抗碰撞性
2.确定性:对于确定的输入,应该具有确定的输出
3.单向性(不可逆性),从输入可以计算出输出,但是无法从输出推导出输入
4.为了保证安全性,应该保证混淆特性,对应于调整值生成运算函数,如果“部分改变输入值”,前后两个输出的汉明距离为输出长度的1/3以上(也就是有1/3的以上的bit不相同),则为"30%的概率发生变化”。
考虑到算法的安全性,其可以通过如下的公开算法实现:MD4,MD5,SHA-1,SHA-2,SHA-3,SM3,SHAKE,KASUMI-f9,SNOW 3G,CRC32-IEEE 802.3,Michael-MIC,Poly1305,HMAC。或者对于需要更小运算开销,并且对安全性要求不高的应用环境,还可通过CRC8/12/16/32等算法实现上述的指纹生成和验证过程。
考虑到本发明中,数据安全性需要通过存储空间的牺牲来保证,存储空间和数据的安全性之间存在一定的矛盾。为协调这种矛盾,本发明中,所述单项运算所生成的指纹的数据长度,可以在系统设置阶段,根据所述多主机共享存储系统的安全需求,以及所述写入的地址所对应的存储单元的存储空间大小共同确定。在安全需求不高的状态下,通过设置单项运算的参数,使其生成较短的指纹,实现对存储空间的更高效利用;在安全需求较高的场景中,可设置单项运算生成更长的指纹,利用存储空间,在所述存储单元中对应每一个数据所写入的地址范围内均分别存储有该数据及其所对应的指纹,实现更为安全稳妥的数据保护。
具体而言,上述装置中对指纹进行生成加验证的运算过程可通过如下的数据实现:
主机身份信息(ID):对应每一个访问存储的主机信息,其可用于对指纹的生成和验证,还可用于进一步的追溯偷偷访问;
访问地址:本次访问的物理存储器地址,用于对指纹的生成和验证;
主机自定义数据:user data,每个主机自定义的数据,和主机自己保密的数据;
主机随机数:可以每个主机各自一套随机数,也可以不同主机共用一套随机数;
随机数n:具有不可预见性的随机数;
HASH函数:就是把可变输入长度串转换成固定长度(经常更短)输出串(叫做hash值)的一种函数,可用于对指纹的生成;
以两个系统共同向一个非易失性存储器存取数据,利用MD5实现指纹的生成和验证为例考察本发明的数据安全性。这里的非易失性存储器可在一些实现方式下选择为NORFlash存储器。NOR flash每次写操作的最小单位,需要是页为单位,一个页的大小在256bit~4Kbit之间,这里假设每个页大小为1024bit,即每个数据块1024bit。单项HASH函数选用MD5算法,其可根据系统对安全性和存储空间的要求设置MD5算法的输出是128bit,即数据的指纹大小设置为128bit。
这个存储保护系统的存储结构是每个页1024bit+128bit;
非易性存储HASH函数输入采用:1、主机身份信息(32bit);2、访问物理地址(32bit);3、主机自定义信息(128bit);4、写入的数据内容(1024bit)。
接下来对这四个输入不同的作用和变化的影响做一一说明:
首先进行基准数据输入。其中的基准数据包括:
A)主机身份信息(32bit)
0x00010001
B)访问物理地址(32bit)
0x00000000
C)主机自定义信息(128bit)64bit用户自定义数据+64bit用户自维护秘密数据
HOSTID01(0x484f535449443031)+
SECRET01(0x5345435245543031)
D)写入的数据内容(1024bit)
0x000102030405060708090A0B0C0D0E0F
101112131415161718191A1B1C1D1E1F
202122232425262728292A2B2C2D2E2F
303132333435363738393A3B3C3D3E3F
404142434445464748494A4B4C4D4E4F
505152535455565758595A5B5C5D5E5F
606162636465666768696A6B6C6D6E6F
707172737475767778797A7B7C7D7E7F
由此,输入的数据组合在一起是
0x00010001 00000000 484f535449443031 5345435245543031
000102030405060708090A0B0C0D0E0F
101112131415161718191A1B1C1D1E1F
202122232425262728292A2B2C2D2E2F
303132333435363738393A3B3C3D3E3F
404142434445464748494A4B4C4D4E4F
505152535455565758595A5B5C5D5E5F
606162636465666768696A6B6C6D6E6F
707172737475767778797A7B7C7D7E7F
数据指纹(MD5)输出:0xc3b6864013d73572aa3faa95db5fe0c6
当访问地址从0x0000000,变为0x00000080时,将上述基准数据中的访问物理地址(32bit)替换为0x00000080
输入的数据组合在一起更新为
0x00010001 00000080 484f535449443031 5345435245543031
000102030405060708090A0B0C0D0E0F
101112131415161718191A1B1C1D1E1F
202122232425262728292A2B2C2D2E2F
303132333435363738393A3B3C3D3E3F
404142434445464748494A4B4C4D4E4F
505152535455565758595A5B5C5D5E5F
606162636465666768696A6B6C6D6E6F
707172737475767778797A7B7C7D7E7F
更新后,数据指纹(MD5)输出:0xf5c5a2e17de9ad1537c3e37e2063bdf1,与之前的指纹完全不同。
而对于主机ID变化的情况:
主机身份信息(32bit)更新为0x00020001;
主机自定义数据变化为:HOSTID02(0x484f535449443032)+
SECRET02(0x5345435245543032)
如果访问地址仍然是0x0000000,那么输入的数据组合在一起更新为:
0x00020001 00000000 484f535449443032 5345435245543032
000102030405060708090A0B0C0D0E0F
101112131415161718191A1B1C1D1E1F
202122232425262728292A2B2C2D2E2F
303132333435363738393A3B3C3D3E3F
404142434445464748494A4B4C4D4E4F
505152535455565758595A5B5C5D5E5F
606162636465666768696A6B6C6D6E6F
707172737475767778797A7B7C7D7E7F
此时,数据指纹(MD5)输出为:0xfdc683968346b9d410f3687a7ff8d124,同样与之前的指纹完全不同。
而当上述数据近为数据输入变化1位时,以数据变化为
0x00010001 00000000
484f5354494430315345435245543031
010102030405060708090A0B0C0D0E0F
101112131415161718191A1B1C1D1E1F
202122232425262728292A2B2C2D2E2F
303132333435363738393A3B3C3D3E3F
404142434445464748494A4B4C4D4E4F
505152535455565758595A5B5C5D5E5F
606162636465666768696A6B6C6D6E6F
707172737475767778797A7B7C7D7E7F为例,
其对应的数据指纹(MD5)更新为0x840972c604828151f7a8b822dc2940d3,同样与之前的指纹完全不同。
对于上述非易失性存储器,采用MD5算法计算进行指纹的比较,其过程如下:
接收访问者发送的如下信息:
A)主机身份信息(32bit)
0x00010001
B)访问物理地址(32bit)
0x00000000
C)硬件根据主机ID,索引到该主机对应的自定义信息:
主机自定义信息(128bit)64bit用户自定义数据+64bit用户自维护秘密数据HOSTID01(0x484f535449443031)+SECRET01(0x5345435245543031);
然后将这些信息和数据一起,得到:
0x00010001 00000000 484f535449443031 5345435245543031
000102030405060708090A0B0C0D0E0F
101112131415161718191A1B1C1D1E1F
202122232425262728292A2B2C2D2E2F
303132333435363738393A3B3C3D3E3F
404142434445464748494A4B4C4D4E4F
505152535455565758595A5B5C5D5E5F
606162636465666768696A6B6C6D6E6F
707172737475767778797A7B7C7D7E7F
对其通过MD5算法计算待验证指纹为:
0xc3b6864013d73572aa3faa95db5fe0c6
从地址所对应的存储空间取出原先存储的指纹为:0xc3b6864013d73572aa3faa95db5fe0c6
接着比较指纹空间存储的指纹和计算的待验证指纹,两者匹配为一致,允许这次访问。
以下述的非法访问为例,表示本发明对非法访问的处理和追溯过程:
访问者发送如下信息:
A)主机身份信息(32bit)
0x00020001
B)访问物理地址(32bit)
0x00000000(这个地址是主机1的私有空间)
硬件根据主机ID,索引到该主机对应的自定义信息:
C)主机自定义信息(128bit)64bit用户自定义数据+64bit用户自维护秘密数据
HOSTID02(0x484f535449443032)+
SECRET02(0x5345435245543032)
随后这些信息和数据一起,得到
0x00020001 00000000 484f535449443032 5345435245543032
000102030405060708090A0B0C0D0E0F
101112131415161718191A1B1C1D1E1F
202122232425262728292A2B2C2D2E2F
303132333435363738393A3B3C3D3E3F
404142434445464748494A4B4C4D4E4F
505152535455565758595A5B5C5D5E5F
606162636465666768696A6B6C6D6E6F
707172737475767778797A7B7C7D7E7F
计算MD5指纹为:0xfdc683968346b9d410f3687a7ff8d124
从指纹空间取出指纹为:0xc3b6864013d73572aa3faa95db5fe0c6
接着比较指纹空间存储的指纹和计算的指纹,不匹配,拒绝这次访问,记录并报告这次非法访问错误。
由此,本发明将能够:
1、将合法使用者信息压缩成指纹数据存储到与数据块一起存储,作为数据完整性保护的指纹,数据指纹空间增加的存储开销可以根据应用场景调整;
2、生成每个数据块指纹的输入:a)主机身份ID信息(VID)、b)访问地址,还可以选择性加入c)该主机自定义的公开信息和秘密信息、d)需要存取的数据块内容、e)随机数;
3、每次读写都需要先验证指纹是否匹配,指纹匹配后可以允许访问,否则认定为非法,阻止访问,记录非法访问并报告;
4、采用单项,抗碰撞和具有强混淆性的函数生成指纹;
5、指纹存储分为两个阶段,数据和指纹初始化阶段(“指纹”录入)和正常访问阶段,由于存储器没有初始化之前,数据和指纹空间都是随机的,所以这个时候需要初始化数据和指纹空间,初始化之后才能够开始正常访问,并检查指纹。
在另一种实现方式下,上述过程同样适用于易失性存储器。以采用CRC-32算法实现指纹的生成和验证为例。
系统首先计算数据指纹。对于易失性存储器SRAM,我们假设每次写入和读取采用128bit位宽,即每个数据块128bit,由于要考虑存储开销和访问速度,采用CRC-32进行计算。其中,HASH函数输入采用:
主机身份信息(32bit),
访问物理地址(32bit),
数据块内容(128bit),
主机自定义信息(128bit),
随机数(64bit)作为单项函数输入,
选单项函数为CRC-32。
当输入基准数据及其指纹为:
A)主机身份信息(32bit)
0x00010001
B)访问物理地址(32bit)
0x00000000
C)主机自定义信息(128bit)64bit用户自定义数据+64bit用户自维护秘密数据HOSTID01(0x484f535449443031)+SECRET01(0x5345435245543031)
D)写入的数据内容(128bit)
0x000102030405060708090A0B0C0D0E0F
E)随机数(32bit)作为HASH函数输入
0x55555555555555555555555555555555
将输入的数据组合在一起得到
0x00010001 00000000 484f535449443031 5345435245543031
000102030405060708090A0B0C0D0E0F 555555555555555
对其进行单项运算得到数据指纹(CRC-32)输出为:0xADCE6970。
而当上述过程中的主机ID变化为0x00020001
主机自定义数据变化为HOSTID02(0x484f535449443032)+SECRET02(0x5345435245543032)
即使访问地址仍然是0x0000000,那么输入的数据对应变化为:
0x00020001 00000000 484f535449443032 5345435245543032
000102030405060708090A0B0C0D0E0F 555555555555555
则,相应的,数据指纹(CRC-32)输出变化为:0x78BF7399,与之前的指纹完全不同。
类似的,对数据变化进行相同的验证,当数据变化一位,由0x000102030405060708090A0B0C0D0E0F→0x000102030405060708090A0B0C0D0E1F时,输入的数据组合在一起变化为:
0x00010001 00000000 484f535449443031 5345435245543031
000102030405060708090A0B0C0D0E1F 555555555555555
而此时对应的数据指纹(CRC-32)输出为:0x010E2B01,同样与之前的指纹完全不同。
当掉电后重新上电随机数由0x555555555555555→0x555555555555554时,
输入的数据组合在一起是
0x00010001 00000000 484f535449443031 5345435245543031
000102030405060708090A0B0C0D0E0F 555555555555554
此时,对应的数据指纹(CRC-32)输出为:0xDAC959E6,同样与之前的指纹完全不同。
由此,本发明能够通过单项运算保证指纹的唯一对应关系。
基于上述生成的指纹进行验证的过程如下。
当合法访问发生时,访问者发送如下信息:
A)主机身份信息(32bit)
0x00010001
B)访问物理地址(32bit)
0x00000000
硬件根据主机ID,索引到该主机对应的自定义信息:
C)主机自定义信息(128bit)64bit用户自定义数据+64bit用户自维护秘密数据HOSTID01(0x484f535449443031)+SECRET01(0x5345435245543031)
随后这些信息和数据一起,得到
0x00010001 00000000 484f535449443031 5345435245543031
000102030405060708090A0B0C0D0E0F 555555555555555
则能够通过单项运算确认待检测的数据指纹(CRC-32)输出为:0xADCE6970。
此时,根据访问物理地址从存储空间中对应的指纹空间取原先的指纹为:0xADCE6970
比较两个指纹,待验证指纹与空间存储的指纹对应一致,匹配,由此允许这次访问。
而当非法访问发生时,访问者发送如下信息:
A)主机身份信息(32bit)
0x00020001
B)访问物理地址(32bit)
0x00000000(这个地址是主机1的私有空间)
硬件根据主机ID,索引到该主机对应的自定义信息:
C)主机自定义信息(128bit)64bit用户自定义数据+64bit用户自维护秘密数据
HOSTID02(0x484f535449443032)+
SECRET02(0x5345435245543032)
随后这些信息和数据一起得到:
0x00020001 00000000 484f535449443032 5345435245543032
000102030405060708090A0B0C0D0E0F
根据上述数据计算得到待验证指纹(CRC-32)为:0x78BF7399
从对应物理地址的指纹空间取出指纹为:0xADCE6970
比较指纹空间存储的指纹和计算所获得的待验证指纹,两者不匹配,拒绝这次访问,记录并报告这次非法访问错误。
由此,本发明能够实现对每一次数据访问的验证,在非法数据访问发生时实现数据保护,并上报异常,保护数据完整性,实现对数据非法访问风险的追溯。
本发明的优势在于:
每一笔数据都会增加保护数据完整性的指纹,可以起到传统数据校验位检测错误的作用;
可以检测和阻止数据被非法读取,也可以检测和阻止数据被非法篡改;
对于多个主机的系统,和可以虚拟化的主机,以及这两种的混合情况都可以支持。
以上仅为本发明的实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些均属于本发明的保护范围。
Claims (10)
1.一种多主机共享存储系统的数据完整性保护方法,其特征在于,
在数据写入过程中,至少根据该数据所需要写入的地址以及该数据所对应系统的系统身份标识生成该数据的指纹,存储所述指纹和所述数据;
在数据访问过程中,至少根据请求访问的系统的系统身份标识及其所提供的地址判断是否与该地址所对应的指纹匹配,若匹配则提供数据访问,否则阻止该非法访问并上报异常。
2.如权利要求1所述的多主机共享存储系统的数据完整性保护方法,其特征在于,数据写入过程中,同时根据该数据所需要写入的地址、该数据所对应的系统的系统身份标识以及该系统所对应的特征信息进行单项运算,生成所述指纹;
对应的,数据访问过程中,同时根据请求访问的系统的系统身份标识、其所提供的地址以及该系统所对应的特征信息进行单项运算,生成待验证指纹,判断所述待验证指纹是否与该地址所存储的指纹匹配。
3.如权利要求2所述的多主机共享存储系统的数据完整性保护方法,其特征在于,所述系统所对应的特征信息包括以下任一或其组合:
该系统的用户自定义数据,该系统所需要存储或者读取的数据部分;
每一个系统的所述系统身份标识唯一对应该系统;
所述系统的用户自定义数据包括用户自己定义的公开数据、用户自己保密的秘密数据、该系统的系统参数或其组合。
4.如权利要求3所述的多主机共享存储系统的数据完整性保护方法,其特征在于,若所述写入的地址所对应的存储单元为易失性存储单元,则所述系统所对应的特征信息还包括:该易失性存储单元本次上电所对应的至少一个随机数。
5.如权利要求2所述的多主机共享存储系统的数据完整性保护方法,其特征在于,所述单项运算具有单项性、强混淆性、抗碰撞性。
6.如权利要求5所述的多主机共享存储系统的数据完整性保护方法,其特征在于,所述单项运算所生成的指纹的数据长度,根据所述多主机共享存储系统的安全需求,以及所述写入的地址所对应的存储单元的存储空间大小共同确定。
7.如权利要求1所述的多主机共享存储系统的数据完整性保护方法,其特征在于,数据访问过程中,在根据请求访问的系统及其所提供的地址判断与该地址所存储的指纹不匹配时,上报的所述异常至少包括:请求访问的系统所对应的系统身份标识。
8.一种多主机共享存储系统,其特征在于,包括:
指纹计算单元,连接至少两个系统,用于在数据写入过程中,至少根据该数据所需要写入的地址以及该数据所对应系统的系统身份标识生成该数据的指纹;还用于在数据访问过程中,至少根据请求访问的系统的系统身份标识及其所提供的地址判断是否与该地址所存储的指纹匹配,在不匹配时阻止该非法访问并上报异常;
存储单元,其连接所述指纹计算单元,用于在数据写入过程中,存储该数据及其所对应的所述指纹;还用于在数据访问过程中,在所述指纹计算单元判断匹配时提供针对该数据的访问,在所述指纹计算单元判断不匹配时不提供数据访问。
9.如权利要求8所述的多主机共享存储系统,其特征在于,所述存储单元中对应每一个数据所写入的地址范围内均分别存储有该数据及其所对应的指纹。
10.如权利要求8所述的多主机共享存储系统,其特征在于,所述指纹计算单元包括有单项函数运算模块,其根据数据所需要写入的地址、该数据所对应的系统和/或该系统所对应的特征信息进行单项运算,生成对应该数据的指纹;
其中,所述指纹的数据长度,根据所述多主机共享存储系统的安全需求,以及所述写入的地址所对应的存储单元的存储空间大小共同确定。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910747019.5A CN110443070A (zh) | 2019-08-12 | 2019-08-12 | 多主机共享存储系统及数据完整性保护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910747019.5A CN110443070A (zh) | 2019-08-12 | 2019-08-12 | 多主机共享存储系统及数据完整性保护方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110443070A true CN110443070A (zh) | 2019-11-12 |
Family
ID=68435246
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910747019.5A Pending CN110443070A (zh) | 2019-08-12 | 2019-08-12 | 多主机共享存储系统及数据完整性保护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110443070A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111125794A (zh) * | 2019-12-31 | 2020-05-08 | 海光信息技术有限公司 | 访存控制方法、系统及存储装置控制器 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6681283B1 (en) * | 1999-08-12 | 2004-01-20 | Mips Technologies, Inc. | Coherent data apparatus for an on-chip split transaction system bus |
CN104252377A (zh) * | 2013-06-28 | 2014-12-31 | 阿瓦亚公司 | 虚拟化主机id密钥共享 |
CN109409122A (zh) * | 2018-09-13 | 2019-03-01 | 远光软件股份有限公司 | 文件存储方法及其电子设备、存储介质 |
CN109842626A (zh) * | 2019-02-14 | 2019-06-04 | 众安信息技术服务有限公司 | 分配安全区域访问凭证的方法和装置 |
CN109992976A (zh) * | 2019-02-27 | 2019-07-09 | 平安科技(深圳)有限公司 | 访问凭证验证方法、装置、计算机设备及存储介质 |
-
2019
- 2019-08-12 CN CN201910747019.5A patent/CN110443070A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6681283B1 (en) * | 1999-08-12 | 2004-01-20 | Mips Technologies, Inc. | Coherent data apparatus for an on-chip split transaction system bus |
CN104252377A (zh) * | 2013-06-28 | 2014-12-31 | 阿瓦亚公司 | 虚拟化主机id密钥共享 |
CN109409122A (zh) * | 2018-09-13 | 2019-03-01 | 远光软件股份有限公司 | 文件存储方法及其电子设备、存储介质 |
CN109842626A (zh) * | 2019-02-14 | 2019-06-04 | 众安信息技术服务有限公司 | 分配安全区域访问凭证的方法和装置 |
CN109992976A (zh) * | 2019-02-27 | 2019-07-09 | 平安科技(深圳)有限公司 | 访问凭证验证方法、装置、计算机设备及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111125794A (zh) * | 2019-12-31 | 2020-05-08 | 海光信息技术有限公司 | 访存控制方法、系统及存储装置控制器 |
CN111125794B (zh) * | 2019-12-31 | 2023-09-26 | 海光云芯集成电路设计(上海)有限公司 | 访存控制方法、系统及存储装置控制器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020192406A1 (zh) | 数据存储、验证方法及装置 | |
JP3774260B2 (ja) | メモリカードのセキュリティシステム装置及びそのメモリカード | |
CN103065102B (zh) | 基于虚拟磁盘的数据加密移动存储管理方法 | |
CN107908574B (zh) | 固态盘数据存储的安全保护方法 | |
US5875248A (en) | Method of counterfeit detection of electronic data stored on a device | |
US20130013934A1 (en) | Infinite Key Memory Transaction Unit | |
US11755406B2 (en) | Error identification in executed code | |
US20200410097A1 (en) | Confirming a version of firmware loaded to a processor-based device | |
US11960632B2 (en) | Data attestation in memory | |
US11683155B2 (en) | Validating data stored in memory using cryptographic hashes | |
CN113632084B (zh) | 运行时代码执行验证方法、设备及系统 | |
JP2002281019A (ja) | 携帯可能情報記憶媒体およびその認証方法 | |
US11669643B2 (en) | Block chain based validation of memory commands | |
US9471413B2 (en) | Memory device with secure test mode | |
CN111539042B (zh) | 一种基于核心数据文件可信存储的安全操作方法 | |
CN101127013A (zh) | 加密移动存储设备及其数据存取方法 | |
CN110443070A (zh) | 多主机共享存储系统及数据完整性保护方法 | |
CN101883357A (zh) | 一种终端与智能卡之间的相互认证方法、装置及系统 | |
CN108345804B (zh) | 一种可信计算环境中的存储方法和装置 | |
EP3948522A1 (en) | Over-the-air update validation | |
CN108345803B (zh) | 一种可信存储设备的数据存取方法及装置 | |
CN107861892B (zh) | 一种实现数据处理的方法及终端 | |
CN103336919A (zh) | 实现仪表加密验证控制功能的系统和方法 | |
US20160299854A1 (en) | Techniques for preventing physical attacks on contents of memory | |
US20240078348A1 (en) | System for forensic tracing of memory device content erasure and tampering |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191112 |