CN1276364C - 数据管理设备,数据管理方法以及计算机程序 - Google Patents

数据管理设备,数据管理方法以及计算机程序 Download PDF

Info

Publication number
CN1276364C
CN1276364C CNB2004100684799A CN200410068479A CN1276364C CN 1276364 C CN1276364 C CN 1276364C CN B2004100684799 A CNB2004100684799 A CN B2004100684799A CN 200410068479 A CN200410068479 A CN 200410068479A CN 1276364 C CN1276364 C CN 1276364C
Authority
CN
China
Prior art keywords
data
hash
level
management
layer
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.)
Expired - Fee Related
Application number
CNB2004100684799A
Other languages
English (en)
Other versions
CN1577298A (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.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Publication of CN1577298A publication Critical patent/CN1577298A/zh
Application granted granted Critical
Publication of CN1276364C publication Critical patent/CN1276364C/zh
Expired - Fee Related 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Abstract

这里公开了一种数据管理设备,其中包括:一个管理数据存储单元,用于存储管理对象数据,一个管理数据验证值存储单元,用于存储被置于n叉数据管理树顶端的顶端数值,作为管理数据验证值,其中n为大于或等于2的整数,以及一个数据验证处理单元,用于根据所述管理数据验证值对所述管理对象数据进行验证其有效性的处理,其中,所述n叉数据管理树包括位于所述n叉数据管理树最低层的级层上的所述管理对象数据以及位于所述n叉数据管理树较高层的任意特定级层上的数据,作为通过使用基于位于直接从属于所述特定级层的另一级层上的其它数据的不可逆函数来进行计算的结果,以及所述顶端数值是通过使用基于位于所述n叉数据管理数最高层的级层上的数据的所述不可逆函数来进行计算的结果。

Description

数据管理设备,数据管理方法以及计算机程序
发明背景
一般的,本发明涉及一种数据管理设备,在该数据管理设备中采用的数据管理方法,以及实现该数据管理方法的计算机程序。更具体的,本发明涉及一种具有防伪造验证功能的数据管理设备,该功能能够有效的验证被假定没有被伪造的信息数据的有效性,并适于进行更新数据的操作,例如数据的增加和删除,还涉及在该数据管理设备中采用的数据管理方法,以及实现该数据管理方法的计算机程序。完全被假定没有被伪造的信息的实例就是内容,许可信息以及记帐信息。
近年来,通过提供各种包括互联网在内的通信网络以及卫星来有线及无线传送各种数据,例如音乐数据,视频数据以及游戏程序的服务日渐盛行。另外,通过可发行记录介质例如DVD,CD,以及存储卡来发行内容也变得日渐盛行。这些发行内容被存储在由用户所有的设备或游戏设备中。由用户所有的设备的例子为TV,PC(个人计算机)以及复制设备。
当在用户设备,例如PC中使用上面提到的各种内容时,除了内容以外,各种数据也都被存储在用户设备所采用的存储单元中。该存储的数据包括许可,每个许可都被用作使用内容和记帐信息的权利。这些数据段的结构可以防止用户非法的改变该数据。
作为一个用于避免数据伪造并验证数据有效性的结构,使用了数字签名。通过将一个公开密钥加密系统的密钥应用于编码处理,可以在对用于防伪验证的数据或数据抽象值进行的编码过程中生成数字签名。通过这种方式生成的数字签名被加入到主数据中,用作防伪验证的数据。
在确定数据是否被伪造的数据验证过程中,通过采用对应于用于上述过程中的密钥的公开密钥生成数字签名来进行数字签名的解密过程。接着,将作为解密数字签名过程的结果而获得的数据同原始数据,也就是用于防伪验证或数据抽象值进行比较,以确定得到的数据是否同原始数据相匹配。如果结果数据与原始数据相匹配则证明主数据并没有被伪造。
可是,如果存储在用户设备中的主数据被更新了,则上述的数字签名就不能被用作用于保证主数据已经被合法更新的数据。
例如,用户购买了一个许可,该许可允许某一音乐内容只能被复制三次。根据用于实现基于所述许可的内容利用过程的内容利用程序,该许可被存储在用户设备所采用的存储单元中。内容利用程序的一个例子就是例如内容播放器,并且存储单元的一个例子就是硬盘。
每次用户复制音乐内容时,内容利用程序都会更新许可,方式如下:
允许的剩余复制次数=2,
允许的剩余复制次数=1,以及
允许的剩余复制次数=0,
如果根据许可正确使用该内容,则该内容就不会被复制超过三次。
可是,如果用户拷贝该允许音乐内容仅被复制三次的许可,并将许可的拷贝存储在存储单元中作为备份数据的话,则根据原始许可在复制内容三次之后,仍可以通过使用作为备份数据保存的许可来再次使用该内容。
即使被加到了许可上的数字签名已经被验证过了,但是与原始数字签名相同的数字签名也可以被加到该拷贝的许可上。这样,就会出现这样一种情况:内容利用程序确定拷贝许可是有效的,并允许复制该内容。
文献,例如日本专利公开NO.2003-85321就公开了一种结构,其中管理对象数据的散列数值(hash value)被用作防伪验证数据,用于数据的非伪造验证。在下面的描述中,日本专利公开NO.2003-85321指的就是专利文献1。但是,在专利文献1的结构中,需要为每个管理对象数据段生成一个散列数值并保存该生成的散列数值作为管理对象验证值。这样,该结构就会引发这样的问题:由于管理对象数据段的数量增加了,因此管理数据验证值的数量也会增加。
发明概要
针对上述问题,本发明的一个目的就是提供一种数据管理设备,该设备能够可靠地验证数据没有被伪造,所述数据是与许可、记帐信息或其他各种信息一样有可能被更新、提供附加数据或删除的数据,提供了一种在该数据管理设备中采用的数据管理方法,以及提供了一种用于实现该数据管理方法的计算机程序。
根据本发明的第一个方面,提供了一种数据管理设备,包括:
管理数据存储单元,用于存储管理对象数据;
管理数据验证值存储单元,用于存储被置于n叉数据管理树顶端的顶端数值,作为管理数据验证值,其中n为大于或等于2的整数;
数据验证处理单元,用于根据该管理数据验证值对该管理对象数据进行验证其有效性的处理,其中:
该n叉数据管理树包括位于该n叉数据管理树最低层的级层上的该管理对象数据以及位于该n叉数据管理树较高层的任意特定级层上的数据,作为通过使用基于位于直接从属于该特定级层的另一级层上的其它数据的不可逆函数来进行计算的结果;以及
该顶端数值是通过使用基于位于该n叉数据管理数最高层的级层上的数据的该不可逆函数来进行计算的结果。
另外,在由本发明提供的数据管理设备的一个实施例中,不可逆函数为散列函数。
另外,在由本发明提供的数据管理设备的一个实施例中,该管理数据验证值存储单元是一个嵌入在具有防止篡改结构的安全芯片中的安全存储器。
另外,在由本发明提供的数据管理设备的一个实施例中,该数据验证处理单元:
被嵌入在具有防止篡改结构的安全芯片中;以及
具有一个结构,用于通过从该管理数据存储单元输入该数据验证过程中所需的数据来进行数据验证处理。
另外,在由本发明提供的数据管理设备的一个实施例中:
该管理数据验证值存储单元是一个嵌入在具有防止篡改结构的安全芯片中的安全存储器;以及
该数据验证处理单元具有一个结构,用于通过从该管理数据存储单元输入该数据验证过程中所需的数据来进行数据验证处理。
另外,在由本发明提供的数据管理设备的一个实施例中:
各个构成该n叉数据管理树的节点都是一个包括n个数值的数据列表,其中每个数值都是作为通过使用基于位于直接从属于该数据列表的一个级层上的n段数据的该不可逆函数来进行计算的结果而被获得的;以及
该数据验证处理单元进行数据验证过程,每个过程都确定在贯穿该n叉数据管理树从高层的级层开始至底层的级层结束,或者从低层的级层开始至高层的级层结束的方向上是否验证数据与核对数据一个接一个的顺序匹配,其中:
该验证数据是通过使用基于提供在较低级层上数据的该不可逆函数来进行计算的结果;
该核对数值就是已经被包括在较高级层上的数据列表上的数据,作为该不可逆函数的计算结果;以及
该较低级层和该较高级层就是该n叉数据管理树中任意的两个级层,其中该较低级层被用作直接从属于该较高级层。
另外,在由本发明提供的数据管理设备的一个实施例中,该数据验证处理单元:
根据被用作每个级层上数据列表的标识的列表指数j并且根据被用作每个数据列表上不可逆函数计算结果的标识的不可逆函数指数k,在整个该n叉数据管理树中确定一个验证路径,该路径从高层的级层开始向着低层的级层方向或者从低层的级层开始向着高层的级层方向;以及
对该确定验证路径上的数据进行该数据验证处理。
另外,在由本发明提供的数据管理设备的一个实施例中,该数据验证处理单元确定只有当在整个该n叉数据管理树中,从高层的级层开始向着低层的级层方向或者从低层的级层开始向着高层的级层方向上进行的所有该数据验证过程中的该验证数据与该核对数据相匹配时,该数据验证处理单元才确定没有数据被伪造。
另外,在由本发明提供的数据管理设备的一个实施例中,该数据验证处理单元在整个该n叉数据管理树中,从高层的级层开始向着低层的级层方向或者从低层的级层开始向着高层的级层方向上进行的该数据验证处理,作为随着在该n叉数据管理树中进行增加、删除、或修改数据操作的数据更新处理的一部分,并且只有当在所有该数据验证过程中的该验证数据与该核对数据相匹配时才更新数据。
另外,在由本发明提供的数据管理设备的一个实施例中,作为随着向该n叉数据管理树增加级层或从该n叉数据管理树中删除级层的操作同时进行的用于修改级层结构的一部分,该数据验证处理单元根据先更新数据进行数据验证处理,作为验证随着该修改级层结构的处理同时进行的数据更新处理所需数据有效性的处理,并且只有当该数据验证处理确定没有数据被伪造时,才允许进行该修改级层结构的处理。
另外,在由本发明提供的数据管理设备的一个实施例中:
该管理数据验证值存储单元被用于存储该顶端数值作为管理数据验证值,其中该顶端数值被放置在该n叉数据管理树的顶部作为通过使用该不可逆函数进行计算的结果,还被用于存储该n叉数据管理树的的中间级层上的中间数据作为另一个管理数据验证值;以及
为了验证包含在该n叉数据管理树中作为从属于该中间数据的数据的数据的有效性,该数据验证处理单元通过使用该中间数据作为管理数据验证值来进行数据验证处理。
另外,在由本发明提供的数据管理设备的一个实施例中:
该数据验证处理单元被用于存储多个计算结果,其中这些计算结果都由该不可逆函数输出,因为数据管理树与该计算结果一样多,并将其置于该各个数据管理树的顶部,每一个都作为管理数据验证值;以及
为了验证包含在该数据管理树中一个特定数据管理树中的数据的有效性,该验证处理单元进行设置一个该计算结果的数据验证处理,该结果是由该不可逆函数输出的,并被放置在该特定数据管理树的顶部,作为管理数据验证值。
另外,在由本发明提供的数据管理设备的一个实施例中:
该管理数据存储单元被用于存储加密的管理对象数据;以及
一个适用于加密或解密该管理对象数据的密钥被存储在具有防止伪造结构的安全芯片的存储单元中。
另外,在由本发明提供的数据管理设备的一个实施例中:
该管理数据存储单元被用于存储加密后的管理对象数据;
用于对适于加密或解密该管理对象数据的第一密钥进行加密的第二密钥被存储在具有防止伪造结构的安全芯片的存储单元中;以及
该加密后的第一密钥通过使用该第二密钥而在该安全芯片中被解密,并且作为解密结果而得到的该第一密钥被输出给该安全芯片外部的部件。
另外,在由本发明提供的数据管理设备的一个实施例中:
构成该n叉数据管理树的各个节点都包括仅仅一个通过使用该基于直接从属于该节点的级层上的该n个数据段的不可逆函数作为计算结果而被生成的数值;以及
该数据验证处理单元进行处理,以确定是否验证数据与核对数据相匹配,其中:
该验证数据是通过使用该基于较低级层上的n段数据的不可逆函数进行计算的结果;
该核对数据是唯一的一个已经被置于较高级层上的数值,作为该不可逆函数的计算结果;以及
该较低层的级层以及该较高层的级层是该n叉数据管理树中的任意两个级层,并且该较低层的级层直接从属于该较高层的级层。
另外,根据本发明的第二个方面,提供了一种数据管理方法,该数据管理方法中包括数据验证步骤,该步骤通过使用被置于n叉数据管理树顶部的顶端数值作为管理数据验证值来进行数据验证处理,其中n为大于或等于2的整数,其中:
该n叉数据管理树包括位于该n叉数据管理树最低层的级层上的该管理对象数据以及位于该n叉数据管理树较高层的任意特定级层上的数据,作为通过使用基于位于直接从属于该特定级层的另一级层上的其它数据的不可逆函数来进行计算的结果;
该顶端数值是通过使用基于位于该n叉数据管理数最高层的级层上的数据的该不可逆函数来进行计算的结果;以及
该数据验证步骤包括进行确定过程的步骤,每个过程都确定在贯穿该n叉数据管理树从高层的级层开始至底层的级层结束,或者从低层的级层开始至高层的级层结束的方向上是否验证数据与核对数据一个接一个的顺序匹配,其中:
该验证数据是通过使用基于提供在较低级层上数据的该不可逆函数进行计算的结果;
该核对数值就是已经被包括在较高级层上的数据列表上的数据,作为该不可逆函数的计算结果;以及
该较低级层和该较高级层就是该n叉数据管理树中任意的两个级层,其中该较低级层被用作直接从属于该较高级层。
另外,在由本发明提供的数据管理方法的一个实施例中,该不可逆函数为散列函数。
另外,在由本发明提供的数据管理方法的一个实施例中,包括:
构成该n叉数据管理树的节点就是包括n个数值的数据列表,其中每个数值都是作为通过使用该基于直接从属于该数据列表的级层上的该n个数据段的不可逆函数作为计算结果而得到的;以及
在该数据验证步骤,进行确定过程以确定在贯穿该n叉数据管理树从高层的级层开始至底层的级层结束,或者从低层的级层开始至高层的级层结束的方向上是否验证数据与核对数据一个过程接着一个过程的顺序匹配,其中:
该验证数据是通过使用基于提供在较低级层上数据的该不可逆函数进行计算的结果;
该核对数值就是已经被包括在较高级层上的数据列表上的数据,作为该不可逆函数的计算结果;以及
该较低级层和该较高级层就是该n叉数据管理树中任意的两个级层,其中该较低级层被用作直接从属于该较高级层。
另外,在由本发明提供的数据管理方法的一个实施例中,该数据管理方法还包括步骤:根据被用作每个级层上数据列表的标识的列表指数j并且根据被用作每个数据列表上不可逆函数计算结果的标识的不可逆函数指数k,在整个该n叉数据管理树中确定一个验证路径,该路径从高层的级层开始向着低层的级层方向或者从低层的级层开始向着高层的级层方向,在该数据验证步骤,对该确定验证路径上的数据进行该数据验证处理。
另外,在由本发明提供的数据管理方法的一个实施例中,该数据验证处理在整个该n叉数据管理树中,从高层的级层开始向着低层的级层方向或者从低层的级层开始向着高层的级层方向上进行的该数据验证处理,作为随着在该n叉数据管理树中进行增加、删除、或修改数据操作的数据更新处理的一部分,并且只有当在所有该数据验证过程中的该验证数据与该核对数据相匹配时才更新数据。
另外,在由本发明提供的数据管理方法的一个实施例中,作为随着向该n叉数据管理树增加级层或从该n叉数据管理树中删除级层的操作同时进行的用于修改级层结构的一部分,进行基于先更新数据的数据验证处理,以验证随着该修改级层结构的处理同时进行的数据更新处理所需数据的有效性,并且只有当该数据验证处理确定没有数据被伪造时,才允许进行该修改级层结构的处理。
另外,在由本发明提供的数据管理方法的一个实施例中,在该数据验证步骤中,为了验证包含在该n叉数据管理树中作为从属于该中间数据的数据的有效性,通过使用该n叉数据管理树中间层的级层上的中间数据作为管理数据验证值来进行数据验证处理。
另外,在由本发明提供的数据管理方法的一个实施例中,在该数据验证步骤,进行一个过程以确定是否验证数据与核对数据相匹配,其中:
该验证数据是通过使用基于提供在较低级层上的n段数据的该不可逆函数进行计算的结果;
该核对数值就是已经被置于较高级层上的唯一的一个数值,作为该不可逆函数的计算结果;以及
该较低级层和该较高级层就是该n叉数据管理树中任意的两个级层,其中该较低级层被用作直接从属于该较高级层。
另外,根据本发明的第三个方面,提供了一种在计算机系统中被执行,用以进行数据验证处理的计算机程序,该计算机程序包括数据验证步骤,该步骤通过使用被置于n叉数据管理树顶部的顶端数值作为管理数据验证值来进行数据验证处理,其中n为大于或等于2的整数,其中:
该n叉数据管理树包括位于该n叉数据管理树最低层的级层上的该管理对象数据以及位于该n叉数据管理树较高层的任意特定级层上的数据,作为通过使用基于位于直接从属于该特定级层的另一级层上的其它数据的不可逆函数来进行计算的结果;
该顶端数值是通过使用基于位于该n叉数据管理数最高层的级层上的数据的该不可逆函数来进行计算的结果;以及
该数据验证步骤包括进行确定过程的步骤,每个过程都确定在贯穿该n叉数据管理树从高层的级层开始至底层的级层结束,或者从低层的级层开始至高层的级层结束的方向上是否验证数据与核对数据一个接一个的顺序匹配,其中:
该验证数据是通过使用基于提供在较低级层上数据的该不可逆函数进行计算的结果;
该核对数值就是已经被包括在较高级层上的数据列表上的数据,作为该不可逆函数的计算结果;以及
该较低级层和该较高级层就是该n叉数据管理树中任意的两个级层,其中该较低级层被用作直接从属于该较高级层。
需要注意的是,本发明提供的计算机程序可以被提供给一个计算机系统,该系统能够通过从记录介质例如用于存储计算机可执行格式的程序的CD、FD或MO将程序按照到计算机系统中,或者通过通信介质例如网络从下载站点将程序下载到计算机系统中。
下面参照附图对本发明实施例的详细说明将会使得本发明的其它方面,还有本发明显示出来的特性及其带来的优点变得更加清晰。需要注意的是,该说明书中的系统就表示包括有多个逻辑上彼此相连设备的整个系统。可是,该设备并不是必须在物理上被封装在一个盒子中。
根据本发明的结构,散列数值一般被存储在安全芯片的存储单元中。为了被用作管理数据验证值,通过使用基于数据管理树最高级层上提供的并被置于该树顶端的散列列表的不可逆函数来计算散列数值,通过使用该管理数据验证值,可以验证数据管理树最低级层上所有管理对象数据段的有效性。这样就可以验证许多管理数据段的有效性,而不需要随着管理对象数据段数量的增加而增加被存储在安全芯片存储单元中的管理数据验证值的信息量。
另外,根据本发明的另一个结构,在数据更新过程,例如增加、删除以及修改管理对象数据的过程中,也通过使用在数据管理树上执行的不可逆函数计算出的数值进行数据验证处理。这样,就可以避免更新管理对象数据的非法操作并实现数据的正确管理。由不可逆函数计算出的数值一般为散列数值。
除此以外,根据本发明的仍旧另一个结构,安全芯片中的存储单元不光存储被置于树的顶部的顶端散列数值,作为使用基于数据管理树最高级层上的散列列表的不可逆函数的计算结果,还存储中间散列数值,该数值作为使用基于数据管理树中间级层上的散列列表的不可逆函数的计算结果而被获得。该中间散列数值被用作对从属于中间散列数值的数值进行验证过程中的管理数据验证值。这样,对从属于中间散列数值的数据进行的验证处理可以非常高效的进行。
进一步,根据本发明的仍旧进一步的结构,可以正当的进行向数据管理树中增加级层或从数据管理树中删除级层的处理,并且数据管理树中的任何数据或中间散列数值都可以被用作管理数据验证值。可以对具有各种形式的数据管理树进行数据管理。
并且,根据本发明的仍旧进一步的结构,可以使用存储在安全芯片中的密钥在加密过程中对管理对象数据进行加密,并且对包括加密管理对象数据的数据管理树进行数据管理。这样,就可以有效的防止管理对象数据被泄漏。
附图说明
图1为由本发明提供的数据管理设备的结构框图;
图2为安全芯片的结构框图;
图3为数据管理树的典型结构框图;
图4为说明根据数据管理树进行的数据验证过程的流程图;
图5为说明设置验证路径过程的说明性框图;
图6为说明根据数据管理树进行的数据验证过程的流程图;
图7为说明根据数据管理树进行的更新数据和验证数据有效性过程的流程图;
图8为设置验证路径所需信息的说明性框图;
图9为仅包括一层无效数值列表的数据管理树的结构框图;
图10为说明增加数据管理树中级层数的过程的流程图;
图11为说明增加数据管理树中级层数的过程的说明性框图;
图12为说明减少数据管理树中级层数的过程的流程图;
图13为说明减少数据管理树中级层数的过程的说明性框图;
图14为根据中间散列数值来说明过程的说明性框图;
图15为根据多个数据管理树的数据管理结构的说明性框图;
图16为设置散列列表作为管理数据验证值的典型过程的说明性框图;
图17为设置数据管理树中多个元素作为管理数据验证值的典型过程的说明性框图;
图18为包括级层中散列数值(hash value)的数据管理树的结构的说明性框图;
图19为包括一个级层中散列数值的数据管理树的结构的说明性框图;
图20为说明生成各个管理对象数据段的散列数值以及产生包括该已生成的散列数值的数据管理树的过程的说明性框图。
对优选实施例的详细说明
下面的描述说明了本发明提供的数据管理设备,在该数据管理设备中采用的数据管理方法,以及实现该数据管理方法的计算机程序的详细内容。需要注意的是,这些详细内容按照下面的段落顺序进行说明:
1:数据管理设备的结构
2:安全芯片的结构
3:数据管理结构
4:验证管理对象数据的有效性
5:数据的增加,修改以及删除
6:确定验证路径
7:具有一个散列数值列表级层的数据管理树
8:增加和减少级层
9:加密和解密管理对象数据
10:使用中间级层散列列表进行验证
11:根据多个数据管理树的管理结构
12:使用根散列列表作为数据管理验证数据的结构
13:为数据管理树的任何部分设置和管理管理数据验证值的结构
14:包括散列数值的数据管理树
[1:数据管理设备的结构]
图1为由本发明一个实施例实现的数据管理设备的典型结构框图。如图所示,该数据管理设备101包括一个CPU(中央处理单元)102,其具有程序执行功能和操作处理功能。具体的说,该CPU102控制对安全芯片105的访问并将各种数据保存在主存储单元104中,以及从主存储单元104中读出数据。
存储器103包括ROM(只读存储器)和RAM(随机存储器)。该ROM是用于存储各种程序,例如将要由CPU102执行的各种应用程序的存储器。程序被载入到RAM中以便于执行。RAM还被用作执行程序的工作区。
主存储单元104存储数据管理设备101中所管理的各种管理对象数据以及数据管理树的散列列表。管理对象数据的例子就是内容,许可以及记帐信息。数据管理树的散列列表将在下面详细描述。
安全芯片105a和105b都能够进行验证数据管理设备101中管理的管理对象数据的有效性的处理。安全芯片105a和105b都具有防止篡改结构,以防止存储的数据被外部访问者的非法访问改变。具体的说,存储的数据只能有存储在安全芯片105a和105b中的预定处理程序进行修改。作为一种选择,安全芯片105a和105b都可以进行处理,例如只允许由授权外部设备提供的数据作为更新数据的过程。在该图所示的结构中,安全芯片105a位于数据管理设备101的内部而安全芯片105b位于数据管理设备101的外部。可是,数据管理设备仅仅需要它们中的任何一个。也就是说,安全芯片可以在数据管理单元101的内部或者外部。如果安全芯片位于数据管理单元101的外部,则该芯片就必须能够与数据管理设备101进行通信。
[2:安全芯片的结构]
下面,参照图2对安全芯片105的结构进行说明。CPU201同安全芯片105外部的单元交换数据,访问装在安全芯片105中的安全存储器203,并处理从数据管理设备101中的其它单元接收到的数据,以及将要输出给数据管理设备101中的其它单元的数据。
存储器202包括ROM(只读存储器)和RAM(随机存储器)。该ROM是用于存储各种程序,例如将要由CPU 201执行的各种应用程序的存储器。程序被载入到RAM中以便于执行。RAM还被用作执行程序的工作区。
安全存储器203是由CPU201执行的程序能够进行访问的存储区。该安全存储器203也是根据位于存储在安全存储器203中的数据外部的访问者进行的访问,避免伪造的数据存储区。接口204是一个模块,具有防止对出现在安全芯片105内部数据总线上的数据以及存储在存储器202和安全存储器203中的数据进行访问的功能。
[3:数据管理结构]
下面的描述说明了基于由各种管理对象数据以及数据管理树的不可逆函数计算得出的数值的数据管理结构。这种数据管理结构的一个例子就是包括散列数值的数据管理。该管理对象数据包括内容,许可以及记帐数据。构成数据管理树的散列列表以及管理对象数据被存储在如图1中所示的数据管理设备101中的主存储单元104中。需要指出的是,在下面对一个实施例的说明中,以使用不可逆函数计算应用散列数值的典型情况作为例子。但是,本发明也包括使用除了用于计算散列数值以外的其它不可逆函数的结构。
图3为数据管理树中管理对象数据的段结构框图,其中该数据管理树的级层数为m,管理数据段数为n。在如图3中所示数据结构的最低级的级层上,也就是级层L(=1)上,设置管理对象数据段,例如内容,许可以及记帐数据。管理对象数据D(x)为上面所述的管理对象数据,其中x表示管理对象数据的指数。该指数x在下文中就是指数据指数。如果管理对象数据的段数为n,则数据指数的数值范围就是0至(n-1)。
级层L(=0)上的管理对象数据D(x)就是各种管理对象数据,例如内容,许可以及记帐信息的实质内容。例如,由参考数字304表示的管理对象数据D(0)就是被指定数据指数0的管理对象数据的实质内容。
在数据管理树中,各个除了L=0的较高级层上,也就是级层L(>0)上的数据HL(L,j)就是散列列表。数据管理树中的HL(L,j)的符号L表示提供了散列列表HL(L,j)的级层的层号。层号L的数值范围是0至(m-1)。另一方面,HL(L,j)的符号j表示指定给在级层L上提供的散列列表HL(L,j)的指数。例如,图3中用参考数字303表示的散列列表HL(1,0)就是一个位于级层L(=1)并且具有指定指数j为0的散列列表。
指定给一个级层上特殊散列列表的指数就是一个标识号,用于将该特殊散列列表与相同级层上的其它散列列表区别开来。例如,如图3中所示,指数0就被指定给每个级层最左端的散列列表,而指数{2(m-1)-1}被指定给层号为m的级层最左端的散列列表。也就是说,被指定给层号为m的级层上的散列列表的指数的数值范围是0至{2(m-1)-1}。需要注意的是,如上所述,指定给一个散列列表的指数用参考数字j来表示。换句话说,被指定给层号为m的级层上的散列列表的指数j就是一个其数值范围为0至{2(m-1)-1}的标识号。
散列列表HL(L,j)中存储了根据提供在散列列表HL(H,j)的直接下一级层上的数据生成的散列数值。如图3中所示的数据管理树是一个二叉数据管理树。二叉数据管理树中每个节点都有两个直接从属节点或者直接从属叶子。需要注意的是,叶子就是最低级层L(=0)上的节点。在数据管理树中,除了叶子以外的元素都是指节点。
由于图3中所示的数据管理树是一个二叉数据管理树,因此每个散列列表HL(H,j)都包括两个散列数值,它们分别对应于直接从属于该散列列表HL(H,j)的两个节点或者两个叶子。
包含在散列列表HL(H,j)中的散列数值HL(H,j).H(k)是根据直接从属于该散列列表HL(H,j)的数据生成的。符号k表示被指定给包含在散列列表HL(H,j)中的散列数值HL(H,j).H(k)的指数。在如上所述的二叉数据管理树中,每个散列列表HL(H,j)都包括两个分别被指定给指数0和1的散列数值H(k)。
在图3中所示的数据管理树中,级层L(=1)的左端上的散列列表HL(1,0)作为散列列表303包括两个散列数值HL(1,0).H(0)和HL(1,0).H(1),它们分别对应于直接从属于该散列列表HL(1,0)的叶子上的两个段数据D(0)和D(1)。具体的说,包含在散列列表HL(1,0)中的散列数值HL(1,0).H(0)对应于直接从属数据D(0),并且包含在散列列表HL(1,0)中的散列数值HL(1,0).H(1)对应于直接从属数据D(1)。
仍需要注意的是,用于计算散列数值的算法是一个预先设置的算法。一个这样的例子就是SHA-1算法。
另外,还可以使用其中的每个节点都包括3个或更多的直接从属节点或直接从属叶子的数据管理树。这种树的一个例子就是三叉数据管理树,其中每个节点都包括3个直接从属节点或直接从属叶子。
被指定给散列数值的指数k也可以指不可逆函数指数,用作不可逆函数的计算值标识。散列数值指数k的数值范围是由叉数确定的。例如,在二叉数据管理树的情况下,散列数值指数k的数值为0或1。另一方面,在三叉数据管理树的情况下,散列数值指数k的数值为0,1或2。
仍需要注意的是,并不是每个节点都具有直接从属节点或叶子。这样,如果包含在散列列表中的散列数值不具有相当于散列数值的直接从属数据,则用于计算散列列表中散列数值的过程的配置可以被任意确定。如果包含在散列列表中的散列数值不具有相当于散列数值的直接从属数据,则可以假设:对应于长度为0的数据空的散列数值(Hash null)被用作散列数值。
包括在级层树中的散列列表被分成如下两种类型:
类型1:级层L(=1)上的每个散列列表都包括对应于直接从属数据的散列数值。
类型2:级层L(>1)上的每个散列列表都包括对应于直接从属散列列表的散列数值。
如图3所示,数据管理树是一个具有级层结构的树,其中最低级层上的每个叶子都是管理对象数据,并且其它较高级层上的每个散列列表都包括根据直接从属数据生成的散列数值。
如上所述,需要注意的是,包括在每个散列列表中的散列数值的数量是任意的。图3中所示的树结构为二叉管理树,其中每个散列列表都包括两个散列数值。
顶端散列数值301是根据包含在顶端散列列表302,也就是图3中所示的散列列表HL(m-1,0)中的多个散列数值HL(m-1,0).H(0)以及HL(m-1,0).H(1)生成的。
构成了数据管理树的散列列表以及管理对象数据被存储在如图1所示的数据管理设备101中采用的主存储单元104中。另外,在如图2中所示的安全芯片105中采用的安全存储器203被用于保持至少如图3中所示的数据管理树中的顶端散列数值301,作为管理数据标识值。
由于安全芯片105中采用的安全存储器203的存储容量比较小,因此可以存储在安全存储器203中的数据量受到限制。但是,在本发明的结构中,安全存储器203的存储容量足够大,足以安全的保持至少上述顶端散列数值301。这样,就可以验证每个叶子上数据的有效性。
[4:验证管理对象数据的有效性]
下面的描述将会说明由数据管理设备101进行的数据验证处理过程,其中在该数据管理设备101中存储了包含如图3中所示的管理对象数据和散列列表的数据管理树。更具体的,下面的描述将会说明在一段管理对象数据上进行的数据验证处理过程,其中该管理对象数据被表示成图3的数据管理树中的叶子。
更具体的,下面的描述将会说明一个数据验证过程,以验证D(dataID)是正确的并且处于最近状态,其中符号dataID表示数据指数x而符号D(dataID)表示由数据指数x(=dataID)标识的管理对象数据。
有两种方法可以被用作验证技术。一种方法就是数据验证过程从最高层(L=m-1)的级层L开始并向着从属的方向进行。另一种方法就是数据验证过程从最低级(L=0)的级层L开始并向着较高级层的方向进行。图4说明了从最高层的级层L开始并向着从属的方向进行数据验证过程的流程图。另一方面,图6说明了从最低级的级层L开始并向着较高级层的方向进行数据验证过程的流程图。
该数据验证过程可以在图1中数据管理设备101中所采用的CPU 102的控制下进行,或者在图2中安全芯片105中所采用的CPU 201的控制下进行。如果该数据验证过程是在数据管理设备101中所采用的CPU 102的控制下进行,则CPU102就会获取事先存储在安全芯片105采用的安全存储器203中的管理数据验证值,并接着根据获得的管理数据验证值改变数据验证过程。
需要注意的是,该管理数据验证值包括图3所示的数据管理树中的顶端散列数值。另一方面,如果该数据验证过程是在安全芯片105中所采用的CPU 201的控制下进行,则CPU 201就会适当的从数据管理设备101采用的主存储单元104中获取所需信息。
(1):从上到下的验证过程
首先,参照图4中所示的流程图对数据验证过程进行说明,该过程从数据管理树最高层的级层开始并向着从属的方向进行。该流程图从步骤S101开始,在该步骤中,对表示要被验证的数据的数据管理树中级层的层数的变量L进行初始化。也就是说,设置级层标识L的初始值。
需要注意的是,要被验证的最后的数据就是最低层的级层上的正常数据。也就是说,最后的数据就是真实数据例如内容,许可或者记账数据。根据该从数据管理树最高层的级层开始并向着从属的方向进行的方法,顺序的改变被验证的数据,从顶端开始,依次进行至较低一层的级层上的数据段,直至到达最低层级层上的最后数据,至此数据验证过程结束。
在步骤S101,级层标识L被设置为初始值(m-1)。也就是说,该级层标识L被设置为表示最高层的级层(m-1)的初始值,其中包括直接从属于图3中数据管理树顶端散列数值301的散列列表HL(m-1)。
接着,在步骤S102,初始化核对值[P_Hash]。该核对值[P_Hash]被定义为与被验证数据进行核对的数值。在从最高层的级层开始并向着从属的方向进行数据验证的方法中,在步骤S102,核对值[P_Hash]被初始化为图3中所示的数据管理树的顶端散列数值301。
接着,在步骤S103,从主存储单元104中获取验证对象数据[V_Data]并且将验证对象数据[V_Data]的散列数值指数k作为定义验证路径的信息,其中该路径从数据管理树最高层的级层开始,并向着从属的方向进行。该验证对象数据[V_Data]被用作基于核对值[P_Hash]的验证对象。第一验证对象数据[V_Data]为图3中所示的数据管理树的散列列表302。将散列列表302的散列数值同被设置为顶端散列数值301的第一核对值[P_Hash]进行比较。
一般来说,验证对象数据[V_Data]为在级层L(L>0)上提供的散列列表(L,j),其中j表示指定给在级层L上提供的散列列表(L,j)的散列列表指数。在级层L为最低层的情况下,也就是,L=0时,另一方面,验证对象数据[V就是管理对象数据D(dataID)。
散列数值指数k为定义验证路径的数值,其中该路径从数据管理树最高层的级层开始,并向着从属的方向进行。例如,图5的数据管理树中最后验证对象数据327的验证路径就是从顶端散列数值321开始,经过散列列表322,323,324,325以及326,至最后验证对象数据327结束。也就是说,散列数值指数k各连接顶端散列数值321和最后验证对象数据327的验证路径定义为一个路径,该路径中包括被用作进行数据验证处理的基础的散列数值。
用作验证路径定义信息的散列数值指数被用作定义从顶端散列数值321开始至最后验证对象数据327结束的路径。图5为说明典型散列数值指数k的框图,其中该指数k具有左侧的值0以及右侧的值。由于图5的数据管理树中的数据327为最后被验证的数据,因此用一串散列数值指数k:0,0,1,1和1来定义从顶端散列数值321开始至数据327结束的路径。在上述的二叉数据管理树中,散列数值指数k为不同类型的数值,即0和1中的一个。两种不同数值中的一个选择了两个路径中的一个。在三叉数据管理树的情况下,散列数值指数k为三种不同类型的数值,即0,1和2中的一个,可以在每个处理过程中选择它们中的任何一个,以确定一个验证路径。需要注意的是,确定一个验证路径的过程将在后面进行详细的描述。
如图5所示,根据树结构和最后被验证的数据来确定路径。如上所述,散列数值指数k被用作验证路径定义信息。可以由数据管理设备101中的CPU 102或者安全芯片105中的CPU 201来定义验证路径。
在步骤S104,通过计算发现从主存储单元104中获得的验证对象数据[V_Data]的散列数值[V_Hash]。需要注意的是,如上所述,事先确定用于发现散列数值的算法。作为它的一个例子,可以采用SHA-1算法。
如上所述,主存储单元104中获得的第一验证对象数据[V_Data]就是散列列表302,其中包括两个如图3所示的散列数值HL(m-1,0)H(0)和HL(m-1,0).H(1)。在步骤S104,根据两个散列数值HL(m-1,0).H(0)和HL(m-1,0).H(1)找到验证对象数据[V_Data]的散列数值[V_Hash]。更具体的,散列数值算法例如SHA-1被应用于将两个散列数值HL(m-1,0).H(0)和HL(m-1,0).H(1)连接在一起的数据,以发现验证对象散列数值[V_Hash]。
接着,在步骤S105,作为验证对象数据[V_Data]的散列数值而被发现的验证对象散列数值[V_Hash]同核对散列数值[P_Hash]进行核对,以确定前者是否与后者匹配。
如果前者与后者不匹配,也就是如果P_Hash≠V_Hash,则验证对象散列数值[V_Hash]被确定为是伪造数据或者是其中包括根据伪造数据而发现的散列数值的散列列表。在这种情况下,处理流程继续进行至步骤S109,在步骤S109,数据验证过程以失败结束。
另一方面,如果在步骤S105中进行的核对显示前者与后者匹配,也就是如果P_Hash=V_Hash,则验证对象散列数值[V_Hash]被确定为是真实数据或者是其中不包括根据伪造数据而发现的散列数值的散列列表。
如果如上所述验证了验证对象数据[V_Data]的有效性,则处理流程继续进行至步骤S106,以通过找出是否级层标识L为0来确定数据验证过程是否已经完成,其中该标识L标识了作为含有验证对象数据的级层的包括在数据管理树中的级层,也就是,是否被用作验证对象的数据对应于数据管理树中最低层的级层上的叶子。
在该验证方法中,一系列的验证过程沿着验证路径进行,该路径从数据管理树最高层的级层开始并向着从属的方向。当数据验证过程达到级层L=0时,就意味着在更低的层上没有验证对象数据了。这样,表示验证对象散列数值与核对散列数值相匹配的步骤S105的核对结果以及在步骤S106获得的表示级层标识L=0,也就是数据管理树最低层的确定结果就意味着根据验证对象数据[V_Data]生成的验证对象散列数值[V_Hash]与核对散列数值[P_Hash]相匹配,其中该验证对象数据[V_Data]为L=0的管理对象数据或者数据管理树最下级层上的管理对象数据。对于L=0的与其核对散列数值相匹配的验证对象散列数值就意味着沿着从顶端散列数值321开始至最后验证对象数据327结束的验证路径进行的数据验证过程给出了都表示成功核对的结果。也就是说,成功的进行了数据验证过程。在这种情况下,处理流程继续进行至步骤S110,在步骤S110,数据验证过程正常结束。也就是说,数据验证过程以没有数据伪造的确定结果结束。
另一方面,在步骤S106获得的表示L不为0的确定结果就意味着在更低层的级层上仍旧还有节点或叶子需要验证。在这种情况下,处理流程继续进行至步骤S107,在步骤S107对核对散列数值[P_Hash]进行更新。也就是说,用数据管理树中当前核对散列数值[P_Hash]下一层的级层上的散列数值代替当前核对散列数值[P_Hash]。
用于替换当前核对散列数值[P_Hash]的新的核对散列数值[P_Hash]被包括在其中还包括多个散列数值的当前验证对象数据[V_Data]中。这样,由指数k,即V_Data.H(k)表示的散列数值被选作为新的核对散列数值[P_Hash]。
在贯穿图5中所示的数据管理树的典型验证过程中,例如,被用作当前核对散列数值[P_Hash]的顶端散列数值321与根据被用作当前验证对象数据[V_Data]的散列列表HL322生成的散列数值进行核对,并且,如果它们彼此匹配,则根据被用作验证路径定义信息的指数k的值选择散列列表HL322的两个散列数值H(0)和H(1)中的一个作为新的核对散列数值[P_Hash]。在这种情况下,由于k=0,因此散列数值H(0)被选作新的核对散列数值[P_Hash],以替换当前核对散列数值[P_Hash]。
接着,在下一个步骤S108,用于标识含有被验证数据的数据管理树中的级层的标识符L减1。更具体的,级层标识符L被更新为当前级层下一层的新级层,使得能够对下一个新的低一层的级层进行数据验证处理。
接着,处理流程返回至步骤S103,以重复进行从该步骤开始如上所述的处理。重复进行如上所述的处理,直到数据验证过程以失败结束或者数据验证成功完成为止。通过这种方式,通过重复贯穿整个从数据管理树的顶层级层到底层级层的验证路径的核对来进行数据验证处理。最后,当根据验证对象数据[V_Data],也就是底层上的管理对象数据即级层L=0上的管理对象数据,生成的验证对象散列数值[V_Hash]与底层上面的级层的核对散列数值[P_Hash]匹配时,则沿着验证路径所有相邻的级层之间的数据核对都被认为是已经导致了表示没有伪造数据的核对匹配结果。在这种情况下,数据验证过程正常完成。
另一方面,如果验证路径上的任何数据核对结果表示核对的散列数值并不是彼此之间相互匹配,则处理流程继续进行至步骤S109,在步骤S109,数据验证过程以表示数据伪造事实的失败而结束。
(2):从下到上的验证过程
接下来,参照图6中所示的流程图对数据验证过程进行说明,该过程从数据管理树最低层的级层开始并向着更高层的级层方向进行。该流程图从步骤S201开始,在该步骤中,对表示要被验证的数据的数据管理树中级层的层数的变量L进行初始化。也就是说,设置级层标识L的初始值。
在采用该方法的情况下,变量L被设置为初始值0,表示数据管理树中最低层的级层。
接着,在步骤S202,从主存储单元104中获取验证对象数据[V_Data]。该验证对象数据[V_Data]就是将要被用作根据核对散列数值[P_Hash]的验证对象的数据。在该例中,图5中所示的数据管理树的最低层的级层上的数据327被用作第一验证对象数据。对根据数据327生成的散列数值与从数据327上一层的级层上的散列列表326中选出的一个散列数值进行核对。在这种情况下,散列列表326中的散列数值H(1)被选作核对散列数值[P_Hash]。
一般说来,验证对象数据[V_Data]就是在级层L>0的级层上提供的散列列表(L,j),其中符号j表示指定给在级层L上提供的散列列表(L,j)的散列列表指数。另一方面,在级层L为最低层的情况下,也就是在L=0的情况下,验证对象数据[V_Data]就是管理对象数据D[dataID]。在该例中管理对象数据D(dataID)就是被用作验证对象的管理对象数据,并被用作第一验证对象数据。
接着,在下面的步骤S203中,通过计算发现从主存储单元104中获得的验证对象数据[V_Data]的散列数值[V_Hash]。需要注意的是,如上所述,事先确定用于发现散列数值的算法。作为它的一个例子,可以采用SHA-1算法。
接着,在下面的步骤S204中,从主存储单元104中读出包括核对散列数值的散列列表HL,被用作核对数据[P_Data],并且找出核对数据[P_Data]的散列数值指数k,被用作定义验证路径的信息。
该核对数据[P_Data]就是在其上存在验证对象数据[V_Data]的级层的上一层的级层上提供的散列数值列表,并且直接与验证对象数据[V_Data]相连。也就是说,在贯穿图5所示的数据管理树进行的典型验证过程中,例如,第一验证对象数据[V_Data]就是图5中所示的相同树的数据327。在这种情况下,核对数据[P_Data]就是其中包括多个散列数值的散列数值列表326。在如图5所示的相同的二叉数据管理树的情况下,每个散列列表都包括两个分别用散列数值指数k:0和1来表示的散列数值H(0)和H(1)。选择散列数值H(0)和[H(1)中的一个作为核对散列数值[P_Hash]。这就是为什么要获得散列数值指数k来作为验证路径定义信息,从而选择散列数值H(0)和H(1)中的一个。
用作定义验证路径信息的散列数值指数k也是定义验证路径的数值,该路径从数据管理树的任一层的级层开始,到该级层的上一层的级层为止。在贯穿图5所示的数据管理树进行的典型验证过程中,例如,散列数值指数k的数值就定义了一个验证路径,该路径将验证对象数据327,经散列列表326,325,324,323以及322,与顶端散列数值321连在一起。根据在该验证路径中存在的散列列表,该数据验证过程是按照从下至上的方向进行的。
如上所述,被用作定义验证路径信息的散列数值指数k的数值也定义了一个将验证对象数据D327同顶端散列数值321连接在一起的路径。结果,由于散列数值指数k的数值被设置为从下至上的序列1,1,1,0和0,因此该数值也定义了一个与先参照图4的流程图说明的验证路径相同的验证路径。
接着,在下一个步骤S205,根据被用作定义验证路径言息的散列数值指数k,依照核对数据[P_Data]的散列数值指数k,从包括在位于验证对象数据[V_Data]上方的核对数据[P_Data]中的散列数值中选择一个核对散列数值[P_Hash]。
如上所述,根据树结构和提供在最低层的级层上的最后验证对象数据来确定路径,并且用作定义验证路径定义信息的散列数值指数k被设置为表示验证路径的数值。可以由数据管理设备101中的CPU 102或者安全芯片105中的CPU 201来设置验证路径。
接着,在下一步骤S206,被发现作为验证对象数据[V_Data]的散列数值的验证对象散列数值[V_Hash]同核对散列数值[P_Hash]进行比对,以确定前者是否与后者匹配。
如果前者与后者不匹配,也就是如果P_Hash≠V_Hash,则验证对象散列数值[V_Hash]被确定为是伪造数据或者是其中包括根据伪造数据而发现的散列数值的散列列表。在这种情况下,处理流程继续进行至步骤S210,在步骤S210,数据验证过程以失败结束。
另一方面,如果在步骤S205中进行的核对表明前者与后者匹配,也就是如果P_Hash=V_Hash,则验证对象散列数值[V_Hash]被确定为是真实数据或者是其中不包括根据伪造数据而发现的散列数值的散列列表。
如果如上所述验证验证了对象数据[V_Data]有效性,则处理流程继续进行至步骤S207,在步骤S207中,从包含在核对数据[P_Data]中的散列数值中计算出验证对象散列数值[V_Hash],并被用作下一个验证对象散列数值[V_Hash]。
具体的说,根据包括在核对数据[P_Data]中的散列数值H(0)和H(1)计算得出核对数据[P_Data]的验证对象散列数值[V_Hash]。典型的,将散列数值算法,例如SHA-1应用于连接两个散列数值的数据,以找出验证对象散列数值[V_Hash]。
接着,在接下来的步骤S208,进行确定数据验证过程级层的处理。该过程确定是否L等于(m-1)。具体的说,确定级层的过程就是确定这次与核对散列数值进行比对的验证对象数据是否就是数据管理树中顶端散列数值下一级层上的验证对象数据(或散列列表)的验证对象散列数值,也就是,这次与核对散列数值进行比对的验证对象数据是否就是具有m级层的数据管理树中最高级层m上顶端散列数值的下一级层(m-1)上的验证对象数据(或散列列表)的验证对象散列数值。
如果L=(m-1),则处理流程继续进行至步骤S211,在步骤S211中,顶端散列数值被用作核对散列数值[P_Hash]。接着,在下面的步骤S212,根据包含在验证对象数据[V_Data]中的散列数值而发现作为散列数值的验证对象散列数值[V_Hash]与被用作核对散列数值[P_Hash]的顶端散列数值进行核对,以确定前者是否与后者匹配,其中的验证对象数据[V_Data]就是在级层(m-1)上提供的散列列表。在该步骤中进行的处理是整个从下至上的数据验证过程中的最后核对。表示前者与后者匹配的最后核对结果就意味着沿着验证路径进行的所有验证以表示散列数值匹配以正核对结果结束,其中该验证路径从图5中所示数据管理树中的最低层的级层上的数据327开始,至级层(m-1)上的最后验证对象散列列表322结束。这样,数据验证过程就是成功的。在这种情况下,处理流程继续进行至步骤S213,在步骤S213中,验证正常结束。也就是说,通过确定没有数据伪造来结束数据验证过程。
另一方面,如果在步骤S212进行的核对结果表示前者与后者不匹配或者P_Hash≠V_Hash,则验证对象数值[V_Data]被确定为是伪造数据或者是其中包括根据伪造数据而发现的散列数值的散列列表。在这种情况下,处理流程继续进行至步骤S210,在步骤S210,数据验证过程以失败结束。
另一方面,如果在步骤S208获得的确定结果表示L不等于(m-1),则确定在更高层的级层上存在留待被验证的节点。在这种情况下,处理流程继续进行至步骤S209,在步骤S209中按照如下方式更新级层标识L:L=L+1。也就是说,通过在其本身上加1来更新级层标识L。
接着,处理流程返回至步骤S204,以重复进行从该步骤开始如上所述的处理。重复进行如上所述的处理,直到数据验证过程以失败结束或者数据验证成功完成为止。通过这种方式,通过重复贯穿整个从数据管理树的顶层级层到底层级层的验证路径的核对来进行数据验证处理。最后,如果在步骤S212进行的核对结果表示根据被用作验证对象数据[V_Data]的级层L(=m-1)上的数据找到的验证对象散列数值[V_Hash]与顶端散列数值相匹配,则沿着验证路径所有相邻的级层上的数据段之间的核对都被认为是成功了,表示没有伪造数据。在这种情况下,数据验证过程正常完成。在这种情况下,处理流程继续进行至步骤S213,在步骤S213中,数据验证正常结束。另一方面,如果验证路径上的任何数据核对结果表示核对的散列数值并不是彼此之间相互匹配,则处理流程继续进行至步骤S210,在步骤S210,数据验证过程以表示数据伪造事实的失败而结束。
[5:数据的增加,修改以及删除]
接下来,参照图7中的流程图对包括增加,修改以及删除管理对象数据的数据更新过程进行说明。
图7示出了表示增加,修改以及删除管理对象数据例如内容,许可以及记帐数据的处理过程的流程图。如果一个散列数值或散列列表的从属中,既没有散列列表也没有管理对象数据,则散列数值Hash(null)被用作散列数值。该散列数值Hash(null)是一个空的散列数值,其大小为0。另外,可以假设:增加,修改或者删除管理对象数据并不会改变包括数据管理树的级层的层数。
在增加,修改或者删除数据的过程中,当前存在于数据管理树中的某些数据被用作原始先更新数据[V_Data],其中存储在主存储单元104中的数据被用作原始后更新数据[U_Data],并在更新过程之后被记录到数据管理树中。
特别的,在增加数据的过程中,该原始先更新数据[V_Data]以及原始后更新数据[U_Data]都是存储在主存储单元104中的管理对象数据或散列数值列表。可是,由于原始先更新数据[V_Data]实际上并不存在,因此空数据被用作原始先更新数据[V_Data]。
特别的,在修改数据的情况下,原始先更新数据[V_Data]以及原始后更新数据[U_Data]都是存储在主存储单元104中的管理对象数据。
特别的,在删除数据的过程中,原始先更新数据[V_Data]以及原始后更新数据[U_Data]都是存储在主存储单元104中的管理对象数据或散列数值列表。可是,由于原始后更新数据[U_Data]实际上并不存在,因此空数据被用作原始后更新数据[U_Data]。
在增加、修改以及删除数据的同时,也进行验证数据管理树中散列列表有效性的处理。这是因为,如果允许在数据更新的过程中可以不同时进行数据验证过程,则在增加、修改以及删除数据期间很有可能出现数据被伪造的情况。也就是说,为了防止出现黑客通过在树中设置任意的数据来更新数据管理树中的数据的情况,可以假设在增加、修改以及删除数据的同时进行验证数据管理树中散列列表有效性的处理。
可以在数据更新的同时进行验证数据管理树中散列列表有效性的处理,该数据更新过程包括采用从上至下或从下至上的验证方法来增加、修改以及删除数据的过程,其中该从上至下的验证方法从数据管理树得最高层的级层L(L=m-1)开始,正如在这之前参照图4中流程图说明的数据验证过程,而该从下至上的验证方法从数据管理树得最底层的级层L(L=0)开始,正如在这之前参照图6中流程图说明的数据验证过程。但是,通过在数据更新的同时采用从下至上的方法来验证数据,可以非常高效的使用存储器并且缩短了处理时间。图7示出了一个流程图,其中表示采用从下至上验证方法的数据验证过程以及在进行数据验证的同时更新数据的过程。
可以在数据管理设备101中采用的CPU 102或者安全芯片105中的CPU 201的控制下进行包括增加、修改以及删除数据的数据更新处理。如果在数据管理设备101中采用的CPU 102的控制下进行数据更新处理,则数据管理设备101中的CPU 102就会事先从安全芯片105的安全芯片105中获取管理数据验证值,用作进行数据验证处理的基础。需要注意的是,该管理数据验证值包括图3中所示的数据管理树的顶端散列数值。另一方面,如果在安全芯片105中采用的CPU 201的控制下进行数据更新处理,则存储在数据管理设备101的主存储单元104中的所需信息就会被提供给安全芯片105。
为了防止违法的数据更新过程,在安全芯片105中的CPU 201的控制下进行增加、修改以及删除数据的处理。在该结构中,安全芯片105验证先更新数据[V_Data]的有效性以及后更新数据[U_Data]的有效性,或者安全芯片105自己生成后更新数据[U_Data]。
下面对图7中处理流程的步骤进行说明。该流程开始于步骤S301,以初始化变量L,其中该L表示数据管理树中,该先更新数据[V_Data]所属的级层。也就是说,在该步骤中,级层标识L的初始值被设为0,表示该先更新数据[V_Data]相当于数据管理树中最低层的级层上的管理对象数据。需要注意的是,在增加数据的过程中,如上所述,该先更新数据[V_Data]是不存在的。在这种情况下,可以假设大小为0的空数据被用作先更新数据[V_Data]。
接着,在接下来的步骤S302,从主存储单元104中读出该先更新数据[V_Data]。该先更新数据[V_Data]是基于数据管理树中上一级层上的核对散列数值[P_Hash]的验证过程中的一个对象。具体的说,该核对散列数值[P_Hash]就是包含在上一级层上提供的散列列表中的一个散列数值,并且与根据先更新数据[V_Data]生成的散列数值进行比对。
一般来说,该先更新数据[V_Data]就是级层L(L>0)上的散列列表(L,j),其中j表示指定给级层L上的散列列表(L,j)的散列列表指数。当级层L为最低层时,即L=0,另一方面,该先更新数据[V_Data]就是管理对象数据D(dataID)。在该例中,作为验证对象的管理对象数据D(dataID)就被用作原始验证对象数据。
接着,在接下来的步骤S303,通过基于从主存储单元104中获取的先更新数据[V_Data]的计算来找到散列数值[V_Hash],作为先更新数据[V_Data]的散列数值。需要注意的是,如上所述,用于计算散列数值的算法是一个预先设置的算法。作为一个这样的例子,可以采用SHA-1算法。
接着,在接下来的步骤S304,从主存储单元104中获取的后更新数据[U_Data]。该后更新数据[U_Data]就用用于替换先更新数据[V_Data]的数据。需要注意的是,在删除数据的过程中,如上所述的后更新数据[U_Data]是不存在的。可以假设,大小为0的空数据被用作后更新数据[U_Data]。
接着,在接下来的步骤S305,通过基于从主存储单元104中获取的后更新数据[U_Data]的计算来找到散列数值[U_Hash],作为后更新数据[U_Data]的散列数值。需要注意的是,如上所述,用于计算散列数值的算法是一个预先设置的算法。作为一个这样的例子,可以采用SHA-1算法。
接着,在接下来的步骤S306,从主存储器104中读出包括核对散列数值的散列列表HL,作为核对数据[P_Data],并且找到散列列表HL的散列数值指数k作为定义更新路径的信息。
该核对数据[P_Data]是较高级层上的散列列表,并与被用作验证对象的先更新数据[V_Data]直接相连。该核对数据[P_Data]是具有多个散列数值的散列列表。在二叉树的情况下,该核对数据[P_Data]具有两个散列数值H[0]和H[1],其中的一个被选作核对散列数值[P_Hash]。按照如上所述的方式获得散列数值指数k,将其用作更新路径定义信息,以选择散列数值H[0]和H[1]中的一个。
非常类似于早些所述的验证路径定义数值k,被获取作为验证路径定义信息的散列数值指数k的数值定义了一个把要被更新的数据同顶端散列数值相连的路径。
接着,在接下来的步骤S307,根据被获取作为更新路径定义信息的散列数值指数k从核对数据[P_Data]的两个散列数值H[0]和H[1]中选择一个核对散列数值[P_Hash],其中该核对数据[P_Data]就是高一级层上的散列列表,并直接与先更新数据[V_Data]相连。
如上所述,根据树的结构以及更新对象和验证对象数据来确定验证和更新路径。由数据管理设备101中的CPU 102或者安全芯片105中的CPU 201来设置该更新路径。
接着,在接下来的步骤S308,被找到作为先更新数据[V_Data]的散列数值的验证对象散列数值[V_Hash]与核对散列数值[P_Hash]进行比对,以确定前者是否与后者匹配。
如果前者与后者不匹配,也就是如果P_Hash≠V_Hash,则先更新数据[V_Data]被确定为是伪造数据或者是其中包括根据伪造数据而发现的散列数值的散列列表。在这种情况下,处理流程继续进行至步骤S315,在步骤S315,该数据验证/更新过程以失败结束。
另一方面,如果在步骤S308中进行的核对显示前者与后者匹配,也就是如果P_Hash=V_Hash,则先更新数据[V_Data]被确定为是真实数据或者是其中不包括根据伪造数据而发现的散列数值的散列列表。
如果如上所述验证了先更新数据[V_Data]的有效性,则处理流程继续进行至步骤S309,在步骤S309,从包括在核对数据[P_Data]中的散列数值计算得出验证对象散列数值[V_Hash],并将其用作下一个验证对象散列数值[V_Hash]。
接着,在接下来的步骤S310,用后更新散列数值[U_Hash]替换包含在散列列表[P_Data]中的散列数值P_Data.H(k),作为验证对象散列数值[V_Hash],其已经在步骤S308的核对中被用到过。具体说,通过采用预定的算法,例如SHA-1从后更新散列数值[U_Hash]中生成的散列数值被用作一个新的散列列表[P_Data]中的散列数值P_Data.H(k)。
接着,在接下来的步骤S311,通过计算找出包括新散列数值P_Data.H(k)的后更新散列列表[P_Data]的散列数值[U_Hash]。
接下来,在下一步骤S312,将包括新散列数值P_Data.H(k)的后更新散列列表[P_Data]存储在主存储单元104中。可是在此时刻,并没有对数据管理树进行更新。
该数据管理设备101中保存有包括新散列数值P_Data.H(k)的后更新散列列表[P_Data]。使用在上次验证以及正常完成更新序列时被保存的后更新散列列表[P_Data]在更新数据管理树的过程中更新数据管理树中的相关部分。另一方面,如果上次验证以及更新序列没有正常完成,则为数据管理树的一个节点临时保持的后更新散列列表[P_Data]就被删掉。
接着,在接下来的步骤S313,确定进行数据验证以及更新过程的级层的层数。该处理过程确定L是否等于(m-1)。具体地说,确定级层的层数就是确定这时要与核对散列数值进行比对的验证对象散列数值是否就是数据管理树中直接从属于顶端散列数值的级层上的验证对象数据(或散列列表)[V_Data]的验证对象散列数值,也就是,确定这时要与核对散列数值进行比对的验证对象散列数值是否就是具有m级层的数据管理树中直接从属于最上级层m上的顶端散列数值的级层(m-1)上的验证对象数据(或散列列表)[V_Data]的验证对象散列数值。
如果L=(m-1),该处理流程继续进行至步骤S316,在步骤S316,该顶端散列数值被用作核对散列数值[U_Hash]。接着,在接下来的步骤S317,基于包括在验证对象数据[V_Data]中的散列数值找出验证对象散列数值[V_Hash]作为散列数值,其中该验证对象数据[V_Data]就是级层(m-1)上的散列列表,将验证对象散列数值[V_Hash]与被用作核对散列数值[P_Hash]的顶端散列数值进行比对,以确定前者是否与后者匹配。在该步骤中进行的处理就是从下至上进行的数据验证和更新过程中的最后核对过程。表示前者与后者匹配的最后核对的结果就意味着沿着验证和更新路径进行的所有验证都以表示散列数值匹配的正核对结果结束,其中该验证和更新路径从最低层的级层上的更新对象数据开始,至顶端散列数值下一级层上的最后验证对象散列列表结束。
在这种情况下,处理流程进行至步骤S318,在该步骤318中,在步骤S311中计算得出的后更新散列数值[U_Hash]被存储在安全芯片105的安全存储器203中。在步骤S311中计算出的后更新散列数值[U_Hash]就是根据顶端散列数值下一级层上的散列列表的散列数值(包括更新散列数值)而计算得出的顶端散列数值[U_Hash]。接着,在接下来的步骤S319中,数据验证和更新过程正常结束。
另一方面,如果在步骤S317进行的核对产生了表示数据不匹配,即P_Hash≠V_Hash的结果,则验证对象数值[V_Data]被确定为是伪造数据或者是其中包括根据伪造数据而发现的散列数值的散列列表。在这种情况下,处理流程继续进行至步骤S315,在步骤S315,数据验证/更新过程以失败结束。
另一方面,如果在步骤S313获得的确定结果表示L不等于(m-1),则确定在更高层的级层上存在留待被验证的节点。在这种情况下,处理流程继续进行至步骤S314,在步骤S314中按照如下方式更新级层标识L:L=L+1。也就是说,通过在其本身上加1来更新级层标识L。
接着,处理流程返回至步骤S306,以重复进行从该步骤开始如上所述的处理。重复进行如上所述的处理,直到数据验证过程以失败结束或者数据验证成功完成为止。通过这种方式,通过重复贯穿整个数据管理树从下至上的验证/更新路径的核对和更新操作来进行数据验证过程以及数据更新过程。最后,在步骤S318,将在步骤S311中计算得出的后更新散列数值[U_Hash]存储在安全芯片105的安全存储器203中。接着,在步骤S319,数据验证和更新过程正常结束。
另一方面,如果在数据验证过程以及数据更新过程中,验证路径上的任何数据核对结果表示核对的核对后的散列数值并不是彼此之间相互匹配,则处理流程继续进行至步骤S315,在步骤S315,数据验证过程以表示数据伪造事实的失败而结束。
[6:确定验证路径]
在如上所述对数据管理树进行的数据验证或数据更新过程中,散列数值指数k被用作定义数据验证路径或数据更新路径。下面对通过使用散列数值指数k来确定数据验证路径或数据更新路径的方法进行说明。需要注意的是,可以由数据管理设备101中的CPU 102或者安全芯片105中的CPU 201来确定数据验证路径或数据更新路径。
(1):在从上至下的过程中确定路径
验证管理对象数据D(dataID)有效性的过程被假设为从数据管理树的最高级层开始,并沿着向着较低级层的方向进行,其中该管理对象数据D(dataID)就是具有数据指数x=dataID的管理对象数据。需要注意的是,在上面所述的实施例中,数据管理树是二叉树。但是,在下面的说明中,可以对n叉数据管理树进行路径确定处理,其中的每个节点都具有n个叉,并且n为任意整数。
如图8所示,数据管理树被假设为具有n叉结构,其中每个散列列表的散列数值数为n,级层数为m。
最低层的级层L(=0)上的最后验证对象数据350的数据指数x(=dataID)是周知的,其中符号L为被指定给数据管理树验证对象级层的数。级层数L是一个整数,其范围为0至(m-1)。对于一个给定的级层数L,被指定给层数为L的级层上的散列列表指数j的数值范围是0至n(m-L-1)-1。
为了指定如图8中所示的数据管理树中的级层L(=p)上的散列列表或数据,将散列列表指数j指定给散列列表(当L>0时),或者将数据指数x指定给数据(当L=0时)。对于一个给定的最后验证对象数据350的数据指数dataID以及给定的级层数L,可以从下面的等式中得出被指定给散列列表的散列列表指数j或者被指定给数据的数据指数x:
j或x=floor(dataID/nL))    (等式1)
其中符号dataID为最后验证对象数据的数据指数x,并且符号L为指定给提供散列列表或数据的验证对象级层的数字。
在上面的等式中,floor(x)是一个返回不大于x的最大整数的函数。表达式xy为x的y次幂,并且x/y表示x被y除。当L>0时,等式(1)确定了数据管理树的级层L上的验证对象散列列表的散列列表指数j。当L=0时,给出了等于dataID本身的数据指数x,其就是被指定给数据管理树中最低级层上的最后验证对象数据的给定数据指数。例如,在图8所示的典型数据管理树的情况下,将等式(1)应用于级层L(=p,其中p为非零整数)以计算出散列列表指数j的值。结果,散列列表351被选中。
另外,在贯穿数据管理树按照从上至下的方向进行验证处理的过程中,需要从如上所述由散列列表指数j确定的散列列表中选择核对散列数值[P_Hash]。在上述例子中,图8中所示的散列列表351被散列列表指数j确定为散列列表,从该散列列表中选择所需的核对散列数值。每个散列列表都包括n个散列数值,其中符号n表示叉数。被指定给各个散列数值的散列数值指数k的数值范围为0至(n-1)。
这样,就需要确定散列数值指数k。对于具有数据指数x(=dataID)的最后验证对象数据,根据下面的等式来确定级层L上验证对象散列列表的散列数值指数k:
k=floor(dataID/n(L-1))mod n    (等式2)
其中L≠0。
在上面的等式中,floor(x)是一个返回不大于x的最大整数的函数。表达式xy为x的y次幂,并且x/y表示x被y除,并且’x mod y’表示从x被y除的结果中得到的余数。当L=0时,该散列数值指数k是不相关的。
如上所述,对于一个给定的最后验证对象数据的数据指数x(=dataID)以及给定的最后验证对象数据或散列列表的级层数L,通过等式(1)来计算散列列表指数j或者数据指数x,而通过等式(2)来得到用于散列列表的散列数值指数k。
通过如上所述的方式得到散列列表指数j或者数据指数x,以及散列数值指数k,就可以确定一个从数据管理树顶层的级层L(=m-1)开始,到底层的级层L(=0)上的最后验证对象数据为止的验证路径。可以对这条路径上的散列列表或数据进行数据有效性的验证。
需要注意的是,更新数据的过程是在验证数据有效性的同时进行的。这样,就按照与确定验证数据有效性相同的方式来确定更新数据的路径。
(2):在从下至上的过程中确定路径
验证管理对象数据D(dataID)有效性的过程被假设为从数据管理树的最低级层开始,并沿着向着较高级层的方向进行,其中该管理对象数据D(dataID)就是具有数据指数x=dataID的管理对象数据。在下面的说明中,在其中的每个节点都具有n个叉的n叉数据管理树上进行确定路径的处理,其中n为任意整数。
可以假设下面描述的数据管理树具有n叉结构,其中每个散列列表的散列数值数为n,级层数为m。
最低层的级层L(=0)上的验证对象数据的数据指数x(=dataID)是周知的,其中符号L为被指定给数据管理树验证对象级层的数。在从下至上的进行处理的情况下,对于给数据管理树中级层L上的验证对象数据[V_Data],用作级层(L+1)上核对数据[P_Data]的散列列表被标识出来,其中级层数L是一个整数,其范围为0至(m-1)。对于一个给定的、其范围为0至(m-1)的级层数L,散列列表指数j的数值范围是0至n(m-L-1)-1。
在贯穿数据管理树按照从下至上的方向确定验证路径的过程中,首先,根据被指定给底层级层L(=0)上的最后验证对象数据的给定数据指数x(=dataID)对具有dataID的数据进行标识。接着需要标识用作核对数据[P_Data]的散列列表,其中该核对数据[P_Data]中包括与最后验证对象数据链接在一起的核对散列数值[P_Hash]。通过计算核对数据[P_Data]的数据指数x或散列列表的散列列表指数j来分别标识出核对数据[P_Data]或被用作核对数据[P_Data]的散列列表。对于一个给定的最后验证对象数据的数据指数dataID以及给定的级层数L,可以从下面的等式中得出被用作核对数据[P_Data]的核对散列列表的散列列表指数j:
j或x=floor(dataID/n(L+1)))    (等式3)
其中符号dataID为最后验证对象数据的数据指数x,并且符号L(≠(m-1))为指定给提供当前散列列表或当前验证对象散列列表的验证对象级层的数字。
在上面的等式中,floor(x)是一个返回不大于x的最大整数的函数。表达式xy为x的y次幂,并且x/y表示x被y除。当L>0时,等式(1)确定了被用作数据管理树的级层L上面一层的级层(L+1)上核对数据[P_Data]的核对散列列表的散列列表指数j。
另一方面,当L=0时,等式(3)确定了被用作数据管理树中最低级层的上一级层上的核对数据[P_Data]的核对散列列表的散列列表指数j。
另外,在贯穿数据管理树按照从下至上的方向进行验证处理的过程中,需要从如上所述由散列列表指数j确定的散列列表中选择核对散列数值[P_Hash]。每个散列列表都包括n个散列数值,其中符号n表示叉数。被指定给各个散列数值的散列数值指数k的数值范围为0至(n-1)。
这样,为了确定核对散列数值[P_Hash]就需要找出散列数值指数k。对于具有数据指数x(=dataID)的最后验证对象数据以及包括验证对象数据[V_Data]的级层L,根据下面的等式来确定验证对象散列列表的散列数值指数k:
k=floor(dataID/nL)mod n    (等式4)
其中L≠(m-1)。
在上面的等式中,floor(x)是一个返回不大于x的最大整数的函数。表达式xy为x的y次幂,并且x/y表示x被y除,并且’x mod y’表示从x被y除的结果中得到的余数。
当L=(m-1)时,顶端散列数值被用作核对散列数值[P_Hash]。这样,在数据管理设备101中,安全芯片105将验证对象数据[V_Data]同存储在安全芯片105地安全存储器203中的顶端散列数值进行比较,并需要将核对散列数值[P_Hash]提供给安全芯片,结果可以消除根据等式(3)来确定散列列表以及根据等式(4)来确定包含在散列列表中的散列数值的处理过程。
如上所述,对于一个给定的最后验证对象数据的数据指数x(=dataID)以及给定的最后验证对象数据或散列列表的级层数L,通过等式(3)来计算散列列表指数j或者数据指数x,而从等式(4)得到散列数值指数k。
通过如上所述的方式得到散列列表指数j或者数据指数x,以及散列数值指数k,就可以确定一个从数据管理树底层的级层L(=0)的最后验证对象数据开始,到顶层的级层L(=m-1)为止的验证路径。可以对这条路径上的散列列表或数据进行数据有效性的验证。
需要注意的是,更新数据的过程是在验证数据有效性的同时进行的。这样,就按照与确定验证数据有效性相同的方式来确定更新数据的路径。
还需要注意的是,在数据管理设备101中,CPU 102通过使用上述路径确定方法中的一种来确定路径,并且根据数据管理树的验证级层L以及被指定给验证对象级层L上的验证对象数据(或验证对象散列列表)的指数j来确定将要提供给安全芯片105的验证对象数据(或验证对象散列列表)。
另外,根据散列数值指数k从包含在验证对象散列列表中选择一个散列数值。接着,从主存储单元104中读出确定的验证对象数据(或确定的证对象散列列表)或者被选中的散列数值并将其提供给安全芯片105,以用于由安全芯片105进行的验证处理。
另一方面,如果安全芯片105确定了验证路径,则将根据等式(1)和(4)确定的数据位置信息提供给数据管理设备101中的CPU 102。接着,根据由安全芯片105提供的数据位置信息,数据管理设备101中的CPU 102从主存储单元104中读出验证对象数据(或确定的证对象散列列表)或者被选中的散列数值并将其提供给安全芯片105,以用于由安全芯片105进行的验证处理。
[7:具有一个散列数值列表级层的数据管理树]
上面所述的实施例具有使用了数据管理树的典型结构,其中该数据管理树中包括在不同层的级层上提供的散列列表。
下面的描述将会说明只包括一个散列列表级层的结构,以及在该结构上进行的处理。也就是说,该数据管理树中的散列列表级层数为1。在该数据管理树中,级层数m为2,这是由于该树中包括一个直接从属于该散列列表级层的数据级层。
图9为一个数据管理树的典型结构框图,其中该数据管理树的级层数为m,管理数据数为n。在具有该典型结构的数据管理树中,只有一个由参考数字401表示的散列列表HL(1,0),在该列表中包括所有管理对象数据段的散列数值。
顶端散列数值402就是散列列表HL(1,0)401的散列数值。也就是说,顶端散列数值402是根据包含在散列列表HL(1,0)401中的n个散列数值生成的。一般的,顶端散列数值就是通过将散列算法例如SHA-1应用于用于连接包含在散列列表HL(0,1)401中的n个散列数值的数据而生成的。
安全芯片105中的安全存储器203至少包括顶端散列数值402作为管理对象验证值。其它数据,例如散列列表401以及最低级层上从D(0)至D(n-1)的管理对象数据段都被存储在数据管理设备101中的主存储单元104中。
[8:增加和减少级层]
接下来,对增加以及减少数据管理树中级层数的过程进行说明。当数据管理树中的级层数增加或减少时,需要更新存储在安全芯片105的安全存储器203中的管理数据验证值。
可以由数据管理设备101中的CPU 102或者安全芯片105中的CPU 201来进行增加以及减少数据管理树中的级层数的处理。如果在数据管理设备101中的CPU 102的控制下增加以及减少数据管理树中级层数,则数据管理设备101中的CPU 102事先从安全芯片105的安全存储器203中获得管理数据验证值,作为进行数据验证过程的基础。需要指出的是,该管理数据验证值包括位于如图3所示的数据管理树的顶端。另一方面,如果在安全芯片105中的CPU 201的控制下增加以及减少数据管理树中的级层数,则需要将存储在数据管理设备101主存储器104中的所需信息提供给安全芯片105。另外,在增加以及减少数据管理树中的级层数的过程中更新的信息被从安全芯片105输入到数据管理设备101的主存储器104中。
(1)增加级层的过程
首先,参照图10中所示的流程图对增加数据管理树中的级层数的过程进行说明。该流程图从步骤S401开始,在该步骤S401,从主存储单元104中获取直接与数据管理树的顶端散列数值相连的散列列表,作为验证对象数据[V_Data]。
接着,在步骤S402,通过基于从主存储单元104中获取的验证对象数据[V_Data]的计算来找到散列数值,作为验证对象散列数值[V_Hash]。需要注意的是,如上所述,用于计算散列数值的算法是一个预先设置的算法。作为一个这样的例子,可以采用SHA-1算法。
接着,在接下来的步骤S403,确定核对散列数值[P_Hash]作为散列数值,以同验证对象数据的散列数值进行比较。在这种情况下,将存储在安全芯片105中的作为管理数据验证值的顶端散列数值作为核对散列数值[P_Hash]。
接着,在接下来的步骤S404,被找到作为验证对象数据[V_Data]的散列数值的验证对象散列数值[V_Hash]与核对散列数值[P_Hash]进行比对,以确定前者是否与后者匹配。
如果前者与后者不匹配,也就是如果P_Hash≠V_Hash,则验证对象数据[V_Data]被确定为是伪造数据或者是其中包括根据伪造数据而发现的散列数值的散列列表。在这种情况下,处理流程继续进行至步骤S411,在步骤S315,该过程以失败结束。
另一方面,如果在步骤S404中进行的核对显示前者与后者匹配,也就是如果P_Hash=V_Hash,则验证对象数据[V_Data]被确定为是真实数据或者是其中不包括根据伪造数据而发现的散列数值的散列列表。
在这种情况下,处理流程继续进行至步骤S405,在步骤S405,在完成验证过程的散列列表上一层、最高层m的级层上生成一个新的散列列表N_Data。具体的说,在如图14所示完成验证过程的散列列表452的级层与顶端散列数值451之间的级层上生成一个新近设置的散列列表N_Data 453。
接着,在接下来的步骤S406,完成验证过程的散列列表452的散列数值[V_Hash]被设置作为新近设置的散列列表N_Data 453的一个散列数值。接着,在接下来的步骤S407,大小为0的空数据段被设置作为新近设置的散列列表N_Data453的其它散列数值Hash(null)。在n叉数据管理树的情况下,每个散列列表都包括n个散列数值。这样,新近设置的散列列表N_Data 453就包括完成验证过程的散列列表452的散列数值[V_Hash]以及(n-1)个其它散列数值Hash(null)。
接着,在接下来的步骤S408,根据新近设置的散列列表N_Data 453的散列数值计算散列数值N_Hash。具体的说,将散列算法,例如SHA-1应用于将完成验证过程的散列列表452的散列数值[V_Hash]与散列数值计算过程中的(n-1)个其它散列数值Hash(null)连接在一起的数据,以计算出散列数值N_Hash。
接着,在接下来的步骤S409,计算得出的散列数值N_Hash被用作替换顶端散列数值。由安全芯片105将该计算得出的散列数值N_Hash用作新的管理数据验证值。也就是说,将计算得出的散列数值N_Hash存储在安全存储器203中作为更新的顶端散列数值。最后,在接下来的步骤S401,过程正常结束。
(2)减少级层的过程
接下来,参照图12中所示的流程图对减少数据管理树中的级层数的过程进行说明。该流程图从步骤S501开始,在该步骤S501,从主存储单元104中获取直接与数据管理树的顶端散列数值相连的散列列表,作为验证对象数据[V_Data]。
在这种情况下,验证对象数据[V_Data]就是位于如图13中数据管理树最高级层上的散列列表472。在该过程中该最高级层上的散列列表472及其级层都被删掉,以使得树中的级层数减1。
作为删除散列列表472及其级层的结果,直接从属于该被删除级层的另一个级层被新作为最高层,并且其它级层上的特殊散列列表473将直接与该顶端散列数值471相连。正由于此,在步骤S501并不需要找出目前位于最高层的散列列表472中散列数值得散列数值指数k。该散列数值指数k被指定给包含在验证对象数据[V_Data]472中的散列数值,作为与特定散列列表473相连的散列数值,以用作新的最高级层上的散列列表,使得级层数m减1。
接着,在步骤S502,通过基于从主存储单元104中获取的验证对象数据[V_Data]的计算来找到散列数值,作为验证对象散列数值[V_Hash]。需要注意的是,如上所述,用于计算散列数值的算法是一个预先设置的算法。作为一个这样的例子,可以采用SHA-1算法。
接着,在接下来的步骤S503,确定核对散列数值[P_Hash]作为散列数值,以同验证对象数据[V_Data]的散列数值[V_Hash]进行比较。在这种情况下,将存储在安全芯片105中的作为管理数据验证值的顶端散列数值作为核对散列数值[P_Hash]。
接着,在接下来的步骤S504,被找到作为验证对象数据[V_Data]的散列数值的验证对象散列数值[V_Hash]与核对散列数值[P_Hash]进行比对,以确定前者是否与后者匹配。
如果前者与后者不匹配,也就是如果P_Hash≠V_Hash,则验证对象数据[V_Data]被确定为是伪造数据或者是其中包括根据伪造数据而发现的散列数值的散列列表。在这种情况下,处理流程继续进行至步骤S509,在步骤S509,该过程以失败结束。
另一方面,如果在步骤S504中进行的核对显示前者与后者匹配,也就是如果P_Hash=V_Hash,则验证对象数据[V_Data]被确定为是真实数据或者是其中不包括根据伪造数据而发现的散列数值的散列列表。
在这种情况下,处理流程继续进行至步骤S505,在步骤S505,确定散列列表472的散列数值是否都是散列(空),其中该散列列表472就是要被删除的验证对象数据[V_Data]。该散列数值都是包含在散列列表472中的n个散列数值,除了由在步骤S501中得到的散列数值指数k指示的散列数值以外。由散列数值指数k指示的散列数值与将新近被置于最高层的另一级层上的其它散列列表相连。上面所指散列(空)的就是指大小为0的空数据。
在图13中所示的具体数据管理树中,将新近被置于最高层的其它级层上的其它散列列表就是散列列表473,并且指示散列数值的散列数值指数k的值为0,其中该散列数值被包括在将要被删除并与散列列表473相连的散列列表472中。这样,在步骤S505,对包含在散列列表472中作为散列数值并且都由除了0以外的散列数值指数k指示的其它散列数值进行检查,以确定是否这些散列数值都是散列(空)。在这种情况下,k=1是除了0以外的唯一散列数值指数k。这是由于图13中所示具体数据管理树为2叉数据管理树,其中的每个散列列表都仅仅包括两个散列数值。在n又数据管理树的情况下,每个散列列表都包括n个散列数值。
如果除了与将要被置于最顶层的另一个级层上的其它散列列表相连的散列数值以外的将要被删除的散列列表的散列数值中包括有一个非空散列数值,则处理流程继续进行至步骤S509,在步骤S505,处理过程以失败结束,而不删除当前最高级层上的散列列表。
如果除了与将要被置于最顶层的另一个级层上的其它散列列表相连的散列数值以外的将要被删除的散列列表的散列数值都是空散列数值,则在级层数减1之后,根据包含在将要被升至最高层的级层上的散列列表中的散列数值计算出散列数值N_Hash。在图13所示的具体数据管理树种,将要被升至最高层的级层上的散列列表[V_Data]就是散列列表473,其由包含在将要被删除的散列列表472中的散列数值的散列数值指数k来指示。
接着,在接下来的步骤S507,计算得出的散列数值N_Hash被用作替换安全芯片105中顶端散列数值的管理数据验证值并被存储在安全存储器203中,作为新的顶端散列数值。最后,处理流程继续进行至步骤S508,在步骤S508,处理过程正常结束。
[9:加密和解密管理对象数据]
如先前所述,用作管理对象的数据被放置在数据管理树底层的级层上面并通过设置该树中较高级层上的散列列表来对其进行管理。该用作管理对象的数据包括各种数据,例如内容,许可以及记帐信息。为了防止这些种类的数据被泄漏,希望对数据管理设备101中的数据进行加密并将其存储在主存储单元104中。
在加密以及解密管理对象数据的过程中使用的密钥被存储在安全芯片105的安全存储器203中。这个密钥在下文中就是指存储密钥。数据管理设备101中的CPU 102或安全芯片105中的CPU 201能够使用存储密钥来加密以及解密管理对象数据。
如果由数据管理设备101中的CPU102来进行加密以及解密管理对象数据的处理,则从安全芯片105中输入存储密钥,并在处理过程中使用。在数据管理设备中使用的CPU 102通过执行事先存储在主存储单元104中的加密程序来对管理对象数据进行加密及解密。另一方面,如果使用安全芯片105中的CPU 201来加密以及解密管理对象数据,则安全芯片105就必须具有加密和解密处理的能力。
需要注意的是,加密过程的对象是管理对象数据的一部分或者全部,是数据例如内容的实质。事实上,加密过程的对象可以是具有各种包括散列列表的结构的数据。可以提供一种结构,在该结构中,根据数据管理设备101或安全芯片105内部算法设置分别由数据管理设备101中的CPU 102或安全芯片105中的CPU 201进行确定加密对象的处理。
另外,还可以提供一种结构,在该结构中,多种存储密钥被存储在安全芯片105的安全存储器203中。进一步,还可以提供一种结构,在这种结构中,在在安全芯片105的安全存储器203中生成或者删除多个存储密钥。为了防止使用的存储密钥被泄漏出去,最好是提供多个存储密钥并且在使用中适当地改变存储密钥,这样就增强了安全性。
除此以外,还可以提供这样一种结构,在该结构中,采用了一种加强安全性的方法,该方法通过使用存储在安全芯片105中的存储密钥来加密以及解密包络密钥,并通过使用包络密钥来加密以及解密数据,并且通过存储密钥被加密的包络密钥被附在使用包络密钥加密后的管理对象数据。这样,在该结构中,黑客所知道的关于存储密钥信息的信息量可以被降低并且还会降低泄漏存储密钥的风险。需要注意的是,数据管理设备101中的CPU 102或安全芯片105中的CPU 201都可以通过使用存储在安全芯片105中的存储密钥来对包络密钥进行加密以及解密处理,并且通过使用包络密钥加密以及解密管理对象数据。当通过使用存储在安全芯片105的安全存储器203中的存储密钥来进行解密处理,以生成一个包络密钥,并且生成的包络密钥被输出给安全芯片105外部的一个部件时,就不需要将存储密钥输出给安全芯片105外部的部件,并且因此加强了安全性。
需要注意的是,如果由加密过程来改变存储的数据时,要进行更新数据管理树的过程,以使得数据验证过程与前面所述的数据更新过程按照相同的方式同时进行。在更新数据管理树的过程之后,更新后的数据就被存储在主存储单元104中,而新的顶端散列数值被存储在安全芯片105的安全存储器203中。可以通过对解密的数据进行解密来获得先加密数据,因此如前面所述的验证过程能够验证管理对象数据的完整性以及最新近性,而不会带来新的问题。这样,如果需要的话,除了验证完整性以及最新近性以外,可以保证数据的机密性。
如上所述,在该结构中,对管理对象数据进行加密,存储加密后的管理对象数据,并通过使用基于加密后的管理对象数据的数据管理树来进行数据管理。进一步,还提供一种结构,在该结构中,用于加密过程的密钥被存储在安全芯片105中。这样,就可以有效的防止管理对象数据被泄漏。
[10:使用中间级层散列列表进行验证]
如上面的实施例所述,至少,顶端散列数值被存储作为安全芯片105的安全存储器203中的管理数据验证值。还可以通过在数据管理树中间级层上存储散列列表,或者在安全芯片105的安全存储器203中存储该散列列表的散列数值,来缩短验证具体数据的有效性所花费的时间。下面的描述将会说明一个数据管理结构,其中数据管理树中间级层上的散列列表或者该散列列表的散列数值被存储在安全芯片105的安全存储器203中,以便于在数据验证过程中使用。
图14为一个数据管理树的框图,该数据管理树为二叉树,并且级层数m为4。如前面所述,在二叉数据管理树种,每个散列列表都包括两个散列数值。安全芯片105的安全存储器203被用于存储顶端散列数值501以及中间散列数值502,作为管理对象验证值。中间散列数值502是数据管理树中间级层上的散列列表HL(2,0)中的一个散列数值。
顶端散列数值501是根据最高层的级层L(=3)上的散列列表511的散列数值生成的。另一方面,中间散列数值502是根据中间层的级层L(=2)上的散列列表521的散列数值生成的。
在如图14所述的数据管理树最低层的级层L(=0)上有8段管理对象数据D(0)至D(7)。可以通过使用中间散列数值502来验证这些管理数据段中的4段管理对象数据D(0)至D(3)。
通过使用中间散列数值502进行验证处理,可以只需要对两个级层,即级层L(=1和2)的级层列表进行验证就能够完成整个过程。这样就可以缩短验证数据有效性所花费的时间。基于同样的理由,进行数据更新,例如增加、修改以及删除级层所花费的时间也可以被缩短。需要注意的是,在验证4段管理对象数据D(4)至D(7)有效性的过程中需要顶端散列数值501。这是由于可以通过对所有3个级层,即级层L(=1,2和3)的级层列表进行验证来完成整个处理过程。
[11:根据多个数据管理树的管理结构]
另外,通过提供一种其中多个管理数据验证值被存储在安全芯片105的安全存储器203中的结构,可以对同管理数据验证值一样多的数据管理树进行管理。
如图15所示,例如,在一个结构中包括2个二叉数据管理树,每个树的级层数m为3并且每个散列列表都包括两个散列数值,分别由参考数字521和531表示的顶端散列数值都被存储在安全芯片105的安全存储器203中,分别作为第一数据管理树HT(1)520和第二数据管理树HT(2)530的管理数据验证值。顶端散列数值521(顶端散列数值1)就是第一数据管理树HT(1)520的最高级层上的散列列表522中的一个散列数值。另一方面,顶端散列数值531(顶端散列数值2)就是第二数据管理树HT(2)530的最高级层上的散列列表532中的一个散列数值。
如果在该结构中进行数据验证或者数据更新处理,则该数据管理设备101就会通知安全芯片105对哪个包含管理对象数据的数据管理树进行处理。在收到数据管理设备101的通知之后,安全芯片105选择包括将要被处理的管理对象数据的数据管理树,并进行处理。通过提供一种结构,在该结构中,根据由数据管理设备101的CPU 102发出的命令增加以及删除由安全芯片105的安全存储器203管理的管理数据验证值,可以任意的改变被管理的管理数据树的数量。
[12:使用根散列列表作为数据管理验证数据的结构]
在上面所述的实施例中,顶端散列数值被存储在安全芯片105的安全存储器203中,作为数据管理验证值。可是,代替顶端散列数值的是,顶端散列列表本身被存储在安全芯片105的安全存储器203中,作为数据管理验证值。
如图16所示,数据管理树的级层数m为3,例如,顶端(根)散列列表511自己被存储在安全芯片105的安全存储器203中,作为数据管理验证值,而不是根据顶端散列列表511得到顶端散列数值并将顶端散列数值存储在安全芯片105的安全存储器203中。需要注意的是,在n叉数据管理树的情况下,顶端散列列表551包括n个散列数值,因此它们都被存储在安全芯片105的安全存储器203中。还值得注意的是,n个散列数值都被存储在安全芯片105的安全存储器203中,并与指定给它的散列数值指数k相关。
[13:为数据管理树的任何部分设置和管理管理数据验证值的结构]
在上面所述的实施例中,一般的,管理数据验证值同数据管理树相关。也就是说,顶端散列数值被设置作为管理数据验证值。但是,数据管理树中的任何数据及其中的任何散列列表都可以被设置作为管理数据验证值。
如图17所示,例如,数据管理树中的任何数据及其中的任何散列列表都可以被设置作为管理数据验证值。图17中所示的数据D(0)571就是数据管理树572的管理数据验证值,其中包括散列列表HL-A以及数据段D-A。
图17中所示的一个散列列表中的散列数值HL(2,1).HL(1)573就是数据管理树574的管理数据验证值,其中包括散列列表HL-B以及数据段D-B。
这些管理数据验证值都被存储在安全芯片105的安全存储器203中并被从安全存储器203中读出来,以根据数据管理树被用于数据验证或更新过程,其中该数据管理树包括被用作验证对象或者被更新的数据。
[14:包括散列数值的数据管理树]
在上面所述的实施例中,数据管理树包括散列列表,每个散列列表中都包括多个散列数值并被组织在一起构成级层。可是,该数据管理树也可以被指定到一个结构中,在该结构中每个散列列表都被散列数值所代替。
如图18中所示,管理对象数据段D(0)至D(7)被设置在最低的级层L(=0)上。在每个较高级层L(>0)上,由简单的散列数值替换多个散列列表中的每一个,其中根据上面所述的实施例,每个散列列表通常都包括多个散列数值。
在图18所示的数据管理数中,级层数为4并且管理对象数据段数为8。在图中,符号D(x)表示级层L(=0)上的一段管理对象数据,符号x表示指定给该管理对象数据D(x)的指数。符号H(x,y)表示级层L(>0)上的散列数值,符号x表示指定给该数据管理树中级层L的数字,以及符号y表示指定给级层L(=x)上的散列数值(x,y)的指数。散列数值H(x,y)是根据将所有直接从属的数据段与散列数值H(x,y)连接在一块的数据生成的。
例如,由参考数字581表示的散列数值H(1,0)是根据数据段D(0)和D(1)生成的。具体的说,散列数值H(1,0)是根据连接数据段D(0)和D(1)的数据应用散列算法例如SHA-1而生成的。也就是说,散列数值H(1,0)可以由以下的表达式表示:
Hash(D(0)‖D(1))
其中符号‖表示数据链接操作符。
散列数值H(2,0)583是根据散列数值H(1,0)581和散列数值H(3,0)585生成的。另一方面,散列数值H(3,0)585是根据散列数值H(2,0)583和散列数值H(2,1)584生成的。
图18示出了二叉数据管理树的结构框图,其中的每个散列列表都包括两个散列数值。数据管理树的顶端散列数值就是散列数值H(3,0)585。安全芯片105中的安全存储器203被用于存储至少顶端散列数值H(3,0)作为管理数据验证值。其他的数据被存储在数据管理设备101的主存储单元104中。
根据包括构成如上所述级层的散列数值的数据管理树的数据管理方法允许例如数据验证处理,数据增加处理,数据修改处理,数据删除处理,级层修改处理,加密处理,基于中间节点的数据验证处理,以及管理多个数据管理树的过程按照与基于包括构成级层的散列列表的数据管理树的数据管理方法相同的方式进行。与包括构成级层的散列列表的数据管理树相比,在包括构成级层的散列列表的数据管理树的情况下,通过将多个数据段链接在一块来在数据验证过程中计算散列数值。这样,就很有可能使得处理时间变长。在管理对象数据较大时,处理时间就会相当长。可是,包括构成级层的散列列表的数据管理树会带来的优点就是,用于管理数据所需的信息量作为除了与管理对象数据本身以外的信息就是小的。图19示出了一个用于实现一种方法的数据管理树的框图,其中该方法要求用于管理数据的信息,作为除了与管理对象数据本身以外的信息的信息量最小。
图19为典型数据管理树的框图,该数据管理树包括构成级层的散列列表,级层数m为2,管理对象数据段为n。在具有这种结构的数据管理树的情况下,由参考数字591表示的顶端散列数值H(1,0)是根据将所有h段管理对象数据链接在一起的数据生成的。也就是说,该顶端散列数值H(1,0)是除了管理对象数据本身以外唯一所需的信息,并可以由下面的表达式表达:
Hash(D(0)‖D(1)‖D(2)‖D(3)‖-‖D(n-1))
安全芯片105中的安全存储器203被用于仅仅存储顶端散列数值H(1,0)作为管理数据验证值。在这种情况下,不存在数据管理所需的信息作为除了管理对象数据段本身以外的信息,它们被存储在数据管理设备101的主存储单元104中。
图20示出了一种基于有组织的散列数值的数据管理树的数据结构的框图,对它们进行调整,以缩短它们进行处理,例如对于具有大尺寸的管理对象数据进行数据验证处理,所花费的时间。
图20为显示包括构成级层的散列数值的典型数据管理树的框图,其中级层数m为5,管理数据数为8。该数据管理数同图18中所示的不同之处在于:在如图20所示的数据管理树的情况下,用于计算级层L(=1)上的各个散列数值所需的管理对象数据段的数量被减1。可是,结果,级层数被加1。
也就是说,级层L(=1)上的各个散列数值是只从一段管理对象数据生成的。例如,只从管理对象数据D(0)生成由参考数字601表示的散列数值H(1,0)。
通过这种结构,就可以将进行处理,例如数据验证处理所花费的时间缩短为大致等于对于基于有组织散列列表的数据管理树的值,即使是对于体积较大的管理对象数据。可是,结果,作为除了存储在数据管理设备101的主存储单元104中的管理对象数据本身以外的信息,用于管理数据所需的信息量被增加至大致等于基于有组织散列列表的数据管理树的信息量。
至此,已经参照优选实施例对本发明进行了详细的说明。可是,对于本领域内的技术人员来说,在不脱离本发明的实质的情况下对实施例进行修改或者生成替代物是显而易见的。也就是说,该说明书仅仅通过优选实施例对本发明进行了说明,但是这些优选实施例不能被解释为对本发明的限制。本发明的实质只能由该说明书后部所附的权利要求书所定义的范围来确定。
需要注意的是,如上所述的一系列处理过程可以在硬件、软件结构中,或者同时使用硬件和软件的组合结构中进行。如果通过执行各种构成软件的程序来进行一系列的处理,则一般从下载站点或记录介质将定义处理过程的程序安装到包括嵌入式特定目的硬件的计算机中。该程序也可以被安装到一般目的个人计算机中,其中该一般目的个人计算机可以通过执行安装的程序来实现各种功能。
除了从下载站点或记录介质中将程序安装到计算机或个人计算机中之外,还可以通过事先将程序存储在记录介质例如ROM和/或硬盘中来向用户发行程序,其中该记录介质被包括在计算机或个人计算机中。可是,如果要从记录介质将程序安装到计算机或个人计算机中,则该程序就要被制成适用于临时或永久记录在可移动记录介质的软件包。从中将程序安装到计算机或个人计算机中的可移动记录介质可以是软盘,CD-ROM(光盘只读存储器),MO(磁光)盘,DVD(数字化视频光盘),磁盘或者可编程记录介质,例如半导体存储器。
需要注意的是,除了可以从如上所述的可移动记录介质将程序安装到计算机或个人计算机中以外,还可以从前面提到的下载站点将程序安装到计算机或个人计算机中。在这种情况下,可以通过无线通信或借助网络例如LAN(局域网)或互联网将程序下载到计算机或个人计算机中。接着,计算机或个人计算机就能够将接收到的程序安装到嵌入式的记录介质,例如硬盘中。
需要注意的是,在该说明书中,规定存储在记录介质中的程序的步骤当然也可以按照预定的次序沿着时间轴被顺序执行。可是,仍需要指出的是,这些步骤并不是必须按照预定的次序沿着时间轴被顺序执行。而是,这些步骤可以包括并行执行,或依靠用于执行处理的设备的处理能力单独执行,或者根据需要进行的处理片断。另外,该说明书中的系统就表示包括有多个逻辑上彼此相连设备的整个系统。可是,该设备并不需要在物理上被封装在一个盒子中。
由本发明提供的数据管理设备,应用在该数据管理设备中的数据管理方法,以及用于实现该数据管理方法的计算机程序可以被应用于一种结构,用于为了避免数据伪造而对包括内容,许可以及记帐数据的数据进行管理。
在本发明的结构中,设置在数据管理树顶端的数据被存储在安全芯片的存储器中。该存储的数据例如散列数值(hash value)是通过应用基于直接从属于被计算数据的数据的不可逆函数进行计算得到的结果。该被存储的散列数值被用作管理数据验证值,用于验证数据管理树底层的级层上提供的管理对象数据的有效性。这样,即使管理对象数据段的数量增加了,也不要增加管理数据验证值的数据量。也就是说,可以对大量的管理对象数据段进行防伪验证处理,而不需要增加管理数据验证值的数据量。因此,本发明可以被应用于用于执行各种数据管理的应用中。另外,本发明还提供了一种结构,在该结构中,基于包含在数据管理树中的散列数值的数据验证过程也可以在数据更新过程,例如增加、删除、修改管理对象数据的操作中同时进行。这样,本发明也可以在进行数据更新处理,例如增加、删除、修改管理对象数据的操作,的设备中被利用。

Claims (23)

1.一种数据管理设备,包括:
管理数据存储单元,用于存储管理对象数据;
管理数据验证值存储单元,用于存储被置于n叉数据管理树顶端的顶端数值,作为管理数据验证值,其中n为大于或等于2的整数;
数据验证处理单元,用于根据所述管理数据验证值对所述管理对象数据进行验证其有效性的处理,其中:
所述数据验证处理单元包括:
用于确定从所述n叉数据管理树的顶端到最底层的所述管理对象数据、
或从最底层的所述管理对象数据到所述n叉数据管理树的顶端的验证路径
的验证路径确定单元;以及
通过确定沿由验证路径确定单元确定的所述验证路径,验证数据是否
与核对数据逐个顺序匹配,进行所述数据验证处理的验证的验证单元;
所述n叉数据管理树包括位于所述n叉数据管理树最低层的级层上的所述管理对象数据以及位于所述n叉数据管理树较高层的任意特定级层上的数据,作为通过使用基于位于直接从属于所述特定级层的另一级层上的其它数据的不可逆函数来进行计算的结果;以及
所述顶端数值是通过使用基于位于所述n叉数据管理数最高层的级层上的数据的所述不可逆函数来进行计算的结果。
2.根据权利要求1的数据管理设备,其中所述不可逆函数为散列函数。
3.根据权利要求1的数据管理设备,其中所述管理数据验证值存储单元是一个嵌入在具有防止篡改结构的安全芯片中的安全存储器。
4.根据权利要求1的数据管理设备,其中所述数据验证处理单元:
被嵌入在具有防止篡改结构的安全芯片中;以及
具有一个结构,用于通过从所述管理数据存储单元输入所述数据验证过程中所需的数据来进行数据验证处理。
5.根据权利要求1的数据管理设备,其中:
所述管理数据验证值存储单元是一个嵌入在具有防止篡改结构的安全芯片中的安全存储器;以及
所述数据验证处理单元具有一个结构,用于通过从所述管理数据存储单元输入所述数据验证过程中所需的数据来进行数据验证处理。
6.根据权利要求1的数据管理设备,其中:
各个构成所述n叉数据管理树的节点都是一个包括n个数值的数据列表,其中每个数值都是作为通过使用基于位于直接从属于所述数据列表的一个级层上的n段数据的所述不可逆函数来进行计算的结果而被获得的;以及
所述数据验证处理单元进行数据验证过程,每个过程都确定在贯穿所述n叉数据管理树从高层的级层开始至底层的级层结束,或者从低层的级层开始至高层的级层结束的方向上是否验证数据与核对数据一个接一个的顺序匹配,其中:
所述验证数据是通过使用基于提供在较低级层上数据的所述不可逆函数来进行计算的结果;
所述核对数值就是已经被包括在较高级层上的数据列表上的数据,作为所述不可逆函数的计算结果;以及
所述较低级层和所述较高级层就是所述n叉数据管理树中任意的两个级层,其中所述较低级层被用作直接从属于所述较高级层。
7.根据权利要求6的数据管理设备,其中所述数据验证处理单元:
根据被用作每个级层上数据列表的标识的列表指数j并且根据被用作每个数据列表上不可逆函数计算结果的标识的不可逆函数指数k,在整个所述n叉数据管理树中确定一个验证路径,该路径从高层的级层开始向着低层的级层方向或者从低层的级层开始向着高层的级层方向;以及
对所述确定验证路径上的数据进行所述数据验证处理。
8.根据权利要求7的数据管理设备,其中只有当在整个所述n叉数据管理树中,从高层的级层开始向着低层的级层方向或者从低层的级层开始向着高层的级层方向上进行的所有所述数据验证过程中的所述验证数据与所述核对数据相匹配时,所述数据验证处理单元才确定没有数据被伪造。
9.根据权利要求1的数据管理设备,其中所述数据验证处理单元在整个所述n叉数据管理树中,从高层的级层开始向着低层的级层方向或者从低层的级层开始向着高层的级层方向上进行的所述数据验证处理,作为随着在所述n叉数据管理树中进行增加、删除、或修改数据操作的数据更新处理的一部分,并且只有当在所有所述数据验证过程中的所述验证数据与所述核对数据相匹配时才更新数据。
10.根据权利要求1的数据管理设备,其中作为随着向所述n叉数据管理树增加级层或从所述n叉数据管理树中删除级层的操作同时进行的用于修改级层结构的一部分,所述数据验证处理单元根据先更新数据进行数据验证处理,作为验证随着所述修改级层结构的处理同时进行的数据更新处理所需数据有效性的处理,并且只有当所述数据验证处理确定没有数据被伪造时,才允许进行所述修改级层结构的处理。
11.根据权利要求1的数据管理设备,其中:
所述数据验证处理单元被用于存储所述顶端数值作为管理数据验证值,其中该顶端数值被放置在所述n叉数据管理树的顶部作为通过使用所述不可逆函数进行计算的结果,还被用于存储所述n叉数据管理树的的中间级层上的中间数据作为另一个管理数据验证值;以及
为了验证包含在所述n叉数据管理树中作为从属于所述中间数据的数据的数据的有效性,所述数据验证处理单元通过使用所述中间数据作为管理数据验证值来进行数据验证处理。
12.根据权利要求1的数据管理设备,其中:
所述数据验证处理单元被用于存储多个计算结果,其中这些计算结果都由所述不可逆函数输出,因为数据管理树与所述计算结果一样多,并将其置于所述各个数据管理树的顶部,每一个都作为管理数据验证值;以及
为了验证包含在所述数据管理树中一个特定数据管理树中的数据的有效性,所述验证处理单元进行设置一个所述计算结果的数据验证处理,该结果是由所述不可逆函数输出的,并被放置在所述特定数据管理树的顶部,作为管理数据验证值。
13.根据权利要求1的数据管理设备,其中:
所述管理数据存储单元被用于存储加密的管理对象数据;以及
一个适用于加密或解密所述管理对象数据的密钥被存储在具有防止伪造结构的安全芯片的存储单元中。
14.根据权利要求1的数据管理设备,其中:
所述管理数据存储单元被用于存储加密后的管理对象数据;
用于对适于加密或解密所述管理对象数据的第一密钥进行加密的第二密钥被存储在具有防止伪造结构的安全芯片的存储单元中;以及
所述加密后的第一密钥通过使用所述第二密钥而在所述安全芯片中被解密,并且作为解密结果而得到的所述第一密钥被输出给所述安全芯片外部的部件。
15.根据权利要求1的数据管理设备,其中:
构成所述n叉数据管理树的各个节点都包括仅仅一个通过使用所述基于直接从属于所述节点的级层上的所述n个数据段的不可逆函数作为计算结果而被生成的数值;以及
所述数据验证处理单元进行处理,以确定是否验证数据与核对数据相匹配,其中:
所述验证数据是通过使用所述基于较低级层上的n段数据的不可逆函数进行计算的结果;
所述核对数据是唯一的一个已经被置于较高级层上的数值,作为所述不可逆函数的计算结果;以及
所述较低层的级层以及所述较高层的级层是所述n叉数据管理树中的任意两个级层,并且所述较低层的级层直接从属于所述较高层的级层。
16.一种数据管理方法,包括数据验证步骤,该步骤通过使用被置于n叉数据管理树顶部的顶端数值作为管理数据验证值来进行数据验证处理,其中n为大于或等于2的整数,其中:
所述n叉数据管理树包括位于所述n叉数据管理树最低层的级层上的所述管理对象数据以及位于所述n叉数据管理树较高层的任意特定级层上的数据,作为通过使用基于位于直接从属于所述特定级层的另一级层上的其它数据的不可逆函数来进行计算的结果;
所述顶端数值是通过使用基于位于所述n叉数据管理数最高层的级层上的数据的所述不可逆函数来进行计算的结果;以及
所述数据验证步骤包括:
确定从所述n叉数据管理树的顶端到最底层的所述管理对象数据、或从最底层的所述管理对象数据到所述n叉数据管理树的顶端的验证路径;以及通过确定沿由验证路径确定单元确定的所述验证路径,验证数据是否与核对数据逐个顺序匹配,进行验证所述数据验证处理;其中:
所述验证数据是通过使用基于提供在较低级层上数据的所述不可逆函数进行计算的结果;
所述核对数值就是已经被包括在较高级层上的数据列表上的数据,作为所述不可逆函数的计算结果;以及
所述较低级层和所述较高级层就是所述n叉数据管理树中任意的两个级层,其中所述较低级层被用作直接从属于所述较高级层。
17.根据权利要求16的数据管理方法,其中所述不可逆函数为散列函数。
18.根据权利要求16的数据管理方法,其中:
构成所述n叉数据管理树的节点就是包括n个数值的数据列表,其中每个数值都是作为通过使用所述基于直接从属于所述数据列表的级层上的所述n个数据段的不可逆函数作为计算结果而得到的;以及
在所述数据验证步骤,进行确定过程以确定在贯穿所述n叉数据管理树从高层的级层开始至底层的级层结束,或者从低层的级层开始至高层的级层结束的方向上是否验证数据与核对数据一个过程接着一个过程的顺序匹配,其中:
所述验证数据是通过使用基于提供在较低级层上数据的所述不可逆函数进行计算的结果;
所述核对数值就是已经被包括在较高级层上的数据列表上的数据,作为所述不可逆函数的计算结果;以及
所述较低级层和所述较高级层就是所述n叉数据管理树中任意的两个级层,其中所述较低级层被用作直接从属于所述较高级层。
19.根据权利要求16的数据管理方法,其中所述数据管理方法还包括步骤:根据被用作每个级层上数据列表的标识的列表指数j并且根据被用作每个数据列表上不可逆函数计算结果的标识的不可逆函数指数k,在整个所述n叉数据管理树中确定一个验证路径,该路径从高层的级层开始向着低层的级层方向或者从低层的级层开始向着高层的级层方向,在所述数据验证步骤,对所述确定验证路径上的数据进行所述数据验证处理。
20.根据权利要求16的数据管理方法,其中所述数据验证处理在整个所述n叉数据管理树中,从高层的级层开始向着低层的级层方向或者从低层的级层开始向着高层的级层方向上进行的所述数据验证处理,作为随着在所述n叉数据管理树中进行增加、删除、或修改数据操作的数据更新处理的一部分,并且只有当在所有所述数据验证过程中的所述验证数据与所述核对数据相匹配时才更新数据。
21.根据权利要求16的数据管理方法,其中作为随着向所述n叉数据管理树增加级层或从所述n叉数据管理树中删除级层的操作同时进行的用于修改级层结构的一部分,进行基于先更新数据的数据验证处理,以验证随着所述修改级层结构的处理同时进行的数据更新处理所需数据的有效性,并且只有当所述数据验证处理确定没有数据被伪造时,才允许进行所述修改级层结构的处理。
22.根据权利要求16的数据管理方法,其中在所述数据验证步骤,为了验证包含在所述n叉数据管理树中作为从属于所述中间数据的数据的有效性,通过使用所述n叉数据管理树中间层的级层上的中间数据作为管理数据验证值来进行数据验证处理。
23.根据权利要求16的数据管理方法,其中,在所述数据验证步骤,进行一个过程以确定是否验证数据与核对数据相匹配,其中:
所述验证数据是通过使用基于提供在较低级层上的n段数据的所述不可逆函数进行计算的结果;
所述核对数值就是已经被置于较高级层上的唯一的一个数值,作为所述不可逆函数的计算结果;以及
所述较低级层和所述较高级层就是所述n叉数据管理树中任意的两个级层,其中所述较低级层被用作直接从属于所述较高级层。
CNB2004100684799A 2003-07-10 2004-07-12 数据管理设备,数据管理方法以及计算机程序 Expired - Fee Related CN1276364C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2003272815A JP2005032130A (ja) 2003-07-10 2003-07-10 データ管理装置、およびデータ管理方法、並びにコンピュータ・プログラム
JP2003272815 2003-07-10

Publications (2)

Publication Number Publication Date
CN1577298A CN1577298A (zh) 2005-02-09
CN1276364C true CN1276364C (zh) 2006-09-20

Family

ID=33448056

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100684799A Expired - Fee Related CN1276364C (zh) 2003-07-10 2004-07-12 数据管理设备,数据管理方法以及计算机程序

Country Status (6)

Country Link
US (1) US7539877B2 (zh)
EP (1) EP1496422A3 (zh)
JP (1) JP2005032130A (zh)
KR (1) KR20050007164A (zh)
CN (1) CN1276364C (zh)
TW (1) TWI270017B (zh)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060218176A1 (en) * 2005-03-24 2006-09-28 International Business Machines Corporation System, method, and service for organizing data for fast retrieval
US8019988B2 (en) * 2005-08-22 2011-09-13 The State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of The University Of Oregon Security protocols for hybrid peer-to-peer file sharing networks
JP4851464B2 (ja) * 2005-10-05 2012-01-11 パナソニック株式会社 ライセンス管理システム
US20070115927A1 (en) * 2005-11-04 2007-05-24 Sbc Knowledge Ventures, Lp Click to initiate secure network service
US7624276B2 (en) * 2006-10-16 2009-11-24 Broadon Communications Corp. Secure device authentication system and method
EP3010174A1 (en) * 2006-11-07 2016-04-20 Security First Corp. Systems and methods for distributing and securing data
DE102007008293B4 (de) * 2007-02-16 2010-02-25 Continental Automotive Gmbh Verfahren und Vorrichtung zum gesicherten Speichern und zum gesicherten Lesen von Nutzdaten
JP2008250903A (ja) * 2007-03-30 2008-10-16 Toshiba Corp ファイル更新装置、プログラム及び方法
JP2008306395A (ja) * 2007-06-06 2008-12-18 Canon Inc 情報処理装置、情報処理方法
WO2010097942A1 (ja) 2009-02-27 2010-09-02 富士通株式会社 電子署名プログラム、電子署名装置、および電子署名方法
KR101532363B1 (ko) * 2009-06-25 2015-06-30 삼성전자주식회사 다중 액세스 레벨을 갖는 반도체 장치 및 그것의 액세스 제어 방법
US9553728B2 (en) * 2011-02-25 2017-01-24 Nokia Technologies Oy Method and apparatus for providing end-to-end security for distributed computations
CN103207959A (zh) * 2012-01-13 2013-07-17 宇龙计算机通信科技(深圳)有限公司 一种基于文件系统的数据卡的保密方法及系统
CN103793391B (zh) * 2012-10-30 2017-03-01 宏碁股份有限公司 远端动态数据的处理与验证方法和系统
US9575772B2 (en) * 2012-12-20 2017-02-21 Sap Se Model-based user interface
US10430599B1 (en) * 2014-06-30 2019-10-01 EMC IP Holding Company LLC Filekey access to data
CN104852922B (zh) * 2015-05-26 2018-10-02 陈彬 基于分布式文件系统的大数据加解密方法
US9645922B2 (en) * 2015-09-10 2017-05-09 HoneycombData Inc. Garbage collection in SSD drives
CN105641930B (zh) * 2015-12-28 2019-05-14 网易(杭州)网络有限公司 游戏数据的校验方法及装置
PL3590242T3 (pl) * 2017-03-02 2022-01-31 Actility Interfejs komunikacyjny dla sieci rozległej małej mocy, urządzenie bezprzewodowe i serwer wykorzystujący taki interfejs komunikacyjny
US10713348B2 (en) * 2017-04-14 2020-07-14 Microchip Technology Incorporated System, method, and apparatus for touch panel security
TWI715036B (zh) * 2019-05-15 2021-01-01 宏碁股份有限公司 檔案驗證方法、檔案驗證系統與檔案驗證伺服器
US11455391B2 (en) 2020-10-28 2022-09-27 International Business Machines Corporation Data leakage and misuse detection
WO2024057411A1 (ja) * 2022-09-13 2024-03-21 日本電気株式会社 メモリ更新装置、情報処理システム、メモリ更新方法及びコンピュータ可読媒体

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5231666A (en) * 1992-04-20 1993-07-27 International Business Machines Corporation Cryptographic method for updating financial records
US6754661B1 (en) * 1999-07-13 2004-06-22 Microsoft Corporation Hierarchical storage systems for holding evidentiary objects and methods of creating and operating upon hierarchical storage systems
US7043488B1 (en) * 2000-01-21 2006-05-09 International Business Machines Corporation Method and system for storing hierarchical content objects in a data repository
JP2002215029A (ja) * 2001-01-22 2002-07-31 Seiko Epson Corp 情報認証装置及びこれを使用したデジタルカメラ
US7043637B2 (en) * 2001-03-21 2006-05-09 Microsoft Corporation On-disk file format for a serverless distributed file system
US7478243B2 (en) * 2001-03-21 2009-01-13 Microsoft Corporation On-disk file format for serverless distributed file system with signed manifest of file modifications
US7062490B2 (en) * 2001-03-26 2006-06-13 Microsoft Corporation Serverless distributed file system
US7062493B1 (en) * 2001-07-03 2006-06-13 Trilogy Software, Inc. Efficient technique for matching hierarchies of arbitrary size and structure without regard to ordering of elements
US7058639B1 (en) * 2002-04-08 2006-06-06 Oracle International Corporation Use of dynamic multi-level hash table for managing hierarchically structured information
US7412449B2 (en) * 2003-05-23 2008-08-12 Sap Aktiengesellschaft File object storage and retrieval using hashing techniques

Also Published As

Publication number Publication date
EP1496422A3 (en) 2007-04-25
KR20050007164A (ko) 2005-01-17
EP1496422A2 (en) 2005-01-12
US7539877B2 (en) 2009-05-26
CN1577298A (zh) 2005-02-09
TWI270017B (en) 2007-01-01
US20050065943A1 (en) 2005-03-24
JP2005032130A (ja) 2005-02-03
TW200515241A (en) 2005-05-01

Similar Documents

Publication Publication Date Title
CN1276364C (zh) 数据管理设备,数据管理方法以及计算机程序
CN1211975C (zh) 信息管理系统和方法
CN1310462C (zh) 通过对数据加密来保护数据的数据保护系统
CN1203639C (zh) 信息处理系统及方法
CN1396568A (zh) 数字作品保护系统、记录媒体装置、发送装置和重放装置
CN1270246C (zh) 信息处理设备和方法
CN1207894C (zh) 数据隐藏和抽取方法、系统和电路
CN1269333C (zh) 信息处理方法和装置
CN1476580A (zh) 内容使用权管理系统和管理方法
CN1516837A (zh) 信息处理设备、方法、记录介质和程序
CN1274107C (zh) 加密数据分发系统
CN1901446A (zh) 使用了加密密钥组的信息处理系统及方法
CN1426642A (zh) 信息处理系统及方法
CN1545676A (zh) 信息处理装置和方法、程序存储介质及程序
CN101053200A (zh) 信息处理设备、信息存储媒体、内容管理系统、数据处理方法、以及计算机程序
CN1389042A (zh) 使用了加密密钥组的信息处理系统及方法
CN101047495A (zh) 用于传送数据的方法和系统
CN1682174A (zh) 组形成/管理系统,组管理装置,以及成员装置
CN1463515A (zh) 信息处理装置
CN1940952A (zh) 用于管理内容数据的系统和装置
CN1571959A (zh) 信息处理设备、信息处理方法和计算机程序
CN1460225A (zh) 数据处理系统、存储设备、数据处理装置、及数据处理方法、以及程序
CN1292357C (zh) 信息存储设备、存储器存取控制方法
CN101048765A (zh) 机密信息处理设备
CN1736082A (zh) 分组许可系统以及其服务器及客户端

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20060920