基于旋转的密码术的制作方法

文档序号:11532264阅读:307来源:国知局
基于旋转的密码术的制造方法与工艺

相关申请案的交叉参考

本申请案主张2014年10月10日在美国专利与商标局申请的第62/062,306号临时申请案以及2015年2月6日在美国专利与商标局申请的第14/616,110号非临时申请案的优先权和权益,这两个申请案的完整内容以引用的方式并入本文中。

本发明的方面大体上涉及通信,且更确切地说(但非排他地)涉及基于旋转的密码术。



背景技术:

密码术为用于加密和/或解密的密码算法。在加密这一边,通常被称为明文的信息由密码术运算以产生通常被称为密文的经加密信息。在解密这一边,经加密信息由密码术运算以重新产生原始信息(原始明文)。存在不同类型的密码术,包含所谓的块密码术,例如数据加密标准(des)密码术和高级加密标准(aes)密码术。

良好块密码术围绕由claudeshannon陈述的两个重要原理而设计:混淆和扩散。混淆意味着密文应以尽可能数学上复杂的方式取决于明文和密码密钥。扩散意味着明文中的小局部改变应影响尽可能多的密文。这些目标通常通过使用实现针对通常放置于称为替换层的宽阵列中的少量位(例如,所谓的替换框(s框))的混淆的简单构建块以及互混替换层的输出的线性层来实现。

s框通常将n位映射到n位。然而,在某些状况下(例如,在例如blowfish或cast等设计中),s框将n位映射到m位,其中m大于n。举例来说,可以采用8位到32位s框。在这些情况下,s框还执行扩散的一部分,从而促进密码术的设计。然而,与n位到n位s框相比,此些n位到m位s框不是对射函数,且其可使密码术的分析更困难。并且,这些s框相对较大。举例来说,在基于表的实施方案中,blowfish和casts框占据常规8位s框的四倍的空间。

此外,这些基于表的实施方案固有地容易发生高速缓冲存储器时序攻击。密码术的内部状态既定为机密的。然而,所述状态的部分用作到s框查找表的指数或偏移。与执行来自表的负载相关联的等待时间取决于处理器的数据高速缓冲存储器中的可用性。通过测量此等待时间,攻击者可采用此相依性来恢复内部密码术状态,并且最终恢复由密码术使用的密码密钥。



技术实现要素:

下文呈现本发明的一些方面的简化概述以提供对此些方面的基本理解。此概述并非本发明的所有所预期特征的广泛综述,且既不希望识别本发明的所有方面的关键或至关重要要素,也不希望划定本发明的任何或所有方面的范围。其唯一目的是以简化形式呈现本发明的一些方面的各种概念以作为稍后呈现的更详细描述的序言。

本发明的各种方面实现一种密码术,其中值(例如,表、字符串或某一其它值)的可变旋转被采用作为大s框以实现混淆和扩散两者。在一些方面,对于迭代密码术的每一迭代,扩展状态值的子集来计算此旋转s框的旋转距离,借此其旋转的s框或部分随后与状态值组合,且针对下一迭代旋转新状态值。有利的是,所述密码术可在软件(或其它代码)中使用常规指令实施,而不需要大s框查找表。所述密码术可用于明文的加密(encryption/enciphering)和密文的解密(decryption/deciphering)。

在一个方面中,本发明提供一种用于产生经加密信号的方法:包含接收第一信号;基于第一信号确定状态值;基于状态值确定旋转距离;基于旋转距离旋转第一值;组合经旋转第一值和状态值;以及基于经旋转第一值和状态值的组合产生第二信号。

本发明的另一方面提供一种经配置用于产生经加密信号的设备,其包含存储器电路和耦合到存储器电路的处理电路。所述处理电路经配置以:从存储器电路接收第一信号;基于第一信号确定状态值;基于状态值确定旋转距离;基于旋转距离旋转第一值;组合经旋转第一值和状态值;以及基于经旋转第一值和状态值的组合产生第二信号。

本发明的另一方面提供一种经配置用于产生经加密信号的设备。所述设备包含:用于接收第一信号的装置;用于基于第一信号确定状态值的装置;用于基于状态值确定旋转距离的装置;用于基于旋转距离旋转第一值的装置;用于组合经旋转第一值和状态值的装置;以及用于基于经旋转第一值和状态值的组合产生第二信号的装置。

本发明的另一方面提供一种存储计算机可执行代码的非暂时性计算机可读媒体,所述计算机可执行代码包含用以执行以下操作的代码:接收第一信号;基于第一信号确定状态值;基于状态值确定旋转距离;基于旋转距离旋转第一值;组合经旋转第一值和状态值;以及基于经旋转第一值和状态值的组合产生第二信号。

除上文以外,根据本发明的额外方面,旋转和组合对状态值施加非线性,且在状态值的后续实例内扩散所述组合。根据本发明的额外方面,第一值为替换框值。根据本发明的额外方面,所述组合包含掩蔽经旋转第一值,以及组合所述经掩蔽的经旋转第一值和状态值。根据本发明的额外方面,所述组合包含通过组合经旋转第一值和状态值产生状态值的中间实例。根据本发明的额外方面,第二信号的产生包含通过旋转状态值的中间实例产生状态值的后续实例。根据本发明的额外方面,将状态值的中间实例旋转基于第一值的位数量的位数量。根据本发明的额外方面,状态值的中间实例的产生包含将密码密钥与经旋转第一值和状态值的所述组合的结果组合。根据本发明的额外方面,状态值的确定包含通过组合密码密钥和状态值的先前实例产生状态值的当前实例。根据本发明的额外方面,旋转距离的确定进一步基于状态值的子集。根据本发明的额外方面,旋转距离的确定包含:从状态值选择位的子集;确定对应于选定的位子集的第一数目;确定对应于第一值的位数量的第二数目;以及将第一数目乘以第二数目。根据本发明的额外方面,旋转距离的确定包含:掩蔽状态值;以及移位经掩蔽状态值。根据本发明的额外方面,旋转距离的确定进一步包含:基于经移位的经掩蔽状态值移位第二值;掩蔽经移位第二值;以及移位经掩蔽的经移位第二值。根据本发明的额外方面,状态值的确定包含通过旋转状态值的先前实例产生状态值的当前实例。根据本发明的额外方面,第二信号的产生包含将密码密钥与经旋转第一值和状态值的所述组合进行组合。根据本发明的额外方面,第一值具有某一值使得经旋转第一值和状态值的组合为对射的。根据本发明的额外方面,第一值为对射的。根据本发明的额外方面,第一信号包括明文,且第二信号包括明文的经加密表示。根据本发明的额外方面,第一信号包括密文,且第二信号包括密文的经解密表示。根据本发明的额外方面,旋转距离的确定、第一值的旋转以及经旋转第一值和状态值的组合以迭代方式执行以基于所接收的第一信号产生第二信号。

根据本发明的额外方面,旋转距离的确定、第一值的旋转以及经旋转第一值和状态值的组合可通过如下运算执行:s^=ror(sbox,(s&m1)<<s1)&mask,以及s=ror(s,r1),其中^=为xor运算,ror为向右旋转运算,&为and运算,<<为位向左移位运算,s对应于状态值的实例,m1为第一掩码值,mask为第二掩码值,s1为移位值,r1为旋转值,且sbox对应于第一值的实例。

根据本发明的额外方面,旋转距离的确定、第一值的旋转以及经旋转第一值和状态值的组合可通过如下运算执行:s=rol(s,r1),以及s^=ror(sbox,(s&m1)<<s1)&mask,其中^=为xor运算,rol为向左旋转运算,ror为向右旋转运算,&为and运算,<<为位向左移位运算,s对应于状态值的实例,m1为第一掩码值,mask为第二掩码值,r1为旋转值,s1为移位值,且sbox对应于第一值的实例。

根据本发明的额外方面,旋转距离的确定、第一值的旋转以及经旋转第一值和状态值的组合可通过如下运算执行:s^=ror(sbox,(s&m1)<<s1),以及s=ror(s,r1),其中^=为xor运算,ror为向右旋转运算,&为and运算,<<为位向左移位运算,s对应于状态值的实例,m1为掩码值,s1为移位值,r1为旋转值,且sbox对应于第一值的实例。

根据本发明的额外方面,旋转距离的确定、第一值的旋转以及经旋转第一值和状态值的组合可通过如下运算执行:s=rol(s,r1),shift=(tinv>>((state&m1)<<s1))<<s2,以及s^=ror(sbox,shift),其中^=为xor运算,rol为向左旋转运算,ror为向右旋转运算,&为and运算,<<为位向左移位运算,>>为位向右移位运算,s对应于状态值的实例,m1为掩码值,s1为第一移位值,s2为第二移位值,r1为第一旋转值,shift为第二旋转值,tinv为倒转替换框值,且sbox对应于第一值的实例。所属领域的一般技术人员在结合附图审阅本发明的特定实施方案的以下描述后将了解本发明的其它方面、特征和实施方案。虽然可相对于下文的特定实施方案和图论述本发明的特征,但本发明的所有实施方案可包含本文论述的有利特征中的一或多者。换句话说,虽然可将一或多个实施方案论述为具有特定有利特征,但也可以根据本文中所论述的本发明的各种实施方案来使用此类特征中的一或多者。类似地,虽然特定实施方案可在下文论述为装置、系统或方法实施方案,但应理解,此类实施方案可以各种装置、系统和方法实施。

附图说明

图1说明本发明的一或多个方面可应用于的系统的实例。

图2说明数据加密标准(des)块密码术。

图3说明用于des块密码术的逐位线性变换的表。

图4说明高级加密标准(aes)块密码术。

图5说明根据本发明的一些方面的基于旋转的密码术的实例。

图6说明根据本发明的一些方面的基于旋转的密码术的另一实例。

图7说明根据本发明的一些方面对明文操作以产生密文的处理电路的实例。

图8说明根据本发明的一些方面对密文操作以产生明文的处理电路的实例。

图9说明根据本发明的一些方面对明文操作以产生密文的处理电路的另一实例。

图10说明根据本发明的一些方面对密文操作以产生明文的处理电路的另一实例。

图11说明根据本发明的一些方面的密码术电路的实例。

图12说明根据本发明的一些方面用于支持密码安全的电子装置的实例硬件实施方案的框图。

图13说明根据本发明的一些方面的密码术过程的实例。

图14说明根据本发明的一些方面的密码术过程的另一实例。

图15说明根据本发明的一些方面提供图14的密码术过程的更详细实例的密码术过程。

图16说明根据本发明的一些方面的密码术过程的另一实例。

图17说明根据本发明的一些方面提供图16的密码术过程的更详细实例的密码术过程。

具体实施方式

下文结合附图阐述的具体实施方式意图作为对各种配置的描述,且并不意图表示可实践本文中所描述的概念的唯一配置。所述具体实施方式出于提供对各种概念的透彻理解的目的而包含具体细节。然而,所属领域的技术人员将显而易见的是,可在没有这些特定细节的情况下实践这些概念。在一些情况下,以框图形式展示众所周知的结构和组件以免混淆此类概念。

图1为采用密码术的系统100的简化实例。系统100包含加密明文104借此产生密文106的加密组件102。举例来说,加密可用于确保明文104在存储或发射到另一组件(未图示)之前为受保护的。系统100还包含解密密文106借此恢复原始明文104的解密组件108。因此,原始明文104的使用可限于已经被给予解密密文106的能力的经授权用户。在实践中,给定系统可包含图1的组件中的一或多者。举例来说,一些系统可仅对信息进行加密,一些系统可仅对信息进行解密,且一些系统可对信息进行加密和解密两者。

对于块密码术,通常经由使用非线性技术(通常被称为非线性层)实现混淆。举例来说,可以采用s框,借此给定输入信息块被由s框中的对应一者界定的另一信息块替换。

相比而言,用于块密码术的扩散通常经由使用线性技术(通常被称为线性层)实现。举例来说,可以采用置换技术贯穿密码术空间散布信息。出于说明的目的,将参考des块密码术和aes块密码术的实例描述这些概念。

图2说明des块密码术200的实例。输入信息(明文)202由第一线性层206(扩展置换)、非线性层208(s框)和第二线性层210(置换p)操作以产生输出信息(密文)204。非线性层208涉及用s框信息替换输入到s框中的信息。每一线性层206或210(置换)贯穿密码术空间有效地水平地到处移动位。线性层206和210可被认为是可由例如图3的表300等表表示的逐位线性变换。

在实践中,此线性变换在硬件(例如,如图2中所展示)相对容易实施。然而,在软件中有效实施此线性变换较困难。举例来说,非定制处理器通常并不提供本机操作来直接执行这些操作。

因此,针对软件实施方案,des通常被实施为一系列表查找。到查找表中的每一查找将映射到查找表中的给定条目m。在一个实例中,至多四个位在条目中的任一者中设定。在此情况下,用于相继des轮次的每一表查找可涉及四个6位查找。跨越密码术空间的输入位的置换因此经由这些表查找实现。

图4说明aes块密码术400的实例。输入信息(明文)402由非线性层406(s框)和线性层408(移位行和混合列)操作以产生输出信息(密文)404。在此情况下,线性层408不止涉及简单置换。实际上,位以数学方式混合。举例来说,线性层408可涉及可由向量等式表示的线性变换。

类似于des,用于aes的线性层在软件中相对难以有效实施。因此,针对软件实施方案,aes也通常被实施为一系列表查找。在一个实例中,用于相继aes轮次的每一表查找可涉及移位状态值、掩蔽字节,和使结果穿过查找表。

基于旋转的密码术

在一些方面中,本发明涉及基于旋转的密码术。在一些方面,此基于旋转的密码术可在软件(以及硬件)中有效实施,且可对抗高速缓冲存储器时序攻击(侧信道抵抗性)。在一些方面,此密码术可以极小代码占用面积实施。举例来说,在一些实施方案中,在x64处理器上,此密码术可以少于100字节和/或少于25个机器指令实施。基于旋转的密码术的两个实例在下文详细论述。

第一实例

在第一实例中,通过重复围绕以下运算所设计的单一轮次获得密码术:

state=statexorwide-s-box(stateand0xf)等式1

后面或前面是轮次密钥混合:

state=statexorkey_i等式2

和状态的旋转,举例来说:

state=ror(state,4)等式3

通过串接64位整数或阵列中的小4位替换框s的所有值获得宽s框(因为4位替换框具有16个条目,且16*4=64)。举例来说,如果称为sbox的值(例如,字符串、表、阵列或某一其它值)被界定为:

sbox:=s[15]|s[14]|s[13]|…|s[2]|s[1]|s[0],等式4

其中s[15]的四个位是sbox的最高有效位,且s[0]的四个位是sbox的四个最低有效位,那么可从值sbox检索s[]的任何值,为:

s[v]=(sbox>>(v*4))and0xf等式5

在一些方面,此可视为查找。因此,通过移除利用0xf的掩蔽且用旋转替代移位(ror=向右旋转),可将全宽s框构造为值(例如,整数、阵列等)的旋转。因此,可界定将4位映射到64的“宽”、“旋转”s框,如下:

等式6

wide-s-box(v)=ror(sbox,v*4)(因此s[v]=wide-s-box(v)and0xf)

然而,利用运算:

state=statexorwide-s-box(stateand0xf)等式7

也变换状态的最低四个位。因此,经变换位无法在逆运算(例如,解密)中有效地使用以确定移位指数(乘以4)和旋转sbox64位值。为解决此问题,可改为使用以下运算:

等式8

state=statexor(wide-s-box(stateand0xf)and0xfffffffffffffff0)

在此情况下,最低四个位未经修改。因此,这些位可用于计算宽s框的值,且因此恢复上一步骤。因此,为了解密,可简单地逆向执行加密步骤。

在一些方面,以上密码术为如第三届国际快速软件加密研讨会(thethirdinternationalworkshoponfastsoftwareencryption)的会议记录(121-144页,施普林格出版社(springer-verlag),1996)中作者bruceschneier和johnkelsey的“不平衡费斯妥网络和块密码术设计(unbalancedfeistelnetworksandblockcipherdesign)”中界定的目标重型费斯妥网络。然而,在此实例密码术中,通过旋转s框计算替换。

利用此密码术(例如,加密)的64位块密码术(被命名为“paul_encrypt”)的伪码实例运行如下。

等式9

代替于xor运算,另一运算可用于执行密钥混合和/或经旋转s框的混合。举例来说,可采用整数加法、整数减法或某一其它混合(组合)运算。

图5为根据本文中的教示的基于旋转的密码术500的概念表示。对于密码术500的给定轮次,当前状态504的子集502由θ函数506操作以提供扩展输出508。扩展输出508由γ函数510操作,借此γ函数510的输出被掩蔽524,且接着与当前状态504进行xor运算512。所得输出随后进行旋转514以提供用于密码术500的下一轮次的状态504。

出于说明的目的,将在使用64位状态参数和4位s框的实施方案的上下文中更详细描述密码术500的运算。然而,应理解,本文中的教示不限于此实施方案,且其它状态和s框大小可在其它实施方案中使用。

64位状态504由16个4位半字节组成。对于每一轮次,一个半字节输入到θ函数506。θ函数506扩展子集502的4位半字节以提供64位扩展输出508。此运算由图5中的θ描述516展示。此处,0x0的输入a映射到{0x0,0x1,0x2,...,0xe,0xf},0x1的输入a映射到{0x1,0x2,0x3,...,0xf,0x0},等等。扩展输出508可表示为(a+15)|(a+14)|...|(a+1)|a;其中|指示4位值的串接。

在一些方面,θ函数506为提供扩散函数的线性层。因此,从紧凑型基于表的s框产生相对宽s框。

γ函数510执行如由图5中的γ描述518指示的字节替换运算。在一些方面,γ函数510为提供混淆函数的非线性层。如522处指示,s框经选择使得s(x)为对射的。

γ函数510使用64位表s执行扩展输出508的每一半字节的s框替换。图5说明此表520的实例,其中,以逐半字节的方式,针对给定输入x指示4位s框的值s(x)。应理解,本文中的教示不限于此特定表s,且其它表值和/或大小可在其它实施方案中使用。

此表查找在图5中由s(x)数学上表示。因此,在γ描述518中,用于扩展输出508的最低有效半字节b0的s框替换由s(b0)表示,用于扩展输出508的下一最低有效半字节b1的s框替换由s(b1)表示,等等。因此,γ函数510的输出可表示为s(b15)|s(b14)|...|s(b1)|s(b0);其中|指示4位值的串接。

旋转514将其输入向右旋转一个半字节(即,四个位)。所述操作随后在下一轮次中重复直至已经操作状态504的所有半字节为止。在实践中,这些操作针对状态504的全部执行多次以增加最终由密码术500输出的密文的扩散和混淆特性。

密码术500可在软件中使用例如旋转、xor和位移位等标准指令实施。针对一轮次的指令集的实例在等式10中阐述。

等式10

#defineror64(x,b)(((x)>>(b))|((x)<<(64-(b))))

#definemask0xfffffffffffffff0

constuint64_tsbox=0x3f41b87d026c59eaull

state^=key[i];

state^=ror(sbox,(state&0xf)<<2)&mask;

state=ror(state,4);

其中^=为xor运算,ror为向右旋转运算,&为and运算,<<为位向左移位运算,state对应于状态504,sbox为表520,mask对应于掩码524,且key为密码密钥。

以上代码极小:(例如),64位中央处理单元(cpu)上约25个指令(总计约100字节)。可见,不需要显式扩散步骤。此外,此类型的设计可利用经典技术进行密码分析,以提供严格的安全界限。与传统表查找相比,本文中所揭示的基于旋转的密码术不必使用机密密码术状态指数用于数据加载指令。因此,所述密码术的数据高速缓冲存储器占用面积不必取决于密码术状态。因此,此设计对高速缓冲存储器时序攻击具有天然抗扰性。

第一实例-倒转

图5的基于旋转的密码术500的倒转执行与密码术500类似的操作,只是以逆序。举例来说,此倒转密码术可用于解密由密码术500产生的密文。作为另一实例,倒转密码术可用于对明文进行加密,,且密码术500用于解密所得密文。

利用此倒转密码术函数的64位块密码术(被命名为“paul_decrypt”)的伪码实例如下。

等式11

如上文所提及,例如整数加法或减法等另一运算可用于执行密钥混合和/或经旋转s框的混合,代替xor运算。在此情况下,在倒转密码术中使用函数的倒转。举例来说,如果在加密函数中使用加法,那么在解密函数的对应位置使用减法以确保恰当倒转。作为另一实例,如果在加密函数中使用减法,那么在解密函数的对应位置使用加法以确保恰当倒转。

倒转密码术可在软件中使用例如旋转、xor和位移位等标准指令实施。针对一轮次的指令集的实例在等式12中阐述。

等式12

#definerol64(x,b)(((x)<<(b))|((x)>>(64-(b))))

#definemask0xfffffffffffffff0

constuint64_tsbox=0x3f41b87d026c59eaull

state=rol(state,4);

state^=ror(sbox,(state&0xf)<<2)&mask;

state^=key[i];

其中^=为xor运算,rol为向左旋转运算,ror为向右旋转运算,&为and运算,<<为位向左移位运算,state对应于状态504,sbox为表520,mask对应于掩码524,且key为密码密钥。

第二实例

在使用值(例如,字符串、表等)的相同类型的旋转以产生宽s框的密码术的第二实例中,当将值混合到状态中时并不采用掩蔽。此密码术不是费斯妥网络。在此实例中,密码术的倒转更棘手,因为最低有效半字节经修改(如上文所论述):

new-state[3..0]=state[3..0]xors([state[3..0])等式13

假定由t[v]=vxors[v]界定的s框t为可逆的,通过使新状态[3..0]通过t的倒转,可恢复原始状态。因此,原始经移位大sbox可恢复并进行xor运算到完整状态。因此,在此实例中,s并不需要为可逆的。然而,新s框t为可逆的。

利用此加密函数的64位块密码术(被命名为“paul2_encrypt”)的伪码实例如下。

等式14

图6为根据本文中的教示的基于旋转的密码术600的概念表示。对于密码术600的给定轮次,当前状态604的子集602由θ函数606操作以提供扩展输出608。扩展输出608由γ函数610操作,借此γ函数610的输出与当前状态604进行xor运算612。所得输出随后进行旋转614以提供用于密码术600的下一轮次的状态604。

出于说明的目的,将在使用64位状态参数和4位s框的实施方案的上下文中更详细描述密码术600的运算。然而,应理解,本文中的教示不限于此实施方案,且其它状态和s框大小可在其它实施方案中使用。

64位状态604由16个4位半字节组成。针对每一轮次,一个半字节输入到θ函数606。θ函数606扩展子集602的4位半字节以提供64位扩展输出608。此运算由图6中的θ描述616展示。此处,0x0的输入a映射到{0x0,0x1,0x2,...,0xe,0xf},0x1的输入a映射到{0x1,0x2,0x3,...,0xf,0x0},等等。扩展输出608可表示为(a+15)|(a+14)|...|(a+1)|a;其中|指示4位值的串接。

在一些方面,θ函数606为提供扩散函数的线性层。因此,从紧凑型基于表的s框产生相对宽s框。

γ函数610执行如由图6中的γ描述618指示的字节替换运算。在一些方面,γ函数610为提供混淆函数的非线性层。如622处指示,s框经选择使得x→xxors(x)为对射的。

γ函数610使用64位表s执行扩展输出608的每一半字节的s框替换。图6说明此表620的实例,其中,以逐半字节的方式,针对给定输入x指示4位s框的值s(x)。应理解,本文中的教示不限于此特定表s,且其它表值和/或大小可在其它实施方案中使用。

此表查找在图6中数学上由s(x)表示。因此,在γ描述618中,扩展输出608的最低有效半字节b0的s框替换由s(b0)表示,扩展输出608的下一最低有效半字节b1的s框替换由s(b1)表示,等等。因此,γ函数610的输出可表示为s(b15)|s(b14)|...|s(b1)|s(b0);其中|指示4位值的串接。

旋转614将其输入向右旋转一个半字节(即,四个位)。所述操作随后在下一轮次中重复直至已经操作状态604的所有半字节为止。在实践中,这些操作针对状态604的全部执行多次以增加最终由密码术600输出的密文的扩散和混淆特性。

密码术600可在软件中使用例如旋转、xor和位移位等标准指令实施。针对一轮次的指令集的实例在等式15中阐述。

等式15

#defineror64(x,b)(((x)>>(b))|((x)<<(64-(b))))

constuint64_tsbox=0x3f41b87d026c59eaull

state^=key[i];

state^=ror(sbox,(state&0xf)<<2);

state=ror(state,4);

其中^=为xor运算,ror为向右旋转运算,&为and运算,<<为位向左移位运算,state对应于状态604,sbox为表620,且key为密码密钥。

再次,以上代码极小:例如,64位cpu上25个指令(总计100字节)。在一些方面,以上密码术可具有与第一实例密码术相比较快的加密和较好的扩散。此较好扩散可使得能够使用较少轮次。然而,如下文所示,与第一实例密码术中的解密中的轮次函数相比,所述解密中的轮次函数更复杂,且因此通常更慢。

第二实例密码术不是费斯妥密码术(用于确定s框值的“分支”也被替换)。此外,所述密码术不是替换-置换网络(spn)。

在以上“paul2_encrypt”密码术中,映射x->xxors[x]为对射的,使得可恢复恰当指数。然而,并不严格地必需原始s框为对射(在此情况下,等效于内射)的性质。因此,在一些方面,非内射s框可施加到非费斯妥构造。

对于以上“paul2_encrypt”密码术,解密使用提供x+s(x)的第二表。或者,解密和加密的角色可调换。举例来说,此调换可在与其中发生加密的装置相比计算上更有限的装置上发生解密的情况下实施。

第二实例-倒转

图6的基于旋转的密码术600的倒转执行与密码术600类似的操作,只是以逆序,同时使用如上文所描述的s框t。此倒转密码术可用于例如解密由密码术600产生的密文。作为另一实例,倒转密码术可用于对明文进行加密,且密码术600用于解密所得密文。

利用此倒转密码术函数的64位块密码术(被命名为“paul2_decrypt”)的伪码实例如下。

等式16

倒转密码术可在软件中使用例如旋转、xor和位移位等标准指令实施。针对一轮次的指令集的实例在等式1中阐述。

等式17

#definerol64(x,b)(((x)<<(b))|((x)>>(64-(b))))

constuint64_ttinv=0x19cf20d473865aebull

constuint64_tsbox=0x3f41b87d026c59eaull

state=rol(state,4);

shift=(tinv>>((state&0xf)<<2))<<2;

state^=ror(sbox,shift);

state^=key[i];

其中^=为xor运算,rol为向左旋转运算,ror为向右旋转运算,&为and运算,>>为位向右移位运算,<<为位向左移位运算,state对应于状态604,sbox为表620,且key为密码密钥。

额外方面

大体来说,本文中的教示适用于“宽”s框,而非仅仅本文中所描述的特定实例。举例来说,掩蔽可用于截断到较小大小。

如果起点为n位s框s,那么s框可通过以下映射而“扩展”到m字节宽s框:x->s[x+m-1]|...|s[x+1]|s[x],其中|为串接。

如果m并不太大(例如,小于2^n)且s具有良好算术差分性质,那么密码术可相对安全。此为与上文基本上相同的构造,但发生了“截断”。

本文中的教示不限于具有4位输入的s框。举例来说,映射可为从4位到n位。作为一特定实例,其中4<n<64,此映射可通过如下映射实现:

v→rot(sbox,4*v),截断到n位等式18

对于4到16位的截断,可使用以下映射:

v→rot(sbox,4*v)&0xffff,用作16位字等式19

其它映射将用于n的其它值的截断。

举例来说,所揭示基于旋转的密码术的应用包含基于8位s框的密码术。对于具有类似于上文的“paul_encrypt”密码术的机制的128位块密码术,可使用16个连续值。为避免读取表时“包围”,可使用271字节表代替256字节表。

8位s框可存储为256字节的阵列t[0..255]。因此,可以bruceschneier的blowfish或carlisleadams和staffordtavares的cast(cast128或cast256)的方式产生8到32位s框,为:

v→s[v+3]|s[v+2]|s[v+1]|s[v]等式20

此处,指数为(此相当于采取256*8位“sbox”字符串并使其旋转,且接着仅保留几个位)任一经解译模数256,或表自身为实际259字节长,且最后三个字节复制最前三个,使得指数不会是包覆模数256。

对于硬件实施方案,相同电路可并行或串行(例如,通过每次递增指数v)而再使用4次。

值得注意的是,blowfish或casts框产生为完整表,而非旋转值。因此,在一些实施方案中,blowfish或casts框可比根据本文中的教示采用的s框大很多。

与des的比较

如上文所论述,对于4位s框,单一64位寄存器可用于表示16个4位条目。通过寄存器的不同旋转获得不同条目。因此,代替于使用表查找(例如,如des中),通过更加高效(从软件角度来看)的旋转操作实现替换。

继续使用4位s框的实例。这些s框具有16个条目,且因此含有64位的信息。映射x->s[x]为表查找。通过使用含有全部64位的寄存器y,可如上文所论述使用以下等式:

等式21

s[x]=(y>>>(4*x))&0xf,

其中“>>>”表示向右循环旋转。

dess框s0可使用4个对射4位s框构建。第0s框由以下等式表示:

等式22

x0123456789abcdef

s00(x)e4d12fb83a6c5907

des涉及存储器驻留表查找,例如:

等式23

staticconstunsignedchars00[16]={

0xe,0x4,0xd,0x1,0x2,0xf,0xb,0x8,0x3,0xa,0x6,0xc,0x5,0x9,0x0,0x7

}

des随后执行替换,例如:y=s00[x&0xf]。相比而言,根据本文中的教示,实际上使用常数的移位:

等式24

y=(0x7095c6a38bf21d4e>>((x&0xf)<<2))&0xf

此处,密码术围绕以下映射设计:s'[x]=y>>>(4*x)。替代实施方案可使用124位寄存器z,其中z的64个最低有效位是y,且y的60个最低有效位是z的上部60位中的复本。s'可被实施为z>>(4x)的64个最低有效位,其中“>>”为简单右移。

有利的是,以上操作可相对快速地在软件中执行。大多数商用微处理器表征旋转指令,其中从寄存器取得旋转距离,即,非恒定旋转而是可变旋转。在硬件中,以上操作为简单位选择。

用于加密和解密操作的实例处理电路

鉴于上文,在一些方面,本发明涉及执行等式10、等式12、等式15、等式17的运算或本文教示的任何其它运算的处理电路。

图7说明使用类似于等式10的等式706对明文704操作以产生密文708的处理电路702的实例。因此,图7对应于加密(encipher/encryption)操作。

图8说明使用类似于等式12的等式806对密文804操作以产生明文808的处理电路802的实例。因此,图8对应于解密(decipher/decryption)操作。

图9说明使用类似于等式15的等式906对明文904操作以产生密文908的处理电路902的实例。因此,图9对应于加密(encipher/encryption)操作。

图10说明使用类似于等式17的等式1006对密文1004操作以产生明文1008的处理电路1002的实例。因此,图10对应于解密(decipher/decryption)操作。

图11说明可由处理电路702、802、902或1002实施的电路1100的非限制性实例。过程执行电路1102控制存储于存储器装置1104中的指令的执行。因此,取决于当前正执行的指令,可调用各种电路对从存储器装置1104检索的数据进行操作。如所指示,此电路可包含移位电路1106(例如,执行简单移位运算或旋转运算)、掩码电路1108(例如,执行and运算),和组合电路1110(例如,执行xor运算)。

实例电子装置

图12为根据本发明的一或多个方面的经配置以支持密码术操作的设备1200的说明。设备1200包含通信接口(例如,至少一个收发器)1202、存储媒体1204、用户接口1206、存储器装置1208和处理电路1210。

这些组件可经由信令总线或其它合适的组件(通常由图12中的连接线表示)彼此耦合和/或放置成彼此电连通。信令总线可包含任何数目的互连总线和桥,这取决于处理电路1210的特定应用和总体设计约束。信令总线将各种电路链接在一起使得通信接口1202、存储媒体1204、用户接口1206和存储器装置1208中的每一者耦合到处理电路1210和/或与处理电路1210电连通。信令总线还可链接所属领域中众所周知的各种其它电路(未图示),例如时序源、外围装置、电压调节器和功率管理电路,且因此,将不进一步描述。

通信接口1202可适于促进设备1200的无线通信。举例来说,通信接口1202可包含适于促进信息相对于网络中的一或多个通信装置的双向通信的电路和/或代码(例如,指令)。通信接口1202可耦合到一或多个天线1212,用于无线通信系统内的无线通信。通信接口1202可被配置成具有一或多个独立接收器和/或发射器,以及一或多个收发器。在所说明的实例中,通信接口1202包含发射器1214和接收器1216。

存储器装置1208可表示一或多个存储器装置。如所指示,存储器装置1208可维持密码术信息1218连同供设备1200使用的其它信息。在一些实施方案中,存储器装置1208和存储媒体1204被实施为共同存储器组件。存储器装置1208还可用于存储由处理电路1210或设备1200的某一其它组件操纵的数据。

存储媒体1204可表示一或多个计算机可读、机器可读和/或处理器可读装置,用于存储代码,例如处理器可执行代码或指令(例如,软件、固件)、电子数据、数据库或其它数字信息。存储媒体1204还可用于存储在实行代码时由处理电路1210操纵的数据。存储媒体1204可为可由通用或专用处理器存取的任何可用媒体,包含便携式或固定储存装置、光学存储装置和能够存储、含有或载运代码的各种其它媒体。

借助于实例而非限制,存储媒体1204可包含磁性存储装置(例如,硬盘、软盘、磁条)、光盘(例如,压缩光盘(cd)或数字多功能光盘(dvd))、智能卡、快闪存储器装置(例如,卡、棒或键驱动)、随机存取存储器(ram)、只读存储器(rom)、可编程rom(prom)、可擦除prom(eprom)、电可擦除prom(eeprom)、寄存器、可装卸式磁盘,和用于存储可由计算机存取和读取的代码的任何其它合适的媒体。存储媒体1204可体现在制品(例如,计算机程序产品)中。以实例说明,计算机程序产品可包含封装材料中的计算机可读媒体。鉴于上文,在一些实施方案中,存储媒体1204可为非暂时性(例如,有形的)存储媒体。

存储媒体1204可耦合到处理电路1210使得处理电路1210可从存储媒体1204读取信息和向存储媒体1204写入信息。也就是说,存储媒体1204可耦合到处理电路1210使得存储媒体1204至少可由处理电路1210接入,包含其中至少一个存储媒体与处理电路1210成一体式的实例和/或其中至少一个存储媒体与处理电路1210分离(例如,驻留在设备1200中、在设备1200外部,跨越多个实体分布等)的实例。

由存储媒体1204存储的代码在由处理电路1210执行时致使处理电路1210执行本文中所描述的各种功能和/或过程操作中的一或多者。举例来说,存储媒体1204可包含经配置用于调整处理电路1210的一或多个硬件块处的操作以及利用通信接口1202用于利用其相应通信协议的无线通信的操作。

处理电路1210通常适于处理,包含存储在存储媒体1204上的此代码的执行。如本文所使用,术语“代码”或“指令”将大致解释为包含但不限于:编程、指令、指令集、数据、代码、码段、程序代码、程序、子程序、软件模块、应用、软件应用、软件包、例程、子例程、对象、可执行文件、执行线程、过程、函数等,不论被称作软件、固件、中间件、微码、硬件描述语言或其它。

处理电路1210经布置以获得、处理和/或发送数据,控制数据存取和存储,发出命令,且控制其它所要操作。在至少一个实例中,处理电路1210可包含经配置以实施由适当媒体提供的所要代码的电路。举例来说,处理电路1210可实施为一或多个处理器、一或多个控制器和/或经配置以执行可执行代码的其它结构。处理电路1210的实例可包含通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其它可编程逻辑组件、离散门或晶体管逻辑、离散硬件组件,或其经设计以执行本文所描述功能的任何组合。通用处理器可包含微处理器,以及任何常规处理器、控制器、微控制器或状态机。处理电路1210也可实施为计算组件的组合,例如dsp和微处理器的组合、许多微处理器的组合、一或多个微处理器结合dsp核心、asic和微处理器的组合,或任何其它数目的变化配置。处理电路1210的这些实例是用于说明,且本发明范围内的其它合适配置也是预期的。

根据本发明的一或多个方面,处理电路1210可适于执行本文中所描述的设备中的任一者或全部的特征、过程、函数、操作和/或例程中的任一者或全部。如本文所使用,相对于处理电路1210的术语“适于”可指代处理电路1210经配置、采用、实施和/或编程以执行根据本文中所描述的各种特征的特定过程、函数、运算和/或例程,这些当中的一或多者。

根据设备1200的至少一个实例,处理电路1210可包含以下中的一或多者:用于接收信号的电路/模块1220、用于确定状态值的电路/模块1222、用于确定旋转距离的电路/模块1224、用于旋转替换框值的电路/模块1226、用于组合的电路/模块1228,以及用于产生信号的电路/模块1230。

用于接收信号的电路/模块1220可包含适于执行关于(例如)接收明文、密码术文本或呈电信号的形式的其它信息的若干功能的电路和/或代码(例如,存储在存储媒体1204上的用于接收信号的代码1232)。初始地,用于接收信号的电路/模块1220获得所接收的信息。举例来说,用于接收信号的电路/模块1220可直接从设备的组件(例如,接收器1216、存储器装置1208或某一其它组件)获得此数据。在一些实施方案中,用于接收信号的电路/模块1220识别存储器装置1208中的值的存储器位置,且调用所述位置的读取。在一些实施方案中,用于接收信号的电路/模块1220处理所接收的信息。用于接收信号的电路/模块1220随后输出所接收的信息(例如,将信息存储在存储器装置1208中或将信息发送到设备1200的另一组件)。

用于确定状态值的电路/模块1222可包含适于执行关于(例如)获得待用于迭代密码术的给定实例的状态值的若干功能的电路和/或代码(例如,存储在存储媒体1204上的用于确定状态值的代码1234)。在一些实施方案中,初始状态值与密码密钥组合。在获得状态值后,用于确定状态值的电路/模块1222使得能够通过密码术对所述值进行操作(例如,将指示存储在存储器装置1208中或将指示发送到设备1200的另一组件)。

用于确定旋转距离的电路/模块1224可包含适于执行关于(例如)依据由用于确定状态值的电路/模块1222确定的状态值计算旋转值(即,数目)的若干功能的电路和/或代码(例如,存储在存储媒体1204上的用于确定旋转距离的代码1236)。在一些实施方案中,此涉及获得(例如,掩蔽)状态值的子集、扩展所述子集,以及从扩展值确定至少一个旋转值(例如,旋转值的集合)。在获得状态值后,用于确定旋转距离的电路/模块1224将值传递到另一操作(例如,将指示存储在存储器装置1208中或将指示发送到设备1200的另一组件)。

用于旋转替换框值的电路/模块1226可包含适于执行关于(例如)执行旋转运算的若干功能的电路和/或代码(例如,存储在存储媒体1204上的用于旋转替换框值的代码1238)。用于旋转替换框值的电路/模块1226获得旋转距离和替换框值,且将替换框值旋转(例如,移位)所要位数。用于旋转替换框值的电路/模块1226随后输出经旋转值(例如,将值存储在存储器装置1208中或将指示发送到设备1200的另一组件)。

用于组合的电路/模块1228可包含适于执行关于(例如)将经旋转替换框值与状态值组合的若干功能的电路和/或代码(例如,存储在存储媒体1204上的用于组合的代码1240)。用于组合的电路/模块1228获得经旋转替换框值和状态值,且组合(例如,xor)所述两个值。用于组合的电路/模块1228随后输出组合值(例如,将值存储在存储器装置1208中或将指示发送到设备1200的另一组件)。

用于产生信号的电路/模块1230可包含适于执行关于(例如)产生状态值的后续或最终迭代的若干功能的电路和/或代码(例如,存储在存储媒体1204上的用于产生信号的代码1242)。在一些实施方案中,用于产生信号的电路/模块1230将状态值的迭代与密码密钥组合。用于产生信号的电路/模块1230随后产生对应于所述值的信号且输出所述信号(例如,将值存储在存储器装置1208中或将指示发送到设备1200的另一组件)。

如上文所提及,由存储媒体1204存储的代码在由处理电路1210执行时致使处理电路1210执行本文中所描述的各种功能和/或过程操作中的一或多者。举例来说,存储媒体1204可包含:用于接收信号的代码1232、用于确定状态值的代码1234、用于确定旋转距离的代码1236、用于旋转替换框值的代码1238、用于组合的代码1240和用于产生信号的代码1242中的一或多者。

实例过程

图13说明根据本发明的一些方面的密码术过程1300。过程1300可在处理电路(例如,图7的处理电路702、图8的处理电路802、图9的处理电路902、图10的处理电路1002,或图12的处理电路1210)内发生,所述处理电路可位于电子装置、收发器或某一其它合适的设备中。当然,在本发明的范围内的各种方面中,过程1300可由能够支持密码术操作的任何合适的设备实施。

在框1302处,接收第一信号。举例来说,处理电路可从存储器装置检索数据(例如,明文或密文)。

在框1304处,基于第一信号确定状态值。

在一些实施方案中,在块1306-1312的操作之前,将待加密的信息(例如,明文或密文)与密码密钥组合。举例来说,在一些方面中(例如,对于加密运算),框1304处状态值的确定涉及通过将密码密钥与状态值的先前实例组合产生状态值的当前实例。如本文所论述,组合可包含xor运算、加法运算、减法运算、某一其它运算或这些运算中的一或多者的组合。

在一些实施方案中,待加密的信息(例如,明文或密文)在块1306-1312的操作之前旋转。举例来说,在一些方面中(例如,对于解密运算),框1304处状态值的确定涉及通过旋转状态值的先前实例产生状态值的当前实例。

在框1306处,基于状态值确定旋转距离。举例来说,框1306的操作可对应于通过图5的γ函数510或通过图66的γ函数610,确定待在等式10的第二指令处、等式12的第二指令处、等式15的第二指令处、等式17的第二和第三指令处执行的向右旋转(ror)量。

框1308的旋转距离的确定可在不同实施方案中以不同方式执行。在一些方面,旋转距离的确定可基于状态值的子集。在一些方面,旋转距离的确定可包含:从状态值选择位的子集;确定对应于选定位子集的第一数目;确定对应于替换框值的位的数量的第二数目;以及将第一数目乘以第二数目。在一些方面,旋转距离的确定可包含:掩蔽状态值,以及使经掩蔽状态值移位。在一些方面,旋转距离的确定可进一步包含:基于经移位的经掩蔽状态值使第二值移位,掩蔽经移位第二值,以及使经掩蔽的经移位第二值移位。

在框1308处,基于框1306处确定的旋转距离旋转第一值(例如,替换框值)。在一些方面,第一值可为替换框值(例如,来自s框的值、从s框导出的值,或用于产生s框的值)。在一些方面,第一值可具有某一值使得经旋转替换框值与状态值的组合为对射的。在一些方面,第一值可为对射的。

框1308的旋转可在不同实施方案中以不同方式执行。在一些方面,框1308的旋转可涉及旋转指令。

在框1310处,经旋转第一值与状态值组合。在一些方面,框1308的旋转和框1310的组合可对状态值施加非线性,且在状态值的后续实例内扩散所述组合。在一些实施方案中,框1308的旋转和框1310的组合可在单一指令中组合(例如,如等式10、12、15或17中)。

框1310的组合可在不同实施方案中以不同方式执行。在一些方面,所述组合可包含掩蔽经旋转第一值,以及将经掩蔽的经旋转第一值与状态值组合。在一些方面,所述组合可包含通过组合经旋转第一值和状态值产生状态值的中间实例。再次,如本文所论述,组合可包含xor运算、加法运算、减法运算、某一其它运算,或这些操作中的一或多者的组合。

在框1312处,基于来自框1310的经旋转第一值和状态值的组合产生第二信号。举例来说,处理电路可将所得状态值存储在存储器装置中。

框1312的信号产生可在不同实施方案中以不同方式执行。在一些方面中(例如,对于加密运算),第二信号的产生可包含通过旋转状态值的中间实例产生状态值的后续实例。状态值的中间实例可旋转基于替换框值的位数量的位数量。在一些方面中(例如,对于解密运算),状态值的中间实例的产生可包含将密码密钥与经旋转第一值和状态值的所述组合进行组合。

如虚线1314表示,框1306-1312的操作可重复直至对状态值施加所希望水平的扩散和混淆为止。因此,旋转距离的确定、替换框值的旋转以及经旋转替换框值和状态值的组合可以迭代方式执行以基于所接收的第一信号产生第二信号。

如上文结合图5所论述,对于第一密码术,旋转距离的确定、第一值的旋转以及经旋转第一值与状态值的组合可通过以下操作执行:s^=ror(sbox,(s&m1)<<s1)&mask,以及s=ror(s,r1),其中^=为xor运算,ror为向右旋转运算,&为and运算,<<为位向左移位运算,s对应于状态值的实例,m1为第一掩码值(例如,0xf),mask为第二掩码值,s1为移位值(例如,2),r1为旋转值(例如,4),且sbox对应于第一值的实例。

同样如上文结合图5所论述,对于第一密码术的倒转,旋转距离的确定、第一值的旋转以及经旋转第一值与状态值的组合可通过以下操作执行:s=rol(s,r1),以及s^=ror(sbox,(s&m1)<<s1)&mask,其中^=为xor运算,rol为向左旋转运算,ror为向右旋转运算,&为and运算,<<为位向左移位运算,s对应于状态值的实例,m1为第一掩码值(例如,0xf),mask为第二掩码值,r1为旋转值(例如,4),s1为移位值(例如,2),且sbox对应于第一值的实例。

如上文结合图6所论述,对于第二密码术,旋转距离的确定、第一值的旋转以及经旋转第一值与状态值的组合可通过以下操作执行:s^=ror(sbox,(s&m1)<<s1),以及s=ror(s,r1),其中^=为xor运算,ror为向右旋转运算,&为and运算,<<为位向左移位运算,s对应于状态值的实例,m1为掩码值(例如,0xf),s1为移位值(例如,2),r1为旋转值(例如,4),且sbox对应于第一值的实例。

同样如上文结合图6所论述,对于第二密码术的倒转,旋转距离的确定、第一值的旋转以及经旋转第一值与状态值的组合可通过以下操作执行:s=rol(s,r1),shift=(tinv>>((state&m1)<<s1))<<s2,以及s^=ror(sbox,shift),其中^=为xor运算,rol为向左旋转运算,ror为向右旋转运算,&为and运算,<<为位向左移位运算,>>为位向右移位运算,s对应于状态值的实例,m1为掩码值(例如,0xf),s1为第一移位值(例如,2),s2为第二移位值(例如,2),r1为第一旋转值(例如,4),shift为第二旋转值,tinv为倒转替换框值,且sbox对应于第一值的实例。

图14说明根据本发明的一些方面的密码术过程1400的另一实例。过程1400可在处理电路(例如,图7的处理电路702、图9的处理电路902或图12的处理电路1210)内发生,所述处理电路可位于电子装置、收发器或某一其它合适的设备中。当然,在本发明的范围内的各种方面中,过程1400可由能够支持密码术操作的任何合适的设备实施。

在框1402处,接收第一参数的值。举例来说,密码术装置可接收待加密的明文。作为另一实例,密码术装置可接收待解密的密文。此明文或密文可因此充当密码术过程1400中使用的状态参数(第一参数)的第一实例。在一些方面,明文或密文可与密码密钥进行xor运算以提供给定轮次的状态参数的第一实例(例如,如上文“paul”密码术中)。

在框1404处,基于第一参数的当前实例的子集旋转第二参数。举例来说,可将s框向量(第二参数)旋转基于状态参数的半字节的量。在一些方面,第二参数基于第一参数的当前实例的子集的旋转包含:从第一参数的当前实例选择位的子集;以及将选定位子集乘以对应于替换框中的给定一者中的位数量(例如,四个位)的数目(例如,四)。

在框1406处,通过将框1404的结果与第一参数的当前实例组合产生第一参数的中间实例。举例来说,可通过组合s框向量和状态参数而产生状态参数的新值。应了解,可例如在等式10的第二指令处或等式15的第二指令处执行框1404-1406的操作。

在一些方面,第一参数的中间实例的产生还包含组合密码密钥和状态参数的此新值(例如,参看等式10)。可例如如图7的等式706的第二指令线或图9的等式906的第二指令线处所示执行框1406的操作的方面。

在框1408处,通过旋转第一参数的中间实例产生第一参数的后续实例。举例来说,可将在框1406处产生的状态参数的新值旋转所界定位数。在一些方面,将第一参数的中间实例旋转对应于替换框中的给定一者中的位数量(例如,四个位)的位数量。可例如在等式10的第三指令处或等式15的第三指令处执行框1406的操作。

图15说明根据本发明的一些方面提供图13的密码术过程1300的更详细实例的密码术过程1500。过程1500可在处理电路(例如,图7的处理电路702、图9的处理电路902,或图12的处理电路1210)内发生,所述处理电路可位于电子装置、收发器或某一其它合适的设备中。当然,在本发明的范围内的各种方面中,过程1500可由能够支持密码术操作的任何合适的设备实施。

在框1502处,初始化状态参数。举例来说,框1502的操作可对应于图13的框1302的操作,借此状态参数的初始值是基于输入值(例如,明文或密文)。

在框1504处,掩蔽除状态参数(例如,一个半字节)的子集外的状态参数的所有位。如等式10和12中所展示,此可通过对状态参数和值0xf进行and运算来实现。

在框1506处,框1504的结果乘以所界定值(例如,四)以产生第一旋转值。如等式10和12中所展示,此可通过将and运算的结果向左移位两个位来实现。

在框1508处,s框值(例如,向量)向右旋转由框1506处产生的第一旋转值指定的位数。

在框1510处,框1508的结果与状态参数组合(例如,进行xor运算)以提供状态参数的经更新值。应了解,框1504-1510的操作可例如在等式10或等式15的第二指令线处执行。

在框1512处,框1510的结果与密码密钥值组合(例如,进行xor运算)以提供状态参数的另一经更新值。框1512的操作可例如如图7的等式706的第二指令线或图9的等式906的第二指令线处所示而执行。如上文描述的“paul”密码术中指示,举例来说,状态参数可与密码术的其它部分处的密钥值进行xor运算。

在框1514处,框1512的结果根据第二旋转值向右旋转以提供密码术的下一轮次的状态参数的下一迭代。框1514的操作可例如在等式10或15的第三指令线处执行。

框1504到1514的操作以迭代方式执行以基于输入值(明文)产生经加密值(密文)或基于输入值(密文)产生经解密值(明文)。

图16说明根据本发明的一些方面的另一密码术过程1600。过程1600为图14的过程1400的倒转。举例来说,过程1400可用于加密,且过程1600用于解密,或反之亦然。

过程1600可在处理电路(例如,图8的处理电路802、图10的处理电路1002,或图12的处理电路1210)内发生,所述处理电路可位于电子装置、收发器或某一其它合适的设备中。当然,在本发明的范围内的各种方面中,过程1600可由能够支持密码术操作的任何合适的设备实施。

在框1602处,接收第一参数的值。举例来说,密码术装置可接收待解密的密文。作为另一实例,密码术装置可接收待加密的明文。此明文或密文可因此充当密码术过程1600中使用的状态参数(第一参数)的第一实例。在一些方面,明文或密文可与密码密钥进行xor运算以提供状态参数的第一实例(例如,如上文“paul”密码术中)。

在框1604处,通过旋转第一参数的当前实例产生第一参数的中间实例。举例来说,可将状态参数的新当前值旋转所界定位数。在一些方面,将第一参数的中间实例旋转对应于替换框中的给定一者中的位数量(例如,四个位)的位数量。框1606的操作可例如在等式12或17的第一指令线处执行。

在一些方面,第一参数的中间实例的产生还包含组合密码密钥和状态参数的此新值(例如,参看等式12)。可例如如图8的等式806的第二指令线或图10的等式1006的第二指令线处所示执行框1604的操作的方面。

在框1606处,基于第一参数的中间实例的子集旋转第二参数。举例来说,可将s框向量(第二参数)旋转基于状态参数的半字节的量。在一些方面,第二参数基于第一参数的当前实例的子集的旋转包含:从第一参数的当前实例选择位的子集;以及将选定位子集乘以对应于替换框中的给定一者中的位数量(例如,四个位)的数目(例如,四)。

在框1608处,通过将框1606的结果与第一参数的中间实例组合产生第一参数的后续实例。举例来说,可通过组合s框向量和状态参数而产生状态参数的新值。应了解,可例如在等式12的第二指令线处或等式17的第三指令线处执行框1606-1608的操作。

图17说明根据本发明的一些方面提供图16的密码术过程1600的更详细实例的密码术过程1700。过程1700为图15的过程1500的倒转。举例来说,过程1500可用于加密,且过程1700用于解密,或反之亦然。

过程1700可在处理电路(例如,图8的处理电路802、图10的处理电路1002,或图12的处理电路1210)内发生,所述处理电路可位于电子装置、收发器或某一其它合适的设备中。当然,在本发明的范围内的各种方面中,过程1700可由能够支持密码术操作的任何合适的设备实施。

在框1702处,初始化状态参数。举例来说,框1702的操作可对应于图13的框1302的操作,借此状态参数的初始值是基于输入值(例如,明文或密文)。

在框1704处,状态参数根据第一旋转值向左旋转以提供密码术的下一轮次的状态参数的下一迭代。框1704的操作可由等式12或17的第一指令线执行。

在框1706处,框1704的结果与密码密钥值组合(例如,进行xor运算)以提供状态参数的另一经更新值。框1706的操作可例如在图8的等式806或图10的等式1006的第二指令线处执行。如上文描述的“paul”密码术中指示,状态参数可与密码术的其它部分处的密钥值进行xor运算。

在框1708处,掩蔽除状态参数(例如,一个半字节)的子集外的状态参数的所有位。如等式12和17中所展示,此可通过对状态参数和值0xf进行and运算来实现。

在框1710处,框1708的结果乘以四以产生第二旋转值。如等式12和17中所展示,此可通过将and运算的结果向左移位两个位来实现。

在框1712处,s框向量向右旋转由在框1710处产生的第二旋转值指定的位数。

在框1714处,框1712的结果与状态参数组合(例如,进行xor运算)以提供状态参数的经更新值。应了解,框1708-1714的操作可由等式12的第二指令线或等式17的第二和第三指令线执行。

框1704到1714的操作以迭代方式执行以基于输入值(密文)产生经解密值(明文)或基于输入值(明文)产生经加密值(密文)。

结论

图式中所说明的组件、步骤、特征和/或功能中的一或多者可以重新布置及/或组合成单个组件、步骤、特征或功能或体现在若干组件、步骤或功能中。在不脱离本文所揭示的新颖特征的情况下,还可添加额外元件、组件、步骤和/或功能。图中说明的设备、装置和/或组件可经配置以执行本文中所描述的方法、特征或步骤中的一或多者。本文中所描述的新颖算法还可有效地实施于软件中和/或嵌入于硬件中。

应理解,所揭示方法中的步骤的特定次序或层级为示范性过程的说明。基于设计偏好,应理解,可以重新布置方法中的步骤的特定次序或层级。随附的方法权利要求项以示例次序呈现各种步骤的要素,且除非本文中特别叙述,否则其不意图限于所呈现的特定次序或层级。在不脱离本发明的情况下,也可添加或不利用额外元件、组件、步骤和/或功能。

虽然可能已相对于特定实施方案和图式论述本发明的特征,但本发明的所有实施方案可包含本文论述的有利特征中的一或多者。换句话说,虽然一或多个实施方案可能已论述为具有特定有利特征,但也可根据本文论述的各种实施方案的任一者使用此类特征中的一或多者。类似地,虽然示范性实施方案可能已在本文论述为装置、系统或方法实施方案,应理解,此些示范性实施方案可在各种装置、系统和方法中实施。

而且应注意,至少一些实施方案已经描述为过程,所述过程经描绘为流程图、流图、结构图或框图。尽管流程图可将操作描述为循序过程,但许多操作可并行或同时执行。另外,可以重新布置操作的次序。过程在其操作完成时终止。在一些方面,过程可对应于方法、函数、程序、子例程、子程序等。当过程对应于函数时,其终止对应于函数返回到调用函数或主函数。本文中所描述的各种方法中的一或多者可部分或完全由代码(例如,指令和/或数据)实施,所述代码可存储在机器可读、计算机可读和/或处理器可读存储媒体中,且由一或多个处理器、机器和/或装置执行。

所属领域的技术人员将进一步理解,结合本文中所揭示的实施方案描述的各种说明性逻辑块、模块、电路和算法步骤可被实施为硬件、软件、固件、中间件、微码或其任何组合。为清楚地说明此可互换性,上文已大体上关于其功能性而描述了各种说明性组件、块、模块、电路和步骤。此功能性是实施为硬件还是软件取决于特定应用及施加于整个系统的设计约束。

在本发明内,词语“示范性”用于表示“充当实例、例子或说明”。本文中描述为“示范性”的任何实施方案或方面未必应解释为比本发明的其它方面优选或有利。同样,术语“方面”不要求本发明的所有方面包含所论述的特征、优点或操作模式。术语“耦合”在本文中用于指两个物体之间的直接或间接耦合。举例来说,如果物体a物理地触摸物体b,且物体b触摸物体c,那么物体a和c可仍被视为彼此耦合,即使它们不直接彼此物理地触摸也如此。举例来说,第一裸片可耦合到封装中的第二裸片,即使第一裸片永不直接物理地接触第二裸片也如此。术语“电路”广义上使用,且希望包含电气装置和导体的硬件实施方案以及信息和指令的软件实施方案两者,所述电气装置和导体当连接和配置时使得能够执行本发明中描述的功能((不限于)关于电子电路的类型),且所述信息和指令在由处理器执行时使得能够执行本发明中描述的功能。

如本文所使用,术语“确定”涵盖各种如本文所使用,术语“确定”涵盖各种各样的动作。举例来说,“确定”可包含推算、计算、处理、导出、调查、查找(例如,在表、数据库或另一数据结构中查找)、断定等等。并且,“确定”可包含接收(例如,接收信息)、存取(例如,存取存储器中的数据),等等。而且,“确定”可包含解析、选择、挑选、建立等等。

提供先前描述以使所属领域的技术人员能够实践本文中所描述的各种方面。对这些方面的各种修改对于所属领域的技术人员来说将容易显而易见,并且本文中定义的一般原理可适用于其它方面。因此,权利要求书不希望限于本文中所展示的方面,而是应符合与权利要求的语言一致的完整范围,其中参考呈单数形式的元件不希望意味着“一个且仅一个”(除非明确地如此陈述),而是为“一或多个”。除非另外确切地陈述,否则术语“一些”是指一或多个。涉及项目列表中的“至少一者”的短语是指那些项目的任何组合,包含单个成员。作为一实例,“以下各者中的至少一者:a、b或c”希望涵盖:a;b;c;a和b;a和c;b和c;以及a、b和c。所属领域的一般技术人员已知或日后将知晓的贯穿本发明而描述的各种方面的元件的所有结构和功能等效物以引用的方式明确地并入本文中,且既定由权利要求书涵盖。此外,本文揭示的任何内容均不希望奉献给公众,无论权利要求书中是否明确地陈述此公开。权利要求要素不应依据35u.s.c.§112第六章的条款解释,除非所述要素是明确地使用短语“用于…的装置”来叙述,或者在方法权利要求项的情况下,所述要素是使用短语“用于…的步骤”来叙述。

因此,在不脱离本发明的范围的情况下,可在不同实例及实施方案中实施与本文中所描述及附图中所展示的实例相关联的各种特征。因此,尽管已经描述和在附图中展示某些特定构造和布置,但此类实施方案仅为说明性且不限制本发明的范围,因为所属领域的一般技术人员将了解对所描述实施方案的各种其它添加和修改以及自所描述实施方案的删除。因此,本发明的范围仅由所附权利要求书的文字语言及合法等效物来确定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1