CN101853190A - 一种适用于嵌入式处理器的数据完整性验证方法 - Google Patents
一种适用于嵌入式处理器的数据完整性验证方法 Download PDFInfo
- Publication number
- CN101853190A CN101853190A CN 201010191552 CN201010191552A CN101853190A CN 101853190 A CN101853190 A CN 101853190A CN 201010191552 CN201010191552 CN 201010191552 CN 201010191552 A CN201010191552 A CN 201010191552A CN 101853190 A CN101853190 A CN 101853190A
- Authority
- CN
- China
- Prior art keywords
- node
- value
- hash
- disappearance
- hashed value
- 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.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种适用于嵌入式处理器的数据完整性验证方法,它包括多粒度散列计算方法,地址转换方法以及散列节点访问控制方法。多粒度散列计算方法用于产生多粒度Merkle树,该树缓存在散列cache中,同时在树的节点缺失时,此算法负责计算内存中数据块的散列值。地址转换方法为每个节点提供了一个唯一对应的地址。散列节点访问控制方法主要负责访问各个散列树的节点,特别是在读缺失和写操作时采取不同的对策。由于采用多粒度散列算法,本发明产生的散列树节点少,层数少,因而减少了存储空间,硬件面积开销和初始化时间,提高了性能。
Description
技术领域
本发明属于数字集成电路领域,具体涉及一种适用于嵌入式处理器的数据完整性验证方法,该方法的核心是多粒度存储器散列计算,是一种具有高性能,少相关访问,低初始化时间的数据完整性校验方法。由于在设计时就考虑了性能与开销等因素,该方法完全适用于嵌入式系统,也适用于计算机系统,能够为其提供可靠的数据完整性验证。
背景技术
数据完整性验证是解决篡改攻击的有效手段。基于这一点,出现了散列函数,消息认证码(MAC:Memory Authentication Code)和AREA(AddedRedundancy Explicit Authentication)等方法。
其中,散列函数(即Hash函数)是现代密码技术与应用的一个重要基础。在本文中,散列函数对于数据机密性保护和完整性校验而言,是基础性的密码类运算。散列函数计算一个任意长度的输入而得到一个定长的输出,该输出称为原始输入的散列值,或简称散列值。散列函数之所以在密码学中扮演重要的角色,在于其具有如下的特性:
单向性:已知散列函数的输出,欲求其输入是困难的,即已知c=Hash(m),求m是困难的。m代表原始输入数据,c为该输出的散列值,Hash()表示散列函数。Hash(m)表示对原始数据m进行散列计算。
快速性:已知m,计算Hash(m)是容易的。Hash函数不属于强计算密集型算法。
抗碰撞性:已知c1=Hash(m1),知道c1的值,而m1(原始输入数据)的值不知。构造一个输入数据m2使c1=Hash(m2)是困难的(指计算不可行)。
雪崩性:若c=Hash(m),那么c的每一比特都与m的每一比特有关,并有高度敏感性即每改变的一比特,都将对c产生明显影响(比如导致c中一半以上的位发生变化)。
接受的输入数据m没有长度限制,对输入任何长度的数据都能够生成固定长度的输出。
有统计计算表明,如Hash(m)的长度为128位时,则任意两个分别为m1和m2的输入数据具有完全相同Hash(m)的概率为10-24即接近于零的重复概率。若Hash(m)为512位乃至1024位,则更是不大可能重复了。
因此,散列函数可以用于数据完整性验证、数字签名、生成随机数等多种目的。目前,常用的散列函数主要是:MD5,SHA-1,SHA-2等。
现存的数据完整性验证方法依赖于散列树结构,如Merkle树,PAT(Parallelizable Authentication Tree)和TEC-Tree(Tamper-Evident CounterTree)。其中,PAT与TEC-tree是基于Merkle树的两种改进型。
Merkle散列树验证思想在文献(Jose L.Munoz,Jordi Forne,OscarEsparza,Manel Rey.Efficient Certificate Revocation System Implementation:Huffman Merkle Hash Tree.Trust,Privacy and Security in Digital Business.Berlin:Springer-Verlag,2005,3592:119-127)中被详细阐述,给定一组数据Y=Y1,Y2.......Yn,现在需要对这组数据进行完整性验证证。为了验证Yi(1≤i≤n),一棵二叉树被构造,该二叉树被称之为Merkle散列树。如图1所示,节点8,9,10,11,12,13,14属于同一层,即叶节点层,也就是最低层。节点4,5,6,7属于同一层,节点2,3属于同一层。节点1,即根节点,单独属于一层。二叉树中的每个节点从根节点开始以层遍历的方式被编号,即同一层被编号完才对下一层进行编号,根节点为节点1,任何中间节点i的子节点为节点2i和节点2i+1。同时,节点i称为节点2i和节点2i+1的父节点。同一层中具有同一个父节点的节点称为彼此的兄弟节点,如节点8是节点9的兄弟节点,节点9也称为节点8的兄弟节点。二叉树中的每个节点都有一个散列函数值与之对应,叶节点的散列函数值是对需要认证的数据进行散列运算得到的,而中间节点的散列函数值由其子节点的散列函数值联合进行散列运算得到。二叉树构造过程如下:
首先计算叶节点的值。叶节点的值由Yi的值得到。如图1所示,c8=Hash(Y1),c9=Hash(Y2)等。
然后计算中间节点及根节点i的值由节点2i和节点2i+1的值得到。如,c4=Hash(c8,c9),(c8,c9)表示把数据c9放在c8的后面,两者连接成一个数据。c5=Hash(c 10,c 11),c 1=Hash(c2,c3)。
由二叉树节点对应的值的构造过程可知,节点1的值与整棵二叉树的每个叶子节点的值都是相关联的。中间节点i的值与以节点i为根的子树的所有叶节点对应的值有关。如节点2的值与节点4,5,8,9,10,11对应的值有关。
这种方法能够提高处理器的安全性。但是这种方法产生的散列树层数、节点较多,缺失代价大,验证时资源开销也较大,因此不能够满足嵌入式系统应用的要求。PAT与TEC-tree是对Merkle树的节点值进行了改进,但是没有对Merkle树本身进行改进,因此两者产生的节点也较多,同样有缺失代价、验证时资源开销大的缺点。
发明内容
本发明的目的在于提供一种适用于嵌入式处理器的数据完整性验证方法,该方法与现有技术相比具有更小的硬件开销,却能达到更优的性能,能够真正应用于对设计要求较高的嵌入式系统中。
本发明提供的一种适用于嵌入式处理器的数据完整性验证方法,包括初始化操作过程中的数据完整性验证及读、写操作过程中的数据完整性验证;其特征在于,
初始化操作过程中的数据完整性验证包括下述步骤:
(A1)计算待建立的多粒度散列树的层数;
(A2)对物理内存中数据块进行散列计算,按照步骤(A1)中计算的层数建立多粒度散列树,并将多粒度散列树存储在散列缓存中;
(A3)从可信存储区读取安全信息,并与多粒度散列树的根节点的值进行比较,如果两者相等,说明内存中的数据未遭篡改,则将验证标志位置为1;两者不等,则置标志位为0,表示内存中的数据已遭篡改;
读操作过程的数据完整性验证过程为:
(B1)计算物理内存中两个相邻数据块的散列值;
(B2)在散列缓存中查找是否有与步骤(B1)所述的两个相邻数据块的相应叶节点的值,如果有,进入步骤(B3),否则,该相应叶节点缺失,称之为当前缺失节点,用步骤(B1)中计算出的散列值代替当前缺失节点值,然后转入步骤(B4);
(B3)读散列缓存中相应叶节点的值,并与步骤(B1)中计算出的散列值进行比较,若两值相等,说明数据块是完整的,则将验证标志位置为1,否则,将验证标志位置为0,表示数据块不是完整的;最后均进入步骤(B9);
(B4)对当前缺失节点按照下面过程进行处理:
(B41)在散列缓存中查找当前缺失节点的兄弟节点,如果兄弟节点的值缺失,称该兄弟节点为当前缺失节点,进入步骤(B42),否则,进入步骤(B5);
(B42)处理步骤如下:
(B421)判断当前缺失节点是否为叶节点,如果是,则由缺失节点对应的物理内存中数据块计算出散列值,用计算出的散列值代替当前缺失节点值,然后进入步骤(B422);如果不是,直接转入步骤(B422);
(B422)计算当前缺失节点的子节点的地址;
(B423)在散列缓存中查找是否有当前缺失节点的子节点的值,若所有子节点都不缺失,则由子节点的值计算出散列值,并用该散列值代替缺失节点的值,然后进入步骤(B5);若有子节点缺失,则称缺失的子节点为当前缺失节点,然后转入步骤(B42);
(B5)判断是否所有的兄弟节点都被查找到了,如果是,则进入步骤(B6),否则跳到步骤(B41);
(B6)读出步骤(B4)中当前缺失节点的兄弟节点的散列值并计算父节点的散列值;
(B7)在散列缓存中查找是否有父节点的值;如果父节点的值缺失,则称该父节点为当前缺失节点,转入步骤(B8);否则,读出父节点的值,并跳到(B9);
(B8)判断步骤(B6)中的当前缺失节点是否为根节点;如果不是,用步骤(B6)中计算出的散列值代替当前缺失节点值,然后转入步骤(B4);如果是,则从可信存储区中读出根节点的值,用之代替父节点的值,然后进入步骤(B9);
(B9)比较读出的父节点值和步骤(B6)中计算出的父节点值;若两值相等,说明数据块是完整的,则将验证标志位置为1;否则,将验证标志位置为0,表示数据块不是完整的;
(B10)读操作验证过程结束;
写操作过程的数据完整性验证过程为:
(C1)计算待改写数据块对应的散列节点的地址,该散列节点称之为当前缺失节点;
(C2)在散列缓存中查找是否有当前缺失节点的值;如果有,则转入步骤(C3);如果没有,则计算待改写的数据块的散列值,并用该散列值代替当前节点值,然后进入步骤(C3);
(C3)查找该当前缺失节点兄弟节点;如果兄弟节点缺失,则称缺失的兄弟节点为当前缺失节点,进入步骤(C4);如果不缺失,则进入步骤(C5);
(C4)处理步骤如下:
(C41)判断当前缺失节点是否为叶节点,如果不是,转入步骤(C42);如果是,则由缺失节点对应的物理内存中数据块计算出散列值,并用计算出的散列值代替当前缺失节点值,然后进入步骤(C5);
(C42)计算当前缺失节点的子节点的地址;
(C43)在散列缓存中查找是否有当前缺失节点的子节点的值,若所有子节点都不缺失,则由子节点的值计算出散列值,并用该散列值代替缺失节点的值,然后进入步骤(C5);若有子节点缺失,则称缺失的子节点为当前缺失节点,然后转入步骤(C4);
(C5)判断是否步骤(C3)所有的兄弟节点都被查找到了,如果是,则进入步骤(C6),否则跳到步骤(C3);
(C6)读步骤(C3)中第一个当前缺失节点及其兄弟节点的散列值并计算它们的父节点的散列值;
(C7)在散列缓存中查找是否有父节点的值;如果父节点的值缺失,则称该节点为当前缺失节点,转入步骤(C8);否则,读出父节点的值,并跳到(C9);
(C8)判断步骤(C7)中的当前缺失节点是否为根节点;如果不是,用步骤(C6)中计算出的散列值代替当前缺失节点的值,然后转入步骤(C3);如果是,则从可信存储区中读出根节点的值,用之代替父节点的值,然后进入步骤(C9);
(C9)比较读出的父节点值和步骤(C6)中计算出的父节点值;若两值相等,说明数据块是完整的,则将验证标志位置为1,然后转入步骤(C10);否则,将验证标志位置为0,表示数据块不是完整的,跳到(C11);
(C10)更新当前节点和它的父节点值;
(C11)写操作验证过程结束。
本发明提供了一种适用于嵌入式处理器的数据完整性验证方法,它包括多粒度散列计算和散列访问控制,其中散列访问控制包括地址的转换,散列节点的访问。多粒度散列计算用于产生多粒度Merkle树,该树缓存在散列cache中,同时在树的节点缺失时,此算法负责计算内存中数据块的散列值。地址转换为每个节点提供了一个唯一对应的地址。散列节点访问主要负责访问各个散列树的节点,特别是在读缺失和写操作时采取不同的对策。读缺失时,首先访问子节点,计算出当前节点,再递归地追踪父节点。在执行写操作时,先验证当前节点的安全性。再更新当前节点和父节点。由于采用多粒度散列算法,本发明产生的散列树节点少,层数少,因而减少了存储空间,硬件面积开销和初始化时间,提高了性能。
本发明针对自然Merkle树的缺点,采用了多粒度算法,即对不同层的节点采用不同的粒度(用来进行散列运算的数据块的数目称为粒度)进行散列计算。对于Merkle树来说,低层节点特别是叶节点,访问得最频繁。所以,我们对这些节点使用较少数目的数据块(即较小的粒度)进行散列计算,我们称之为细粒度散列算法。与此同时,对于拥有大缺失代价的高层节点,我们使用较多数据块来进行散列计算,我们称之为粗粒度散列算法。细粒度散列算法通过使散列开销最小化来提高存储器校验的性能,而粗粒度散列算法通过一次对多个节点进行散列计算来节省存储空间,增大了高层节点的命中率。
附图说明
图1为Merkle散列树的示意图;
图2为本发明提供的数据完整性校验方法的结构模型示意图;
图3为本发明提供的方法的内部结构及数据流向示意图;
图4为本发明的多粒度Merkle树结构示意图,其中,(a)为自然Merkle树,(b)为多粒度Merkle树;
图5为本发明的节点地址转换算法示意图;
图6为本发明的粒度索引示意图;
图7为本发明的初始化操作流程;
图8为本发明的多粒度Merkle节点计算示意图;
图9为本发明的读操作验证流程;
图10为本发明的写操作验证流程;
具体实施方式
下面结合附图和实例对本发明作进一步详细的说明。
图2为本发明提供的数据完整性校验方法在处理器整体架构中位置的示意图,即实现此方法需要在现有的处理器中额外增加一个完整性验证模块。图2中非可信存储区是指处理器芯片外部的存储器,可信存储区是指处理器芯片内部的存储器。
如图3所示,完整性验证模块中引入了一个高速缓冲存储器,用于存储散列树的节点值,下称散列缓存。此外,完整性验证模块还包括两大部分,分别为多粒度散列计算模块和散列访问控制模块。多粒度散列计算模块,是实现散列函数的电路模块,主要功能是对不同粒度的(即不同个数的)数据块进行散列计算,得到一个具有固定位数的散列值。对于写操作(即把第二级高速缓冲存储器中的数据写入非可信存储区),在执行这一操作之前,待写的数据要先流入散列计算模块,得到散列值,然后用此值更新散列cache中相应的节点散列值。对于读操作,非可信区的数据在读入第二级高速缓冲存储器之前,待写的数据先要流入散列计算模块,计算出的散列值与从散列cache中取出的值进行比较,两值相等则非可信区的数据可以读入第二级高速缓冲存储器,不相等则说明数据已遭篡改,不可以读入第二级高速缓冲存储器。
图4表示的是一个2元(2-ary)的多粒度散列树和一个自然Merkle树的对比。第三层是多粒度Merkle树的叶节点。它的粒度固定为2。第二层定义为多粒度Merkle树的基本层。它的粒度可以被配置为2,那么这时候它就是2-ary的多粒度Merkle树。多粒度Merkle树的粒度从这层开始变化。上一层的粒度由下层的粒度乘二得到。所以第1层的散列粒度为4,第零层的粒度为8。采用这样的方式,对于一个总层数为j的Merkle树,第i层的粒度为Ai,Ai=Abasic×2j-i-1(Abasic为基本层的粒度)。多粒度Merkle树的上层节点拥有粗散列粒度,这使得一个上层节点能够验证更多的下层节点。这不仅节省了散列树的存储空间,还减少了加载程序时的初始化延迟。
如图5所示,对于叶层的节点,层数为i,它的地址是将相应的存储器地址右移log2Ai位(Ai是第i层的粒度),最左端log2Ai位空位用0补足。同样地,将节点地址右移log2Ai-1位能够得到它在第i-1层的父节点地址。通过这种移位操作,散列访问控制模块能够快速地计算出从i层到0层(散列树的最高层)的散列节点的地址。每个散列树的节点对应唯一一个地址。
如图6所示,该结构使得散列cache可以通过索引一个节点的层数,快速取得该节点的粒度。此外,为了利用cache结构,被访问节点的地址映射成三个字段:标签,cache地址,字节偏移量。这简化了访问节点的搜索。
本发明方法包括散列树初始化操作过程中的数据完整性验证及读写操作过程中的数据完整性验证。下面分别予以具体说明。
为了使强制缺失最小化,必须在验证数据完整性之前初始化Merkle树。由于数据是从片外存储器上载入的,所以多粒度散列计算模块计算每两个数据块的散列值,这些散列值称为叶节点,以这些叶节点值按照不同的粒度算出上层节点的散列值,重复计算上层节点的散列值,最终算出根节点的散列值,至此,构造散列树的工作就结束了。散列计算的最终结果被称作根节点,需要与安全信息进行比较,该安全信息在初始化操作前已经存入可信区。如果根节点与安全信息一致,说明被访问的数据是安全的,没有被篡改。否则,就意味着非可信存储区遭到篡改攻击,数据的完整性被破坏。初始化完成后,部分散列树节点存储在散列缓存中,供运行期间的读写非可信存储区验证使用。
如图7所示,初始化操作过程中的数据完整性验证包括下述步骤:
(A1)计算多粒度散列树的层数。
设i表示层的序号,j表示总层数,i的取值范围为0至j-1,其中,第0层表示根节点层,Abasic表示预先设定的基本层的粒度(通常取值为2和4),根据粒度关系Ai=Abasic×2j-i-1,以及待散列计算的数据块的块数,计算出多粒度散列树的层数j。如图4,有128块数据,叶节点层和基本层的粒度为2,往上的层的粒度分别为4、8、16,32等等,用128分别除以这些粒度,结果为1时即结束,此时所作的除法的次数就是层数。对于128块数据,128÷2÷2÷4÷8=1,即总层数为4。对于129块数据,129÷2÷2÷4÷8=1余1,则总层数为5,即对于无法整除的数,总层数为所作除法次数加1。
(A2)对物理内存(即图2中的非可信存储区)中数据块进行散列计算,建立散列树,并将散列树存储在散列缓存中。
如图8所示,假设物理内存中的数据为Y1,Y2,......Y16,节点6,7,8,9......,13为叶节点,具体计算步骤如下:
(A21)以2为粒度,计算叶节点的散列值。
如图8所示,叶节点6的值为c6=Hash(Y1,Y2),cn表示节点n的散列值,n为一个大于1的整数,则c6表示节点6的散列值。Hash()表示采用一种散列函数对括号内的数进行散列计算,在本方法中,任取现有的一种散列函数即可。(p,q)表示把数p与数q首尾相连成一个数,若p=10001,q=0011,则(p,q)=100010011,则c6=Hash(100010011)。同样,c7=Hash(Y3,Y4),c8=Hash(Y5,Y6),c9=Hash(Y7,Y8),以此类推。每计算出一个散列值,就存储在散列缓存中,以供计算上一层节点的散列值使用,在步骤(A22),(A23)中,这点同样适用;
(A22)同样以2为粒度(也可以取4或8为粒度,这可以人为地确定,但根据作者的研究发现,取2或4的时候性能会更好),计算基本层节点的散列值;
如图8所示,计算基本层节点2,3,4,5的散列值,c2=Hash(c6,c7),c3=Hash(c8,c9),c4=Hash(c10,c11),c5=Hash(c12,c13);
(A23)从基本层开始,以下一层节点的粒度,乘2得出上一层节点的粒度,并以计算出的粒度,计算上一层节点的散列值,重复这一操作,直至计算出最高层中根节点的散列值;
如图8所示,基本层的上一层为层0,则用基本层粒度乘以2得出层0的粒度为4,因此,节点值c1=Hash(c2,c3,c4,c5)。(c2,c3,c4,c5)表示把c2,c3,c4,c5四个数首尾相连。在这一例子中,到这里散列树就已经建立完成了,节点1就是根节点。对于那些数据块多于16的,在这一步没有到达最后一层,重复乘2算上一层粒度,计算散列值这一步骤,直至到达最后一层;
(A3)读取安全信息,并与根节点进行比较。
从处理器内的可信存储区中读出安全信息,并将之与上一步骤计算出的根节点散列值c1进行比较。若两者相等,说明内存中的数据未遭篡改,则将验证标志位置为1;若两者不等,则置标志位为0,表示内存中的数据已遭篡改。
如图9所示,读操作过程的数据完整性验证过程包括下列步骤:
(B1)计算物理内存中两个相邻数据块的散列值;
散列值由多粒度散列计算模块计算而得,散列值为:c=Hash(Yi,Yi+1)。Yi,Yi+1表示物理内存中两个相邻的数据块。
(B2)在散列缓存中查找是否有与步骤(B1)所述的两个相邻数据块的相应叶节点的值,如果有,进入步骤(B3),否则,该相应叶节点缺失,称之为当前缺失节点,用步骤(B1)中计算出的散列值代替当前缺失节点值,然后转入步骤(B4);
查找过程为:设两个相邻数据块中的任意一个数据块的编号为s,该数据块为Ys,其地址为adds,则相应叶节点的地址Addk由adds右移log2Ni位得到,Ni是层i的粒度,移位后,最左端的log2Ni位空位由0来补足,k为叶节点的编号,根据叶节点的地址Addk,查找散列缓存相应叶节点的值。
用步骤(B1)中计算出的散列值代替当前缺失节点值,是指将上一步骤计算出的c写入散列缓存的地址Addk中。
(B3)读散列缓存中相应叶节点的值,并与步骤(B1)中计算出的散列值进行比较,若两值相等,说明数据块是完整的,则将验证标志位置为1,否则,将验证标志位置为0,表示数据块不是完整的;最后均进入步骤(B9);
(B4)对当前缺失节点按照下面过程进行处理:
(B41)查找当前缺失节点的兄弟节点,如果兄弟节点的值缺失,称该兄弟节点为当前缺失节点,进入步骤(B42),否则,进入步骤(B5);
查找过程为:设当前缺失节点的地址为adds,则当前缺失节点的基本地址Adds由adds右移log2Ni位,然后再左移log2Ni位得到,Ni是当前缺失节点所在层i-1的上一层i的粒度,移位后,最右端的log2Ni位空位由0来补足。Adds,Adds+1,……,Adds+(Ni-1)中包括当前缺失节点地址,去掉该地址,剩余的Ni-2个地址即为缺失节点的兄弟节点地址。根据兄弟节点的地址,查找散列缓存中相应兄弟节点的值。
(B42)处理步骤如下:
(B421)判断当前缺失节点是否为叶节点,如果是,则由缺失节点对应的物理内存中数据块计算出散列值,用计算出的散列值代替当前缺失节点值,转入步骤(B5)。如果不是,转入步骤(B422);
初始化过程中,已经计算出了总层数j,如果当前缺失节点所在的层数i等于j-1,则缺失节点是叶节点。否则,当前缺失节点不是叶节点。
如果当前缺失节点为叶节点,且地址为add,则缺失节点对应的物理内存中数据块的基本地址为Addb,Addb由add左移log22位得到,最右端的log22位空位用0补足,Addb,Addb+1是缺失节点对应的物理内存中的两个数据块的地址。假设读出地址Addb,Addb+1中的数据为Yi,Yi+1,则计算出的散列值为c=Hash(Yi,Yi+1),然后将c写入散列缓存的地址add中。
(B422)计算当前缺失节点的子节点的地址;
设缺失节点的地址为Add,则子节点的基本地址Addb由Add左移log2Ni位(Ni是当前节点层的粒度),移动后,最右端的log2Ni位空位用0补足。Add,Add+1,Add+2,......Add+(Ni-1),就是所有子节点的地址;
(B423)在散列缓存中查找是否有当前缺失节点的子节点的值,若所有子节点都不缺失,则由子节点的值计算出散列值,并用该散列值代替缺失节点的值,然后进入步骤(B5)。若有子节点缺失,则称缺失的子节点为当前缺失节点,然后转入步骤(B42);
按照步骤(B422)计算出的地址去散列缓存中查找相应的子节点散列值。如果所有子节点都不缺失,则按照步骤(B422)计算出的子节点地址读出所有子节点的散列值,假设读出的子节点散列值为,c1,c2,c3……,cNi,则由子节点的值计算出散列值c=Hash(c1,c2,c3……,cNi),然后将计算出的散列值写到散列缓存的地址Add中。
(B5)判断是否所有的兄弟节点都被查找过了,如果是,则进入步骤(B6),否则跳到步骤(B41);
设置一个计数器,每进入步骤(B41)一次,计数器加一,若计数器的结果counter等于步骤(B41)中的Ni减一,则说明所有的兄弟节点都被查找过了。若不相等,则说明还有兄弟节点未查找过。
(B6)读出步骤(B4)中当前缺失节点及其兄弟节点的散列值并计算父节点的散列值;
设读出的当前缺失节点及其兄弟节点的散列值分别为c1,c2,c3,c4……,ci,则计算父节点的散列值为:Hash(c1,c2,c3,c4……,ci)。
(B7)在散列缓存中查找是否有父节点的值。如果父节点的值缺失,则称该父节点为当前缺失节点,转入步骤(B8);否则,读出父节点的值,并跳到(B9);
查找过程:设当前缺失节点的地址为Add,则父节点的地址Addf由Add右移log2Ni位(Ni是父节点所在层的粒度)得到,最左端log2Ni位用0补足。根据父节点的地址,查找散列缓存父节点的值。
(B8)判断步骤(B7)中的当前缺失节点是否为根节点。如果不是,用步骤(B6)中计算出的散列值代替当前缺失节点值,然后转入步骤(B4);如果是,则从可信存储区中读出根节点的值,用之代替父节点的值;
如果当前缺失节点所在的层数i等于0,则缺失节点是根节点。否则,当前缺失节点不是根节点。
(B9)比较读出的父节点值和步骤(B6)中计算出的父节点值。若两值相等,说明数据块是完整的,则将验证标志位置为1。否则,将验证标志位置为0,表示数据块不是完整的;
这里的读出的父节点值,可能是步骤(B7)中读出的父节点值,也可能是步骤(B8)中从可信存储区中读出的根节点值。
(B10)读操作验证过程结束;
如图10所示,写操作过程的数据完整性验证过程包括下列步骤:
(C1)计算待改写数据块对应的散列节点(称之为当前缺失节点)的地址;
设待改写数据块的地址为adds,则当前缺失节点的地址Add由adds右移log2Ni位得到,Ni是层i的粒度,移位后,最左端的log2Ni位空位由0来补足。
(C2)在散列缓存中查找是否有当前缺失节点的值。如果有,则直接转入步骤(C3);如果没有,先计算待改写的数据块的散列值,再用该散列值代替当前节点值,然后进入步骤(C3);
根据步骤(C1)计算出的当前缺失节点的地址Addk,查找散列缓存中当前缺失节点的值。
如果散列缓存中没有当前缺失节点的值,则由步骤(C1)中数据块地址adds右移一位,再向左移一位,最右端一位用0补足,得到数据块的基本地址addb,读取物理内存地址addb,addb+1中的值Yi,Yi+1计算散列值c=Hash(Yi,Yi+1),将c写入散列缓存地址Addk中。
(C3)查找该当前缺失节点兄弟节点。如果兄弟节点缺失,则称缺失的兄弟节点为当前缺失节点,进入步骤(C4);如果不缺失,则进入步骤(C5);
查找过程为:设当前缺失节点的地址为adds,则当前缺失节点的基本地址Adds由adds右移log2Ni位,然后再左移log2Ni位得到,Ni是当前缺失节点所在层i-1的上一层i的粒度,移位后,最右端的log2Ni位空位由0来补足。Adds,Adds+1,……,Adds+(Ni-1)中包括当前缺失节点地址,去掉该地址,剩余的Ni-2个地址即为缺失节点的兄弟节点地址。根据兄弟节点的地址,查找散列缓存相应兄弟节点的值。
(C4)处理步骤如下:
(C41)判断当前缺失节点是否为叶节点,如果不是,转入步骤(C42);如果是,则由缺失节点对应的物理内存中数据块计算出散列值,并用计算出的散列值代替当前缺失节点值,然后进入步骤(C5);
初始化过程中,已经计算出了总层数j,如果当前缺失节点所在的层数i等于j-1,则缺失节点是叶节点。否则,当前缺失节点不是叶节点。
如果当前缺失节点为叶节点,且地址为add,则缺失节点对应的物理内存中数据块的基本地址为Addb,Addb由add左移log22位得到,最右端的log22位空位用0补足,Addb,Addb+1是缺失节点对应的物理内存中的两个数据块的地址。假设读出地址Addb,Addb+1中的数据为Yi,Yi+1,则计算出的散列值为c=Hash(Yi,Yi+1),然后将c写入散列缓存的地址add中。
(C42)计算当前缺失节点的子节点的地址;
设缺失节点的地址为Add,则子节点的基本地址Addb由Add左移log2Ni位(Ni是当前节点层的粒度),移动后,最的低位log2Ni用0补足。Add,Add+1,Add+2,......Add+(Ni-1),就是所有子节点的地址;
(C43)在散列缓存中查找是否有当前缺失节点的子节点的值,若所有子节点都不缺失,则由子节点的值计算出散列值,并用该散列值代替缺失节点的值。若有子节点缺失,则称缺失的子节点为当前缺失节点,然后转入步骤(C4);
按照步骤(C42)计算出的地址去散列缓存中查找相应的子节点散列值。如果所有子节点都不缺失,则按照步骤(C42)计算出的子节点地址读出所有子节点的散列值,假设读出的子节点散列值为,c1,c2,c3……,cNi,则由子节点的值计算出散列值c=Hash(c1,c2,c3……,cNi),然后将计算出的散列值写到步骤(B422)中当前缺失节点的地址Add中。
(C5)判断是否步骤(C3)所有的兄弟节点都被查找到了,如果是,则进入步骤(C6),否则跳到步骤(C3);
设置一个计数器,每进入步骤(C3)一次,计数器加一,若计数器的结果counter,等于步骤(C3)中的Ni减一,则说明所有的兄弟节点都被查找过了。若不相等,则说明还有兄弟节点未被查找过。
(C6)读步骤(C3)中第一个当前缺失节点的及其兄弟节点的散列值并计算它们的父节点的散列值;
设读出的当前缺失节点及其兄弟节点的值分别为c1,c2,c3,c4……,ci,则计算父节点的散列值为:Hash(c1,c2,c3,c4……,ci)。
(C7)在散列缓存中查找是否有父节点的值。如果父节点的值缺失,则称该节点为当前缺失节点,转入步骤(C8);否则,读出父节点的值,并跳到(C9);
查找过程:设当前缺失节点的地址为Add,则父节点的地址Addf由Add右移log2Ni位(Ni是父节点所在层的粒度)得到,最左端log2Ni位用0补足。根据父节点的地址,查找散列缓存父节点的值。
(C8)判断步骤(C7)中的当前缺失节点是否为根节点。如果不是,用步骤(C6)中计算出的散列值代替当前缺失节点的值,然后转入步骤(C3);如果是,则从可信存储区中读出根节点的值,用之代替父节点的值;
如果当前缺失节点所在的层数i等于0,则缺失节点是根节点。否则,当前缺失节点不是根节点。
(C9)比较读出的父节点值和步骤(C6)中计算出的父节点值。若两值相等,说明数据块是完整的,则将验证标志位置为1,然后转入步骤(C10)。否则,将验证标志位置为0,表示数据块不是完整的,跳到(C11);
这里的读出的父节点值,可能是步骤(C7)中读出的父节点值,也可能是步骤(C8)中从可信存储区中读出的根节点值。
(C10)更新当前节点和它的父节点值;
更新当前节点,即是由即将写入非可信存储区中的数据计算出散列值,然后将该散列值写入步骤(C1)中计算出的地址中。更新父节点,即是由更新的当前节点及其兄弟节点计算出他们的父节点的散列值,然后将新父节点散列值写入散列缓存中。
(C11)写操作验证过程结束;
使用这种验证算法,能够有效的发现被篡改的数据并发现被破坏的程序。此外,用来检查根节点的关键安全信息存储在片内存储器中的。节点的散列值只有初始化或是散列节点缺失时才被缓存和计算。所以,多粒度Merkle树不需要额外的存储空间来保存散列值。这不仅减少了硬件开销,还改善了嵌入式处理器的安全性。
此外,本方法使处理器能够把散列计算的时间隐藏在内存的访问过程中。这就有效地减少了多粒度Merkle树安全计算的性能开销。
对本发明采用Mibench进行性能测试,由实验结果可以看到,本发明所提出的多粒度Merkle树相比自然Merkle树具有性能上的优越性,更适用于嵌入式系统。
本发明不应该局限于附图所公开的内容。所以凡是不脱离本发明所公开的精神下完成的等效或修改,都落入本发明保护的范围。
Claims (3)
1.一种适用于嵌入式处理器的数据完整性验证方法,包括初始化操作过程中的数据完整性验证及读、写操作过程中的数据完整性验证;其特征在于,
初始化操作过程中的数据完整性验证包括下述步骤:
(A1)计算待建立的多粒度散列树的层数;
(A2)对物理内存中数据块进行散列计算,按照步骤(A1)中计算的层数建立多粒度散列树,并将多粒度散列树存储在散列缓存中;
(A3)从可信存储区读取安全信息,并与多粒度散列树的根节点的值进行比较,如果两者相等,说明内存中的数据未遭篡改,则将验证标志位置为1;两者不等,则置标志位为0,表示内存中的数据已遭篡改;
读操作过程的数据完整性验证过程为:
(B1)计算物理内存中两个相邻数据块的散列值;
(B2)在散列缓存中查找是否有与步骤(B1)所述的两个相邻数据块的相应叶节点的值,如果有,进入步骤(B3),否则,该相应叶节点缺失,称之为当前缺失节点,用步骤(B1)中计算出的散列值代替当前缺失节点值,然后转入步骤(B4);
(B3)读散列缓存中相应叶节点的值,并与步骤(B1)中计算出的散列值进行比较,若两值相等,说明数据块是完整的,则将验证标志位置为1,否则,将验证标志位置为0,表示数据块不是完整的;最后均进入步骤(B9);
(B4)对当前缺失节点按照下面过程进行处理:
(B41)在散列缓存中查找当前缺失节点的兄弟节点,如果兄弟节点的值缺失,称该兄弟节点为当前缺失节点,进入步骤(B42),否则,进入步骤(B5);
(B42)处理步骤如下:
(B421)判断当前缺失节点是否为叶节点,如果是,则由缺失节点对应的物理内存中数据块计算出散列值,用计算出的散列值代替当前缺失节点值,然后进入步骤(B422);如果不是,直接转入步骤(B422);
(B422)计算当前缺失节点的子节点的地址;
(B423)在散列缓存中查找是否有当前缺失节点的子节点的值,若所有子节点都不缺失,则由子节点的值计算出散列值,并用该散列值代替缺失节点的值,然后进入步骤(B5);若有子节点缺失,则称缺失的子节点为当前缺失节点,然后转入步骤(B42);
(B5)判断是否所有的兄弟节点都被查找到了,如果是,则进入步骤(B6),否则跳到步骤(B41);
(B6)读出步骤(B4)中当前缺失节点的兄弟节点的散列值并计算父节点的散列值;
(B7)在散列缓存中查找是否有父节点的值;如果父节点的值缺失,则称该父节点为当前缺失节点,转入步骤(B8);否则,读出父节点的值,并跳到(B9);
(B8)判断步骤(B6)中的当前缺失节点是否为根节点;如果不是,用步骤(B6)中计算出的散列值代替当前缺失节点值,然后转入步骤(B4);如果是,则从可信存储区中读出根节点的值,用之代替父节点的值,然后进入步骤(B9);
(B9)比较读出的父节点值和步骤(B6)中计算出的父节点值;若两值相等,说明数据块是完整的,则将验证标志位置为1;否则,将验证标志位置为0,表示数据块不是完整的;
(B10)读操作验证过程结束;
写操作过程的数据完整性验证过程为:
(C1)计算待改写数据块对应的散列节点的地址,该散列节点称之为当前缺失节点;
(C2)在散列缓存中查找是否有当前缺失节点的值;如果有,则转入步骤(C3);如果没有,则计算待改写的数据块的散列值,并用该散列值代替当前节点值,然后进入步骤(C3);
(C3)查找该当前缺失节点兄弟节点;如果兄弟节点缺失,则称缺失的兄弟节点为当前缺失节点,进入步骤(C4);如果不缺失,则进入步骤(C5);
(C4)处理步骤如下:
(C41)判断当前缺失节点是否为叶节点,如果不是,转入步骤(C42);如果是,则由缺失节点对应的物理内存中数据块计算出散列值,并用计算出的散列值代替当前缺失节点值,然后进入步骤(C5);
(C42)计算当前缺失节点的子节点的地址;
(C43)在散列缓存中查找是否有当前缺失节点的子节点的值,若所有子节点都不缺失,则由子节点的值计算出散列值,并用该散列值代替缺失节点的值,然后进入步骤(C5);若有子节点缺失,则称缺失的子节点为当前缺失节点,然后转入步骤(C4);
(C5)判断是否步骤(C3)所有的兄弟节点都被查找到了,如果是,则进入步骤(C6),否则跳到步骤(C3);
(C6)读步骤(C3)中第一个当前缺失节点及其兄弟节点的散列值并计算它们的父节点的散列值;
(C7)在散列缓存中查找是否有父节点的值;如果父节点的值缺失,则称该节点为当前缺失节点,转入步骤(C8);否则,读出父节点的值,并跳到(C9);
(C8)判断步骤(C7)中的当前缺失节点是否为根节点;如果不是,用步骤(C6)中计算出的散列值代替当前缺失节点的值,然后转入步骤(C3);如果是,则从可信存储区中读出根节点的值,用之代替父节点的值,然后进入步骤(C9);
(C9)比较读出的父节点值和步骤(C6)中计算出的父节点值;若两值相等,说明数据块是完整的,则将验证标志位置为1,然后转入步骤(C10);否则,将验证标志位置为0,表示数据块不是完整的,跳到(C11);
(C10)更新当前节点和它的父节点值;
(C11)写操作验证过程结束。
2.根据权利要求1所述的方法,其特征在于,步骤(A2)中,建立多粒度散列树的过程为:首先以2为粒度,计算叶节点的散列值,然后同样以2为粒度,计算基本层节点的散列值,从基本层开始,以下一层节点的粒度,乘2得出上一层节点的粒度,并以计算出的粒度,计算上一层节点的散列值,重复这一操作,直至计算出根节点的值。
3.根据权利要求1所述的方法,其特征在于,步骤(B2)中,查找过程为:设二个相邻数据块中的一个数据块的编号为s,该数据块为Ys,其地址为adds,则相应叶节点的地址Addk由adds右移log2Ni位得到,Ni是层i的粒度,移位后,最左端的空位由0来补足,k为叶节点的编号,根据叶节点的地址Addk,查找散列缓存相应叶节点的值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101915527A CN101853190B (zh) | 2010-06-04 | 2010-06-04 | 一种适用于嵌入式处理器的数据完整性验证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101915527A CN101853190B (zh) | 2010-06-04 | 2010-06-04 | 一种适用于嵌入式处理器的数据完整性验证方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101853190A true CN101853190A (zh) | 2010-10-06 |
CN101853190B CN101853190B (zh) | 2012-07-04 |
Family
ID=42804696
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010101915527A Expired - Fee Related CN101853190B (zh) | 2010-06-04 | 2010-06-04 | 一种适用于嵌入式处理器的数据完整性验证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101853190B (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102137089A (zh) * | 2010-11-01 | 2011-07-27 | 华为技术有限公司 | 验证流媒体内容完整性的方法、设备以及系统 |
CN103853661A (zh) * | 2014-02-21 | 2014-06-11 | 北京神舟航天软件技术有限公司 | 基于加权Merkle树实现的空间抗辐照故障检测方法 |
CN104067287A (zh) * | 2012-08-31 | 2014-09-24 | 英特尔公司 | 用于促进计算系统处的存储数据的无加密完整性保护的机制 |
CN104424268A (zh) * | 2013-08-29 | 2015-03-18 | 国际商业机器公司 | 重复数据删除方法和设备 |
CN104699739A (zh) * | 2013-12-06 | 2015-06-10 | 国际商业机器公司 | 针对文件不同版本生成内容可寻址存储签名的方法和系统 |
CN105138478A (zh) * | 2015-07-28 | 2015-12-09 | 哈尔滨工程大学 | 一种非平衡哈希树的存储器完整性保护方法 |
CN107220560A (zh) * | 2017-06-22 | 2017-09-29 | 北京航空航天大学 | 一种基于数据缓存扩充的嵌入式系统数据完整性保护方法 |
CN104424268B (zh) * | 2013-08-29 | 2018-02-09 | 国际商业机器公司 | 重复数据删除方法和设备 |
CN108134676A (zh) * | 2017-12-19 | 2018-06-08 | 上海闻泰电子科技有限公司 | Android系统安全启动方法及可读存储介质 |
CN108183832A (zh) * | 2017-11-28 | 2018-06-19 | 北京空间技术研制试验中心 | 一种网络数据的获取方法 |
CN108520050A (zh) * | 2018-03-30 | 2018-09-11 | 北京邮电大学 | 一种基于二维定位的Merkle树缓存装置及其对Merkle树的操作方法 |
CN108540586A (zh) * | 2018-03-06 | 2018-09-14 | 南京邮电大学 | 一种基于Merkle树的校园网IPv6地址划分方法 |
CN110023944A (zh) * | 2017-01-03 | 2019-07-16 | 华为技术有限公司 | 一种数据处理方法及相关设备 |
US10372678B2 (en) | 2013-12-06 | 2019-08-06 | International Business Machines Corporation | Files having unallocated portions within content addressable storage |
US10831902B2 (en) | 2015-09-14 | 2020-11-10 | tZERO Group, Inc. | Data verification methods and systems using a hash tree, such as a time-centric Merkle hash tree |
US10937083B2 (en) | 2017-07-03 | 2021-03-02 | Medici Ventures, Inc. | Decentralized trading system for fair ordering and matching of trades received at multiple network nodes and matched by multiple network nodes within decentralized trading system |
CN112527196A (zh) * | 2020-12-07 | 2021-03-19 | 成都佰维存储科技有限公司 | Cache读写方法、装置、计算机可读存储介质及电子设备 |
CN112639789A (zh) * | 2018-12-18 | 2021-04-09 | Arm有限公司 | 用于存储器完好性检查的完好性树 |
CN115529268A (zh) * | 2021-06-24 | 2022-12-27 | 瞻博网络公司 | 处理配置网络设备的指令 |
CN117893139A (zh) * | 2024-03-15 | 2024-04-16 | 山东未来网络研究院(紫金山实验室工业互联网创新应用基地) | 一种基于产业链的物料配比方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101299190A (zh) * | 2008-06-30 | 2008-11-05 | 深圳市同洲电子股份有限公司 | 一种只读文件系统下的软件升级方法、系统及嵌入式设备 |
US20100106976A1 (en) * | 2008-10-23 | 2010-04-29 | Samsung Electronics Co., Ltd. | Representation and verification of data for safe computing environments and systems |
-
2010
- 2010-06-04 CN CN2010101915527A patent/CN101853190B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101299190A (zh) * | 2008-06-30 | 2008-11-05 | 深圳市同洲电子股份有限公司 | 一种只读文件系统下的软件升级方法、系统及嵌入式设备 |
US20100106976A1 (en) * | 2008-10-23 | 2010-04-29 | Samsung Electronics Co., Ltd. | Representation and verification of data for safe computing environments and systems |
Non-Patent Citations (1)
Title |
---|
《华中科技大学学报(自然科学版)》 20100430 邱罡等 基于Merkle树的远程证明机制 第38卷, 第4期 2 * |
Cited By (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102137089A (zh) * | 2010-11-01 | 2011-07-27 | 华为技术有限公司 | 验证流媒体内容完整性的方法、设备以及系统 |
WO2011150845A1 (zh) * | 2010-11-01 | 2011-12-08 | 华为技术有限公司 | 验证流媒体内容完整性的方法、设备以及系统 |
CN102137089B (zh) * | 2010-11-01 | 2013-09-11 | 华为技术有限公司 | 验证流媒体内容完整性的方法、设备以及系统 |
CN104067287A (zh) * | 2012-08-31 | 2014-09-24 | 英特尔公司 | 用于促进计算系统处的存储数据的无加密完整性保护的机制 |
CN104424268B (zh) * | 2013-08-29 | 2018-02-09 | 国际商业机器公司 | 重复数据删除方法和设备 |
CN104424268A (zh) * | 2013-08-29 | 2015-03-18 | 国际商业机器公司 | 重复数据删除方法和设备 |
US11360938B2 (en) | 2013-12-06 | 2022-06-14 | International Business Machines Corporation | Files having unallocated portions within content addressable storage |
US11409703B2 (en) | 2013-12-06 | 2022-08-09 | International Business Machines Corporation | File versions within content addressable storage |
CN104699739A (zh) * | 2013-12-06 | 2015-06-10 | 国际商业机器公司 | 针对文件不同版本生成内容可寻址存储签名的方法和系统 |
CN104699739B (zh) * | 2013-12-06 | 2018-02-16 | 国际商业机器公司 | 针对文件不同版本生成内容可寻址存储签名的方法和系统 |
US10372679B2 (en) | 2013-12-06 | 2019-08-06 | International Business Machines Corporation | File versions within content addressable storage |
US10372678B2 (en) | 2013-12-06 | 2019-08-06 | International Business Machines Corporation | Files having unallocated portions within content addressable storage |
CN103853661B (zh) * | 2014-02-21 | 2016-08-31 | 北京神舟航天软件技术有限公司 | 基于加权Merkle树实现的空间抗辐照故障检测方法 |
CN103853661A (zh) * | 2014-02-21 | 2014-06-11 | 北京神舟航天软件技术有限公司 | 基于加权Merkle树实现的空间抗辐照故障检测方法 |
CN105138478B (zh) * | 2015-07-28 | 2018-10-26 | 哈尔滨工程大学 | 一种非平衡哈希树的存储器完整性保护方法 |
CN105138478A (zh) * | 2015-07-28 | 2015-12-09 | 哈尔滨工程大学 | 一种非平衡哈希树的存储器完整性保护方法 |
US10831902B2 (en) | 2015-09-14 | 2020-11-10 | tZERO Group, Inc. | Data verification methods and systems using a hash tree, such as a time-centric Merkle hash tree |
CN110023944A (zh) * | 2017-01-03 | 2019-07-16 | 华为技术有限公司 | 一种数据处理方法及相关设备 |
CN107220560A (zh) * | 2017-06-22 | 2017-09-29 | 北京航空航天大学 | 一种基于数据缓存扩充的嵌入式系统数据完整性保护方法 |
US11948182B2 (en) | 2017-07-03 | 2024-04-02 | Tzero Ip, Llc | Decentralized trading system for fair ordering and matching of trades received at multiple network nodes and matched by multiple network nodes within decentralized trading system |
US10937083B2 (en) | 2017-07-03 | 2021-03-02 | Medici Ventures, Inc. | Decentralized trading system for fair ordering and matching of trades received at multiple network nodes and matched by multiple network nodes within decentralized trading system |
CN108183832A (zh) * | 2017-11-28 | 2018-06-19 | 北京空间技术研制试验中心 | 一种网络数据的获取方法 |
CN108134676A (zh) * | 2017-12-19 | 2018-06-08 | 上海闻泰电子科技有限公司 | Android系统安全启动方法及可读存储介质 |
CN108540586A (zh) * | 2018-03-06 | 2018-09-14 | 南京邮电大学 | 一种基于Merkle树的校园网IPv6地址划分方法 |
CN108520050A (zh) * | 2018-03-30 | 2018-09-11 | 北京邮电大学 | 一种基于二维定位的Merkle树缓存装置及其对Merkle树的操作方法 |
CN108520050B (zh) * | 2018-03-30 | 2019-01-25 | 北京邮电大学 | 一种基于二维定位的Merkle树缓存装置及其对Merkle树的操作方法 |
CN112639789A (zh) * | 2018-12-18 | 2021-04-09 | Arm有限公司 | 用于存储器完好性检查的完好性树 |
CN112527196A (zh) * | 2020-12-07 | 2021-03-19 | 成都佰维存储科技有限公司 | Cache读写方法、装置、计算机可读存储介质及电子设备 |
US11792069B2 (en) | 2021-06-24 | 2023-10-17 | Juniper Networks, Inc. | Processing instructions to configure a network device |
CN115529268B (zh) * | 2021-06-24 | 2024-01-19 | 瞻博网络公司 | 处理配置网络设备的指令 |
CN115529268A (zh) * | 2021-06-24 | 2022-12-27 | 瞻博网络公司 | 处理配置网络设备的指令 |
CN117893139A (zh) * | 2024-03-15 | 2024-04-16 | 山东未来网络研究院(紫金山实验室工业互联网创新应用基地) | 一种基于产业链的物料配比方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101853190B (zh) | 2012-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101853190B (zh) | 一种适用于嵌入式处理器的数据完整性验证方法 | |
Mishra et al. | Oblix: An efficient oblivious search index | |
Ge et al. | Towards achieving keyword search over dynamic encrypted cloud data with symmetric-key based verification | |
Shi et al. | Oblivious RAM with O ((log N) 3) worst-case cost | |
Goodrich et al. | Privacy-preserving group data access via stateless oblivious RAM simulation | |
Demertzis et al. | Fast searchable encryption with tunable locality | |
Kamara et al. | Parallel and dynamic searchable symmetric encryption | |
Li et al. | A searchable symmetric encryption scheme using blockchain | |
Fletcher et al. | Bucket ORAM: single online roundtrip, constant bandwidth oblivious RAM | |
US9240237B2 (en) | Semiconductor device and method of writing/reading entry address into/from semiconductor device | |
Chen et al. | Bestie: Very practical searchable encryption with forward and backward security | |
CN111552849B (zh) | 可搜索加密方法、系统、存储介质、车载网、智能电网 | |
Chan et al. | Cache-oblivious and data-oblivious sorting and applications | |
Chen et al. | A high-throughput FPGA accelerator for short-read mapping of the whole human genome | |
Asharov et al. | Locality-preserving oblivious RAM | |
Costa et al. | The pyramid scheme: Oblivious RAM for trusted processors | |
CN113994324B (zh) | 具有高效世界状态数据结构的区块链系统 | |
CN109460406A (zh) | 一种数据处理方法及装置 | |
CN115659417A (zh) | 审计日志存储方法、验证方法、装置和计算机设备 | |
Asharov et al. | Oblivious Computation with Data Locality. | |
CN103761298A (zh) | 一种基于分布式架构的实体匹配方法 | |
CN116192395A (zh) | 用于分散式数据存储的可信系统 | |
EP2677450B1 (en) | A system and method for compressed level-ordered edge sequence encoding | |
Beame et al. | On the value of multiple read/write streams for approximating frequency moments | |
Wright et al. | A Symmetric Cipher Response-Based Cryptography Engine Accelerated Using GPGPU |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120704 Termination date: 20180604 |
|
CF01 | Termination of patent right due to non-payment of annual fee |