买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:Arm有限公司
摘要:本公开涉及密钥次序表确定,提供了用于执行密钥次序表的迭代确定的数据处理装置和方法。一组寄存器最初接收输入数据项,然后使用这组寄存器的内容作为输入来执行数据处理。然后,该数据处理的结果用于在确定密钥次序表的每个迭代轮次中更新存储在这组寄存器的预定寄存器中的值。根据数据处理装置是处于反向密钥扩展模式还是前向密钥扩展模式来确定这组寄存器中的哪个寄存器是该预定寄存器。此外,这组寄存器被布置成在一个方向上使包含在这组寄存器中的值移位,该方向取决于数据处理装置是处于反向密钥扩展模式还是前向密钥扩展模式。两种模式的方向彼此相反。
主权项:1.一种用于执行密钥次序表的迭代确定的数据处理装置,所述数据处理装置包括:一组寄存器,每个寄存器被布置成最初接收相应的输入数据项;数据处理电路,所述数据处理电路用于对中间数据项执行数据处理操作,并且生成结果数据项,其中,所述中间数据项是基于所述一组寄存器的内容的;寄存器更新电路,所述寄存器更新电路用于在密钥次序表的每个迭代确定轮次中用所述结果数据项的当前值更新存储在所述一组寄存器中的预定寄存器中的值,其中,当所述数据处理装置处于反向密钥扩展模式时,所述预定寄存器是所述一组寄存器中的第二寄存器,并且所述一组寄存器被布置成使包含在所述一组寄存器中的值在第一方向上移位,并且将所述一组寄存器中的最后一个寄存器中的值反馈到所述一组寄存器中的第一寄存器,其中,当所述数据处理装置处于前向密钥扩展模式时,所述预定寄存器是所述一组寄存器中的最后一个寄存器,并且所述一组寄存器被布置成使包含在所述一组寄存器中的值在第二方向上移位,并且其中,所述第二方向是与所述第一方向相反的方向;以及控制电路,所述控制电路用于控制所述数据处理装置执行加密过程,其中,所述数据处理装置交替地在所述前向密钥扩展模式中执行前向密钥扩展阶段并且在加密模式中执行加密阶段,其中,在所述前向密钥扩展模式中,所述控制电路被布置为控制所述数据处理电路,使得由所述一组寄存器中的每个寄存器最初接收的相应输入数据项是加密密钥的一部分,其中,在所述加密模式中,所述控制电路被布置为控制所述数据处理电路,使得由所述一组寄存器中的每个寄存器最初接收的所述相应输入数据项是明文数据项的一部分,并且使得所述中间数据项进一步基于先前的前向密钥扩展阶段的结果,并且其中,当所述数据处理装置处于所述加密模式时,所述预定寄存器是所述一组寄存器中的最后一个寄存器,并且所述一组寄存器被布置成使包含在所述一组寄存器中的值在所述第二方向上移位。
全文数据:密钥次序表确定技术领域本公开涉及数据处理。更具体地,本公开涉及数据处理装置中的密钥次序表确定。背景技术密钥扩展即初始密钥值被迭代地变换为更新密钥值序列的过程可以形成加密算法的实施方式的一部分。此外,该密钥扩展可以被实施为确定密钥次序表的迭代过程,密钥次序表包括均根据前一个密钥值确定的密钥值序列。支持实施加密算法包括这种密钥次序表确定可能需要在各种各样的数据处理装置中得到支持,然而随着更小且更简单的设备能够支持这种加密算法的压力越来越大,它们的实施方式需要更加高效。发明内容本文中描述的至少一个示例提供了一种用于执行密钥次序表的迭代确定的数据处理装置,所述装置包括:一组寄存器,每个寄存器被布置成最初接收相应的输入数据项;数据处理电路,所述数据处理电路用于对中间数据项进行数据处理操作,并生成结果数据项,其中,所述中间数据项基于这组寄存器的内容;以及寄存器更新电路,所述寄存器更新电路用于在密钥次序表的每个迭代确定轮次中用所述结果数据项的当前值更新存储在这组寄存器的预定寄存器中的值,其中,当所述数据处理装置处于反向密钥扩展模式时,所述预定寄存器是这组寄存器中的第二寄存器,并且这组寄存器被布置成使包含在这组寄存器中的值在第一方向上移位,并将这组寄存器中的最后一个寄存器中的值反馈到这组寄存器中的第一寄存器,其中,当所述数据处理装置处于前向密钥扩展模式时,所述预定寄存器是这组寄存器中的最后一个寄存器,并且这组寄存器被布置成使包含在这组寄存器中的值在第二方向上移位,并且其中,所述第二方向是与所述第一方向相反的方向。本文中描述的至少一个示例提供了一种在数据处理装置中执行密钥次序表的迭代确定的方法,所述方法包括以下步骤:最初在一组寄存器中接收相应的输入数据项;对中间数据项进行数据处理操作以生成结果数据项,其中,所述中间数据项基于这组寄存器的内容;并且在所述密钥次序表的每个迭代确定轮次中用所述结果数据项的当前值更新存储在这组寄存器的预定寄存器中的值,其中,当所述数据处理装置处于反向密钥扩展模式时,所述预定寄存器是这组寄存器中的第二寄存器,更新这组寄存器的值包括使包含在这组寄存器中的值在第一方向上移位,并且将这组寄存器中的最后一个寄存器中的值反馈到这组寄存器中的第一寄存器,并且当所述数据处理装置处于前向密钥扩展模式时,所述预定寄存器是这组寄存器中的最后一个寄存器,并且更新所述值包括使包含在这组寄存器中的值在第二方向上移位,并且其中,所述第二方向是与所述第一方向相反的方向。本文中描述的至少一个示例提供了一种用于执行密钥次序表的迭代确定的数据处理装置,所述数据处理装置包括:用于最初在一组寄存器中接收相应的输入数据项的模块;用于对中间数据项执行数据处理操作以生成结果数据项的模块,其中,所述中间数据项基于这组寄存器的内容;以及用于在所述密钥次序表的每个迭代确定轮次中用所述结果数据项的当前值更新存储在这组寄存器的预定寄存器中的值的模块,其中,当所述数据处理装置处于反向密钥扩展模式时,所述预定寄存器是这组寄存器中的第二寄存器,更新这组寄存器的值包括使包含在这组寄存器中的值在第一方向上移位,并且将这组寄存器中的最后一个寄存器中的值反馈到这组寄存器中的第一寄存器,并且当所述数据处理装置处于前向密钥扩展模式时,所述预定寄存器是这组寄存器中的最后一个寄存器,并且更新所述值包括使包含在这组寄存器中的值在第二方向上移位,并且其中,所述第二方向是与所述第一方向相反的方向。附图说明仅通过举例的方式,参考如附图所示的本发明的实施例进一步描述本发明,在附图中:图1示意性地示出了实施例中的数据处理装置;图2A示意性地示出了实施例中的前向密钥扩展模式的数据处理装置,并且图2B示意性地示出了实施例中的反向密钥扩展模式的数据处理装置;图3示意性地示出了实施例中的数据处理装置;图4示意性地示出了实施例中的数据处理装置;图5示意性地示出了实施例中的数据处理装置;图6示意性地示出了实施例中的数据处理装置;图7示意性地示出了实施例中的前向密钥扩展模式的数据处理装置;图8示意性地示出了实施例中的反向密钥扩展模式的数据处理装置;图9示意性地示出了数据处理装置,示出了实施例中的支持加密解密轮函数和前向反向密钥扩展轮函数的双模函数;图10示出了实施例中的数据处理装置;图11A、图11B和图11C示出了当由图10的设备的4个S盒配置执行时在加密和解密期间所遵循的一系列阶段;图11D、图11E和图11F示出了当由图10的设备的4个S盒配置执行时在加密和解密期间所遵循的一系列阶段,在每次加密解密操作结尾时,这一系列阶段还将密钥回滚到其初始值;图12A、图12B和图12C示出了当由图10的设备的1个S盒配置执行时在加密和解密期间所遵循的一系列阶段;图12D、图12E和图12F示出了当由图10的设备的1个S盒配置执行时在加密和解密期间所遵循的一系列阶段,在每次加密解密操作结尾时,这一系列阶段还将密钥回滚到其初始值;并且图13示出了实施例的方法采取的一系列步骤。具体实施方式本文中描述的至少一个示例提供了一种用于执行密钥次序表的迭代确定的数据处理装置,所述数据处理装置包括:一组寄存器,每个寄存器被布置成最初接收相应的输入数据项;数据处理电路,所述数据处理电路用于对中间数据项进行数据处理操作,并生成结果数据项,其中,所述中间数据项基于这组寄存器的内容;以及寄存器更新电路,所述寄存器更新电路用于在密钥次序表的每个迭代确定轮次中用所述结果数据项的当前值更新存储在这组寄存器的预定寄存器中的值,其中,当所述数据处理装置处于反向密钥扩展模式时,所述预定寄存器是这组寄存器中的第二寄存器,并且这组寄存器被布置成使包含在这组寄存器中的值在第一方向上移位,并将这组寄存器中的最后一个寄存器中的值反馈到这组寄存器中的第一寄存器,其中,当所述数据处理装置处于前向密钥扩展模式时,所述预定寄存器是这组寄存器中的最后一个寄存器,并且这组寄存器被布置成使包含在这组寄存器中的值在第二方向上移位,并且其中所述第二方向是与所述第一方向相反的方向。数据处理装置被布置成执行密钥次序表的迭代确定,也就是说,根据其接收到的初始密钥值,数据处理装置执行多轮确定,这些确定提供一系列演变的密钥值,然后为密钥次序表确定的密钥值可用于实施加密或解密算法。为此目的,数据处理装置具有一组寄存器,这组寄存器最初接收第一组值,然后数据处理装置的数据处理电路根据这组寄存器的内容执行数据处理操作。可以以各种方式定义该数据处理操作,但是然后使其结果存储在这组寄存器的预定寄存器中。以这种方式更新这组寄存器中的哪个寄存器取决于数据处理装置当前操作的特定模式。然而,应该理解,数据处理装置处理数据的大致循环路径即,从这组寄存器通过数据处理电路并经由寄存器更新电路返回到这组寄存器中使得能够执行密钥次序表的迭代演变。这可以称为“轮函数”。然而,本技术的发明人已经发现,在提供用于执行密钥次序表的迭代确定的数据处理装置中出现了某些挑战,特别是在还希望限制所提供的数据处理装置的大小和复杂性的情况下。例如,虽然前向密钥扩展表示数据处理装置实施的更简单的过程例如,用于加密过程,因为所接收的初始密钥值可以例如通过迭代演变、供第二演变利用、供第二演变来演变、由完全前向密钥次序表的完全扩展利用等,反向密钥扩展的实施方式带来了进一步的挑战,特别是在具有有限能力和资源的数据处理装置的上下文中。例如,当数据处理装置仅具有有限的存储例如存储器能力时,可能未提供足够的存储来在任何给定时间维持完整的密钥次序表即每个迭代的密钥值,并且因此必须根据需要生成每个密钥值。在数据处理装置只能提供上述初始密钥值开始正向密钥扩展,反之,反向密钥扩展结束的情况下,可能需要另外的步骤以便提供必要的密钥值作为需要反向密钥扩展例如,用于解密的密钥次序表的迭代确定的一部分。此外,执行这种反向密钥扩展的方式是非常重要的,因为加密算法定义通常仅定义初始密钥值的参数和初始密钥值前向扩展的方式,假设一旦执行了该过程,则结果密钥次序表的所有密钥值随后是可用的即,本地存储,然后可以以相反的顺序对反向密钥次序表使用每个密钥次序表。然而,在具有有限存储容量的数据处理装置中,这会是不可能的。在这种情况下,本技术的发明人已经发现,有限的一组硬件组件没有大量存储仍然可以支持这种反向密钥扩展因此允许在即时确定反向密钥次序表的密钥值,其中,这是基于一组寄存器,这组寄存器一起被布置为一组移位寄存器,但是其中数据处理装置可以以两种互补的密钥扩展模式操作,即前向密钥扩展模式和反向密钥扩展模式。当数据处理装置在前向密钥扩展模式中操作时,数据处理的结果数据项被反馈到该组移位寄存器的一端在上面定义为这组寄存器中的“最后一个”寄存器,然后通过这组寄存器的移位动作顺序地移动通过这组寄存器的其他寄存器。相反,当数据处理装置在反向密钥扩展模式中操作时,数据处理的结果数据项被反馈到这组寄存器中的“第二”寄存器,即,在相对于这组寄存器的上述“最后一个”寄存器的这组寄存器的另一端的倒数第二个位置。此外,当处于反向密钥扩展模式时,这组寄存器的移位动作在相反的方向上操作,使得最后一个寄存器中的值被循环回到这组寄存器中的第一寄存器。通过下面给出的讨论和示例的实施例将进一步理解为什么会这样。数据处理装置可以进一步包括控制电路,所述控制电路用于控制所述数据处理装置执行加密过程,其中所述数据处理装置交替地在所述前向密钥扩展模式中执行前向密钥扩展阶段并且在加密模式中执行加密阶段,其中,在所述前向密钥扩展模式中,所述控制电路控制所述数据处理电路,使得由这组寄存器的每个寄存器最初接收的相应输入数据项是加密密钥的一部分,其中,在所述加密模式中,所述控制电路控制所述数据处理电路,使得由这组寄存器的每个寄存器最初接收的相应输入数据项是明文数据项的一部分,并且使得所述中间数据项进一步基于先前的前向密钥扩展阶段的结果,并且其中,当所述数据处理装置处于所述加密模式时,所述预定寄存器是这组寄存器中的最后一个寄存器,并且这组寄存器被布置成使包含在这组寄存器中的值在第二方向上移位。因此,数据处理装置不仅可以用于执行密钥次序表的迭代确定,而且还可以执行相对应的加密过程,该加密过程利用在该密钥次序表确定所确定的密钥值,具体地说,是由数据处理装置在其前向密钥扩展模式中确定的那些。因此,通过最终逐个阶段执行与对应加密阶段交错的前向密钥扩展,例如,可以接收明文数据项的初始部分,并通过完整前向密钥次序表应用完整加密过程,使得通过仅使用由数据处理装置提供的有限的一组组件就可以生成密码文本的结果部分。控制电路可以被布置成控制数据处理电路以在反向密钥扩展模式中执行反向密钥扩展序列,包括执行多个反向密钥扩展阶段,其中,反向密钥扩展序列被布置成使数据处理电路在加密过程的前向密钥扩展阶段中执行的数据处理操作反向。因此,相反地,相同的数据处理装置也可以通过执行多个反向密钥扩展阶段来执行互补的反向密钥扩展序列,多个反向密钥扩展阶段逐个阶段地使上述的前向密钥扩展阶段反转。这样做有多个目的。一方面,这可以支持与上述加密过程互补的解密过程。然而,在具有有限存储容量的数据处理装置的上下文中,如果数据处理装置仅被提供一次初始密钥值,则也可以使用该反向密钥扩展序列。这是因为它可能没有能力存储该初始密钥值,因此可用于进行进一步的加密过程。在该上下文中,本技术的发明人已经意识到可以通过将数据处理装置配置为能够执行作为连续块的多个反向密钥扩展阶段来解决该问题。反向密钥扩展序列可以包括顺序地执行所述多个反向密钥扩展阶段。换句话说,虽然密钥扩展阶段可以与解密阶段交错,完全反向密钥扩展可以作为单个过程执行,使得多个反向密钥扩展阶段中的每一个被顺序执行以将通过前向密钥扩展演变的密钥值“回滚”回初始密钥值。因此,数据处理装置不需要存储初始密钥值,并且具有从“另一端”开始重新创建它的能力。控制电路可以进一步被布置成控制所述数据处理装置以执行解密过程,其中所述数据处理装置在所述反向密钥扩展模式中交替地执行所述多个反向密钥扩展阶段的反向密钥扩展阶段并且在解密模式中执行解密阶段,其中,在所述反向密钥扩展模式中,所述控制电路控制所述数据处理电路,使得由这组寄存器的每个寄存器最初接收的相应输入数据项是解密密钥的一部分,其中,在所述解密模式中,所述控制电路控制所述数据处理电路,使得由这组寄存器的每个寄存器最初接收的相应输入数据项是密文数据项的一部分,并且使得所述中间数据项进一步基于先前的反向密钥扩展阶段的结果,并且其中,当所述数据处理装置处于所述解密模式时,所述预定寄存器是这组寄存器中的最后一个寄存器,并且这组寄存器被布置成使包含在这组寄存器中的值在第二方向上移位。因此,反向密钥扩展模式可以支持包括交错的反向密钥扩展阶段和解密阶段的解密过程,其中,通过利用上述技术进行反向密钥扩展,可以进行密钥次序表的反向演变,以便为各个反向密钥扩展阶段提供相应的所需反向密钥值。此外,注意,它是执行反向密钥扩展和解密过程的同一数据处理电路,因此仅需要具有有限大小和存储能力的数据处理装置。解密过程可以包括初始解密阶段,对于所述初始解密阶段,所述中间数据项不基于先前的反向密钥扩展阶段的结果。根据正在实施的解密算法,数据处理装置基于前一个前向密钥扩展的最终演变的密钥值来支持初始解密阶段可能是有用的,即,在执行相应的解密阶段之前,不需要通过阶段来回滚。数据处理装置还可以包括另一组寄存器,每个寄存器被布置成最初接收另外的相应输入数据项,其中,在前向密钥扩展模式中,控制电路控制数据处理电路,使得由另一组寄存器的每个寄存器最初接收的相应输入数据项是明文数据项的一部分。因此,数据处理装置总共可以设有两组寄存器,其中这些组寄存器中的第一组用于保存被确定为密钥次序表的一部分的密钥值,而这些组寄存器合中的第二组用于保存数据值例如,明文被加密为密文在加密模式中或密文被解密为明文在解密模式中。然后,数据处理装置可以分别保持即时需要的密钥值数据项和文本数据项以执行加密或解密,而不需要在数据处理装置中可访问的另外的存储容量例如,存储器。因此,实现数据装置所需的硬件相当有限。中间数据项可以包括两个或更多个段,并且所述数据处理电路包括迭代地执行变换过程的变换电路,所述变换过程包括基于预定映射将所述两个或更多个段中的每个段顺序地变换成对应的相应变换值。数据处理电路可以根据相关的加密算法采用各种形式,但是因此可以包括基于预定的映射将接收的段变换成变换的段。然而,特别注意,变换过程包括顺序变换两个或更多个段。换句话说,因此不是并行布置,其中两个或更多个段可以并行变换,因此数据处理电路被布置成顺序地执行这些变换。虽然这显然需要更多数量的实施循环,但是只需要提供一个变换电路的示例。仅举一个示例,该变换电路可以例如在一些实施例中被称为“S盒”替换盒,如针对相关加密算法所定义的。同样,这限制了实施数据处理装置所需的硬件。所述变换电路可以包括存储变换值的多个变换结果寄存器,其中所述多个变换结果寄存器包括的变换结果寄存器比中间数据项包括的段的少一个,其中,所述变换过程包括将每个对应的相应变换值存储在所述多个变换结果寄存器的变换结果寄存器中,直到所述两个或更多个变换值的倒数第二个变换值,并且所述变换电路被布置成在所述变换过程的最后一个步骤中输出变换值的变换数据项,所述变换数据项包括所述多个变换结果寄存器的内容和所述两个或更多个变换值的最后一个未存储的变换值。在变换电路顺序变换段的这种配置中,提供多个变换结果寄存器意味着每个顺序变换的结果可以临时地缓存在变换电路中。但请注意,一个变换结果寄存器的段数少于变换电路变换的段数,因为当执行变换过程的最后一步以变换序列中的最后一段时,该最后变换的数据项可以与多个变换结果寄存器的内容一起直接输出,从而提供中间数据项的完整变换值。这再一次支持数据处理装置的有限硬件配置。数据处理电路可以包括移位电路以对中间数据项执行作为数据处理操作的一部分的循环移位操作,其中结果数据项基于循环移位操作的结果。移位电路可以根据要实施的加密算法采取各种形式,但是某些加密算法由循环移位操作支持。实际上,移位电路本身可以根据是否正在实现前向或反向密钥扩展而不同地操作,并且可以根据数据处理装置当前正在操作哪个密钥扩展模式来选择第一和第二移位电路。移位电路可以包括第一移位电路和第二移位电路,其中,当所述数据处理装置处于所述前向密钥扩展模式和所述反向密钥扩展模式之一时,通过使用所述第一移位电路来执行循环移位操作,并且当所述数据处理装置处于解密模式和加密模式之一时,使用所述第二移位电路执行所述循环移位操作。数据处理装置还可以包括输入选择电路,所述输入选择电路用于在这组寄存器的每个寄存器的输入时在这组寄存器的每个寄存器的第一输入与第二输入之间进行选择,其中,每个寄存器的输入选择取决于所述数据处理装置是处于所述反向密钥扩展模式还是所述前向密钥扩展模式。从上面的讨论中可以看出,根据数据处理装置是处于反向密钥扩展模式还是前向密钥扩展模式,这组寄存器的寄存器不同地互连,并且在每个寄存器的输入处提供输入选择电路进一步支持这一点。前向密钥扩展模式和反向密钥扩展模式可以由所述密钥扩展方向信号限定,并且所述输入选择电路可以包括多路复用,所述多路复用可操作以基于所述密钥扩展方向信号在第一输入与第二输入之间进行选择。这使得能够基于要实施的密钥扩展方向信号在第一和第二输入之间进行有效选择。中间数据项可以基于对所述这组寄存器中的至少两个的内容的异或运算。可以根据所实施的加密算法来不同地定义中间数据项,但是基于这组寄存器中的至少两个的内容的异或运算可以有用地支持至少一些加密算法。类似地,某些加密算法也可以利用一组预定义的常数参数作为数据处理的输入,并且中间数据项因此可以进一步依赖于该输入,例如通过对异或运算的附加输入。中间数据项还可以基于一组预定义的常数参数中的相应常数参数。密钥次序表可以适合于生成将由SMS4加密算法使用的一系列密钥值。从以上讨论可以理解,本技术可以在支持各种加密算法中找到适用性,但是从下面的一些特定实施例的讨论中还可以理解,当支持SMS4加密算法即已知的中文分组密码标准时,本技术可以找到可能需要用于保护无线网络的特定的适用性。在这个特定的加密算法中,使用的输入、输出和密钥都是128位,算法有32轮,每个通过使构成一个块的四个32位字中的一个与其他三个字的键控函数进行异或来修改这个字。加密和解密具有相同的结构,除了用于解密的轮密钥次序表与用于加密的轮密钥次序表反向之外。本文中描述的至少一个示例提供了一种用于在数据处理装置中执行密钥次序表的迭代确定的方法,所述方法包括以下步骤:最初在一组寄存器中接收相应的输入数据项;对中间数据项进行数据处理操作以生成结果数据项,其中,所述中间数据项基于这组寄存器的内容;并且在所述密钥次序表的每个迭代确定轮次中用所述结果数据项的当前值更新存储在这组寄存器的预定寄存器中的值,其中,当所述数据处理装置处于反向密钥扩展模式时,所述预定寄存器是这组寄存器中的第二寄存器,更新这组寄存器的值包括使包含在这组寄存器中的值在第一方向上移位,并将这组寄存器中的最后一个寄存器中的值反馈到这组寄存器中的第一寄存器,并且当所述数据处理装置处于前向密钥扩展模式时,所述预定寄存器是这组寄存器中的最后一个寄存器,并且更新所述值包括使包含在这组寄存器中的值在第二方向上移位,并且其中所述第二方向是与所述第一方向相反的方向。本文中描述的至少一个示例提供了一种用于执行密钥次序表的迭代确定的数据处理装置,所述数据处理装置包括:用于最初在一组寄存器中接收相应的输入数据项的模块;用于对中间数据项进行数据处理操作以生成结果数据项的模块,其中,所述中间数据项基于这组寄存器的内容;以及用于在所述密钥次序表的每个迭代确定轮次中用所述结果数据项的当前值更新存储在这组寄存器的预定寄存器中的值的模块,其中,当所述数据处理装置处于反向密钥扩展模式时,所述预定寄存器是这组寄存器中的第二寄存器,更新这组寄存器的值包括使包含在这组寄存器中的值在第一方向上移位,并将这组寄存器中的最后一个寄存器中的值反馈到这组寄存器中的第一寄存器,并且当所述数据处理装置处于前向密钥扩展模式时,所述预定寄存器是这组寄存器中的最后一个寄存器,并且更新所述值包括使包含在这组寄存器中的值在第二方向上移位,并且其中所述第二方向是与所述第一方向相反的方向。现在将参考附图描述一些具体实施例。图1示意性地示出了示例的实施例中的数据处理装置10。数据处理装置10包括一组寄存器12、14、16、18,在执行密钥扩展转发或反向或加密解密的迭代过程之前,可以向这组寄存器馈送输入数据项。数据处理电路20接收寄存器12、18中的每一个的内容,从而产生结果数据项,然后更新电路22使得更新这组寄存器中的寄存器之一的内容。选择哪个寄存器作为目的地取决于数据处理装置当前操作的模式,并且图1具体示出了当数据处理装置在前向密钥扩展模式中操作以及当数据处理装置在反向密钥扩展模式中操作之间的区别。如图所示,当在前向密钥扩展模式中操作时,“最后一个”寄存器18的内容接收更新电路22的输出,而当数据处理装置处于反向密钥扩展模式时,“第二”寄存器14接收更新电路22的输出。图2A和2B示意性地示出了如图1所示的同一组寄存器、数据处理电路和更新电路,尽管为了说明的简洁,已经组合了数据处理电路20和更新电路22。图2A和2B分别示出了在前向密钥扩展模式和反向密钥扩展模式中使用的移位路径,即,在图2A中,对于前向密钥扩展模式,其中更新电路22的输出由最后一个寄存器18接收,然后移位路径沿着寄存器在图中顺序向上。相反,图2B示出了在反向密钥扩展模式中使用的移位路径,其中第二寄存器14接收更新电路22的输出,然后移位路径在图中沿着寄存器向下,从最后一个寄存器18循环到第一寄存器22。图3示意性地示出了示例的实施例中的结合了图2A和2B的特征的数据处理装置30,其中由各个寄存器34、36、38、40组成的这组寄存器32被示出为具有通往这些寄存器的两个可能的反馈路径,并且示出了这些寄存器之间的两个不同的组合移位路径。下面参考图4给出移位路径之间的选择的更多细节。还在图3中更详细地示出了数据处理电路42,其中数据处理电路包括变换电路44和移位电路的两个示例,即第一移位电路46和第二移位电路48。数据处理电路42的变换电路44接收异或门50的输出,该异或门的输入由寄存器36、38和40提供。变换电路44对由异或50产生的结果执行替换,这将在下面更详细地描述。第一和第二移位电路46、48中的每一个根据数据处理装置当前操作的模式对变换电路44的输出执行循环移位操作。具体地,提供了一个移位电路以支持密钥扩展,而提供了另一个移位电路以支持加密解密。数据处理装置当前是否以密钥扩展模式前向或后向或加密解密模式操作是由多路复用52接收的二进制输入信号限定,该多路复用在第一移位电路46和第二移位电路48的输出之间进行选择。该输出与第一寄存器34的内容进行异或,以产生最终结果数据项,该最终结果数据项被反馈到所选择的寄存器中。图4示意性地示出了如图3中所讨论的数据处理装置30,但是这里聚焦在提供这组寄存器32的配置的更多细节。除了第一和第二移位电路46和48也一般被标记为移位电路56之外,数据处理电路42和异或门50和54与图3中所示的相同。这组寄存器32在图4中示出以进一步包括用于每个寄存器的输入多路复用,即分别为输入多路复用60、62、66。由密钥扩展方向信号控制即,数据处理装置当前是处于前向密钥扩展模式还是反向密钥扩展模式来确定每个多路复用将哪个输入传递到其各自的寄存器。因此,当数据处理装置处于前向密钥扩展模式时使用密钥扩展方向信号0,并且当数据处理装置处于反向密钥扩展模式时使用密钥扩展方向信号1。重要的是还要注意,对于这组寄存器的输入与移位方向配置之间的这种选择仅在数据处理装置处于密钥扩展模式时适用,因为当数据处理装置处于加密解密模式时,密钥扩展方向信号被固定为0,使得异或门54的输出总是馈入到寄存器40中,并且内容在图中的向上方向通过寄存器移位。图5示意性地示出了数据处理装置70,该数据处理装置为本技术的应用提供了更宽的上下文。数据处理装置70被示出为包括由控制模块74控制的核心72,并且耦合到密钥移位寄存器76和加密移位寄存器78。在控制模块74的控制下,核心72执行密钥扩展前向和反向和加密解密。密钥移位寄存器76接收输入密钥值,而加密移位寄存器78接收要加密的明文。相反,当执行解密时,加密移位寄存器78接收密文。控制模块74向密钥移位寄存器76和加密移位寄存器78提供方向信号以指示密钥扩展方向,并且还向核心72提供选择信号以确定核心是否以密钥扩展模式或加密解密模式操作。返回参考图1至4,因此将理解并且以图3作为其示例图5的核心72可以等同于数据处理电路42和相关的异或门50、54和多路复用52,而这组寄存器32由图5中的密钥移位寄存器76和加密移位寄存器78提供。图6示意性地示出了实施例中的数据处理装置80,这防止了图5中呈现的系统的更高级别视图。在图6中,该设备包括中心核心82,该中心核心可以被认为包括核心72和图5的移位寄存器76、78。在控制单元88的控制下,该核心82被夹在数据输入寄存器84与数据输出寄存器86之间,用于使设备80与其所在的较宽系统同步。因此,保持在寄存器84中的数据中的数据被停止,直到从核心82接收到准备信号,并且一组有效的准备信号使数据能够通过该系统,特别是对于核心82经由寄存器84中的数据接收的明文并且对于产生加密数据的核心82,该加密数据响应于接收到的数据输出准备信号经由数据输出寄存器86被输出。下面的图7-12呈现了专门被配置为实施SMS4算法的一组示例的实施例。在SMS4算法的上下文中并且对于该算法的更多细节,可以参考“用于无线网络的SMS4加密算法”WhitfieldDiffie和GeorgeLedin,2008年5月15日,版本1.03其全部内容通过引用并入本文,并且注意到下面讨论的数学逻辑变量采用该文件中给出的定义,本技术已经认识到,对于反向密钥扩展操作即,i迭代为:i=31,30,29,...0,根据可以进行以下推导。首先:然后,对于i=0,1,2,...,31;然后,如果我们将方程的两侧与函数进行异或运算,并特别注意到以下观察结果:·异或运算是关联的;·并且·我们得到:因此结果将是:通过采用反向扩展的前三次迭代,这意味着rkiKi的那些值可以按照以下方式被获得:对于i=31对干i=30对于i=29换句话说,对于反向密钥扩展,上述三个表达式表明,对于任何给定迭代的连续K值集,对它们进行排序使得最低索引的K值在每个表达式中形成第二值,下一个最高的K值在每个表达式中形成第三值和第四值,而最高值的K值在每个表达式中形成第一K值。这对应于移位寄存器中的一组四个寄存器的上述配置,当正在执行反向密钥扩展时,该配置被布置成使得对轮函数中的内容执行的数据处理的输出向“第二”寄存器提供输入,其中,寄存器之间的移位将值从第二寄存器移动到第三寄存器,从第三寄存器移动到第四寄存器,并将来自第四寄存器的值反馈到第一寄存器中。用于执行前向密钥扩展的第一配置如图7所示。从一组四个32位寄存器90、92、94、96,第二、第三和第四寄存器92、94、96向异或98提供输入,而另一输入由本地存储的常数参数Cki提供。异或98产生输入到非线性变换τ的32位输入,非线性变换在所示配置中由四个S盒100、102、104、106并行提供。每个S盒将8位变换在一起,以将32位输入提供给线性变换L’,对于该前向密钥扩展,其被提供作为循环13位左移108、循环10位左移110和异或112。第一寄存器90的内容与异或112的输出一起形成异或114的输入,从而产生结果值Ki+4,该结果值被反馈以形成要存储在第四寄存器96中的新值。如图所示,在该模式中配置这组寄存器以使内容在图中向上移位。相反,图8示意性地示出了当相同设备被配置用于反向密钥扩展时的数据流。如上面参考图7所描述的,在图8中表示相同的组件集。不同之处在于:a异或114的输出提供了被反馈以向第二32位寄存器92提供输入的Ki,以及b移位在图中通常向下进行,第四32位寄存器96的输出循环以向第一32位寄存器90提供输入。因此,参考图7和图8将理解,同一组组件可以提供前向和反向密钥扩展函数。现在转向图9,示出了同一组元件的组合增加另一组移位电路以提供线性替换L如何使同一组组件也能提供加密解密函数,以及上述前向后向密钥扩展函数。因此,在图9中再次示出了与上面参考图7和8描述的同一组部件,其中增加了由位移器118、120、122和124表示的另一组移位电路,这提供了形成在执行加密或解密时所需的线性替换L的一部分的循环2位、8位、8位和6位左移位。因此,还提供了多路复用128以在两组移位电路的输出之间进行选择,这将输入提供到异或114中。还要注意,当设备处于加密解密轮函数模式时,异或98的输入可以反而提供Rkirki31-i。图7和8中所示的组件与图9中所示的组件之间存在进一步的差异,即执行非线性替换τ的方式。而在图7和8中,并行提供了四个S盒,在图9所示的实施例中,提供了单个S盒。因此,如图9所示,非线性替换函数116由多路复用130、单个S盒132、选择多路复用134、三个8位寄存器136、138、140和有限状态机142提供。有限状态机142控制提供非线性替换函数116的其他组件的操作。在操作中,多路复用130在从异或98接收的32位输入的四个8位部分之间进行选择,并将其传递给执行其替换的S盒132。如果该替代输出是所接收的32位值的前三个8位部分之一,则该替代输出依次通过多路复用134指向8位寄存器136、138、140之一。因此,进行第一、第二和第三8位替换并将其存储在相应的寄存器136、138、140中。然后,当最后一个第四8位部分被替换时,该输出与来自寄存器136、138、140输出的前24位一起提供完全替换的32位值。这使得该设备能够仅用一个8位S盒处理32位替换。图10示意性地示出了另外的示例的实施例,要注意的是,特别是在数据处理装置150内,SMS4F&F’函数核心152在图10中被标记为包括四个并行S盒或仅包括一个S盒。这是指一方面图7图8和另一方面图9中所示的非线性替换函数的两种可能实施方式,即是否并行使用四个S盒或者在四个连续步骤中使用一个S盒。图10可以以任何一种方式实施。应当理解,图7、图8和图9的一组四个32位移位寄存器90、92、94、96由图10中的移位寄存器154和156表示。图10中所示的SMS4体系结构的操作阶段在图11A-C中对于四个S盒实施方式并且在图12A-C中对于一个S盒实施方式进行展示。从图10的表示中可以看出,该设备被配置为处理128位数据段即16字节。因此,对于四个S盒实施方式,在更新密钥并接收16个新字节数据之后,对于加密,设备对于每个偶数循环在前向密钥扩展模式中运行并且对于每个奇数循环在加密模式中运行,从而导致总共64个循环对于每16字节明文。相反但仍然用于四个S盒实施方式,对于解密,该设备首先运行前向密钥扩展模式32个循环图11B以便创建完全演变的密钥次序表值作为起始点,并且然后对于每个奇数循环28次运行反向密钥扩展模式,并且对于每个偶数循环32次运行解密操作,从而导致总共92个循环对于每16字节明文。这将与单个S盒实施方式形成对比,根据该实施方式,在更新密钥并接收16个新字节数据之后,对于加密参见图12A,模块对于每个[计数器四为偶数]循环运行前向密钥扩展操作并且对于每个[计数器四为奇数]循环运行加密操作,从而导致总共4x64=256个循环对于每16字节明文。相反仍然指代单个S盒实施方式,用于解密,该设备对于4×32=128个循环首先在前向密钥扩展模式中运行再次,以创建完全演变的密钥次序表值作为起始点,并且然后对于每个[计数器四为奇数]循环28次在反向密钥扩展模式中运行并且对于每个[计数器四为偶数]循环32次在解密模式中运行,从而导致总共4x92=368个循环对于每16字节明文。总之,可以看出,因此在四个S盒或单个S盒实施方式之间进行选择时可以进行实施方式权衡选择,其中,四个S盒实施方式需要提供更大的SMS4函数核心,而单个S盒实施方式需要更长的时间来执行加密或解密。在图11D、图11E和图11F以及图12D、图12E和图12F中分别示出了两个另外的配置变型的操作,这表明这些配置在每次加密解密操作结束时另外将密钥回滚到其初始值。这尤其意味着不需要存储密钥值,并且不需要加载密钥操作,因为在每次加密解密操作之后,密钥返回到它的初始值即128位的值集[K0,K1,K2,K3]。图13是示出由本技术的实施例采取的一系列步骤的流程图。特别地,该步骤序列示出了使用耦接在一起以形成移位寄存器的示例性一组四个32位寄存器,其中,四个寄存器之间的内容的移位根据设备是否处于反向密钥扩展模式而不同。可以认为该流程在步骤200开始,其中移位寄存器接收四个32位段即16个新字节。然后在步骤202,基于移位寄存器的四个寄存器的内容执行数据处理,并且在步骤204,确定该设备当前是否处于反向密钥扩展模式。如果不是,则流程进行到步骤206,其中数据处理的结果更新构成该移位寄存器的一组四个32位寄存器的第四最后一个寄存器。然后在步骤208,步骤寄存器将内容移位到递减的寄存器号,即第四寄存器中新接收的内容取代第三寄存器中的内容,第三寄存器的内容被移位到第二寄存器,第二寄存器的内容被移位到第一寄存器与图2A相比。可替代地,如果在步骤204确定该设备当前处于反向密钥扩展模式,则流程进行到步骤210,其中数据处理的结果更新一组四个寄存器中的第二寄存器。然后在步骤212,内容在寄存器之间移位以增加寄存器号,从而将最后一个第四寄存器的内容反馈到第一寄存器与图2B比较。从步骤212或步骤208,流程返回到步骤200。简而言之,提供了用于执行密钥次序表的迭代确定的数据处理装置和方法。一组寄存器最初接收输入数据项,然后使用这组寄存器的内容作为输入来执行数据处理。然后,该数据处理的结果用于在确定密钥次序表的每个迭代轮次中更新存储在这组寄存器的预定寄存器中的值。根据数据处理装置是处于反向密钥扩展模式还是前向密钥扩展模式来确定这组寄存器中的哪个寄存器是该预定寄存器。此外,这组寄存器被布置成在一个方向上使包含在这组寄存器中的值移位,该方向取决于数据处理装置是处于反向密钥扩展模式还是前向密钥扩展模式。两种模式的方向彼此相反。在本申请中,词语“被配置为......”或“被布置成”用于表示设备的元件具有能够执行所定义的操作的配置。在此上下文中,“配置”表示硬件或软件的互连的布置或方式。例如,该设备可以具有提供所定义的操作的专用硬件,或者可以对处理器或其他处理设备进行编程以执行该函数。“被配置为”或“被布置成”并不意味着需要以任何方式改变设备元件以便提供定义的操作。尽管这里已经参考附图详细描述了说明性实施例,但是应该理解,本发明不限于那些精确的实施例,本领域技术人员可以在其中实现各种变化、增加和修改而不脱离由所附权利要求限定的本发明的范围。例如,在不脱离本发明的范围的情况下,可以利用独立权利要求的特征对从属权利要求的特征进行各种组合。
权利要求:1.一种用于执行密钥次序表的迭代确定的数据处理装置,所述数据处理装置包括:一组寄存器,每个寄存器被布置成最初接收相应的输入数据项;数据处理电路,所述数据处理电路用于对中间数据项执行数据处理操作,并且生成结果数据项,其中,所述中间数据项是基于所述一组寄存器的内容的;以及寄存器更新电路,所述寄存器更新电路用于在密钥次序表的每个迭代确定轮次中用所述结果数据项的当前值更新存储在所述一组寄存器中的预定寄存器中的值,其中,当所述数据处理装置处于反向密钥扩展模式时,所述预定寄存器是所述一组寄存器中的第二寄存器,并且所述一组寄存器被布置成使包含在所述一组寄存器中的值在第一方向上移位,并且将所述一组寄存器中的最后一个寄存器中的值反馈到所述一组寄存器中的第一寄存器,其中,当所述数据处理装置处于前向密钥扩展模式时,所述预定寄存器是所述一组寄存器中的最后一个寄存器,并且所述一组寄存器被布置成使包含在所述一组寄存器中的值在第二方向上移位,并且其中,所述第二方向是与所述第一方向相反的方向。2.根据权利要求1所述的数据处理装置,进一步包括控制电路,所述控制电路用于控制所述数据处理装置执行加密过程,其中,所述数据处理装置交替地在所述前向密钥扩展模式中执行前向密钥扩展阶段并且在加密模式中执行加密阶段,其中,在所述前向密钥扩展模式中,所述控制电路控制所述数据处理电路,使得由所述一组寄存器中的每个寄存器最初接收的相应输入数据项是加密密钥的一部分,其中,在所述加密模式中,所述控制电路控制所述数据处理电路,使得由所述一组寄存器中的每个寄存器最初接收的所述相应输入数据项是明文数据项的一部分,并且使得所述中间数据项进一步基于先前的前向密钥扩展阶段的结果,并且其中,当所述数据处理装置处于所述加密模式时,所述预定寄存器是所述一组寄存器中的最后一个寄存器,并且所述一组寄存器被布置成使包含在所述一组寄存器中的值在所述第二方向上移位。3.根据权利要求2所述的数据处理装置,其中,所述控制电路被布置成控制所述数据处理电路在所述反向密钥扩展模式中执行反向密钥扩展序列,所述反向密钥扩展序列包括执行多个反向密钥扩展阶段,其中,所述反向密钥扩展序列被布置成在所述加密过程的前向密钥扩展阶段中使由所述数据处理电路执行的数据处理操作反向。4.根据权利要求3所述的数据处理装置,其中,所述反向密钥扩展序列包括顺序地执行所述多个反向密钥扩展阶段。5.根据权利要求3所述的数据处理装置,其中,所述控制电路进一步被布置成控制所述数据处理装置以执行解密过程,其中,所述数据处理装置在所述反向密钥扩展模式中交替地执行所述多个反向密钥扩展阶段中的反向密钥扩展阶段并且在解密模式中执行解密阶段,其中,在所述反向密钥扩展模式中,所述控制电路控制所述数据处理电路,使得由所述一组寄存器中的每个寄存器最初接收的相应输入数据项是解密密钥的一部分,其中,在所述解密模式中,所述控制电路控制所述数据处理电路,使得由所述一组寄存器中的每个寄存器最初接收的相应输入数据项是密文数据项的一部分,并且使得所述中间数据项进一步基于先前的反向密钥扩展阶段的结果,并且其中,当所述数据处理装置处于所述解密模式时,所述预定寄存器是所述一组寄存器中的最后一个寄存器,并且所述一组寄存器被布置成使包含在所述一组寄存器中的值在第二方向上移位。6.根据权利要求5所述的数据处理装置,其中,所述解密过程包括初始解密阶段,对于所述初始解密阶段,所述中间数据项是不基于先前的反向密钥扩展阶段的结果的。7.根据权利要求2所述的数据处理装置,进一步包括另一组寄存器,每个寄存器被布置成最初接收另外的相应输入数据项,其中,在所述前向密钥扩展模式中,所述控制电路控制所述数据处理电路,使得由所述另一组寄存器中的每个寄存器最初接收的相应输入数据项是明文数据项的一部分。8.根据权利要求1所述的数据处理装置,其中,所述中间数据项包括两个或更多个段,并且所述数据处理电路包括迭代地执行变换过程的变换电路,所述变换过程包括基于预定映射将所述两个或更多个段中的每个段顺序地变换成对应的相应变换值。9.根据权利要求8所述的数据处理装置,其中,所述变换电路包括存储变换值的多个变换结果寄存器,其中,所述多个变换结果寄存器包括的变换结果寄存器比所述中间数据项包括的段少一个,其中,所述变换过程包括将每个对应的相应变换值存储在所述多个变换结果寄存器中的变换结果寄存器中,直到两个或更多个变换值中的倒数第二个变换值,并且所述变换电路被布置成在所述变换过程的最后一个步骤中输出变换值的变换数据项,所述变换值的变换数据项包括所述多个变换结果寄存器的内容和所述两个或更多个变换值的最后一个未存储的变换值。10.根据权利要求1所述的数据处理装置,其中,所述数据处理电路包括移位电路,所述移位电路用于对所述中间数据项执行循环移位操作以作为所述数据处理操作的一部分,其中,所述结果数据项是基于所述循环移位操作的结果的。11.根据权利要求10所述的数据处理装置,其中,所述移位电路包括第一移位电路和第二移位电路,其中,当所述数据处理装置处于所述前向密钥扩展模式和所述反向密钥扩展模式之一时,使用所述第一移位电路来执行所述循环移位操作,并且当所述数据处理装置处于解密模式和加密模式之一时,使用所述第二移位电路执行所述循环移位操作。12.根据权利要求1所述的数据处理装置,还包括输入选择电路,所述输入选择电路用于在所述一组寄存器中的每个寄存器的输入处针对所述一组寄存器中的每个寄存器在第一输入与第二输入之间进行选择,其中,每个寄存器的输入选择取决于所述数据处理装置是处于所述反向密钥扩展模式还是所述前向密钥扩展模式。13.根据权利要求12所述的数据处理装置,其中,所述前向密钥扩展模式和所述反向密钥扩展模式是由密钥扩展方向信号限定的,并且所述输入选择电路包括多路复用器,所述多路复用器能够操作以基于所述密钥扩展方向信号在所述第一输入与所述第二输入之间进行选择。14.根据权利要求1所述的数据处理装置,其中,所述中间数据项是基于对所述一组寄存器中的至少两个寄存器的内容的异或运算的。15.根据权利要求14所述的数据处理装置,其中,所述中间数据项是进一步基于一组预定义的常数参数当中的相应常数参数的。16.根据权利要求1所述的数据处理装置,其中,所述密钥次序表适合于生成将由SMS4加密算法使用的一组密钥值。17.一种在数据处理装置中执行密钥次序表的迭代确定的方法,所述方法包括以下步骤:最初在一组寄存器中接收相应的输入数据项;对中间数据项执行数据处理操作以生成结果数据项,其中,所述中间数据项是基于所述一组寄存器的内容的;以及在所述密钥次序表的每个迭代确定轮次中用所述结果数据项的当前值更新存储在所述一组寄存器中的预定寄存器中的值,其中,当所述数据处理装置处于反向密钥扩展模式时,所述预定寄存器是所述一组寄存器中的第二寄存器,更新所述一组寄存器的值包括使包含在所述一组寄存器中的值在第一方向上移位,并且将所述一组寄存器中的最后一个寄存器中的值反馈到所述一组寄存器中的第一寄存器,并且当所述数据处理装置处于前向密钥扩展模式时,所述预定寄存器是所述一组寄存器中的最后一个寄存器,并且更新所述值包括使包含在所述一组寄存器中的值在第二方向上移位,并且其中,所述第二方向是与所述第一方向相反的方向。18.一种用于执行密钥次序表的迭代确定的数据处理装置,所述数据处理装置包括:用于最初在一组寄存器中接收相应的输入数据项的模块;用于对中间数据项执行数据处理操作以生成结果数据项的模块,其中,所述中间数据项是基于所述一组寄存器的内容的;以及用于在所述密钥次序表的每个迭代确定轮次中用所述结果数据项的当前值更新存储在所述一组寄存器中的预定寄存器中的值的模块,其中,当所述数据处理装置处于反向密钥扩展模式时,所述预定寄存器是所述一组寄存器中的第二寄存器,更新所述一组寄存器的值包括使包含在所述一组寄存器中的值在第一方向上移位,并且将所述一组寄存器中的最后一个寄存器中的值反馈到所述一组寄存器中的第一寄存器,并且当所述数据处理装置处于前向密钥扩展模式时,所述预定寄存器是所述一组寄存器中的最后一个寄存器,更新所述值包括使包含在所述一组寄存器中的值在第二方向上移位,并且其中,所述第二方向是与所述第一方向相反的方向。
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。