加密和认证数据以及解密和验证数据真实性的方法和装置的制作方法

文档序号:6562236阅读:293来源:国知局
专利名称:加密和认证数据以及解密和验证数据真实性的方法和装置的制作方法
技术领域
本发明涉及一种用于加密和认证数据的方法、一种用于解密数据和验证数据的真实性的方法、一种用于生成标记认证树的方法,以及一种用于解密标记树的加密认证标记和验证其真实性的方法。这些方法可以在例如逐块存储数据的存储介质中使用。
背景技术
文件系统将数据组织成一组文件和一目录层次结构,以便在可以是硬盘或其他存储介质的存储设备上存储。因为存储设备的存储空间典型地是以块构成的,目录连同文件一起被逐块存储到存储设备上。存储介质可能被暴露给来自第三方的未授权的访问,并且在这种情况下,存储数据的机密性和/或完整性或真实性可能会遭到破坏。为了保护数据免遭这样的破坏,密码文件系统采用基于公钥签名、消息认证码或散列法的加密和密码认证。于是,维持存储数据的机密性和完整性的问题便可以被缩减为维持相应的加密钥和认证值的机密性和完整性。
M.Blaze在1993年的Proc.1stACM Conference on Communicationsand Computing Security中的“A cryptographic file system for Unix”中描述了称为CFS的密码文件系统,其通过在将数据存储到磁盘上之前使用块密码(block cipher)加密数据来保护机密性。为了加密长数据流,块密码使用链接模式(chaining mode),例如A.J.Menezes,P.C.van Oorschot和S.A.Vanstone在“Handbook of Applied Cryptography”(Boca Raton,FLCRC Press,1997)中描述的用于拼接加密块的称为CBC模式的密码块链接模式,或称为OFB模式的输出反馈模式,以避免关于明文数据的信息可能从密文变得显而易见。根据设计,仅可以从开始到结束顺序地读取和写入这样的流。因为文件系统需要随机地访问加密文件,密码文件系统不应该在一个单元中加密整个文件,而应是一次仅一个存储块。由于密码的块尺寸典型地是8或16字节,它远小于存储设备典型地是512或4096字节的块尺寸。因此,这仍旧需要链接模式。
为了保护密码文件系统的机密性和完整性,可以使用用于该目的的散列树。Merkle在美国专利US4309569中提出了用于认证数据的散列树。散列磁盘块上的(加密)数据并且将得到的散列值指派给散列树中的叶。这意味着存储数据被加密并且被散列。在利用块加密链接模式所获得的加密数据即密文上计算散列树。这样,机密性和完整性保护之间相互正交,并且因此,能够读访问文件的客户机不能修改它的内容。另一方面,这是昂贵且耗时的,因为它涉及在每一个存储块上读取和写入两遍一遍用于使用块密码链接模式加密,以及一遍用于计算散列值。

发明内容
本发明的目标是提供一种用于加密和认证数据的方法、一种用于解密数据和验证数据的真实性的方法、一种用于生成标记认证树的方法、以及一种用于解密标记树的加密标记和验证其真实性的方法,其有效、省时并且易于实现。
根据本发明的一方面,通过具有独立权利要求1的特征的用于加密和认证数据的方法实现所述目标。
根据本发明用于加密和认证数据的方法包括以下步骤在第一步中,通过认证加密从一个或多个明文数据块生成密文数据块以及相应的认证标记。在另一步骤中,通过认证标记生成标记树。
根据本发明的另一方面,通过具有独立权利要求5的特征的用于解密数据和验证数据的真实性的方法实现所述目标。
根据本发明用于解密数据和验证数据的真实性的方法包括以下步骤在第一步中,通过认证解密从一个或多个密文数据块以及相应的来自标记树的认证标记生成明文数据块和验证值。在另一步骤中,通过根标记验证认证标记,并且如果验证值以及认证标记的验证证实了数据和认证标记的真实性,那么输出明文数据块。
根据本发明的另一方面,通过具有独立权利要求7的特征的用于生成标记认证树的方法实现所述目标。
根据本发明用于生成标记认证树的方法包括以下步骤在第一步中,通过认证加密从明文数据块生成认证标记。在另一步骤中,将认证标记拼接为拼接认证标记。通过认证加密从拼接认证标记生成加密认证标记和用于认证加密认证标记的认证标记。
根据本发明的另一方面,通过具有独立权利要求9的特征的用于解密标记树的加密认证标记和验证其真实性的方法实现所述目标。
根据本发明用于解密标记树的加密认证标记和验证其真实性的方法包括以下步骤在第一步中,通过认证解密从加密认证标记和父认证标记生成解密认证标记和标记验证值。在另一步骤中,通过认证解密从一个或多个密文数据块生成明文数据块和比较标记。如果标记验证值以及比较标记的验证证实了数据和认证标记的真实性,那么输出明文数据块。
本发明的有利的进一步展开来自于专利从属权利要求中所指出的特征。
优选地,在根据本发明用于加密和认证的方法中,标记树包括标记树数据和代表根认证标记的数据,其中标记树数据被存储在不可信存储器中,并且代表根认证标记的数据被存储在可信存储器中。
在根据本发明用于加密和认证的方法的实施例中,密文数据块被存储在不可信存储器中。
在根据本发明用于加密和认证的方法的另一实施例中,认证加密由AES(高级加密标准(Advanced Encryption Standard))在IAPM(完整性感知可并行模式(Integrity Aware Parallelizable Mode))、OCB(偏移码本模式(Offset Codebook Mode))或GCM(伽罗瓦/计数器模式(Galois/Counter Mode))操作模式中实现。这些操作模式之一还可以用于例如在用于解密数据和验证数据的真实性的方法中的认证解密。
在根据本发明用于生成标记认证树的方法的实施例中,加密认证标记被存储在不可信存储器中,并且最后生成的认证标记被存储在可信存储器中。
在根据本发明用于解密标记树的加密认证标记和验证其真实性的方法的实施例中,比较标记之一的验证包括比较标记与相应的解密认证标记的比较。
最后,在根据本发明的这些方法中,不可信和/或可信存储器可以优选地是以块构成的存储器。
此外,可以提供计算机程序元件,其包括在被装载进计算设备的数字处理器的时候用于执行根据以上所提方法之一的步骤的计算机程序代码。
另外,可以提供存储在计算机可用介质上的计算机程序产品,其包括用于使计算设备执行所提方法之一的计算机可读程序代码。


通过参照下面对依据本发明的目前是优选的但仍然是示例性的实施例的详细描述并结合附图,本发明及其实施例将得到更为全面的理解。
附图示出了图1是根据本发明用于加密和认证数据的方法的流程图;图2是标记树;图3是根据本发明用于解密数据和验证数据真实性的方法的流程图;图4是根据本发明用于使用认证加密生成标记认证树的叶节点和内部节点的方法的流程图的第一部分;图5是生成标记认证树的根节点的方法的流程图的第二部分;图6是根据本发明用于解密标记认证树的标记和验证其真实性的方法的流程图。
具体实施例方式
为了使对根据本发明的方法的解释保持简单,图1以及图3到图6的流程图示出了简单扼要的例子。然而本发明并不限定为该例子,并且特别地不限定为如图2中所描述的具有8个标记的标记树。根据本发明的方法可以应用于具有任意数目的节点或标记以及任意数目的对于父节点的子节点的标记树。
图1中的流程图描述了根据本发明用于数据加密和数据认证的方法的实施例。此外,该流程图示出了为了确保当将数据存储到不可信存储设备上的时候数据的机密性和完整性,该如何处理数据。通过数据加密实现数据的机密性并且通过数据认证实现数据完整性的保护。
举例来说,明文数据块可以是未加密或预先加密格式的文本数据、图像数据、音乐数据或任何其他数据。预先加密的明文通过与根据本发明的方法无关的方式而被加密。因此,根据本发明的方法没有关于先前加密和加密状态的知识。所以,该数据被当作未加密的来处理。即已预先加密的数据被根据本发明的方法当作明文处理。密文数据块是由明文数据块导出的加密格式的数据块。密文数据块被逐块存储到例如硬盘的存储器上。
多个明文,即未加密数据块P1、P2至Pi由认证加密过程S1处理。认证加密过程S1在也提供数据认证的诸如IAPM、OCB或GCM的操作模式下使用诸如AES的用于加密的块密码。可以在2001年11月美国国家标准与技术研究所(NIST)联邦信息处理标准(FIPS)出版物197“Advanced Encryption Standard(AES)”中找到有关高级加密标准(AES)的更多的信息。可以在C.Jutla的题为“Symmetric key authenticatedencryption schemes”的美国专利6 963 976中找到有关完整性感知可并行模式(IAPM)的更多的信息。可以在网页http://www.cs.ucdavis.edu/~rogaway/ocb/上以及在P.Rogaway的题为“Method and apparatus for facilitating efficient authenticatedencryption”的美国专利2002 0071552 A1中找到有关偏移码本模式(OCB)的另外的信息。可以在McGrew,D.和J.Viega于2004年1月提交给NIST的“The Galois/Counter Mode of Operation(GCM)”中以及http://csrc.nist.gov/CryptoToolkit/modes/proposedmodes/gcm/gcm-spec.pdf的网页上找到有关GCM的更多的信息。认证加密过程S1获取例如明文数据块P1和(短)秘密密钥K作为输入并输出密文,即加密数据块C1,以及(短)认证标记1。得到的密文数据块C1通常具有与明文数据块P1相同的长度。具有相同的密钥K的认证加密S1被应用于剩余的明文数据块P2至Pi,并且为每一明文数据块P2至Pi产生相应的密文数据块C2至Ci以及认证标记2至标记i。在这样做时,没有必要以特定的顺序加密和认证明文数据块P1至Pi。密文数据块C1至Ci被存储在不可信存储器1上。
认证标记1至i是标记树3的输入,标记树3也被称为标记认证树。图2中描述了标记树3的例子。根据作为输入值的标记以与Merkle树相同的方式构造标记树3。Merkle树是为每一节点指派字符串的k元树,从而使得父节点的值是子节点值的单向函数。一旦直接一组子节点的所有标记值可用,就可以通过应用消息认证码或散列方法来对直接子节点的父节点求值。类似地,k个父节点是对于下一级父节点的子节点,并且一旦它们可用便可以被求值。最后的父节点,即树中最高的节点是根标记值并且被存储在可信存储设备上。可以在美国专利US4309569中找到有关构造Merkle树的更多的信息。Merkle树的构造可以包括使用无冲突散列函数(“无冲突”是对散列函数的安全需要)。标记树构造输出标记树数据和根标记值。标记树数据可以被存储在不可信存储器上,但根标记值却被存储在可信存储器上。该过程的目的是在后面的阶段从密钥的机密性和根标记值的完整性导出数据块的完整性。这可以例如通过仅将密钥和根标记值存储在可信存储空间中来确保。
图3中的流程图描述了根据本发明用于数据解密和数据验证的方法的实施例。特别地,图3中的流程示出了如何处理存储在不可信存储空间1上的、并且先前已对其应用过如图1中所描述的完整性和机密性保护的数据,以便解密数据和验证数据的真实性。
如图3所示,密文数据块C1至Ci由认证解密过程处理。认证解密过程是图1的认证加密过程的反向操作。它获取密文数据块C1...Ci之一、(短)秘密密钥K、以及相应的认证标记作为输入,并输出明文数据块P1...Pi以及可以是真或假的二元验证值V1...Vi。验证值V1...Vi指示输出明文数据块的完整性是否得到保持,或者自通过认证加密过程应用完整性保护的时间以来密文数据块C1...Ci或相应的认证标记是否已被修改。首先,在认证解密过程中,从不可信存储器1读取例如密文数据块Cx,从可信存储器2读取秘密密钥K以及相应的认证标记x。然后,对其应用认证解密过程S2并且输出明文数据块Px和二元验证值Vx。将认证解密过程S2应用于剩余的密文数据块C1至Ci,并且针对每一密文块C1至Ci产生明文块P1至Pi以及验证值V1至Vi。在这样做时,没有必要以特定的顺序执行密文数据块C1至Ci的解密和验证。
标记树数据3、根标记值和秘密密钥K用作标记认证树3的验证过程S3的输入。因此,从不可信存储器1读取标记树数据3,并且从可信存储器2读取根标记值。如果标记树数据3被加密,那么将秘密密钥K存储在可信存储器2上并从那里读取。
下面通过举例的方式进一步解释图3的流程图。在步骤S3中进行已从不可信存储器1读取的标记x的验证,从而在考虑标记x以及标记树3的其他相关标记的情况下再次计算根标记值。在标记认证树验证中,可以以与相对于US4309569中所描述的Merkle树中根散列值验证叶节点相同的方式相对于根标记值验证标记x。如果标记x和标记树的验证S3分别是成功的,即如果标记x已被认证,那么将布尔标记验证值TVx设置为真。
如果来自相应的密文数据块Cx的认证解密过程S2的验证值Vx以及来自标记树的验证S3的标记验证值TVx二者均为真(步骤S4),那么返回明文数据块Px作为输出(步骤S5)。否则,假定解密密文数据块Cx的完整性已遭到破坏并且返回错误(S6)。
将标记树验证S3应用于剩余的标记1至i,并且针对每一验证的标记1至i产生相应的布尔标记验证值TV1至TVi。每次当标记验证值TV和验证值V为真的时候,就返回相应的明文数据块。
认证解密过程S2可以在例如上面所提到的诸如IAPM、OCB或GCM的操作模式中的一种下使用AES,以便进行数据解密并且也进行数据认证。从原理上讲,IAMP、OCB和GCM模式下的AES可以用于认证加密并且也可以用于认证解密。
图4中的流程图说明了如何使用认证加密实现标记认证树。在标记认证树中,由标记值代表每个节点。
图4的下部示出了用于构造标记认证树的标记认证树的叶节点的导出。从明文数据块的认证加密导出叶节点的标记值。例如,认证加密S7加密明文数据块P1并由此生成密文数据块C1和认证标记1.1,如以上图1所提到的。密文数据块C1被存储在不可信存储器1中。认证标记1.1被用作认证树中叶节点的标记值。以相同的方式构造包括标记1.2至1.i的认证树剩余的叶节点。
图4的上部举例说明了标记认证树4的两个内部节点的导出。代表叶节点中的一些的标记值标记1.1......标记1.k被拼接到一起而成为明文标记1,在图4中由标号PT1指示,并且其通过认证加密过程S8而被处理。认证加密过程S8使用秘密密钥K作为输入以加密明文标记1(PT1)。认证加密S8输出包含来自子节点的加密标记值标记1.1...标记1.k的密文标记1,以及认证标记2.1。密文标记1被存储在不可信存储器1中。认证标记2.1被进一步与认证标记2.2至2.k拼接为明文标记2,其是父节点的认证加密S9的输入。认证加密S9输出包含加密标记值标记2.1...标记2.k的密文标记2。此外,认证加密S9输出认证标记3.1。
图5中的流程图说明了可如何使用认证加密导出标记认证树的根标记值。标记值标记d-2.1至标记d-2.k代表子节点或第三高层的节点。它们被拼接到一起成为明文标记d-2,在图5中由标号PTd-2指示,并且其通过认证加密过程S10而被处理。认证加密过程S10使用秘密密钥K加密明文标记d-2(PTd-2)。认证加密S10输出包含加密标记值标记d-2.1...标记d-2.k的密文标记d-2,以及认证标记d-1.1。密文标记d-2被存储在不可信存储器中。认证标记d-1.1被进一步与相同层的认证标记d-1.2至d-1.k拼接为明文标记d-1(PTd-1),其是父节点的认证加密过程S11的输入。认证加密S11输出包含加密标记值标记d-1.1至标记d-1.k的密文标记d-1。此外,认证加密S11输出称为根标记的认证标记,其代表标记认证树中的根节点或最高的节点。
下面解释用于解密根据图4和图5的标记认证树的标记和验证其真实性的方法。因此,图6中的流程图说明了如何使用认证解密来处理标记认证树以便解密数据和验证数据块的真实性。如图6中所描述,在步骤S12中,认证解密获取密钥K、密文标记2、以及在这种情况下是父节点的标记3.1作为输入,并生成明文标记2和布尔标记验证值TV2作为输出。在标记验证值TV2不正确的情况下立即返回输出错误(步骤S20)。否则,将标记验证值TV2归类为正确的并且继续验证过程。明文标记2被拆分成标记2.1至2.k作为下一认证解密过程S14的输入。认证解密S14获取密钥K、密文标记1、以及在这种情况下是父节点的标记2.1作为输入并生成明文标记1(PT1)和布尔标记验证值TV1作为输出。在步骤S15中,检查标记验证值TV1是否正确。如果标记验证值TV1不正确,即标记2.1的验证失败,那么立即返回输出错误(步骤S20)。否则,将标记验证值TV2归类为正确的并且继续验证过程。
如果标记认证树最后的认证解密步骤S16是正确的,那么将给定的认证标记1.x与从相应的密文数据块x的认证解密过程S16获得的候选标记CTx进行比较。比较S17产生比较验证值CV。如果密文标记1的认证解密S14的标记验证值TV1和比较验证值CV二者都正确,那么在步骤S19返回相应的明文数据块。否则返回输出错误(步骤S20)。
已经说明和描述了新颖的方法及其装置的优选的实施例,应当注意到,可以在不背离本发明的精神或所附权利要求的范围的情况下对所述方法和所述装置进行改变和修改。
权利要求
1.一种用于加密和认证数据的方法,包括以下步骤通过认证加密(S1)从一个或多个明文数据块(P1-Pi)生成密文数据块(C1-Ci)和相应的认证标记(标记1-标记i);以及通过所述认证标记(标记1-标记i)生成标记树(3)。
2.根据权利要求1的方法,其中,所述标记树(3)包括标记树数据和代表根认证标记(根标记)的数据;其中,所述标记树数据被存储在不可信存储器(1)中;并且其中,所述代表根认证标记(根标记)的数据被存储在可信存储器(2)中。
3.根据权利要求2的方法,其中,所述密文数据块(C1)被存储在所述不可信存储器(1)中。
4.根据前述权利要求1至3中任何一项的方法,其中,所述认证加密(S1)由高级加密标准使用完整性感知可并行模式、偏移码本模式或伽罗瓦/计数器模式实现。
5.一种用于解密数据和验证数据的真实性的方法,包括以下步骤通过认证解密(S2)从一个或多个密文数据块(C1-Ci)和相应的来自标记树(3)的认证标记(标记1-标记i)生成明文数据块(P1-Pi)和验证值(V1-Vi);通过根标记验证所述认证标记(标记1-标记i);以及如果所述验证值(V1-Vi)以及所述认证标记(标记1-标记i)的验证证实了所述数据和所述认证标记(标记1-标记i)的真实性,那么输出所述明文数据块(P1-Pi)。
6.根据权利要求5的方法,其中,所述认证解密(S2)由高级加密标准、完整性感知可并行模式、偏移码本模式或伽罗瓦/计数器模式实现。
7.一种用于生成标记认证树的方法,包括以下步骤通过认证加密(S7)从明文数据块(P1-Pk)生成认证标记(标记1.1-标记1.k);将所述认证标记(标记1.1-标记1.k)拼接为拼接认证标记(PT1);以及通过认证加密(S8)从所述拼接认证标记(PT1)生成加密认证标记(密文标记1)和认证标记(标记2.1-标记2.k)。
8.根据权利要求7的方法,其中,所述加密认证标记(密文标记1、密文标记2)被存储在不可信存储器(1)中;并且其中,最后生成的认证标记(根标记)被存储在可信存储器(2)中。
9.一种用于解密标记树的加密认证标记和验证其真实性的方法,包括以下步骤通过认证解密(S12)从加密认证标记(密文标记2)和父认证标记(标记3.1)生成解密认证标记(标记2.1-标记2.k)和标记验证值(TV1-TVk);通过认证解密(S16)从一个或多个密文数据块(C1-Ck)生成明文数据块(P1-Pk)和比较标记(CT1-CTk);如果所述标记验证值(TV1-TVk)以及所述比较标记(CT1-CTk)的验证证实了所述数据和所述解密认证标记(标记2.1-标记2.k)的真实性,那么输出所述明文数据块(P1-Pk)。
10.根据权利要求9的方法,其中,所述比较标记(CT1-CTk)之一的验证包括将所述比较标记(CTx)与相应的解密认证标记(标记1.x)进行比较。
11.根据前述权利要求1至10中任何一项的方法,其中,按块构成的存储器被用作不可信和/或可信存储器(1;2)。
12.一种计算机程序元件,包括在被装载进计算设备的数字处理器中的时候用于执行根据如前述权利要求1至11中任何一项所述的方法的步骤的计算机程序代码。
13.一种存储在计算机可用介质上的计算机程序产品,包括用于使计算设备执行根据权利要求1至11中任何一项的方法的计算机可读程序代码。
14.一种用于加密和认证数据的装置,包括生成器,用于通过认证加密(S1)从一个或多个明文数据块(P1-Pi)生成密文数据块(C1-Ci)和相应的认证标记(标记1-标记i);以及通过所述认证标记(标记1-标记i)生成标记树(3)。
全文摘要
一种用于加密和认证数据的方法,包括以下步骤首先,通过认证加密(S1)从一个或多个明文数据块(P1-Pi)生成密文数据块(C1-Ci)和相应的认证标记(标记1-标记i)。然后,通过所述认证标记(标记1-标记i)生成标记树(3)。所述密文数据块(C1-Ci)和所述标记树(3)的标记树数据被存储在不可信存储器(1)中,并且所述标记树(3)的根标记被存储在可信存储器(2)中。
文档编号G06F21/00GK101043334SQ20061013931
公开日2007年9月26日 申请日期2006年9月22日 优先权日2005年12月23日
发明者C·卡金, R·A·普赖特卡, P·T·赫尔利 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1