用于数据处理系统的有效加密和认证的制作方法

文档序号:7761218阅读:765来源:国知局
专利名称:用于数据处理系统的有效加密和认证的制作方法
技术领域
本发明涉及数据处理系统领域,尤其涉及在数据处理系统中提高安全性。
背景技术
在多种不同的领域中,诸如电子商务、通信和广播,安全是一个主要关注的问题。 安全性措施提供可说明性、公正性、精确性、机密性、可操作性和其它这些领域中的数据处 理系统和信息系统所期望的准则。提供这种安全性的加密方法通常根据两个目的来归类 加密和认证。加密是使得数据对未被认证方不可读的技术。认证是验证数据完整性的技术。 验证数据的完整性涉及验证数据作者的身份和/或验证数据是否被改变。加密系统通常被称为密码系统并具有对称或非对称的性质。对称加密系统使用密 钥来加密信息并使用相同的密钥来解密经加密的信息。非对称加密系统,诸如公开密钥密 码系统,使用第一密钥来加密信息并使用不同的密钥来解码经加密的信息。在许多对称密码系统中,一密钥被用作加密功能,一分开的密钥被用作认证功能。 因此在使用对称密码系统的数据处理系统中,加密和认证是作为两个独立的实体来执行 的。由于认证需要大约与加密相同的处理功率,总的处理量等于两次加密数据所需的处理 量。在运作在有限功率或有限硬件环境中的数据处理系统中,诸如蜂窝电话、个人数字助理 或其它可携带的通信设备,所期望的是具有可以将加密和认证作为单个实体来执行的密码 系统,以此来降低设备上计算负载或增加设备执行加密和认证的速度。在Springer-Verlag 2001 的“计算机科学”第 2045 卷中的讲稿 EUR0CRYPT 2001 “密码术的发展”中由 Charanjit Jutla 所著的论文“Encryption Modes withAlmost Free Message Integrity”中,提出了可以以与单独加密需要差不多的处理方式来加密消 息和认证经加密的消息的密码系统。换而言之,加密和认证可以作为单个功能实体被有效 地执行。因此,降低了提供安全性所需的处理资源量。Jutla密码系统被设计成加密所有要发送的数据。然而,在某些应用中,消息的所 有数据必须被加密的要求是不希望的。例如,在诸如IPSec等通信协议中,加密所有的数据 不是有效的。数据的头部必须未经加密发送用于寻址。IPSec的原理是在题为“Security Architecture for Internet Protocol" ^ RFC 1825>H^j"IP Authentication Header" 的 RFC 1826 和题为 ‘‘IP Encapsulating SecurityPayload(ESP),,的 RFC 1827 中规定,所 有这些是由R. Atkinson在1995年8月提交的。因此,需要一种用于加密和认证数据的安全有效的系统,其中不是消息的所有数 据比特都需要被加密。

发明内容
这里提出了解决上述需要的方法和装置。特别地,提出了允许数据消息的某些部 分以明文发送,数据消息的某些部分以密文发送,并且使用单一的认证标记来验证数据消 息的明文部分和密文部分的方法和装置。一方面,提出了作为单个实体加密和认证数据的方法,所述方法包含将数据安排 到多个明文块中,每个明文块根据密码块大小来定尺寸;指定至少一个明码(Cleartext) 位置,对此至少一个密文块与相应的明文块一样;确定多个使用临时值和第一密钥的噪声 块;确定多个中间密文块,其中第一中间密文块对应于经加密的临时值,且剩余的中间密文 通过用第二密钥加密多个中间明文块来迭代地计算,其中每个中间明文块是多个明文块中 一个和前一中间密文块的组合;通过使用多个中间密文块和多个噪声块来确定多个密文 块,其中第一密文块与第一中间密文块相同,而剩余的密文块通过将相应的中间密文块和 相应的噪声块相组合来获取;基于多个明文块和对应于最后一个明文块的中间密文块来计 算输入校验和值;基于多个密文块和一个噪声块来计算输出校验和值;通过用第二密钥加 密输入校验和值并将经加密的输入校验和值和输出校验和组合来计算认证标记;用相应的 明文块来代替由明码位置指定的多个密文块的每一个;以及添加认证标记。在另一方面,提出了解密和验证伴有认证标记的多个数据块的方法,其中定义了 一组明码位置,所述方法包含使用临时值和第一密钥来确定多个噪声块;将未由该组明 码位置中的明码位置所指定的多个数据块的每个与相应的噪声块组合,用以确定多个中间 密文块;指定由该组明码位置中的明码位置确定的多个数据块的每个为多个明文块中的明 文块;对于该组明码位置中的每个明码位置,将相应的明文块与先前中间密文块组合以形 成中间明文块,并且加密该中间明文块来形成对应于该明码位置的中间密文块;对于不在 该组明码位置的每个位置,解密相应的中间密文块以形成相关联的中间明文块,并且将相 关联的中间明文块和先前的中间密文块组合用以为不在该组明码位置中的每个位置形成 一明文块;确定多个次要密文块,其中多个次要密文块的每个对应于该组明码位置中的明 码位置,并且是通过将相应的中间密文块和相应的噪声块相组合而形成;通过将最后一个 中间密文块和不是由该组明码位置中的明码位置指定的多个数据块组合来计算输入校验 和值;通过将噪声块和多个次要密文块组合来计算输出校验和值;以及验证认证标记。在另一方面,提出了安全的数据传输的方法;其中第一部分的数据传输是作为明 文发送的,第二部分的数据传输是作为密文发送的,并且所有的数据传输是经过认证的,所 述方法包含生成一组明码位置;将第一部分数据传输和第二部分数据传输加密为密文, 其中所述第一部分数据传输由该组明码位置指定,而第二部分数据传输不与该组明码位置 中任一相关联;使用不与该组明码位置中任一相关联的数据传输来生成输入校验和值;使 用第一部分数据传输的密文来生成输出校验和值;使用输入校验和值和输出校验和值来生 成认证标记;以及发送该明文、密文和认证标记,其中所述明文是由该组明码位置指定的数 据传输的第一部分。在另一方面,提出了解密和验证多个接收到的传输块的方法,所述方法包含确定 多个接受到的传输块的每个是否是由来自一组明码位置的明码位置所指定的;解码多个接 收到的传输块,所述解码包含如果不是由明码位置所指定的,那么就生成一组中间密文 块,解密该组中间密文块以生成一组中间明文块,并生成一组明文块;如果是由明码位置所指定的,那么就将由明码位置所指定的多个接收到的传输块的每个与先前的中间密文块组 合以生成中间明文块,并加密该中间明文块以获取中间密文块;以及验证多个接收到的传 输块,所述验证包含使用未由明码位置指定的该组明文块来形成输入校验和值;使用一 组次要密文块来形成输出校验和值,其中所述次要密文块是从一组不与明码位置相关联的 中间密文块获取的;以及将输入校验和值和输出校验和值用于与认证标记作比较。在另一方面,提出了安全的数据传输的装置;其中第一部分的数据传输是作为明 文发送的,第二部分的数据传输是作为密文发送的,并且所有的数据传输是经过认证的,所 述方法包含用于生成一组明码位置的装置;用于将第一部分数据传输和第二部分数据传 输加密为密文的装置,其中所述第一部分数据传输由该组明码位置指定,而第二部分数据 传输不与该组明码位置中任一相关联;用于使用不与该组明码位置中任一相关联的数据传 输来生成输入校验和值的装置;用于使用第一部分数据传输的密文来生成输出校验和值的 装置;用于使用输入校验和值和输出校验和值来生成认证标记的装置;以及用于发送该明 文、密文和认证标记的装置,其中所述明文是由该组明码位置指定的第一部分的数据传输。在另一方面,提出了解密和验证多个接收到的传输块的装置,所述装置包含用于 确定多个接受到的传输块的每个是否是由来自一组明码位置的明码位置所指定的装置;用 于解码多个接收到的传输块的装置,所述解码包含如果不是由明码位置所指定的,那么就 生成一组中间密文块,解密该组中间密文块以生成一组中间明文块,并生成一组明文块;如 果是由明码位置所指定的,那么就将由明码位置所指定的多个接收到的传输块的每个与先 前的中间密文块组合以生成中间明文块,并加密该中间明文块以获取中间密文块;以及用 于验证多个接收到的传输块的装置,这是通过使用未由明码位置指定的该组明文块来形成 输入校验和值,使用一组次要密文块来形成输出校验和值,其中所述次要密文块是从一组 不与明码位置相关联的中间密文块获取的;以及将输入校验和值和输出校验和值用于与认 证标记作比较。


图1A、1B和IC分别是基本密码系统、对称加密系统和非对称加密系统的框图。图2A和2B分别是对称认证系统和非对称认证系统的框图。图3是完整性认识(Integrity Aware)加密块链接模式的框图。图4A是CBC-IO模式的框图。图4B是用于执行CBC-IO模式的装置的框图。图5是解密和验证经由CBC-IO模式加密和认证的消息的框图。图6A是用于执行解密和验证经由CBC-IO模式加密和认证的消息的装置的框图。图6B、6C和6D是用于验证经由CBC-IO模式加密和认证的消息的不同实施例的框 图。
具体实施例方式加密使得数据对未被认证方不可读。原始数据消息被称为明文消息或明文。经加 密的被称为密文,其中加密包含任一将明文转换为密文的方法,例如分组密码、散列函数或 任一其它的加密函数。解密包含任一将密文转换为明文的方法,即恢复原始消息。图IA说明了设计用作加密的基本密码系统10。明文消息11由加密方案12操作以形成密文13。密 文13于是通过通信信道(未示出)发送并在另一个站点(未示出)由解码方案14恢复明 文15。明文和密文可以关于任何数据,包含以数字形式出现的音频和视频数据。密码分析法是破获密码系统的安全性的技术。执行密码分析法的实体在本领域中 被称为对手或攻击者。加密方案的密码分析法是关于解密未经认证的消息。认证方案的密 码分析法是针对合成可以被验证为由其他人发送的消息。密码系统是基于秘密的。一组实体共享该秘密,如果一组实体之外的实体不花费 大量的资源就不能获得密钥。这个秘密被说成充当该组实体的安全关联。一般地,秘密包含一个密钥或一组密钥,它们是以比特来计量的。密钥越长,该密 钥具有越高的秘密安全性。对称密码系统使用同解密消息一样的同一密钥来加密消息。对 称加密系统20在图IB中说明,其中加密和解密都使用相同的私钥。明文21由加密方案22 操作。密钥23在加密方案22中使用以形成密文24。密文24在通信信道(未示出)上发 送至另一站点,其中解密方案25使用同一密钥23来形成明文26。相反地,非对称密码系统使用第一密钥来加密消息,并使用不同的密钥来将其解 密。图IC说明了被称为公钥密码系统30的非对称加密系统,其中公钥用于加密而私钥用 于解密。公钥是公开的,这样任一用户可使用该公钥来加密任一消息。然而,只有私有的、 未公开的密钥可以被用于解密这个经公钥加密的消息。明文31被输入加密方案32,所述加 密方案使用与指定用户相关联并从公布中获取的公钥33。所得的密文34在通信信道(未 示出)上发送至指定用户。该指定用户使用解密方案35中的密钥36将密文34转换成明 文37。对称加密一般比非对称加密快得多。然而,由于可能被对手中途截取,将密钥从发 送者发送至接收者是有问题的。一个解决方案是使用可信的第三方来持有密钥,该第三方 只会与经认证的用户共享密钥。这里所述的实施例不解决这个问题,而是假定发送者和接 收者共享了一密钥。上述密码系统生成的密文的完整性一般由附加的某些认证数据提供给经发送的 密文。该认证数据一般作为消息内容和完整性密钥的函数计算。在对称认证系统中,认证数据被称为消息认证代码(MAC)。该MAC是作为消息内容 和完整性密钥的函数计算的,其中发送者和指定目标共享该完整性密钥。发送者发送消息 并附加MAC。消息可以是明文或密文。接收者重新计算来自消息的MAC,并且只有当经重新 计算的MAC与发送的MAC —致时才认可消息的完整性。理论上,只有消息的发送者能够生 成该消息有效的签名,由此用于接收者认证该消息。对称认证系统40在图2A中说明,其中签名和验证都使用相同的密钥。用使用密 钥43的认证方案42来运作消息41以形成认证数据44。认证数据44和消息41于是通过 通信信道(未示出)发送至另一方(未示出)。用使用相同密钥43的验证方案45来对消 息41操作以确定认证数据46。将由接收方生成的认证数据46与在通信信道上接收到的认 证数据44相比较。在非对称认证系统中,认证数据被称为数据签名。数据签名作为消息内容和发送 者的完整性密钥的函数计算。发送者向接收方发送数字签名,接收方于是使用发送者的公 钥对数字签名执行验证。非对称认证系统50在图IE中说明,其中签名使用私钥而认证使用相应的公钥。在一些方案中,MAC或数字签名计算自包含对秘密消息的唯一数学描述的‘消息摘 要’。消息摘要在长度上比原始消息要短,这样更容易地执行对消息摘要的计算。由于秘密 消息或消息摘要不是保持恒定的,MAC或数字签名依靠秘密消息或消息摘要保证认证数据 不是保持恒定的。如果认证数据对多个消息是保持恒定的,那么对手就可以非法地容易窃 取到认证数据。通常使用密码哈希函数来计算消息摘要。密码哈希函数从任一输入计算出一值 (包含固定位数),而不管输入的长度。密码哈希函数的一个特性是给定一输出值,计算上 难以确定会导致那个输出的输入。密码哈希函数的一个例子是SH-I,如联邦信息处理标准 出版物(FIPS PUBS)发布的和国家标准技术局(NIST)出版的FIPPUB 180-1"Secure Hash Standard”中所描述的。分组密码是对称加密方案,对于该方案到该方案的输入在位数上总是固定的长 度。该长度被称为分组密码的块大小。分组密码的一个例子是数据加密标准(DES),如FIPS PUBS 发布的和 NIST 出版的 FIPS PUB 46-1 “Data EncryptionStandard”中所描述的。DES 的块大小为64位。分组密码的另一个例子是高级加密标准(AES),如FIPS PUBS发布的和 NIST 出版的 FIPS PUB 46-1 "AdvancedEncryption Standard”中所描述的。AES 的块大小 为128位。分组密码的密钥长度是该密钥的位数长度。然而,密钥的熵是密钥的可能值的数 目的对数(基数为2)。熵也是按照位数来写的。例如,DES具有64位的密钥,这些位数中 的8位被用作校验和以检测密钥传输中的差错。从而,DES的密钥熵是(64-8) = 56位。给定分组密码的几对输入和相应的输出,对手就可导出该分组密码的密钥,所述 对手测试所有可能的密钥值以确定那些输入导致正确的输出。这种类型的攻击被称为穷举 密钥搜索。这种攻击的计算复杂性是攻击所需的加密操作的数目。因此,在穷举密钥搜索 中,为了提取K位密钥的攻击需要大约2k加密操作来提取分组密码密钥。分组密码对构造其它的密码实体是有用的。使用分组密码的方式被称为操作模 式。已经为DES标准化四种模式的操作,并且在FIPS PUBS发布的和NIST出版的FIPS PUB 81 "DES Modes of Opertaion”中描述了这四种模式。这四种模式是电子码本(ECB)、密码 分组链(CBC)、输出反馈(OFB)和密码反馈(CFB)。为了说明起见,这里只讨论ECB和CBC 来加密明文块P1,...,和Pm的序列。在ECB模式中,依照以下关系,分组密码被用于将明文的每个块加密成密文块Ci = Ek(P1),其中Ek(P1)标记为使用密钥K对块P1的加密。在这里使用时,Dk(P1)表示使用密 钥K对块P1的解密。在CBC模式中,用秘密初始值(IV)对第一明文块求异或形成一结果,该结果接着 被加密。依照以下关系写出该过程的数学描述C1 = ΕκΑ IV).此后,在加密前用先前的密文对每个明文块求异或,如下Ci = Εκ(Ρ)θ Cm ).在对称密码系统中,有效的加密和认证可能是有问题的。直到最近,满足这个需求的唯一解决方案是使用原始的方法提供加密和认证为两个单独的功能。这两个功能需要 大约等量的计算,因此使用两个功能的花费是只使用一个或另一个方法的两倍。在论文"Encryption Modes with Almost Free Message Integrity,,中,Jutla提 出了两种方法,这两种方法提供了比单独加密或认证需要稍微多一点计算的加密和认证。 这些方法具有一般的形式并且将分组密码用作密码核心。在密码界中,这样的方法也被称 为“操作模式”。Jutla的操作模式之一,被称为完整性意识可平行模式(IAPM)模式,不在这 个文件中讨论。Jutla的另一个操作模式,被称为完整性意识密码块链(IACBC)模式,在图 3中示出。IACBC使用两个密钥=Ktl和&。假设发送者希望加密和认证含有从P1到Pnrl的 (m-Ι)个消息块的消息。发送者将t设置为等于大于(m+1)的对数(基数为2)的下一个整 数。发送者选择一随机值(称为临时或初始值)以加密形成密文块Q。值r+Ι到r+t被加 密以形成值Wtl到Ww,其中所述加密使用密钥Ktlt5值Wtl到Ww接着被用于导出成对的独立 值Sc^IjSt+这些值在这里被称为噪声块。如果均勻地分配给Stl,...,Smn位随机数字,其 具有以下特性对于每对S1和Sj,其中i兴j,并且每对η位数常数C1和c2,S1 = C1并且Sj =C2的概率是2_2η,那么值Stl,...,Sm是成对独立的。对Stl到Sm的实际计算与理解IACBC 无关并且将不在下面描述。根据以下关系,对于1彡i彡m-Ι迭代地导出密文块C1到CV1 的值Mi = Pi θ NM,Ni = Eki (Mi),Ci =Ni θ Si,其中密钥K1被用于每个密码块,并且初始值Ntl被设置为Q。这些值M1被称为中 间明文块,值N1被称为中间密文块。发送者接着计算检验和值Pm,定义为Pm-P^P^.^Pm-i.通过用密钥K1加密(Ρ ΘΝη)和将经加密的结果与Stl求异或,从Pm计算出MAC标 记值Cm。数学上,该计算可如下表示Cm = EK1 (Pm 十 Nm)十 S0.发送者发送Ctl... Cm。假设接收者接收到C’ & . . C’ m。接收者通过首先解密C’ ^以形成r’来开始解密 过程,其中所述解密使用密钥&。加密值r’ +1到r’ +t以形成值W’ ^至W’ ,其中加密使 用密钥&。接收者接着计算值3\到5’111。根据以下关系,对于1彡i彡m-Ι迭代地导出 密文块P1到Pm-!的值N) = C'i 十 S',,M,i = Dki (N,汐,Pi = Ν'ι-t M*f,其中密钥K1被用于每个明文块,并且初始值N’。被设置为等于C’ 0.接收者接着 计算检验和值P’ m,定义为Pm' = Ρ'ι 十 P,2 十…十 PVi.通过使用密钥K1加密Pm和Nnri的异或,接着将加密的结果与S^求异或来计算出 值X。数学上,可以如下描述该过程X = EK1 (P'm 十 NV1)十 S'o.
如果X与C’ m相等,那么接收者可以确信精加密的消息的完整性。Gligor 禾口 Donescu 在 论 JC "Fast Encryption and Anthenticaion XCBCEncryption and XEBC Authentication Modes”中提出一相似的模式,称为扩展密文块 链模式(XCBC模式),它使用相似的计算量提供加密和认证。XCBC和IACBC的主要区别是 噪声块Stl到Sm的表示法,其表示法与这个文件无关。IACBC和XCBC模式的操作具有某些不合需要的特性。第一个不合需要的特性是这 些模式需要所有的数据经加密被发送。在诸如IPSec等因特网协议中,发送所有数据都被 加密的消息是不希望的。特别是,包含定址信息的头部必须以明文的形式发送。这里所描 述的实施例提出了 IACBC和XCBC模式的变形(此后称为CBC-IO模式),它允许数据块以明 文发送,而只加上少量的处理。应该注意数据或通信系统中的硬件或软件都可以被配置成执行CBC-IO模式的不 同实施例。硬件可以包含但不限于处理元件,实现一组存储在计算机可读媒质上的指令, 例如存储器,以执行下述的加密、认证、解密和验证过程。此外,使用位逻辑异或运算符描 述了各种组合步骤。实施例的其它实现可以使用取模的整数加法运算来执行,其中两个输 入被处理为整数的二进制表示,以这两个整数和的二进制表示构成中间值,通过将中间值 截短成密码块的大小来构成输出。也可以适当修改地使用其它群运算符,然而,为了易于说 明,这里只描述使用异或操作符的实施例。CBC-IO模式的一个实施例在图4A中说明。该CBC-IO模式的操作使用两个密钥 Kc^PKp假设发送者希望加密和认证由块P1到Pnri的(m-Ι)消息组成的消息。在步骤400处,发送者和接收者对该组明文块以不加密的形式发送达成一致。用 U表示要以不加密形式发送的明文块的指数的集合,其中U的元素被称为明码位置。在步骤402处,发送者选择临时值r并按照IACBC或XCBC模式来计算噪声块Stl到 Sffl,以获取中间密文N0到Nnri,并获取密文C0到Clrft5即,N0 = C0 = Ekl (r),并且根据以下关 系,对于1彡i彡m-Ι反复导出中间密文Ntl到Nnri和密文块C1到Clrt的值Mi =Pi 十 Nm,Ni = Eki (Mi),C1 =N1 Θ S1注意对每个密文块使用密钥K1。在一个替换实施例中,临时值r可以是一个由发 送者和接收者都存储的预定的值,而非一导出的值。在步骤410处,发送者计算校验和值CHK_IN和CHK_0UT,它们定义如下CHKJN =(十υ Pi)十 NtTH ’禾口CHK_OUT =(十ie υ Ci) θ S0.在步骤420处,发送者通过用密钥K1加密CHK_IN计算MAC标记Cm,并将结果与 CHK_0UT求异或。这个过程在数学上描述如下 Cm = Eki(CHKJN)十 CHK_0UT.在步骤430处,发送者重新设置那些值C1,其中i e U( S卩,那些会不加密发送的明 文),使得C1 = P10在步骤440处,发送者发送C0. · · Cffl0因为通过将信息和最后一次加密的输入和输出组合计算出认证标记,这种模式被 称为CBC-I0。使用CBC-IO模式生成认证标记的步骤与IACBC的不同在于生成CHK_IN和CHK_0UT的值。由于这个不同,在接收者处的解密和验证过程也必须不同地配置。图4B是被配置成执行上述CBC-IO模式的硬件的框图。应该注意图4B说明了可 以作为软件实现的替换的实现,其中处理器和存储器被配置成执行一组指令,用于执行上 述的CBC-IO模式。存储器元件450存储明文块P1,其中的一些要被加密且其中的全部要被 认证。加密元件460A、460B、460C和460D被配置成对这些输入执行加密功能。为了说明起 见,在图4B中示出了四个(4)加密元件用于加密明文块,但是本领域的技术人员理解可以 实现较多或较少的加密元件而不影响本实施例的范围。在这个实施例中,到加密块460A、460B、460C和460D的输入是在第一加密元件 460A处的临时值r和各自在其相应的其余密文元件处的中间明文块M1到Mnri。中间明文块 M1到Mnrl是将元件462A、462B和462C组合的输出。一方面,组合元件462A、462B和462C是 异或门。加密元件460A、460B、460C和460D的输出是中间密文块N。到Nnrl。通过组合元件 464A、464B和464C中间密文块N0到Nm^1与相应的噪声块S1到Snri组合。组合元件464A、 464B和464C的输出是密文块C1到Cn^处理框(或校验和生成器)470被配置成通过使用要以加密形式发送的明文块和 最后一个中间密文块Nnri来确定校验和值CHK_IN。处理框(或校验和生成器475)被配置 成通过使用第一噪声块Stl和对应于要以明文形式发送的明文块的密文块来确定校验和值 CHK_0UT。上面已经描述了用于确定CHK_IN和CHK_0UT的公式。接着CHK_IN输入到加密 元件480中。接着使用组合器元件490将加密元件480的输出和CHK_0UT组合。组合器元 件490的输出是最后一个密文块Cm,它也被用作认证标记。密文块C1到Cnri,认证标记Cm和明文块P1被输入到选择元件495,选择元件495确 定要发送的块是密文还是明文。换而言之,i e U的那些P1与那些iiU的C1 一起被发送。图5是解密和验证经CBC-IO模式加密和认证的消息的框图。在步骤500处,接收 者接收模块C’ 0... Cffltj注意对于ieu,CT1是不加密发送的。在步骤510处,接收者使 用密钥K1来解密C’ ^以获取r’。值r’和密钥Ktl被用于导出噪声块S’ ^到S’ m的值。在步骤520处,对于i,其中1 < i < m,一迭代过程由是否i e U的判定开始。如 果ii U,那么程序流进入到步骤530。如果i e U,那么程序流进入到步骤540。在步骤530 处,接收者确定中间密文N’工,其中igU。通过将C’工求异或以确定中间密文N’工,其 中ig U,这在数学上描述如下N'i = C'i SV在步骤532处,接收者解码中间密文N1,其中ii U:M,i = Dki (N,汐,Pi = M1IeNV1.程序流进入步骤550。对于i e U,在步骤540,接收者确定P,i = C,i,其中i e U。在步骤542处,顺次前进经过值i e U,接收者按照以下关系,将P’ N’ η组合 以获取M’ !M’i 二 P’i 十 N’m,N,i = Eki (Μ,》·程序流进入步骤550。在步骤550处,指数i加1并作出判定是否i > m。如果条件i > m为假,那么程序流回到步骤520处。如果条件i > m为真,那么程序流进入到步骤 560,步骤560是验证过程的开始。应该注意上述为明码位置确定中间密文块和中间明文块的步骤可以互换排序而 不影响这些实施例的范围。也应该注意上述步骤可以容易地改变成适用于一组密文位置, 而非明码位置,即这些步骤可以关于已被指定为加密的块来描述,而非关于已用明文发送 的块。也应该注意在上述步骤中计算出的值被存储以进一步在迭代过程中使用。接收者现在已解密了所有的密文,但是接收者现在需要验证完整性。为了验证完 整性,在步骤560处,接收者首先按照以下关系构成次要密文Cf1,其中i e U:C*i = N’ieS,i.在步骤570处,接收者计算校验和值CHK_IN’,定义如下CHKJN' = (eie υ P'i)十 Ν’ η .在步骤580处,接收者计算校验和值CHK_0UT’,定义如下CHK_OUT' = (Φ ε υ C*)十 S'0.在步骤590处,通过用密钥K1加密由CHK_TN’计算出值X,并将结果与CHK_0UT’ 求异或。这个过程在数学上描述如下X = Eki(CHKJN') θ CHK_OUT.接收者将X和C’ ^乍比较以确定它们是否相等。如果它们是相等的,那么接收者 可以确信消息的完整性。如果验证了消息的完整性,该消息是P = P1, ... , Pm^1.在替换实施例中,接收者使用替换值作比较。在一个实施例中,认证标记与CHK_ OUT组合以构成测试加密输入校验和值。输入校验和值被加密,接着与测试加密输入校验和 值作比较。如果测试加密输入校验和值与经加密的输入校验和值是相同的,那么验证了认 证标记。在另一个实施例中,认证标记与输出校验和值组合以构成测试加密输入校验和值。 该测试加密输入校验和被解密以获取测试输入校验和值;该测试输入校验和值接着与输入 校验和值作比较。如果测试输入校验和值与输入校验和值是相同的,那么验证了认证标记。在另一个替换实施例中,验证步骤560到590可以与解密步骤520到550并行执 行。这种并行处理加快了接收者处理来自发送者的经加密和认证的传输的速度。图6A是被配置成对用上述CBC-10模式加密的消息执行解密的框图。图6B、6C和 6D是被配置成使用上述CBC-IO模式认证的消息执行验证的框图。在图6A中,接受到的块 CojC1,. . ·和C’m存储在存储器600中。解密元件610A、610B、610C、610D和610E被配置 使用密钥K1执行解密功能,所述密钥K1在密钥协商过程期间在发送者和接收者之间达成一 致,这里不讨论该协商过程的详情。到第一解密元件610A的输入是块CV它是来自发送者 的第一个消息块。第一解密元件610a的输出是r’,它会被用于确定噪声块S’…S’ ” ..., S’ μ,这是由这里未示出的硬件配置确定的。到其它解密元件610B、610C、610D和610E的输入各自在每个相应的解密元件处 生成中间密文块N’ ^到N’ m。中间密文块N’工到N’ m是通过对所有的i U将相应的噪声块 S’工和接收到的密文块C’工组合而形成的,其中所述组合是使用组合元件620A、620B、620C 和620D,诸如,例如异或门或取模的整数加法器,来执行的。使用组合元件622A、622B、622C 和 622D 将解密元件 610A、610B、610C、610D 和 610E的输出各自与相关联的中间密文块N,1相组合。组合元件622A、622B、622C和622D的输出 是明文块P’ ,其中igU。对于中间密文块N’ !的生成,其中i e U,加密元件630A、630B和630C使用密钥 K1来加密前一个中间密文块N,κ或中间密文块N,10组合元件624A、624B和624C将前一 个中间密文块N’ η与明文块P’ !组合以形成中间明文块M’工,中间明文块M’工是由加密元 件630A、630B、630C和630D来加密的。应该注意在确定P’后(其中i U ),可以通过设置 Pj1 = C'工(其中i e U)可以简单地导出明文块P’工(其中i e U)。包含了中间密文块N1 的生成,其中i e U,以允许对于igU迭代地确定明文块P’ i,并生成第二密文块O1用于验 证。在这个实施例中,用控制线(未示出)实现转换器640A、640B、640C和640D,以利于按 照是明码位置还是密文位置处于即时位置之前来选择合适的中间密文块。输入校验和CHK_IN可以被确认为组合元件(未示出)的输出,所述组合元件将最 后一个中间密文块N’ m和所有明文块P’,的组合(其中igU)相结合。输出校验和CHK_ OUT可以被确定为组合元件(未示出)的输出,所述组合元件将第一噪声块3\和所有次 要密文Cf1的组合相结合,次要密文Cfi的每一个被定义为相应的中间密文块N’工和相应的 噪声块S,!的组合。次要密文块Cf1是图6A中组合元件645A、645B和645C的输出。图6B示出了验证认证标记的一个实施例。CHK_IN值被输入到加密元件650中。 加密元件650的输出与CHK_0UT值在组合元件655处组合。接着,在比较元件657处将组 合元件655的输出与接受到的块C’m作比较,所述块C’m是认证标记。图6C是验证认证标 记的另一个实施例。CHK_IN值被输入到加密元件660中。在组合元件665处,将认证标记 C’m与CHK_0UT值组合。在比较元件667处,将组合元件665的输出与加密元件660的输出 作比较,以验证认证标记。图6D是验证认证标记的另一个实施例。在组合元件670处,将认 证标记C’ 1与0 _0肌值组合。组合元件670的输出被输入到解密元件675中。接着,在 比较元件677处,将解密元件675的输出与CHK_IN值作比较。如果任一的比较显示匹配, 那么就验证了认证标记C’ m。当接收者试图解密消息时,攻击者会使得接收者使用错误的明码位置组。为了防 止这种类型的攻击,发送者和接收者必须使用其它的方法来验证应用到特定密文消息的明 码位置。对这个问题有简单的解决方案。一个解决方案是对那些位置是明码位置有标准的 协议。另一种方法是在数据块中包含明码位置集合U的表示,这样使得对密文的验证包含 对明码位置集合的验证。在检验和中包含值C1,其中igU,构成了 CBC-IO模式操作和由Jutla和Gligor和 Donescu提出的模式操作之间的区别。注意在计算密文和认证标记时,CBC-IO使用分组密 码加密。然而,在一些或全部的分组密码加密操作之处使用分组密码解密是同等有效的。这 会导致在解密和消息完整性期间从分组密码解密到分组密码加密(反之亦然)的改变。在CBC-IO模式中,如果基层的分组密码是安全的,那么加密和认证功能是安全 的。本令页域中对于短语"the encryption and authentication functions aresecure,“力口 密和认证功能呈安全的”什么意思有正式的表示法,然而这些正式的表达法与本发明 的主题无关并不会在这里讨论。本领域的技术人员会熟悉短语“theencryption and authentication functions are secure"白勺意; 、。虽然这里的实施例是基于AES分组密码关于CBC-IO模式描述的,这些实施例也可以应用到基于其它分组密码来构建CBC-IO模式。注意发送者可以选择发送P1或C1,这不 会危害认证。这里所述的实施例允许一方发送经加密的或未经加密的块而不危害认证方案 的安全性。如果P1以明文发送,那么Pi的加密版本仍然是安全和不可预测的,并且可以被 用作安全认证。通常的做法是当使用认证模式时,仅将MAC定义并最终块的一部分。也可以改变 本发明,这样使得只有一部分最终块作为MAC发送。本领域的技术人员可以理解,信息和信号可以用多种不同技术和工艺中的任一种 来表示。例如,上述说明中可能涉及的数据、指令、命令、信息、信号、比特、码元和码片可以 用电压、电流、电磁波、磁场或其粒子、光场或其粒子或它们的任意组合来表示。本领域的技术人员能进一步理解,结合这里所公开的实施例所描述的各种说明性 的逻辑框、模块、电路和算法步骤可以为电子硬件、计算机软件或两者的组合来实现。为了 清楚说明硬件和软件间的互换性,各种说明性的组件、框图、模块、电路和步骤一般按照其 功能性进行了阐述。这些功能性究竟作为硬件还是软件来实现取决于特定的应用对总体系 统设计上的约束。熟练的技术人员可能对于每个特定应用不同的方式来实现所述功能,但 这种实现决定不应被解释为就此背离本发明的范围。结合这里所描述的实施例来描述的各种说明性的逻辑框、模块和算法步骤的实现 或执行可以用通用处理器、数字信号处理器(DSP)、之用专用集成电路(ASIC)、现场可编 程门阵列(FPGA)或其它可编程逻辑器件、离散门或晶体管逻辑、离散硬件组件或者为执行 这里所述功能而设计的任意组合。通用处理器可能是微处理器,然而或者,处理器可以是任 何常规的处理器、控制器、微控制器或状态机。处理器也可以用计算设备的组合来实现,如, DSP和微处理器的组合、多个微处理器、结合DSP内核的一个或多个微处理器或者任意其它 这种配置。结合这里所公开实施例描述的方法或算法的步骤可能直接包含在硬件中、由处理 器执行的软件模块中或在两者当中。软件模块可以驻留在RAM存储器、闪存、ROM存储器、 EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动盘、⑶-ROM或本领域中已知的任何其它 形式的存储媒质中。示例性存储媒质与处理器耦合,使得处理器可以从存储媒质读取信息, 或把信息写入存储媒质。或者,存储媒质可以与处理器整合。处理器和存储媒质可能驻留 在ASIC中。ASIC可能驻留在用户终端中。或者,处理器和存储媒质可能作为离散组件驻留 在用户终端中。提供上述优选实施例的描述为了使本领域的技术人员能制造或使用本发明。这些 实施例的各种修改对于本领域的技术人员来说是显而易见的,这里定义的总的原则可以被 应用于其它实施例中而不使用创造能力。因此,本发明并不要限于这里示出的实施例,而要 符合与这里揭示的原理和新颖特征一致的最宽泛的范围。
权利要求
用于作为单个实体加密和认证数据的方法,所述方法包含指定一组明码位置和一组密文位置,其中所述该组明码位置用于指示在明码位置中的块是未加密的,而该组密文位置用于指示在密文位置中的块是加密的;如果数据块在明码位置中,那么设置明文块等于所述数据块;将明文块与前一中间密文块求异或以构成中间明文块;加密中间明文块以形成中间密文块;如果数据块在密文位置中,那么将所述数据块与对应于来自一组序列的数据块的序列求异或以形成相应的中间密文块;解密相应的中间密文块以形成中间明文块;以及将中间明文块与前一中间密文块求异或以构成明文块;使用所有中间块计算认证标记;使用所述认证标记、来自所述一组序列的第一序列和来自所述一组序列的最后一个序列计算上一密文块;以及发送所述密文块和所述认证标记。
2.用于安全数据传输的方法,其中第一部分的数据传输作为明文发送,第二部分的数 据传输作为密文发送,且所有的数据传输是认证的,所述的方法包含生成一组明码位置;将所述第一部分的数据传输和所述第二部分的数据传输加密为密文,其中所述第一部 分的数据传输由该组明码位置指定,且所述第二部分的数据传输不与该组明码位置组中任 何一个相关联;使用不与该组明码位置中任何一个相关联的数据传输来生成输入校验和值; 使用所述第一部分的数据传输的密文生成输出校验和值; 使用所述输入校验和值和输出校验和值生成认证标记;以及发送所述明文、密文和认证标记,其中所述明文是由该组明码位置指定的数据传输的第一部分。
3.用于解密和验证多个接收到的传输块的方法,所述方法包含确定多个接收到的传输块的每一个是否是由来自一组明码位置的一个明码位置所指 定的;解密多个接收到的传输块,所述的解密包含;如果不是由明码位置指定的,那么生成一组中间密文块、解密该组中间密文块以生成 一组中间明文块,并生成一组明文块;如果是由明码位置指定的,那么将由明码位置指定的多个接收到的传输块的每一个与 前一中间密文块组合以形成中间明文块,并加密该中间明文块以获取中间密文块;以及 验证多个接收到的传输块,所述验证包含 使用不是由明码位置指定的该组明文块形成输入校验和值;使用一组次要密文块构成输出校验和值,其中所述次要密文块是从不与明码位置相关 联的一组中间密文块导出的;以及使用所述输入校验和值和所述输出校验和值用于与所述认证标记作比较。
4.如权利要求3所述的方法,其特征在于,其中所述解密是与所述验证并行执行的。
5.用于加密和认证数据的装置,所述装置包含 至少一个存储器元件,用于存储一组明文块; 至少一个组合元件,用于组合输入块;至少一个加密元件,用于对输入执行加密功能;至少一个选择元件,用于选择明文块或密文块在传输流中的指定位置上传输; 至少两个校验和生成器;以及至少一个处理元件,其中所述至少一个处理元件用于控制所述至少一个存储器元件、 所述至少一个组合元件、所述至少一个加密元件、所述至少两个检验和生成器和至少一个 选择元件,使得所述至少一个组合元件的第一部分用于将明文块与前一阶段的中间密文块相结合以 输出中间明文块,所述至少一个加密元件的第一部分用于从所述中间明文块生成当前阶段 的中间密文块,所述至少一个组合元件的第二部分用于从将当前状态的密文块与噪声块相 组合输出密文块,所述第一校验和生成器用于从一组指定的明文块输出第一校验和,所述 至少一个加密元件的第二部分用于加密所述第一校验和,所述第二校验和生成器用于从一 组指定的密文块输出第二校验和,而所述至少一个组合元件的第三部分用于将经加密的第 一校验和与所述第二校验和相结合以构成认证标记。
6.用于解密和验证数据的装置,所述装置包含 至少一个存储器元件,用于存储一组数据传输块; 至少一个组合元件,用于组合输入块;至少一个加密元件,用于对输入执行第一加密功能;至少一个解密元件,用于对输入执行第二加密功能,其中所述第二加密功能是所述第 一加密功能的相反;至少一个转换元件,用于从所述至少一个加密元件选择一输出或从所述至少一个组合 元件选择一输出;至少两个校验和生成器,用于基于所指定的明文块组生成输入校验和以及基于次要密 文块组生成输出校验和;以及至少一个处理元件,其中所述至少一个处理元件用于控制所述至少一个存储器元件、 所述至少一个组合元件、所述至少一个加密元件、所述至少一个解密元件、所述至少两个检 验和生成器和至少一个转换元件,使得所述至少一个组合元件的第一部分用于将数据传输块与噪声块相组合以构成中间密 文块,所述至少一个解密元件用于解密所述中间密文块以形成中间明文块,所述至少一个 组合元件的第二部分用于将所述中间明文块与前一阶段的中间密文块相结合以形成明文 块,所述至少一个组合元件的第三部分用于将所述数据传输块与前一阶段的中间密文块相 组合以形成第二中间明文块,所述至少一个加密元件用于加密所述第二中间明文块以构成 第二中间密文块,所述至少一个转换元件用于选择所述第一中间密文块或所述第二中间密 文块,以及所述至少一个组合元件的第二部分是用于将所述噪声块与所述第二中间密文块 相组合以形成次要密文块。
7.用于安全数据传输的装置,其中第一部分的数据传输作为明文发送,第二部分的数 据传输作为密文发送,且所有的数据传输是认证的,所述的方法包含生成一组明码位置的装置;将所述第一部分的数据传输和所述第二部分的数据传输加密为密文的装置,其中所述 第一部分的数据传输由该组明码位置指定,且第二部分的数据传输不与该组明码位置组中 任何一个相关联;使用不与该组明码位置中任何一个相关联的数据传输来生成输入校验和值的装置;使用所述第一部分的数据传输的密文生成输出校验和值的装置;使用所述输入校验和值和输出校验和值生成认证标记的装置;以及发送所述明文、密文和认证标记的装置,其中所述明文是由该组明码位置指定的数据 传输的第一部分。
8.用于解密和验证多个接收到的传输块的装置,所述方法包含确定多个接收到的传输块的每一个是否是由来自一组明码位置的一个明码位置所指 定的装置;解密多个接收到的传输块的装置,所述的解密包含;如果不是由明码位置指定的,那么生成一组中间密文块、解密该组中间密文块以生成 一组中间明文块,并生成一组明文块;如果是由明码位置指定的,那么将由明码位置指定的多个接收到的传输块的每一个与 前一中间密文块组合以形成中间明文块,并加密该中间明文块以获取中间密文块;以及验证多个接收到的传输块的装置,所述验证是通过使用不是由明码位置指定的该组 明文块形成输入校验和值,使用一组次要密文块形成输出校验和值,其中所述次要密文块 是从不与明码位置相关联的一组中间密文块导出的;以及使用所述输入校验和值和所述输 出校验和值用于与所述认证标记作比较。
全文摘要
本发明提出了用于加密和认证数据的方法和装置,使得一些数据可以以明文的形式发送但仍然由发送机认证。一组明码位置或一组密文位置被用于指定哪些数据块会被用于生成输入校验和值(470)和输出校验和值(475)。这些校验和值接着被用于生成认证标记(490)。
文档编号H04K1/04GK101938499SQ201010298229
公开日2011年1月5日 申请日期2003年7月24日 优先权日2002年7月24日
发明者G·G·罗斯, P·M·霍克斯 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1