用于加密和解密纯文本消息的具有认证的系统的制作方法

文档序号:7912061阅读:307来源:国知局
专利名称:用于加密和解密纯文本消息的具有认证的系统的制作方法
技术领域
所述的实施例大体上涉及数据通信和存储的技术领域。具体地一些实施例涉及允许通过使用一般伪随机置换加密和认证信息的密码方法和系统。
背景技术
数据加密方法提供不安全通信通道上的加密信息的保密。然而单独的加密方法缺少确保信息的完整性或真实性的操作检测能力。需要数据认证方法检测接收到的消息在通信期间何时由对手改变。许多已知的算法提供与保密分离的认证。用于提供数据认证的最公知的方法之一通过使用密钥依赖单向散列函数生成认证标签或消息认证码(MAC)。单向散列函数被设计成使得它比较容易计算但是几乎不可能逆反。由于认证标签的长度通常是固定的并且比初始消息的长度短,因此认证标签不能确保消息一対一映射到认证标签。然而认证标签的长度被设计成足够长以防止強力攻击。在用于交换消息和认证标签的方法中,发送方通过使用共享密钥从可信消息生成认证标签来启动交換。发送方然后将消息和认证标签传送到接收方。在接收端,接收方必须也使用共享密钥从接收到的消息生成认证标签。接收方然后比较他的或她的生成认证标签与接收到的认证标签。如果两个标签匹配,则接收方可以确保消息在传输期间未被修改并且它由知道秘密密钥的某人发送。认证标签或MAC的使用在接收端耗时,原因是它需要接收方生成用于比较的MAC。当与数据加密方法组合时,在可以使用接收到的信息之前接收方必须解密消息并且生成认证标签。该常规方法需要常常使用相同的基本算法将相同消息在发送和接收端上进行两次传递。此外,该常规方法常常需要每个函数使用独立密钥。两个独立函数的使用使用过多的处理能力、存储器和时间。在致カ于最小化等待时间的应用中,例如在监控与数据采集(SCADA)网络、远程频率识别(RFID)和其它实时数据交换系统中,必须立即使用接收到的信息,使得不能使用独立MAC进行数据认证。在这样的应用中使用的设备对处理能力、代码空间和存储器造成进ー步限制。这些应用突显了对这样的方法的需要,所述方法提供消息完整性与强密码保密性的结合以最小化由独立常规方法造成的等待时间和开销。
针对常规方法的缺点,已提出了各种方法。基于新的误差检测验证,包括AGA12委员会的SCADA协会提出确保误差传播作为在不需要传统MAC的情况下提供完整性的手段。存在包括误差传播的各种方法以提供一定程度的完整性。取决于误差传播的水平,对传输密文的一位修改导致后续位的一定量的随机化以便提供增强的操作检测。一种这样的方法,传播密码块链接(PCBC)被设计成将一位修改完全传播到所有后续位。然而由于它的设计,已发现PCBC模式易受ー些直接攻击。例如,切換两个密文块而让消息的剰余部分不变。Andrew Wright等人近来提出另ー种解决方案,用于SCADA网络中的AES PE模式,该模式基于误差检测验证以设计以确保在一位操作之后至少六位的随机化(即,A. K. Wright, J.A. Kinast 和 J. McCarty, “Low-Latency Cryptographic Protection forSCADACommunications,,,Proc. 2nd Int. Conf. on Applied Cryptography and NetworkSecurity, ACNS 2004)。尽管PE模式没有PCBC的直接脆弱性,但是PE模式造成大量的等待时间和开销,原因是它实质上是两种AES加密模式的级联密码。除了两次加密消息以外,PE模式被设计成用于独立的消息认证算法,例如CBC-MAC。PCBC和PE模式的缺点促使需要ー种误差传播加密算法,所述算法快且小,并且不需要另外的步骤来获得完整性。

发明内容
所述的实施例提供了用于通过确保误差传播和自动生成的认证标签有效地结合完整性和强加密的方法和系统。所提供的实施例被设计成以相当低水平的所需代码空间、处理资源、存储器和等待时间要求工作。简言之,所述的实施例在于ー种多级加密系统,其中纯文本块遍历伪随机置換的序列。所述系统在每ー级生成中间数据依赖密码变量,所述密码变量系统地组合到反馈环中以产生确保误差传播。在加密结束吋,实施例使用最后数据依赖密码变量生成密码散列。所述的实施例包括方法、系统、过程、设备、独立密码算法和现有密码算法的模式。在下面描述了若干这些实施例。在一个实施例中,限定了一种用于多级数据加密和认证的方法,其中每ー级是伪随机置換。所述方法包括以下步骤接收纯文本数据,将纯文本分割为相等大小的纯文本块,使每个纯文本块遍历伪随机置換的序列,基于每个当前块的中间级密码变量修改用于下ー个块的伪随机置换的状态,所述中间级密码变量的每ー个是所述序列中的一级的输出,以及从每个纯文本块的最后级的输出生成密文。应当注意的是,伪随机置換通常被认为是无状态的。所述的实施例通过存储用于修改每个伪随机置换的输入的变量而产生所谓的状态。由于这些变量的状态直接影响每个伪随机置换的输出,因此置换可以被看作具有状态。
在一些实施例的另ー个方面中,每个伪随机置换的执行可以通过以下的一个或多个实现使用现有的密码算法(包括但不限于AES、RC5、TEA、IDEA、Present、TW0FISH)生成也被称为S-Boxes的移位置换表或电子地执行经典转轮。在一些实施例的另ー个方面中,每个伪随机置换的状态的修改通过遵循将被称为“312规则”的模式实现。所述模式包括以下步骤(a)第一伪随机置换的状态由倒数第二伪随机置换的输出修改。(b)中间伪随机置换的状态由先前的伪随机置换的输出修改。
(c)最后伪随机置换的状态由第一伪随机置换的状态和输出两者修改。在一些实施例的另ー个方面中,所述模式也包括以下步骤(d)第二伪随机置换的状态还由在步骤‘c’中执行的最后伪随机置换的状态修改。在一些实施例的另ー个方面中,所述方法可使用最后纯文本块的状态变量生成认证标签。认证标签的生成通过级联最后状态变量或通过在级联之前组合最后状态变量和初始置换状态来掩蔽最后状态变量而实现。在一些实施例的另ー个方面中,所述方法可以在模糊纯文本块的状态变量之后使用纯文本块的状态变量生成认证标签。生成认证标签的第一步骤是通过推进最后状态变量产生距离,使得可能不从认证标签确定最后状态变量。这通过加密状态变量中的两个的总和直到获得期望距离而实现。在这时的状态变量然后可以用于组成认证标签。
在一些实施例的另ー个方面中,所述方法可以包括初始化开始状态变量的步骤。通过使用限定方法的未初始化版本并且使用生成的密文和认证标签作为开始变量,来加密随机数(nonce)而进行初始化过程。在一些实施例的另ー个方面中,可以通过使用限定方法的未初始化版本并且使用在时间t的状态变量中的两个的总和作为输入来对随机数进行加密,而进行初始化过程。这重复多次迭代以便防止密码分析。只要随机数是唯一的,结果就是唯一并且不可预测的状态。在一些实施例的另ー个方面中,内部计数器可以用于进ー步修改伪随机置換的状态。通过存储N个计数器变量、以里程计方式递增计数器变量并且由关联计数器变量修改每个伪随机置換状态而执行被设计成消除短周期的计数器的加入,其中N是伪随机置换级的数量。在一些实施例的另ー个方面中,LFSR可以用于代替内部计数器。可以任意地选择LFSR的大小。LFSR的一部分可以用于修改ー个或多个置換。在一些实施例的另ー个方面中,通过用使用中的伪随机置換的逆置換代替一定数量的其它伪随机置換,减小所需的伪随机置換的数量。例如,在具有伪随机置換ABCD的4级方法中,可以通过使用置換ABf1B-1减小所需的伪随机置換的数量,其中A—1和B—1分别是A和B的逆置換。在一些实施例的另ー个方面中,可以通过在一侧仅仅提供伪随机置换而另ー侧具有伪随机置換和伪随机逆置換两者而在通信通道的一侧减小所需的伪随机置換的数量。例如,服务器侧可以具有AB⑶和A-1B-1CT1D-1置换两者,而客户端侧可以仅仅具有AB⑶置換。可以通过首先解密纯文本消息实现从服务器至客户端的通信(具有与加密相同的作用)。客户端然后可以通过加密密文恢复消息(具有与解密相同的作用)。可以以正常方式执行从客户端至服务器的通信,即,客户端加密消息,服务器解密消息。在一些实施例的另ー个方面中,可以限定ー种数据解密方法,所述方法是多级数据加密和认证方法的逆方法。所述方法包括以下步骤接收密文数据,将密文分割为相等大小的密文块,使每个块遍历伪随机置換的序列,其中每个置换是用于加密方法中的置換的逆置換,基于每个当前块的中间级密码变量修改用于下ー个块的伪随机置換的状态,以及从每个密文块的最后级的输出生成密文。所述解密方法使每个密文块向后遍历加密方法的序列。应当注意,解密方法的所选实施例应当匹配加密方法的所选实施例。例如,如果加密方法的所选实施例使用RC5作为伪随机置換、生成认证标签并且使用计数器,则解密方法的所选实施例也应当使用RC5、生成认证标签并且使用计数器。 在一些实施例的另ー个方面中,限定了一种用于执行完整性检验的方法。所述方法包括以下步骤执行所限定的加密方法以便生成密文和认证标签,在所述密文上执行限定的解密方法以便生成纯文本和第二认证标签,以及比较所述两个认证标签的相等。如果所述两个认证标签是相等的,则可以以高的可能性确保在加密之后密文未必修改。 在另ー个实施例中,ー种用于加密或解密消息的加密或解密弓I擎包括用于存储状态变量的存储器和控制逻辑,所述控制逻辑被配置成接收消息、将ー个或多个伪随机置換应用于消息的块,并且以至少ー个状态变量修改每个伪随机置换的输入,所述至少ー个状态变量由先前生成的置换输出、先前生成的置换输出、密文和纯文本中的至少ー个修改。所述加密/解密引擎还可以被配置成生成或认证附连到消息的认证标签。所述控制逻辑还可以被配置成通过随机化随机数而初始化状态变量和LFSR。所述控制逻辑还可以被配置成由 LFSR修改至少ー个状态变量。


为了更完整地理解所述的实施例并且为了更多的特征和优点,现在參考结合附图进行的以下描述,其中图I是根据实施例的第一流程图;图2是根据实施例的第二流程图;图3示出了加密系统的实施例;图4示出了解密的实施例;图5示出了使用随机数初始化变量的实施例;图6示出了从最后状态变量生成认证标签的实施例;图7示出了从初始和最后状态变量的组合生成掩蔽认证标签的实施例;图8示出了使用接收到的认证标签解密和检验消息的完整性的实施例;图9示出了加入计数器的来自图3的加密方法的实施例;图10示出了加入计数器的来自图4的解密方法的实施例;图11示出了递增计数器的实施例;图12示出了加密系统的备选实施例;图13示出了解密系统的备选实施例;图14示出了使用LFSR的加密系统的实施例;图15示出了使用LFSR的解密系统的实施例;图16示出了使用随机数初始化变量的实施例;图17示出了实施例,其中认证标签从最后状态变量生成;图18示出了使用接收到的认证标签解密和检验消息的完整性的实施例;图19示出了用于加密/解密和认证的系统的硬件实施例;图20示出了 HUMMINGBIRD密码算法的顶级结构;图21示出了 HUMMINGBIRD算法的初始化程序;
图22示出了具有16位块大小的代入置换网络;以及图23示出了基于HUMMINGBIRD密码算法相互认证协议。
具体实施例方式图I和2表示解释本文中所述的ー些实施例的加密步骤的流程图的两个版本。图I是可以在临时专利中找到的原图。尽管保留本发明的基本核心,图2是修订的加密图,具有更清楚的显示并且去除了不需要的步骤。在解释修订图的细节之前,应当注意两个图之间的区別。原图使用术语变量交換表(VET),该术语现在作为更一般使用和理解的术语被称为伪随机置換。此外,原来所谓的VET设置(VS)现在被称为状态变量(SV),并且VET的输出现在被称为中间密码变量(CV)。为了易于理解而修改术语。 除了认证标签的生成270和状态变量的初始化500之外,图I包含所有与修订图相同的步骤。在提交临时专利时,仍然未确定密码强度。为了补偿不确定性,将附加步骤115、120和150加入加密方法以便于通过异或(XOR)函数组合最后伪随机置换的输出和AES密钥流以产生密文。所述附加步骤被认为进一歩保护密文免于攻击。另外的考虑和评价消除了对所述附加步骤的需要,并且因此它们已从修订图去除。应当注意,两个图中的相应步骤具有相同的编号(除了 125对应于225)。图2示出了在加密实施例中涉及的步骤。从开始,装载密钥和计数器200以便必要时初始化伪随机置換205和210。下一个步骤用随机数初始化状态变量和计数器500,这在图5中进行进一步详细描述。一旦获得纯文本225,第一纯文本块与经初始化的状态变量组合并且单步遍历一系列四个伪随机置換230-245,导致第一密文块255。在可以加密下ー个密文块之前,使用中间密码变量更新状态变量260。对于所有纯文本块继续该循环265和225。可选地,可以组合最后状态变量以形成认证标签270。具体化加密方法的细节在更大程度上在下一段落中进行描述。图3表示加密实施例,其中m个纯文本-PjOl均遍历四个伪随机置换303的序列,导致m个密文块304。在该实施例中四个置换303的每ー个用不同的密钥kl、k2、k3和k4加密。具体方法包括通过使随机数310遍历随机化函数500而初始化状态变量302的步骤,这在下面详细地进行论述。一旦初始化状态变量,第一纯文本-Pi 301a通过模2n加法与初始状态变量SVipOZa组合,其中η是纯文本块的大小。将所述组合的结果传入第一伪随机置换Fkl303a,产生中间密码变量CVU1 (第一伪随机置换Fkl303a和第二 Fk2303b之间的密码变量),所述中间密码变量将被前馈以加密下ー个纯文本块P2301b。继续PJOla的加密,CV^1通过模2n加法与经初始化的第二状态变量组合并且传入第二伪随机置换Fk2303b中,产生。对于两个剩余的随机置换Fk3303c和Fk4303d加密继续遵循相同模式,其中Fk4303d的结果是第一密文块(^3048。对于下一个纯文本—P2301b的加密,必须使用反馈机制更新状态变量305,这将进行描述。在第一纯文本块PjOla的加密之后产生的第一状态变量SVli305a由通过模2n加法组合先前状态变量SVlQ302a和来自先前块的第三置換CV34的输出生成,其中η是纯文本块的大小。第二状态变量SV2i305b由通过模2n加法组合先前状态变量SVZJOZb和来自先前块的第一置換CVU1的输出生成。类似地,第三状态变量SV3305C由通过模2n加法组合先前状态变量SV3q302c和来自先前块的第二置換CV23i的输出生成。第四状态变量SV41305d由通过模2n加法组合先前状态变量SVA302CI和来自先前块的第一置換CVU1的输出和当前块的第一状态变量SVli305a生成。应当注意SVli305a的计算应当在SV^SOSd的计算之前发生。此外,尽管所述的实施例存储状态变量SV1、SV2、SV3和SV4,但是导出实施例可以继承本实施例的相同精神而实际上不存储状态变量。为了易于理解公开了存储状态变量的步骤。所有另外的纯文本—P2301b至P111 301c的加密以与PJOla的加密相同的方式进行。例如第二纯文本—P2301b以与第一纯文本-PJOla的加密相同的方式进行,用经更新的状态变量305代替先前的状态变量302。图4表示解密实施例,其中m个密文块(^404均遍历四个伪随机逆置换FITHOS的序列,导致m个纯文本-Pi 401。在该实施例中四个逆置换FITMos的每ー个用与在图3的加密中使用的相同密钥进行加密。具体化方法包括通过使随机数410遍历随机化函数500而初始化状态变量402的步骤,这在下面进行详细论述。一旦初始化状态变量402,将第一密文块(^(Ma传入第一伪随机逆置换6,403(1中。所述伪随机逆置换FK4-1 403d的结果通过模2n减法与初始状态变量SV4J02CI组合,其中η是密文块的大小,产生中间密码变量CV34 (FK3^403c和F1^HOSd之间的密码变量),所述中间密码变量将被前馈以解密下ー个密文块C2404b。继续(^(Ma的解密,将CV34传入第二伪随机逆置换FraHOSc中。所述逆置換FraMOSc的结果使用模2n減法与合,产生CV23lt)对于两个剩余伪随机逆置換Fli2-HOSb和Fn-HOSa解密继续遵循相同模式,其中Fia-HOSa的结果使用模2n减法与SVl0402a组合以产生第一纯文本块P^Ola。对于下ー个密文块C2404b的解密,必须使用反馈机制更新状态变量405,这将进行描述。在第一密文块(^(Ma的解密之后产生的状态变量SVi405a由通过模2n加法组合先前状态变量SVIJOZa和来自先前块的第二逆置換CV34的输入生成,其中η是密文块的大小。第二状态变量SV2i405b是先前块的第三逆置換Fli2-MOSb的输出。类似地,状态变量SV3305C是先前块的第二逆置换FkMOSc的输出。状态变量SVA^Sd由通过模2n加法组合先前状态变量SVAJOZd和来自先前块的第四逆置換CVU1的输入和当前块的状态变量SV-OSa生成。应当注意SVi405a的计算应当在SVA^Sd的计算之前发生。此外,尽管所述的实施例存储状态变量SV1、SV2、SV3和SV4,但是导出实施例可以继承本实施例的相同精神而实际上不存储状态变量。为了易于理解公开了存储状态变量的步骤。所有另外的密文块C2404b至Q404C的解密以与(^(Ma的解密相同的方式进行。例如第二密文块C2404b以与第一密文块(^(Ma的解密相同的方式进行,用经更新的状态变量405代替先前的状态变量402。图5示出了如图3、4、9和10中使用的通过随机化随机数生成初始值的函数。所述函数的目的是将状态变量和计数器初始化为唯一和不可预测值。随机数或函数的输入可以是随机数字、递增计数器或任何值,只要它以前未在(ー个或多个)指定密钥的上下文中使用过。应当注意随机数不需要是秘密的。初始化函数将唯一值解析为m个块队501并且使每个块遍历m个伪随机置換503的序列,导致在加密和解密方法两者的初始设置中使用的值。填充可能是必要的,以便获得相等大小的块。块的数量m和伪随机置換的数量m必须总是相同。在初始化函数的本实施例中,m等于4。随机化函数用不同的密钥kl、k2、k3和k4加密四个置換Fk503的每ー个。具体化方法包括将状态变量502初始化为常数(例如零)的步骤。一旦初始化状态变量502,第一块N1SOla通过模2n加法与初始状态变量SVlnl502a组合,其中η是块的大小。将所述组合的结果传入第一伪随机置换Fkl503a中,产生中间密码变量CVU1 (第一伪随机置換Fkl503a和第二 Fk2503b之间的密码变量),所述中间密码变量将被前馈以加密下ー个块N2501b。继续N1SOla的随机化函数,CVU1通过模2n加法与经初始化的第二状态变量SV2nl502b组合并且传入第二伪随机置換Fk2503b中,导致CV23lt)对于两个剰余伪随机置換Fk3503c和Fk4503d随机化继续遵循相同模式,其中Fk4503d的结果是第一 CTR值CTRlQ504a。应当注意一些实施例可以不使用生成的CTR 504值。对于下ー个块N2501b,必须使用反馈机制更新状态变量505,这将进行描述。在第一块N1SOla的随机化之后产生的第一状态变量SVln2505a由通过模2n加法组合先前状态变量SVlnl502a和来自先前块的第三置換CV34的输出生成,其中η是块的大小。第二状态变量SV2n2505b由通过模2n加法组合先前状态变量SV2nl502b和来自先前块的第一置換CV12i的输出生成。类似地,第三状态变量SV3&505C由通过模2n加法组合先前状态变量SV3nl502c和来自先前块的第二置換CV23i的输出生成。第四状态变量SV4n2505d由通过模2n加法组 合先前状态变量SV4nl502d和来自先前块的第一置換CVU1的输出和当前块的第一状态变量SVln2505a生成。应当注意SVln2SOSa的计算应当在SV1505CI的计算之前发生。此外,尽管所述的实施例存储状态变量SV1、SV2、SV3和SV4,但是导出实施例可以继承本实施例的相同精神而实际上不存储状态变量。为了易于理解公开了存储状态变量的步骤。所有另外的纯文本块N2501b至N4501d的随机化以与N-Ola的随机化相同的方式进行。例如第二纯文本—N2501b以与第一纯文本块N-Ola的随机化相同的方式进行,用经更新的状态变量505代替先前的状态变量502。在四个块501均被随机化之后,最后产生的状态变量SV1PSV2PSV3。和SV4Q508可以用作图3、4、9、10的初始状态变量。类似地,最后产生的随机化值CTR1。、CTR2。、CTR3。和CTR4Q504可以用作图9、10的初始计数器。图6表示从先前所述的加密实施例的结果生成认证标签的方法的概览。该图包括加密方法300的缩减版本,其中伪随机置换的每个序列显示在单加密函数Ei 601中。最后加密函数Em 601c产生四个最后状态变量602,所述最后状态变量被级联以形成认证标签603。如先前解释,认证标签用于提供加密数据的完整性检验。图7表示从加密实施例的结果生成认证标签的方法的备选实施例。如图6中那样,该图包括加密方法300的缩减版本。在该备选实施例中,每个最后状态变量702在被级联以形成认证标签704之前通过XOR函数703与它的相应初始状态变量701组合。该备选实施例掩蔽最后状态变量以免于由攻击者公开地获得,并且可以用于増加密码强度。图8表示在解密之后执行消息的完整性检验的具体化方法。该图包括解密方法400的缩减版本,其中伪随机逆置换的每个序列显示在单解密函数Di802中。除了密文801,接收到的消息也包括先前生成的认证标签AT 805。所述认证标签先前在加密期间生成,如图6中所示。最后解密函数Dm 802c产生四个状态变量803,所述状态变量被级联以形成认证标签AT' 804。接收到的认证标签AT 805识别被加密的原始消息,而新生成的认证标签AT' 804识别接收到的消息。使用两个认证标签,如下执行完整性检验806。如果两个认证标签不相等,则消息在它的加密和解密之间被修改并且应当被拒绝。相反地,如果认证标签相等,则可以以高的可能性确保消息未被篡改并且可以接受。应当注意完整性检验也可以使用如图7中的先前生成的认证标签执行。用于在解密期间生成认证标签的方法将匹配图7中的加密方法,接着进行如本图中的完整性检验。图9表示另ー个方面,其中加入计数器。以与图3中的实施例相同的方式,m个纯文本块Pi901均遍历四个伪随机置换Fk 903的序列,导致m个密文块(^904。四个置换Fk903的每ー个用不同的密钥kl、k2、k3和k4加密。具体化方法包括通过使随机数900遍历先前已限定的随机化函数500而初始化状态变量902和计数器906的步骤。一旦初始化状态变量和计数器,第一纯文本块PJOla通过模2n加法与初始状态变量SVIWOZa组合,其中η是纯文本块的大小。将所述组合的结果传入第一伪随机置換Fkl903a,产生中间密码变量CV^1 (第一伪随机置換Fkl903a和第二 Fk2903b之间的密码变量),所述中间密码变量将被前馈以加密下ー个纯文本块P2901b。继续P-Ola的加密,CVU1通过模2n加法与经初始化的第二状态变量SVZWOZb组合并且传入第二伪随机置換Fk2903b中,导致CV23lt)对于两个剰余的随机置換Fk390 3c和Fk4903d加密继续遵循相同模式,其中Fk4903d的结果是第一密文块 C1QOia0对于下ー个纯文本块P2901b的加密,必须使用计数器和反馈机制更新状态变量 905,这将进行描述。在第一纯文本块P-Ola的加密之后产生的第一状态变量SVl-OSa由通过模2n加法组合先前状态变量SVI-OZa和来自先前块的第三置換CV34i的输出和计数器CTRlQ906a生成,其中η是纯文本块的大小。第二状态变量SV2i905b由通过模2n加法组合先前状态变量svzwozb和来自先前块的第一置換CVU1的输出和计数器CTi^^oeb生成。类似地,第三状态变量SVS^OSc由通过模2n加法组合先前状态变量SV3W02C和来自先前块的第二置换CV23i的输出和计数器CTR3q906c生成。第四状态变量374-05(1由通过模2n加法组合先前状态变量SVA902CI和来自先前块的第一置換CVU1的输出和当前块的第一状态变量SVl-OSa和计数器CTRA906CI生成。计数器906然后使用函数1100递增。应当注意svi-osa的计算应当在SV^gosd的计算之前发生。此外,尽管所述的实施例存储状态变量SV1、SV2、SV3和SV4,但是导出实施例可以继承本实施例的相同精神而实际上不存储状态变量。为了易于理解公开了存储状态变量的步骤。所有另外的纯文本—P2901b至P111 901c的加密以与P-Ola的加密相同的方式进行。例如第二纯文本—P2901b以与第一纯文本-P-Ola的加密相同的方式进行,用经更新的状态变量905代替先前的状态变量902。图10表示解密实施例,其中m个密文块Ci 1004均遍历四个伪随机逆置换1003的序列,导致m个纯文本-Pi 1001。在该实施例中四个逆置换1003的每ー个用与在图9的加密中使用的相同密钥进行加密。具体化方法包括通过使随机数1000遍历先前已限定的随机化函数500而初始化状态变量1002和初始计数器1006的步骤。一旦初始化状态变量和计数器,将第一密文块C1KKMa传入第一伪随机逆置換Fm1IOOScI中。所述伪随机逆置換Fk4^1 1003d的结果通过模211减法与初始状态变量SVA1002CI组合,其中η是密文块的大小,产生中间密码变量CV34 (F0_11003c和Fk4-1IOOScI之间的密码变量),所述中间密码变量将被前馈以解密下ー个密文块C21004b。继续C1IOCMa的解密,将CV34传入第二伪随机逆置换Fk3-1IOOSc中。所述逆置換Fk1IOOSc的结果使用模2n减法与SV3。组合,产生CV23lt)对于两个剰余伪随机逆置換F1^1IOOSb和F1^1IOOSa解密继续遵循相同模式,其中F1^1IOOSa的结果使用模2n减法与SVltlKK^a组合以产生第一纯文本块P1IOOla15
对于下一个密文块C21004b的解密,必须使用反馈机制更新状态变量1005,这将进行描述。在第一密文块C1IOCMa的解密之后产生的状态变量SVl1IOOSa由通过模2n加法组合先前状态变量SVlciIOOZa和来自先前块的第二逆置換CV34的输入和计数器CTRltlIOOea生成,其中η是密文块的大小。第二状态变量SVA1005b是通过模2n加法的来自先前块的第三逆置换Fli2-1IOOSb的输出和计数器CTI^lOOeb。类似地,状态变量SVS1IOOSc是通过模2n加法的来自先前块的第二逆置換Fk1IOOSc的输出和计数器CTR3Q1006c。状态变量SV4J005CI由通过模2n加法组合先前状态变量SV4Q1002d和来自先前块的第四逆置換CV12i的输入和当前块的状态变量SV1IOOSa和计数器CTIMciIOOea生成。计数器1006然后使用函数1100递增。应当注意SVl1IOOSa的计算应当在SVllOOSd的计算之前发生。此外,尽管所述的实施例存储状态变量SV1、SV2、SV3和SV4,但是导出实施例可以继承本实施例的相同精神而实际上不存储状态变量。为了易于理解公开了存储状态变量的步骤。所有另外的密文块C21004b至C111 1004c的解密以与C11004a的解密相同的方式进行。例如第二密文块C21004b以与第一密文块C1KKMa的解密相同的方式进行,用经更新的状态变量1005代替先前的状态变量1002。 图11表示在块加密之间修改计数器的具体化方法。该方法取四个计数器CTRli至CRT4i作为输入并且产生四个计数器CRTli+1至CRT4i+1。在具体化实施例中采用的步骤模拟来自机动车辆的典型里程计,其中CRTl是量值的最低阶并且CTR4是量值的最高阶。具体化方法总是开始于通过模2n加法递增最低阶计数器CTR1IlOS,其中η是以位计的计数器的大小。如果CTRl自身复位并且等于零1110,则具体化方法继续以与CTRl相同的方式递增CTR21115。如果CTRl不为零1110,则方法退出1140a并且存储最后产生的计数器供加密或解密下ー个块。每个后续计数器以相同方式递增,只要所有更低阶计数器等于零。图12表示使用作为图3中所示的备选的反馈机制的加密系统的实施例。图12中所示的实施例类似于图3中所示的实施例并且类似的要素类似地进行编号。然而,图12的第二状态变量SM11205b以不同方式生成。在该实施例中,第二状态变量SV^1205b由通过模2n加法组合先前状态变量和来自先前块的第一置換CVU1的输出和当前块的第四状态变量SVAUOSd生成。应当注意,SV4J205CI的计算应当在SV2il205b的计算之前可获得。包括该反馈机制允许第四状态变量SV4影响其它状态变量的下ー个状态。该反馈可以通过提供状态变量的周期性的增加而增加密码的强度。加密实施例也可以包括通过使随机数1210遍历随机化函数1600而初始化状态变量1202的步骤,这在下面详细地进行论述。图13表示使用作为图4中所示的备选的反馈机制的解密系统的实施例。图13中所示的实施例类似于图4中所示的实施例并且类似的要素类似地进行编号。为了解密和认证由图12中所示的实施例加密的消息,解密实施例具有用于计算状态变量的类似反馈机制。第二状态变量SV2il305b由组合先前块的第三逆置換Fk2-1ISOSb的输出和当前块的状态变量SVlUOSd生成。应当注意,SVAUOSd的计算应当在SV^1305b的计算之前可获得。类似于加密实施例,解密实施例也可以包括通过使随机数1310遍历随机化函数1600而初始化状态变量1302的步骤,这在下面详细地进行论述。图14表示图12的加密系统的实施例,其中LFSR被包含到密码中。LFSR的包含防止在LFSR的状态循环之前循环密码的状态。LFSR的大小可以是任意的。图14中所示的实施例类似于图12中所示的实施例并且类似的要素类似地进行编号。图14中的实施例在第三状态变量SV3J405C的反馈机制中使用LFSR。在该实施例中SV3J405C由通过模2n加法组合先前状态变量SV3J402C和来自先前块的第二置換CV23i的输出和LFSR 1406生成。如果LFSR大于纯文本块的大小n,则可以在模2n加法中使用来自LFSR的η位。为了简单,可以使用上或下η位。然后LFSR 1406可以在下一次用于状态变量SVS1的计算中之前进行至少一次计时。LFSR 1406可以使用伽罗瓦(Galois)配置进行计吋。使用LFSR的图14中所示的反馈配置类似于使用计数器的图9中所示的反馈配置。使用LFSR是比图9中所示的计数器方法更有效的硬件解决方案,原因是LFSR自身在硬件中更有效,并且由于LFSR序列的性质,更少的状态变量需要在反馈机制中使用LFSR。尽管在图14中仅仅显示了ー个LFSR反馈,但是其它实施例可以在多个或不同状态变量的反馈路径中使用LFSR反馈。加密实施例也可以包括通过使随机数1410遍历随机化函数1600而初始化状态变 量1402和LFSR 1406的步骤,这在下面详细地进行论述。图15表示解密系统的实施例,其中LFSR被包含到密码中。图15中所示的实施例类似于图13中所示的实施例并且类似的要素类似地进行编号。为了解密和认证由图14中所示的实施例加密的消息,解密实施例具有使用LFSR计算状态变量的类似反馈机制。第三状态变量SVS1ISOSc由通过模2n加法组合先前块的第二逆置換Fk3-1ISOSc的输出和来自LFSR 1506的η位生成。LFSR然后应当以类似于所使用的加密实施例的方式进行计吋。图16示出了使用随机数初始化变量的实施例。目的是将状态变量和LFSR初始化为在初始设置中用于加密和解密方法的唯一和不可预测值。随机数或函数的输入可以是随机数字、递增计数器或任何值,只要它以前未在(ー个或多个)指定密钥的上下文中使用过。应当注意随机数不需要是秘密的。初始化函数将随机数解析为用于构成状态变量寄存器1602的Hif-Vi 1609。填充可能是必要的,以便获得相等大小的块。块的数量m和伪随机置換的数量m必须总是相同。在图16所示的初始化函数的实施例中m等于4。随机化函数用不同的密钥kl、k2、k3和k4加密四个置换Fk 1603的每ー个。第一伪随机置换Ni 1601的输入可以被定义为初始状态变量SVlni1602a+SV3ni1602c或状态变量的任何组合的总和,如果除了随机数以外的自变量也传到所述函数,则该值还可以使用模(mod) 2n加法包含到Ni 1601的计算中。一旦状态变量1602被填充并且N1160Ia计算完成,第一块N1160Ia通过模2n加法与初始状态变量SVlnl1602a组合,其中η是块的大小。将组合的结果传入第一伪随机置換Fkl1603a,产生中间密码变量CVU1 (第一伪随机置换Fkl1603a和第二 Fk21603b之间的密码变量),所述中间密码变量将被前馈以加密下ー个块N21601b。继续N1WOla的随机化函数,CVU1通过模2n加法与经初始化的第二状态变量SV2nl1602b组合并且传入第二伪随机置換Fk21603b中,导致CV23lt)对于两个剩余的随机置换Fk31603c和Fk41603d随机化继续遵循相同模式,其中Fk41603d的结果是第一 LFSRnl1604a值。应当注意一些实施例可以不使用所有或任何生成的LFSR 1604值。对于下ー个块N21601b,必须使用反馈机制更新状态变量1605,这将进行描述。与图5中所示的随机数随机化实施例相比,图16的实施例中提供的反馈机制更简单并且更容易执行。由于该加密方法的结果从未被掲示,也就是说,它被丢弃或用于填充LFSR,因此更简单的反馈机制可以用于更有效地随机化随机数而没有任何密码脆弱性。在第一块N1WOla的随机化之后产生的第一状态变量SVlnl1605a由通过模2n加法组合先前状态变量SVlnl1602a和来自先前块的第四置換LFSRnl1604a的输出生成,其中η是块的大小。第二状态变量SVln21605b由通过模2η加法组合先前状态变量SV2nl 1602b和来自先前块的第一置換CV^1的输出生成。类似地,第三状态变量SV3&1605C由通过模2n加法组合先前状态变量SV3nl1602c和来自先前块的第二置換CV23i的输出生成。类似地,第四状态变量SV4n21605d由通过模2n加法组合先前状态变量SV4nl1602d和来自先前块的第三置換CV34的输出生成。现在可以通过使用模2n加法组合SVln21605a和SV3n21605c而更新N21601b。应当注意,SVln2和SVSn2应当在N21601b的计算之前可获得。此外,尽管所述的实施例存储状态变量SV1、SV2、SV3和SV4,但是导出实施例可以继承本实施例的相同精神而实际上不存储状态变量。为了易于理解公开了存储状态变量的步骤。所有另外的纯文本块N2160 Ib至N41601 d的随机化以与N11601 a的随机化相同的方式进行。例如第二纯文本—N21601b以与第一纯文本块N1WOla的随机化相同的方式进行,用经更新的状态变量1605代替先前的状态变量1602。在四个块1601均被随机化之后,最后产生的状态变量SVltl. SV20, SV30和SV4J608可以用作加密或解密实施例的初始状态变 量。类似地,最后产生的随机化值LFSRnl.LFSRn2.LFSRn3和LFSRn41604可以用作图14或15的初始LFSR。可以通过在计时之前在寄存器中设置ー个或多个位避免具有零状态的LFSR寄存器1604。LFSR 1604可以在用于图14或15中之前进行至少一次计时。图17示出了实施例,其中从最后状态变量生成认证标签。上述的加密方法被表示为在时间t获得的加密函数Et+i 1703。在该情况下,时间t表示加密最后纯文本字符之后状态变量SVl、SV2、SV3、SV4、LFSRl和LFSR21701a的状态。应当注意,随机数初始化在所述加密函数1703中并非是必要的,原因是它将在加密第一纯文本字符之前发生。通过将状态变量推进到不同于在时间t的状态变量的状态而开始用于生成认证标签的方法。这被称为产生距离。通过使用模2n加法求和状态变量SVlt+i和SV3t+i 1702并且将结果输入加密函数1703中代替纯文本而获得该距离。加密操作导致状态变量改变状态,所以产生距离,并且产生可以被丢弃的密文Ct+i 1704。该过程进行三次以上迭代,然而在其它实施例中有利的是迭代或多或少的次数。在产生距离之后,在时间t+i获得的状态变量1701e的快照,其中i表示加密迭代的次数,在本实施例中为4。将快照中的每个状态变量SVlt+4、SV2t+4、SV3t+4、SV4t+4、LFSRlt+4、LFSR2t+41701e输入加密函数1703中,导致表示所有状态变量的认证标签AT 1705。如先前解释,认证标签用于提供加密数据的完整性检验。备选实施例可以通过使用任何置換或加密状态变量的组合生成认证标签1705。备选实施例也可以按照不同于图17中所示的顺序选择加密最后状态变量。图18示出了使用接收到的认证标签解密和检验消息的完整性的方法的实施例。上述的解密方法由解密函数Di 1802表示。图18中所示的实施例使用关于图15中所示的实施例描述的解密过程1500。待解密的接收到的消息包括密文Ci 1801以及认证标签AT 1805。图18中所示的实施例被配置成使用与图17中所示的实施例相同的用于生成认证的过程。当每个解密函数Di 1802解密相应密文Ci 1801时状态变量被传到每个后续解密函数。从解密函数输出的最后状态变量1803然后可以用于生成认证标签。生成认证标签AT' 1804的过程被表示为过程1700,如图17的实施例中所述。接收到的认证标签AT 1805识别被加密的原始消息,而新生成的认证标签AT' 1804识别接收到的消息。使用两个认证标签,完整性检验1806被执行。完整性检验确定两个认证标签是否相等,如果它们不相等,则消息在它的加密和解密之间被修改并且应当被拒绝。相反地,如果认证标签相等,则可以以高的可能性确保消息未被篡改并且可以接受。图19示出了如上所述的用于执行加密/解密和认证的组合式加密和解密引擎的硬件实施例。系统1900能够执行加密和解密以及生成和检验认证标签。尽管系统1900被显示为多个离散块或模块,但是每ー个可以与其它块一起在软件或硬件中实现。这些块的每ー个可以完整地或部分地提供控制逻辑、存储元件和数据路径功能。寄存器或存储器块是可以用于存储状态变量输入和输出的存储元件。在诸如ASIC或FPGA的硬件实现方式中,这些块可以是硬件寄存器,其由触发器或其它已知的存储元件(例如各种RAM实现方式或寄存器文件)组成。在软件实现方式中存储元件可以是用于存储程序数据的处理器可访问的任何存储器。控制逻辑被显示为控制有限状态机1901,其负责根据期望功能控制系统1900的各个块。控制逻辑1901可以在ASIC或FPGA中实现为状态机,或在软件实现方式中实现为运行专用软件以执行加密/解密功能的微处理器。为了简单起见,从图19省略了控制逻辑1901和其它模块之间的连接。控制逻辑1901确定系统1900的功能,例如该功能是加密、解密、初始化还是认证接收到的数据。取决于功能,控制逻辑1901控制各种逻辑块的状态,包括该块是否有效或它正在执行什么功能。例如,有限状态机可以向加密/解密逻辑指示它应当在加密状态中并且选择合适的密钥。尽管该图显示了集中式有限状态机1901,但是控制逻辑也可以分布在系统内的各个块中。如图19中所示,初始化逻辑1903也可以被认为是控制逻辑并且负责控制系统1900的初始化,然而,该功能性的一部分也可以包含在有限状态机1901内。在基于微处理器的实现方式中,分布在图19中的该附加控制逻辑的全部可以实现为在微处理器上运行的专用软件中以便操作加密/解密系统。初始化逻辑1903的功能是生成状态变量1905和LFSR 1906 (如果使用的话)的初始值。初始化逻辑1903使用随机数1904,所述随机数是随机数字、递增计数器或任何其他值,只要它以前未用于指定密钥。随机数块1904也可以包含适当的硬件以在使用当前随机数之后的某个时间选择另ー个唯一值。初始化逻辑1903通过解析随机数用随机数1904填充状态变量寄存器,类似于关于图16所述的过程。初始化逻辑1903然后可以计算伪随机置换逻辑1902的输入的一部分,类似于如參考图16所述的用于生成每个Ni的计算。接着,初始化逻辑1903指示伪随机置换逻辑1902选择置換函数的输入,这包括密钥和输入数据。根据关于图16所述的随机数随机化,在第一级中置換函数的输入数据是通过模2n加法与初始状态变量SVnl组合的Ni变量。来自伪随机置換函数的输出存储在由初 始化逻辑1903或控制逻辑1901选择的合适的中间密码变量寄存器1907中。初始化逻辑然后为每个状态变量重复该过程,为置换函数选择合适的密钥和输入数据。来自最后置換函数的输出可以用于在LFSR 1906中形成种子(seed)。在有限状态机1901或初始化逻辑1903的控制下,反馈逻辑1908选择中间密码变量和当前状态变量的合适组合以生成状态变量寄存器1905的下一个值。以上过程然后可以重复以填充LFSR 1906或产生离随机数1904的期望距离。在初始化之后,系统1900准备加密纯文本块。控制器1901在适当大小的块中选择纯文本输入1901作为伪随机置换函数1902的输入并且选择密钥1911中的ー个。控制器1901也从状态变量寄存器块1905选择合适的状态变量作为伪随机置换逻辑1902的输入。来自伪随机置换逻辑1902的输出然后存储在由控制器1901选择的中间密码变量寄存器1907的ー个中。该过程然后可以使用状态变量和先前生成的密码变量作为伪随机置換逻辑1902输入进行重复。来自伪随机置逻辑1902的最后迭代的输出是对应于纯文本输入的第一密文块。在来自控制器1901的引导下,密文块将被传输到密文输出块1912。在加密纯文本块之后,系统1900必须更新状态变量寄存器1905。控制逻辑1901 将中间密码变量寄存器1907和状态变量寄存器1905传到反馈逻辑块1908。来自反馈逻辑块1908的输出然后用于更新状态变量寄存器1905。反馈逻辑可以被配置成执行上述的模2n加法反馈机制。LFSR 1906也可以被包括作为反馈机制的输入,并且控制器1901应当在使用当前的LFSR值之后的某个时间计时LFSR。一旦状态变量寄存器1905被更新,系统1900准备开始加密来自纯文本输入块1910的下一个纯文本。系统1900也可以基于先前加密的纯文本生成认证标签1914使得可以为密文的接收方提供密文未被更改的一定保证。该认证逻辑1913可以控制认证标签生成过程,或者在备选实施例中,该认证标签生成过程可以包含在控制逻辑1901中。认证逻辑1913可以利用图6、图7或图17中所示的方法。执行图6和7中所示的方法涉及认证逻辑1913将状态变量级联为有掩蔽或无掩蔽的认证标签1914。执行图17中所示的方法需要认证逻辑1913或控制器1901以进一歩加密状态变量以产生离状态变量的加密后值的距离。认证逻辑1913或控制逻辑1901还可以在认证标签1914中的级联之前加密这些状态变量。认证逻辑1913也负责检验解密消息的完整性。系统1900的解密功能以类似于如上所述的加密的方式实现。控制逻辑1901选择状态变量1905、LFSR 1906和伪随机置换逻辑1902的密文输入1910。在解密所有接收到的密文块之后,认证逻辑1913将生成如上所述的认证标签1914并且比较生成的认证标签1914和接收到的具有密文的认证标签。在解密时,如果系统1900不与加密传输器同步,则初始化逻辑1903也可以用于在解密操作之前初始化状态变量寄存器1905和LFSR1906。在一个实施例中,一种用于加密纯文本消息的方法包括接收至少一个纯文本消息,其中所述纯文本消息形成至少ー个纯文本块;通过将2个或更多的伪随机置換应用于每个块加密所述纯文本块;以及由至少ー个状态变量修改每个所述伪随机置换的输入,对于每个纯文本块所述至少ー个状态变量由先前生成的置换输出、先前生成的置换输出、密文和纯文本中的至少ー个修改。所述方法包括从每个纯文本块的最后伪随机置换的输出生成至少ー个密文块,将所述纯文本消息分割为多个相等大小的纯文本块,填充所述纯文本消息以获得相等大小的纯文本块,其中所述状态变量的修改包括下列的至少ー种由来自先前块的倒数第二伪随机置换的输出修改第一伪随机置换的状态变量,由来自先前块的第一伪随机置换的输出和来自当前块的第一伪随机置換的状态变量修改最后置換的状态变量,以及由来自先前块的先前伪随机置换的输出修改所有其它伪随机置換的状态变量,其中所述状态变量使用模2n加法和模2n減法中的至少ー个进行修改,其中η表示所述块的大小,并且其中所述状态变量使用逐位异或(XOR)进行修改。所述方法包括在加密第一纯文本块之前,通过随机化随机数初始化所述状态变量并且填充随机数以便促进所述状态变量的初始化,其中所述经初始化的状态变量在会话密钥的上下文中不同于其它经初始化的状态变量,其中所述伪随机置換的数量确定所述状态变量的数量,其中所述伪随机置换是下列中的至少ー种块密码、加密代替表、S盒和转轮,其中每个伪随机置換由至少ー个不同的密钥加密,其中每个伪随机置換由相同的密钥加密,其中所述伪随机置換的一部分可以由所述伪随机置换的剩余部分的逆置換代替,并且其中所述伪随机置換和伪随机逆置換可以按照任何顺序布置。所述方法包括从所述状态变量的组合生成认证标签,其中所述生成包括在最后纯文本块的加密之后级联最后产生的状态变量,其中所述生成包括在选定纯文本块的加密之后级联最后产生的状态变量,其中所述生成包括在最后纯文本块的加密之后级联最后产生的状态变量,级联初始状态变量,并且通过异或(XOR)组合级联的变量的两个集合,所述方 法包括将所述认证标签附连到密文消息,其中所述状态变量的数量确定所述认证标签的大小,并且所述方法包括由至少ー个计数器修改所述伪随机置换的输入,以及在加密第一纯文本块之前通过随机化随机数而初始化所述计数器。在另ー个实施例中,一种用于加密纯文本消息的装置包括从至少一个随机数形成至少ー个随机数块的逻辑;存储至少ー个状态变量的存储器;将所述至少ー个状态变量设置成至少ー个初始值的初始化器,其中所述逻辑联接到所述存储器和所述初始化器,其中所述逻辑包括至少两个伪随机置换以顺序地随机化每个随机数块,其中所述逻辑组合所述至少一个状态变量和所述伪随机置换的输入,并且其中所述逻辑从下列中的至少ー个生成当前随机数块的至少ー个状态变量先前随机数块的状态变量、来自先前随机数块的伪随机置换的输出和先前随机数块的伪随机置换的输入,其中所述存储器存储随后伪随机置换的输出作为在加密或解密中使用的初始值,其中所述逻辑使所述随机数増加至少一位的填充以生成大小相等的随机数块,其中所述伪随机置換的数量等于所述随机数块的数量和所述状态变量的数量,其中所述伪随机置换是下列中的至少ー种块密码、加密代替表、S盒和转轮,其中所述伪随机置換的一部分可以由所述伪随机置换的剩余部分的逆置換代替。在另ー个实施例中,一种计算机可读介质包括指令,所述指令用于接收至少ー个纯文本消息,其中所述纯文本消息形成至少ー个纯文本块;通过将2个或2个以上伪随机置换应用于每个块加密所述纯文本块;由至少ー个状态变量修改所述伪随机置换的输入,在加密每个纯文本块之后修改所述至少一个状态变量以用于加密下ー个纯文本块,由来自先前块的倒数第二伪随机置换的输出修改第一伪随机置換的所述至少ー个状态变量,由来自先前块的第一伪随机置换的输出和来自当前块的第一伪随机置换的所述至少ー个状态变量修改最后置換的所述至少ー个状态变量,以及由来自先前块的先前伪随机置換的输出修改所有其它伪随机置換的所述至少ー个状态变量。所述计算机可读介质包括指令,所述指令用于在加密第一纯文本块之前通过随机化随机数初始化所述至少ー个状态变量,由内部计数器修改所述伪随机置换的输入,从所述状态变量的组合生成认证标签,从每个纯文本块的最后伪随机置换的输出生成至少ー个密文块,其中所述伪随机置换是下列中的至少ー种块密码、加密代替表、S盒和转轮。尽管在附图中示出并且在前面的具体实施方式
中描述了系统的示例性实施例,但是将理解本发明不限于所公开的实施例,而是能够进行许多重新布置、修改和替代而不脱离如以下权利要求阐述和限定的本发明的范围。例如,本发明的能力可以完全和/或部分地由ー个或多个元件执行。而且,这些能力可以以当前方式或以分布方式在能够提供和/或接收信息的任何设备上或经由所述设备执行。此外,尽管以特定方式进行了描述,但是各种模块或块可以被重新配置而不脱离本发明的范围。此外,尽管以特定方式进行了描述,但是可以使用或多或少数量的模块和连接以便提供附加的已知特征,和/或提供更大的效率。而且,在各种模块之间发送的信息可以在模块之间经由无线源和有线源中的至少ー个并且经由多个协议被发送。以下部分涉及允许通过使用一般伪随机置换加密和认证信息的密码方法和系统。其中所述的实施例作为另外的例子被提供。 HUMMINGBIRD密码算法的分析最近几年来射频识别(RFID)系统的快速发展在许多应用领域中大大促进了识别信息的高效和自动收集和管理。然而,RFID标签和读出器之间的无线电通信也带来了严重的隐私和安全问题。基于强块密码的解决方案(例如AES)已被提出以支持RFID系统中的隐私和认证。不幸的是,AES不适合于资源严重受限的环境,例如小硬件设备(例如RFID标签)。本发明人介绍了ー种用于RFID驱动应用的新颖的超轻密码算法HUMMINGBIRD。HUMMINGBIRD能够抵抗诸如线性和差分密码分析的多数普通攻击。在本文中描述了 HUMMINGBIRD相互认证协议的ー些性质。HUMMINGBIRD密码算法在安全和实现方面的各种改进也被描述。介绍射频识别(RFID)是能够进行自动目标识别的快速发展技木。在RFID系统中,每个目标用被称为RFID标签的小应答器标记,所述应答器接收并且响应来自被称为RFID读出器的收发器的射频查询。RFID标签由用于存储和处理识别信息的微型集成电路以及用于无线数据传输的无线电天线组成。由于极低的生产成本,RFID标签通常在计算、通信和存储的每ー个方面具有有限的能力。存在低成本和低功率标签的各种应用,例如动物识别、销售点、库存管理等。尽管RFID系统的成本低并且它们识别目标方便而不用实际接触,但是RFID标签和读出器之间的无线电通信也带来了许多严重问题。例如,当今的RFID系统不进行RFID读出器和标签之间的相互认证,因此对手容易模仿读出器或标签以获得敏感信息,甚至发动拒绝服务(DOS)攻击。而且,当读出器查询时RFID标签自动地发出它们的唯一标识而不提醒它们的用户。因此,配备有商品RFID读出器的对手可以通过链接相同RFID标签的两个不同视线而有效地跟踪携带有标签物品的人,这潜在地侵犯拥有者的隐私。另外,许多可能的安全威胁从RFID读出器和标签之间的不受保护无线通信产生。为了设法解决这些问题中的至少ー些,本发明人致カ于开发ー种保护隐私的相互认证协议供读出器和标签彼此认证。一般而言,在相互认证之后,只有合法读出器可以访问标签的内容并且读出器可以确保标签是可信的并且同时未被假冒。尽管最近几年来进行了很大努力来设计用于RFID系统的认证协议,但是本发明人一般集中在使用本文中的对称密钥密码的询问-应答协议。为了进行基于询问-应答技术的相互认证,RFID标签应当能够执行安全对称密钥原根(primitive)。已经发展了有人提出的用于具有3400个门的128位密钥AES的低功率和紧凑ASIC芯,当在IOOkHz和I. 5V下操作时其产生3. O μ A的最大电流。8位数据路径用于轮操作以及用于运行中密钥扩展。该AES实现方式仅仅包含作为组合逻辑实现的ー个Sbox并且可以在1032个时钟周期内加密128位数据块。本发明人开发了ー种对称询问-应答认证,其可以被集成到现有的IS0/IEC 18000标准中。适合于具有3100个门的低成本和低功率装置的另ー种更紧凑的8位AES加密芯已被开发。与先前的8位实现方式相比,该AES设计基于新颖的8位数据路径架构并且用相应的面积获得明显更高的呑吐和更低的循环计数。有人提出ー种被称为DESL (DES Lightweight)的轻型DES变型。DESL设计的主要思想在于用ー个新的S盒代替八个原始的S盒。最后产生的串行化DESL ASIC实现方式具有1848GE(门当量)的面积要求并且它可以在144个时钟周期内加密ー个64位数据块。除了为RFID应用优化或略微修改现有的块密码之外,另ー种方法是利用scratch设计新的轻型密码。另ー种方法使用超轻的基于SP网络的块密码PRESENT,其具有32轮、64位的块大小和80或128位的密钥大小。PRESENT是经积极硬件优化的块密码,其在数据路径和密钥调度中使用单4位S盒。特别地,PRESENT的串行版本可以用少至1000GE实现。最近,本发明人中的一些为极受限制的环境(例如RFID标签和传感器网络)开发了另ー种超轻密码算法HUMMINGBIRD。HUMMINGBIRD具有块密码和流密码的混合结构并且考虑以最小的硬件占地面积(1023GE)进行开发。在这里本发明人分析HUMMINGBIRD密码算法的设计并且提出各种改进。2HUMMINGBIRD 密码算法不同于是块密码或流密码的现有(超)轻型密码原语,HUMMINGBIRD是以上两种密码结构与16位块大小、256位密钥大小和80位内状态的巧妙組合。HUMMINGBIRD的密钥和内状态的大小提供足以用于许多RFID应用的安全级。为了清楚起见,表I中列出的注释用于算法描述。HUMMINGBIRD密码算法的顶级结构在图20中显示。表I.注释
权利要求
1.一种用于加密纯文本消息的加密引擎,包括 用于存储至少ー个状态变量的存储器;以及 控制逻辑,所述控制逻辑被配置成 接收至少一个纯文本消息,其中所述纯文本消息形成至少ー个纯文本块; 通过将2个或2个以上伪随机置換应用于每个块,加密所述纯文本块;以及以至少ー个状态变量修改每个所述伪随机置换的输入,对于每个纯文本块,所述至少一个状态变量由先前生成的置换输出、先前生成的置换输入、密文和纯文本中的至少ー个修改。
2.根据权利要求I所述的加密引擎,其中所述状态变量的修改包括下列的至少ー种 由来自先前块的倒数第二伪随机置换的输出修改第一伪随机置换的状态变量; 由来自先前块的第一伪随机置换的输出和来自当前块的第一伪随机置换的状态变量修改最后置換的状态变量; 由来自先前块的先前伪随机置换的输出和来自当前块的最后伪随机置換的状态变量修改第二伪随机置换的状态变量; 由来自先前块的先前伪随机置换的输出修改所有其它伪随机置換的状态变量。
3.根据权利要求2所述的加密引擎,其中所述状态变量使用模2η加法和模2η減法中的至少ー个进行修改,其中η表示所述块的大小。
4.根据权利要求2所述的加密引擎,其中所述状态变量使用逐位异或XOR进行修改。
5.根据权利要求2所述的加密引擎,其中所述控制逻辑还被配置成 在加密第一纯文本块之前通过随机化随机数初始化所述状态变量。
6.根据权利要求5所述的加密引擎,其中所述控制逻辑还被配置成填充随机数以便促进所述状态变量的初始化。
7.根据权利要求5所述的加密引擎,其中对于指定密钥该经初始化的状态变量不同于其它经初始化的状态变量。
8.根据权利要求2所述的加密引擎,其中所述伪随机置換的数量确定所述状态变量的数量。
9.根据权利要求2所述的加密引擎,其中每个伪随机置換由至少ー个不同的密钥加密。
10.根据权利要求2所述的加密引擎,其中所述伪随机置換的一部分可以由所述伪随机置换的剩余部分的逆置換代替。
11.根据权利要求10所述的加密引擎,其中所述伪随机置換和伪随机逆置換可以按照任何顺序布置。
12.根据权利要求I所述的加密引擎,其中所述控制逻辑还被配置成 以所述至少ー个状态变量修改每个所述伪随机置换的输入,对于每个纯文本块,所述至少ー个状态变量由先前生成的置换输出、LFSR、先前生成的置换输入、密文和纯文本中的至少ー个修改;以及 由所述LFSR修改至少ー个状态变量。
13.根据权利要求12所述的加密引擎,其中所述控制逻辑还被配置成 在加密最后纯文本块之后从所述状态变量和LFSR的组合生成认证标签。
14.根据权利要求12所述的加密引擎,其中所述控制逻辑还被配置成在加密第一纯文本块之前通过随机化随机数初始化所述LFSR。
15.根据权利要求13所述的加密引擎,其中所述控制逻辑还被配置成将所述认证标签附连到密文消息。
16.根据权利要求13所述的加密引擎,其中所述控制逻辑还被配置成 加密来自所述状态变量的组合以便在生成所述认证标签之前修改所述状态变量。
17.根据权利要求16所述的加密引擎,其中所述控制逻辑在加密之后通过将至少ー个 伪随机置换应用于姆个变量而加密所述状态变量的组合。
18.根据权利要求17所述的加密引擎,其中通过在最后纯文本块的加密之后级联最后产生的状态变量,级联初始状态变量,并且通过异或XOR组合级联的变量的两个集合,所述控制逻辑生成所述认证标签。
19.根据权利要求I所述的加密引擎,其中所述控制逻辑还被配置成 从至少一个随机数形成至少ー个随机数块; 将所述至少ー个状态变量初始化为至少ー个初始值; 通过将2个或2个以上伪随机置換应用于每个随机数块随机化每个随机数块; 以所述至少ー个状态变量修改每个所述伪随机置换的输入,对于每个随机数块,所述至少ー个状态变量由先前随机数块的状态变量、来自先前随机数块的伪随机置换的输出和先前随机数块的伪随机置换的输入来修改。
20.根据权利要求19所述的加密引擎,其中所述控制逻辑还被配置成 由来自先前随机数块的最后伪随机置换的输出和先前随机数块的第一状态变量修改当前随机数块的第一状态变量;以及 由来自先前随机数块的伪随机置换的输出和先前随机数块的伪随机置换的输入修改当前随机数块的所有其它伪随机置換的状态变量。
21.根据权利要求20所述的加密引擎,其中所述存储器存储最后伪随机置换的输出作为在加密和解密的任何ー个中使用的初始值。
22.根据权利要求20所述的加密引擎,其中所述存储器存储最后伪随机置换的输出作为初始值以在所述LFSR中形成种子(seed)。
23.根据权利要求20所述的加密引擎,其中所述存储器存储最后状态变量作为在加密或解密中使用的初始值。
24.—种用于解密纯文本消息的解密引擎,包括 用于存储至少ー个状态变量的存储器;以及 控制逻辑,所述控制逻辑被配置成 接收至少一个密文消息,其中所述密文消息形成至少ー个密文块; 通过将2个或2个以上伪随机逆置換应用于每个块解密所述密文块;以及以至少ー个状态变量修改每个所述伪随机逆置换的输入,对于每个密文块,所述至少一个状态变量由先前生成的置换输出、先前生成的置换输入、密文和纯文本中的至少ー个修改。
25.根据权利要求24所述的解密引擎,其中所述状态变量的修改包括下列的至少ー种由来自先前块的第二伪随机逆置换的输入修改最后伪随机逆置換的状态变量; 由来自先前块的最后伪随机逆置换的输出和来自当前块的最后伪随机逆置換的状态变量修改第一置換的状态变量; 由来自先前块的先前伪随机逆置换的输出和来自当前块的第一伪随机逆置換的状态变量修改倒数第二伪随机逆置換的状态变量; 由来自先前块的先前伪随机逆置换的输出修改所有其它伪随机逆置換的状态变量。
26.根据权利要求25所述的解密引擎,其中所述状态变量使用模2η加法和模2η減法中的至少ー个进行修改,其中η表示所述块的大小。
27.根据权利要求25所述的解密引擎,其中所述状态变量使用逐位异或XOR进行修改。
28.根据权利要求25所述的解密引擎,其中所述控制逻辑还被配置成 在解密第一密文块之前通过随机化随机数初始化所述状态变量。
29.根据权利要求28所述的解密引擎,其中所述控制逻辑还被配置成填充随机数以便促进所述状态变量的初始化。
30.根据权利要求28所述的解密引擎,其中对于指定密钥该经初始化的状态变量不同于其它经初始化的状态变量。
31.根据权利要求28所述的解密引擎,其中所述伪随机逆置換的数量确定所述状态变量的数量。
32.根据权利要求24所述的解密引擎,其中所述控制逻辑还被配置成 以所述至少ー个状态变量修改每个所述伪随机逆置换的输入,对于每个密文块,所述至少ー个状态变量由先前生成的置换输出、LFSR、先前生成的置换输入、密文和纯文本中的至少ー个修改;以及 由所述LFSR修改至少ー个状态变量。
33.根据权利要求32所述的解密引擎,其中所述控制逻辑还被配置成 在解密最后密文块之后从所述状态变量和LFSR的组合生成认证标签;以及 用接收到的认证标签检验生成的认证标签。
34.根据权利要求32所述的解密引擎,其中所述控制逻辑还被配置成在解密第一密文块之前通过随机化随机数初始化所述LFSR。
全文摘要
所述的系统和方法提供了一种加密和认证技术,该技术通过使用伪随机置换的多级序列的确保误差传播获得增强的完整性检验。该方法在每一级生成中间数据依赖密码变量,所述密码变量系统地组合到反馈环中。该加密技术以最少的后处理生成认证标签,所述后处理是状态的大小。所述状态的大小取决于伪随机置换的数量和LFSR的大小。对于任何数量的纯文本块认证标签提供到纯文本的唯一映射,所述数量小于或等于所述状态的大小。除了作为独立加密算法以外,所公开的技术可应用于使用伪随机置换的任何模式,例如密钥依赖查找表、S盒和块密码,例如RC5、TEA和AES。
文档编号H04L9/32GK102687457SQ201080028362
公开日2012年9月19日 申请日期2010年5月17日 优先权日2009年5月15日
发明者丹尼尔·贾森·威廉, 埃里克·迈伦·史密斯, 彼得·施魏策尔, 特洛伊·艾伦·舒尔茨 申请人:里维尔技术有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1