一种数据处理方法和装置制造方法

文档序号:8006200阅读:186来源:国知局
一种数据处理方法和装置制造方法
【专利摘要】本发明提供了一种数据处理方法和装置,所述方法包括:当接收到S盒的输入值Din时,初始化寄存器组,所述寄存器组包括:第一寄存器和第二寄存器,并采用数据发生器输出0至2n-1,其中,所述S盒的原始输入值Sin包含0至2n-1,所述S盒的输出值Sout包含与0至2n-1一一对应的S(0)至S(2n-1),所述S盒的输入值位宽为n,输出值位宽为m,m和n都为正整数;当所述数据发生器的输出值K和所述第一寄存器的值进行第一运算后的值不等于所述输入值Din时,由所述S盒输出S(K),并将所述第二寄存器的值和S(K)进行第二运算后的值替换为所述第二寄存器的值。通过所述方法和装置可以提高S盒的安全性。
【专利说明】一种数据处理方法和装置

【技术领域】
[0001] 本发明涉及数据加密【技术领域】,特别是涉及一种数据处理方法和装置。

【背景技术】
[0002] 分组密码算法是信息安全的核心技术。通常分组密码算法中,一个长的密钥在实 际加密和解密过程中,会拆分成多个子密钥。例如DES(数据加密算法,DataEncryption Algorithm)中的实际参与运算的48位密钥会被拆分成8组,每一组6个比特,和信息异或 后进入8个不同的S盒(substitutionbox)。在现有技术中,所述S盒的输入输出值很容 易被攻击,攻击者通过功耗分析或电磁分析,先获取部分密钥信息,逐一遍历分析其余的密 钥分组,就可以获得全部密钥信息。
[0003] 因此,需要提出一种新的数据处理方法和装置,以提高S盒的安全性。


【发明内容】

[0004] 本发明解决的技术问题是提供一种新的数据处理方法和装置,以提高S盒的安全 性。
[0005] 本发明的实施例提供了一种数据处理方法,所述方法包括:当接收到S盒的输入 值Din时,初始化寄存器组,所述寄存器组包括:第一寄存器和第二寄存器,并采用数据发 生器输出0至2n-l,其中,所述S盒的原始输入值Sin包含0至2n-l,所述S盒的输出值Sout 包含与0至2n-l-一对应的S(0)至S(2n-l),所述S盒的输入值位宽为n,输出值位宽为m, m和η都为正整数;当所述数据发生器的输出值K和所述第一寄存器的值进行第一运算后 的值不等于所述输入值Din时,由所述S盒输出S(K),并将所述第二寄存器的值和S(K)进 行第二运算后的值替换为所述第二寄存器的值;当所述数据发生器的输出值K和所述第一 寄存器的值进行第一运算后的值等于所述输入值Din时,根据所述第一寄存器的值和所述 第一运算对所述第二寄存器的值进行操作;当所述数据发生器全部输出0至2η-1后输出所 述第二寄存器的值。
[0006] 可选地,所述第二运算为所述第一运算的逆运算,初始化所述第二寄存器包括:将 所述第二寄存器的值初始化为将S(O)至S(2n_l)进行第一运算后的值。
[0007] 可选地,所述第一运算为异或运算,所述第二运算为异或运算,初始化所述第二寄 存器包括:将所述第二寄存器的值初始化为将S(O)至S(2n_l)求异或的值。
[0008] 可选地,所述第一运算为加法运算,所述第二运算为减法运算,初始化所述第二寄 存器包括:将所述第二寄存器的值初始化为将S(O)至S(2n_l)求和的值。
[0009] 可选地,所述第一运算为模加运算,所述第二运算为模减运算,初始化所述第二寄 存器包括:将所述第二寄存器的值初始化为将S(O)至S(2n_l)进行模加运算后的值。
[0010] 可选地,当所述S盒的输入值Din为所述S盒的原始输入值Sin时,初始化所述第 一化寄存器包括:将所述第一寄存器的值初始化为η位的0。
[0011] 可选地,根据所述第一寄存器的值和所述第一运算对所述第二寄存器的值进行操 作包括:保持所述第二寄存器的值不变。
[0012] 可选地,当所述S盒的输入值Din为所述S盒的原始输入值Sin和η位的输入掩 码Xin进行第一运算后的值时,初始化所述第一寄存器包括:将所述第一寄存器的值初始 化为η的输入掩码Xin。
[0013] 可选地,根据所述第一寄存器的值和所述第一运算对所述第二寄存器的值进行操 作包括:将所述第二寄存器的值和m位的输出掩码Xout进行第一运算后的值替换为所述第 二寄存器的值。
[0014] 可选地,所述第一运算为乘法运算,所述第二运算为除法运算,初始化所述第二寄 存器包括:将所述第二寄存器的值初始化为将S(O)至S(2n-l)相乘的值。
[0015] 可选地,当所述S盒的输入值Din为所述S盒的原始输入值Sin时,初始化所述第 一化寄存器包括:将所述第一寄存器的值初始化为η位的1。
[0016] 可选地,根据所述第一寄存器的值和所述第一运算对所述第二寄存器的值进行操 作包括:保持所述第二寄存器的值不变。
[0017] 可选地,当所述S盒的输入值Din为所述S盒的原始输入值Sin和η位的输入掩 码Xin进行第一运算后的值时,初始化所述第一寄存器包括:将所述第一寄存器的值初始 化为η的输入掩码Xin。
[0018] 可选地,根据所述第一寄存器的值和所述第一运算对所述第二寄存器的值进行操 作包括:将所述第二寄存器的值和m位的输出掩码Xout进行第一运算后的值替换为所述第 二寄存器的值。
[0019] 可选地,所述方法还包括:将所述输出的第二寄存器的值和m位的输出掩码Xout 进行第一运算。
[0020] 可选地,所述采用所述数据发生器输出0至2n-l包括:采用所述数据发生器有序 地输出0至2n-l。
[0021] 可选地,所述采用所述数据发生器输出0至2n-l包括:采用所述数据发生器无序 地输出0至2n-l。
[0022] 本发明的实施例还提供了一种数据处理装置,所述装置包括:寄存器组,包括第一 寄存器和第二寄存器;第一处理单元,当接收到S盒的输入值Din时,初始化第一寄存器和 第二寄存器,其中,所述S盒的原始输入值Sin包含0至2n-l,所述S盒的输出值Sout包 含与〇至2n-l-一对应的S(O)至S(2n-l),所述S盒的输入值位宽为n,输出值位宽为m, m和η都为正整数;数据发生器,用于输出0至2n-l;第二处理单元,用于当所述数据发生器 的输出值K和所述第一寄存器的值进行第一运算后的值不等于所述输入值Din时,使所述 S盒输出S(K),并将所述第二寄存器的值和S(K)进行第二运算后的值替换为所述第二寄存 器的值,当所述数据发生器的输出值K和所述第一寄存器的值进行第一运算后的值等于所 述输入值Din时,根据所述第一寄存器的值和所述第一运算对所述第二寄存器的值进行操 作;第三处理单元,用于当所述数据发生器全部输出〇至2n-l后输出所述第二寄存器的值。
[0023] 可选地,所述第二运算为所述第一运算的逆运算,所述第一处理单元用于将所述 第二寄存器的值初始化为将S(O)至S(2n_l)进行第一运算后的值。
[0024] 可选地,所述第一运算为异或运算,所述第二运算为异或运算,所述第一处理单元 用于将所述第二寄存器的值初始化为将S(O)至S(2n_l)求异或的值。
[0025] 可选地,所述第一运算为加法运算,所述第二运算为减法运算,所述第一处理单元 用于将所述第二寄存器的值初始化为将S(O)至S(2n_l)求和的值。
[0026] 可选地,所述第一运算为模加运算,所述第二运算为模减运算,所述第一处理单元 用于将所述第二寄存器的值初始化为将S(O)至S(2n_l)进行模加运算后的值。
[0027] 可选地,所述第一处理单元用于当所述S盒的输入值Din为所述S盒的原始输入 值Sin时,将所述第一寄存器的值初始化为η位的0。
[0028] 可选地,所述第二处理单元用于当所述数据发生器的输出值K和所述第一寄存器 的值进行第一运算后的值等于所述输入值Din时,保持所述第二寄存器的值不变。
[0029] 可选地,所述第一处理单元用于当所述S盒的输入值Din为所述S盒的原始输入 值Sin和η位的输入掩码Xin进行第一运算后的值时,将所述第一寄存器的值初始化为η 的输入掩码Xin。
[0030] 可选地,所述第二处理单元用于当所述数据发生器的输出值K和所述第一寄存器 的值进行第一运算后的值等于所述输入值Din时,将所述第二寄存器的值和m位的输出掩 码Xout进行第一运算后的值替换为所述第二寄存器的值。
[0031] 可选地,所述第一运算为乘法运算,所述第二运算为除法运算,所述第一处理单元 用于将所述第二寄存器的值初始化为将S(O)至s(2n-l)相乘的值。
[0032] 可选地,所述第一处理单元用于当所述S盒的输入值Din为所述S盒的原始输入 值Sin时,将所述第一寄存器的值初始化为η位的1。
[0033] 可选地,所述第二处理单元用于当所述数据发生器的输出值K和所述第一寄存器 的值进行第一运算后的值等于所述输入值Din时,保持所述第二寄存器的值不变。
[0034] 可选地,所述第一处理单元用于当所述S盒的输入值Din为所述S盒的原始输入 值Sin和η位的输入掩码Xin进行第一运算后的值时,将所述第一寄存器的值初始化为η 的输入掩码Xin。
[0035] 可选地,所述第二处理单元用于当所述数据发生器的输出值K和所述第一寄存器 的值进行第一运算后的值等于所述输入值Din时,将所述第二寄存器的值和m位的输出掩 码Xout进行第一运算后的值替换为所述第二寄存器的值。
[0036] 可选地,所述第三处理单元还用于将所述输出的第二寄存器的值和m位的输出掩 码Xout进行第一运算。
[0037] 可选地,所述数据发生器用于有序地输出0至2n_l。
[0038] 可选地,所述数据发生器用于无序地输出0至2n_l。
[0039] 与现有技术相比,在上述技术方案中,当接收到S盒的输入值Din时,并不是直接 使S盒输出与输入值Din对应地输出值Dout,而是间接地通过获得当K不等于Din以外所 有S(K)值,以获得所述Sout值。这使得在不需要设计特殊的门电路和增加逻辑资源开销 的情况下,较好地阻止攻击者通过功耗分析或电磁分析获取密钥信息,或者通过遍历来猜 测密钥信息。

【专利附图】

【附图说明】
[0040] 图1是本发明实施例中数据处理方法的流程图;
[0041] 图2是本发明实施例一中数据处理方法的流程图;
[0042] 图3-4是本发明实施例一中数据处理系统的结构示意图;
[0043] 图5是本发明实施例二中数据处理方法的流程图;
[0044] 图6-7分别是本发明实施例二中数据处理系统的结构示意图;
[0045] 图8是本发明实施例三中数据处理方法的流程图;
[0046] 图9-10分别是本发明实施例三中数据处理系统的结构示意图;
[0047] 图11是本发明实施例四中数据处理方法的流程图;
[0048] 图12-13分别是本发明实施例四中数据处理系统的结构示意图;
[0049] 图14是本发明实施例中数据处理装置的结构框图。

【具体实施方式】
[0050] 为详细说明本发明的技术内容、构造特征、所实现目的及效果,下面结合附图对本 发明的【具体实施方式】做详细的说明。在下面的描述中阐述了很多具体细节以便于充分理解 本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,因此本发明不受 下面公开的具体实施例的限制。
[0051] 图1是本发明实施例中数据处理方法的流程图,请参考图1,所述方法包括步骤 SlO至S16。
[0052] 步骤S10,当接收到S盒的输入值Din时,初始化寄存器组,所述寄存器组可以包括 第一寄存器和第二寄存器。
[0053] 在本发明的实施例中,所述S盒的输入值位宽为n,输出值位宽为m,,m和η都为 正整数,所述S盒的原始输入值在0至2η-1的范围内取值,所述S盒的输出值Sout包含与 0至2η-1--对应的输出值S(O)至S(2n-1)。
[0054] 在本发明的实施例中,当所述S盒的输入值Din为所述S盒的原始输入值Sin时, 可以将所述第一寄存器的值初始化为η位的0,也可以将所述将所述第一寄存器的值初始 化为η位的1,具体地根据后续的第一运算来确定,例如当所述第一运算为异或、加法或模 加运算时可以将所述第一寄存器的值初始化为η位的0,而当所述第一运算为乘法运算时, 可以将所述第一寄存器的值初始化为η位的1。当所述S盒的输入值Din为所述S盒的原 始输入值Sin和η位的输入掩码Xin进行第一运算后的值时,可以将所述第一寄存器的值 初始化为η的输入掩码Xin。
[0055] 在本发明的实施例中,可以将所述第二寄存器的初始化为将S(O)至S(2n-1)进行 第一运算后的值。如前所述,所述第一运算可以为求和、异或、乘法和模加运算等。
[0056] 步骤Sll,采用数据发生器输出K。
[0057] 在本发明的实施例中,所述数据发生器每次输出值K都不相等,且所述输出值K 在0至2n_l的范围内取值。
[0058] 在本发明的实施例中,在每接收到一个Din后,所述数据发生器都需要依次将0 至2n-l全部输出。所述数据发生器可以有序地将0至2n-l依次输出,例如,按照1、2、3、4、 5......,2n-l的顺序将0至2n-l依次输出,所述数据发生器也可以无序地将0至2n-l依次 输出,例如,按照8、55、12、4、2n-l......,1的顺序将0至2n_l依次输出。
[0059] 在本发明的实施例中,所述数据发生器可以为计数器,以实现有序地输出0至 2n_l,在本发明的其他实施例中,所述数据发生器可以先将从0至2n_l转换成序列X、x+1、 x+2......,2n-l、0、l、2......x-1,其中,x可以为O至2n-l中任意一个数值,然后将所述序 列异或一个η位的随机数g,以生成一个无序的但可以遍历O至2n-l的序列,因此,所述数 据发生器将所述无序的序列以此输出,则可实现无序地将O至2n-l依次输出。
[0060] 需要说明的是,当所述数据发生器无序地将0至2n-l依次输出时,无序性和随机 性越大,所述S盒的抗攻击能力越强。
[0061] 步骤S12,在每输出一个K值后,判断所述数据发生器的输出值K和所述第一寄存 器的值进行所述第一运算后的值是否等于所述输入值Din。
[0062] 在本发明的一实施例中,当所述S盒的输入值Din为所述S盒的原始输入值Sin 时,所述第一运算为异或、加法或模加运算时,所述第一寄存器的值为η位的0,显然,这时 将K和所述第一寄存器的值进行第一运算后的值仍然等于Κ,而当所述第一运算为乘法运 算时,所述第一寄存器的值为η位的1,显然,这时将K和所述第一寄存器的值进行第一运 算后的值也仍然等于Κ,也就是说,当所述S盒的输入值Din为所述S盒的原始输入值Sin 时,步骤S12相当于判断所述数据发生器的输出值K是否等于所述输入值Din。
[0063] 在本发明的实施例中,当所述S盒的输入值Din为所述S盒的原始输入值Sin和 η位的输入掩码Xin的值进行第一运算后的值时,所述第一寄存器的值初始化为η的输入 掩码Xin,显然,这时将K和所述第一寄存器的值进行第一运算后的值等于K和Xin进行第 一运算后的值,也就是说,当所述S盒的输入值Din为所述S盒的原始输入值Sin和η位的 输入掩码Xin进行第一运算后的值时,步骤S12相当于判断所述数据发生器的输出值K和 Xin进行第一运算后的值是否等于所述输入值Din。
[0064] 当所述数据发生器的输出值K和所述第一寄存器的值进行第一运算后的值不等 于所述输入值Din时,则执行步骤S13。
[0065] 步骤S13,使所述S盒输出S(K),并将S(K)和所述第二寄存器的值进行第二运算 后的值替换为所述第二寄存器的值。
[0066] 在本发明的实施例中,所述第二运算可以为所述第一运算的逆运算,也就是说,可 以将所述第二寄存器的值和S(K)进行所述第一运算的逆运算后的值替换为所述第二寄存 器的值。所述第一运算的逆运算可以为加法、异或、乘法和模加运算等,那么所述第二运算 相应地可以为减法、异或、除法和模减运算等。
[0067] 当所述数据发生器的输出值K和所述第一寄存器的值进行第一运算后的值等于 所述输入值Din时,则执行步骤S14。
[0068] 步骤S14,根据所述第一寄存器的值和所述第一运算对所述第二寄存器的值进行 操作。
[0069] 当所述第一运算为异或、加法和模加运算且所述第一寄存器的值为η位的0时,或 当所述第一运算为乘法运算且所述第一寄存器的值为η位的1时,如果所述数据发生器的 输出值K和所述第一寄存器的值进行第一运算后的值等于所述输入值Din,则保持所述寄 存器的值不变。
[0070] 而当所述第一寄存器的值为η位的Xin时,如果所述数据发生器的输出值K和所 述第一寄存器的值进行第一运算后的值等于所述输入值Din,可以保持所述第二寄存器的 值保值不变,这需要在最后输出所述第二寄存器的值后将所述第二寄存器的值和m位的输 出掩码Xout进行第一运算,但也可以在步骤S14中就将所述第二寄存器的值和m位输出掩 码Xout进行第一运算后的值替换所述第二寄存器的值。
[0071] 步骤S15,判断所述数据发生器是否将0至2n_l全部输出。在本发明的实施例中, 当所述数据发生器没有将〇至2n-l全部输出时,则返回步骤SI1,继续输出K值,然后继执 行步骤S12至S14,直至所述数据发生器将0至2n-l全部输出。
[0072] 当所述数据发生器已将0至2n_l全部输出时,则执行步骤S16。
[0073] 步骤S16,将所述数据发生器将0至2n_l全部输出后对应的所述第二寄存器的值 输出。
[0074] 在本发明的实施例中,当所述第一寄存器的初始值为η位的输入掩码Xin时,可以 在所述步骤S14不对所述第二寄存器的值进行操作,而是保持所述第二寄存器的值不变, 那么就需要在步骤S16之后将输出的第二寄存器的值和m位的输出掩码Xout进行第一运 算,以确保输出值的受到掩码保护。
[0075] 根据上述步骤中所述第一运算和第二运算的不同,上述数据处理方法的具体实施 方式也不同,下面将分别结合不同的实施例来进行详细说明。
[0076] 实施例一
[0077] 图2是本发明实施例一中数据处理方法的流程图。
[0078] 请参考图2,所述方法包括:步骤SlOO至S106。
[0079] 步骤S100,当接收到S盒的输入值Din时,初始化寄存器组,所述寄存器组包括第 一寄存器和第二寄存器。
[0080] 在本实施例中,所述S盒的输入值位宽为n,输出值位宽为m,m和η都为正整数, 所述S盒的原始输入值在0至2η-1的范围内取值,所述S盒的输出值Sout包含与0至2η-1 一一对应的输出值S(0)至S(2η-1)。
[0081] 在本实施例中,请参考图3,由于后续第一运算为异或运算,第二运算也为异或运 算,那么当所述S盒的输入值Din为所述S盒的原始输入值Sin时,可以将所述第一寄存器 的值初始化为η位的0,和将第二寄存器的值初始化为S(0)至S(2η-1)异或后的值,即m位 的0。
[0082] 在本实施例中,请参考图4,由于后续第一运算为异或运算,第二运算也为异或运 算,那么当所述S盒的输入值Din为所述S盒的原始输入值Sin异或η位的输入掩码Xin 的值时,可以将所述第一寄存器的值初始化为η的输入掩码Xin,和将第二寄存器的值初始 化为S(O)至S(2n-1)异或后的值,即m位的0。所述寄存器组还可以包括第三寄存器,当所 述S盒的输入值Din为所述S盒的原始输入值Sin异或η位的输入掩码Xin的值时,可以 将所述第三寄存器初始化为m位的输出掩码Xout。
[0083] 步骤S101,采用数据发生器输出K。
[0084] 在本发明的实施例中,所述数据发生器每次输出值K都不相等,且所述输出值K 在0至2n-l的范围内取值。
[0085] 在本发明的实施例中,在每接收到一个Din后,所述数据发生器都需要依次将0 至2n-l全部输出。所述数据发生器可以有序地将0至2n-l依次输出,例如,按照1、2、3、4、 5......,2n-l的顺序将0至2n-l依次输出,所述数据发生器也可以无序地将0至2n-l依次 输出,例如,按照8、55、12、4、2n-l......,1的顺序将0至2n_l依次输出。
[0086] 在本发明的实施例中,所述数据发生器可以为计数器,以实现有序地输出0至 2n-l,在本发明的其他实施例中,所述数据发生器可以先将从O至2n-l转换成序列X、x+1、 x+2......,2n-l、0、l、2......χ-l,其中,x可以为O至2n-l中任意一个数值,然后将所述序 列异或一个η位的随机数g,以生成一个无序的但可以遍历O至2n-l的序列,因此,所述数 据发生器将所述无序的序列以此输出,则可实现无序地将O至2n-l依次输出。
[0087] 需要说明的是,当所述数据发生器无序地将0至2n_l依次输出时,无序性和随机 性越大,所述S盒的抗攻击能力越强。
[0088] 步骤S102,在每输出一个K值后,判断所述数据发生器的输出值K异或所述第一寄 存器的值是否等于所述输入值Din。
[0089] 在本发明的实施例中,当所述S盒的输入值Din为所述S盒的原始输入值Sin时, 所述第一寄存器的值为η位的0,显然,这时将K异或所述第一寄存器的值仍然等于K,也就 是说,当所述S盒的输入值Din为所述S盒的原始输入值Sin时,步骤S102相当于判断所 述数据发生器的输出值K是否等于所述输入值Din。
[0090] 在本发明的实施例中,当所述S盒的输入值Din为所述S盒的原始输入值Sin异 或η位的输入掩码Xin的值时,所述第一寄存器的值初始化为η的输入掩码Xin,显然,这时 将K异或所述第一寄存器的值仍然等于K异或Xin,也就是说,当所述S盒的输入值Din为 所述S盒的原始输入值Sin异或η位的输入掩码Xin的值时,步骤S102相当于判断所述数 据发生器的输出值K异或Xin的值是否等于所述输入值Din。
[0091] 当所述数据发生器的输出值K异或所述第一寄存器的值不等于所述输入值Din 时,则执行步骤S103。
[0092] 步骤S103,使所述S盒输出S(K),并将S(K)异或所述第二寄存器的值替换为所述 第二寄存器的值。
[0093] 在本实施例中,当所述S盒的输入值Din为所述S盒的原始输入值Sin时,所述第 二寄存器的值为m位的0,显然,第一次输出K值后,S(K)异或所述第二寄存器的值仍然等 于S(K),例如第一次输出的K值为0,将S(0)异或0后的值S(0)替换为所述第二寄存器的 值,第二次输出的K值为1时,将S(I)异或第二寄存器的值S(0)的结果S(0)十S(1) 替换为所述第二寄存器的值,第三次输出的K值为2时,将S(2)异或第二寄存器的值S(I) 十S(0)的结果S(2)十S(1)十S(0)替换为第二寄存器的值,以此类推,当第k次输 出的K值为k,将将S(k)异或第二寄存器的值S(0)十S(1)......十S(k-Ι)的结果 S(0)十S(1)十S(2)......十S(k)替换为第二寄存器的值。
[0094] 在本实施例中,当所述S盒的输入值Din为所述S盒的原始输入值Sin异或η位 的输入掩码Xin的值时,将所述第一寄存器的值初始化为η的输入掩码Xin,但对于所述第 二寄存器,可以将所述第二寄存器初始化为m位的输出掩码Xout,也可以将所述第二寄存 器初始化为m位的0。
[0095] 如果将所述第二寄存器初始化为m位的输出掩码Xout,那么在步骤S103中的计 算和当所述S盒的输入值Din为所述S盒的原始输入值Sin时的计算方式类似,后续在步 骤S104无需进行操作,只需保持所述第二寄存器的值不变,另外在步骤S106输出所述第 二寄存器的值因已带上掩码输出掩码Xout也就无需再作异或输出掩码Xout的操作了,这 时如果将所述第二寄存器初始化为m位的0,那么在后续可以在步骤S104异或上输出掩码 Xout,也可以在最后将步骤S106输出所述第二寄存器的值异或上第三寄存器的值m位的掩 码输出掩码Xout(如图4所示),从而使得S盒的输出值被掩码保护。
[0096] 当所述S盒的输入值Din为所述S盒的原始输入值Sin异或η位的输入掩码Xin 的值时,将所述第一寄存器的值初始化为η的输入掩码Xin,且将所述第二寄存器初始化为m位的输出掩码Xout时,在步骤S103中的操作为:第一次输出K值后,S(K)异或所述第二 寄存器的值等于S(K)十S〇Ut。例如第一次输出的K值为0,将S(0)异或输出掩码Xout后 的结果S(O)十输出掩码Xout替换为所述第二寄存器的值,第二次输出的K值为1时,将 S(I)异或第二寄存器的值S(O)十输出掩码Xout的结果S(1)十S(0)十输出掩码Xout 替换为所述第二寄存器的值,第三次输出的K值为2时,将S(2)异或第二寄存器的值S(I) 十S(0)十输出掩码Xout的结果S(2)十S(1)十S(0)十输出掩码Xout替换为第二 寄存器的值,以此类推,当第k次输出的K值为k,将将S(k)异或第二寄存器的值S(0)? S(1)......十S(k-Ι)十输出掩码Xout的结果S(0)十S(1)十S(2)......十S (k)十输出掩码Xout替换为第二寄存器的值。
[0097] 当所述数据发生器的输出值K异或所述第一寄存器的值等于所述输入值Din时, 执行步骤S104。
[0098] 步骤S104,根据所述第一寄存器的值和所述异或运算对所述第二寄存器的值进行 操作。
[0099] 在本实施例中,例如,当Din为60,K异或第一寄存器的值也等于60时,这时,如果 所述第一寄存器的值为η位的0,则保持所述寄存器的值不变,如果所述第一寄存器的值为 η位的输入掩码Xin,可以保持所述第二寄存器的值不变,那么就需要在一开始将所述第二 寄存器的值初始为m位的Xout,或者在步骤S106输出第二寄存器的值后将所述第二寄存器 的值异或m位的输出掩码Xout(图4中第三寄存器的值),也可以在步骤S104将所述第二 寄存器的值异或m位的输出掩码Xout后的值替换为所述第二寄存器的值,那么在步骤S106 输出第二寄存器的值后就无需将所述第二寄存器的值异或m位的输出掩码Xout。
[0100] 步骤S105,判断所述数据发生器是否将0至2n-l全部输出。在本发明的实施例 中,当所述数据发生器没有将〇至2n-l全部输出时,则返回步骤SlOl,继续输出K值,然后 继执行步骤S102至S104,直至所述数据发生器将0至2n-l全部输出。
[0101] 当所述数据发生器已将〇至2n-l全部输出时,则执行步骤S106。
[0102] 步骤S106,将所述数据发生器将0至2n_l全部输出后对应的所述第二寄存器的值 输出。
[0103] 下面将举例对所述步骤SlOO至S106进行进一步说明。
[0104] 实施例(1)
[0105] 在实施例(1)中,所述S盒的输入值位宽为6,输出值位宽为4,所述S盒的原始输 入值在0至63的范围内取值,所述S盒的输出值Sout包含与0至63--对应的输出值 S(O)至以63)。在本发明的其他实施例中,所述S盒的输入值位宽不限于6,输出值位宽不 限于4。
[0106] 当接收到S盒的输入值Din=60,且Din为原始输入值Sin,在步骤SlOO将所述第 一寄存器的值初始化为η位的0,将所述第二寄存器的值初始化为m位的0。
[0107] 在步骤SlOl,采用所述数据发生器有序地输出0至2n-l,第一次输出的K值为0, 显然在步骤S102中可以判断出0异或所述第一寄存器的值0不等于Din=60,因此,在步骤 S103需要将S(O)异或所述第二寄存器的值0的结果S(O)替换为所述第二寄存器的值,接 着,继续执行步骤SlOl,第二输出的K值为1,显然在步骤S102中可以判断出1异或所述第 一寄存器的值〇不等于Din=60,因此,在步骤S103需要将S(1)异或所述第二寄存器的值 S(O)的结果S(1)十S(O)替换为所述第二寄存器的值,以此类推,在第59次输出的K值 为59,显然在步骤S102中可以判断出59异或所述第一寄存器的值0不等于Din=60,因此, 在步骤S103需要将S(59)异或所述第二寄存器的值S(58)十S(57)......S(1)十S(0) 的结果S(59)十S(58)十S(57)......S(1)十S(0)替换为所述第二寄存器的值。
[0108] 当在第60次输出的K值为60时,显然在步骤S102中可以判断出60异或所述第 一寄存器的值〇等于Din=60,因此,在步骤S104需要保持所述第二寄存器的值,也就是说, 使所述第二寄存器的值仍为S(59)十S(58)十S(57)......S(1)十S(O)。
[0109] 接着,在第61次输出的K值为61,显然在步骤S102中可以判断出61异或所述 第一寄存器的值〇不等于Din=60,因此,在步骤S103需要将S(61)异或所述第二寄存器 的值S(59)十S(58)十S(57)......S(1)十S(0)的结果S(61)十S(59)十S(58)十 S(57)......S(1)十S(O)替换为所述第二寄存器的值。以此类推,直至第63次输出的 K值为63,显然在步骤S102中可以判断出63异或所述第一寄存器的值0不等于Din=60, 因此,在步骤S103需要将S(63)异或所述第二寄存器的值S(62)十S(61)十S(59)十 S(58)十S(57)......S(I)十S(O)的结果S(63)十S(62)十S(61)十S(59)十S(58)十 S(57)......S(1)十S(O)替换为所述第二寄存器的值。
[0110] 到此为止,所述数据发生器已将〇至2n-l全部输出,而此时的第二寄存器的值为 S(63)十S(62)十S(61)十S(59)十S(58)十S(57)......S(1)十S(0),显然Din对 应的Dout=S(60) =S(63)十S(62)十S(61)十S(59)十S(58)十S(57)......S(1)? S(O)。那么可以在步骤S106将所述数据发生器将0至2n-l全部输出后对应的所述第二寄 存器的值作为Din对应的Sout输出。
[0111] 不难发现,在实施例(1)中,当接收到S盒的输入值0丨11=11,0〈11〈211-1,且0丨11为原始 输入值Sin,在步骤SlOO将所述第一寄存器的值初始化为η位的0,将所述第二寄存器的值 初始化为m位的0。经过步骤SlOl至S105之后,第二寄存器的值为S(O)十S(I)......十 S(h-l)十S(h+1)......S(2n-2)十S(2n-1),由于S(h)=S(0)十S(I)......十S(h_l)十 S(h+1)......S(2n-2)十S(2n-1),那么在步骤S106就可以将第二寄存器的值S(O)十 S(I)......十S(h-l)十S(h+1)......S(2n-2)十S(2n-1)作为Din=h对应的Sout值输 出。
[0112] 实施例(2)
[0113] 在实施例(2 )中,所述S盒的输入值位宽为6,输出值位宽为4,所述S盒的原始输 入值在0至63的范围内取值,所述S盒的输出值Sout包含与0至63--对应的输出值 S(O)至以63)。在本发明的其他实施例中,所述S盒的输入值位宽不限于6,输出值位宽不 限于4。
[0114] 当接收到S盒的输入值Din=60十Xin,Din为原始输入值Sin异或输入掩码Xin 的值,在步骤SlOO将所述第一寄存器的值初始化为η位的Xin,将所述第二寄存器的值初始 化为m位的输出掩码Xout。
[0115] 在步骤S101,采用所述数据发生器有序地输出0至2n_l,第一次输出的K值为0, 显然在步骤S102中可以判断出0异或所述第一寄存器的值Xin不等于Din=60十Xin,因 此,在步骤S103需要将S(O)异或所述第二寄存器的值输出掩码Xout的结果S(O)十输出 掩码Xout替换为所述第二寄存器的值,接着,继续执行步骤S101,第二输出的K值为1,显 然在步骤S102中可以判断出1异或所述第一寄存器的值Xin不等于Din=60 ?Xin,因此, 在步骤S103需要将S(I)异或所述第二寄存器的值S(O)十输出掩码Xout的结果S(I) 十S(0)十输出掩码Xout替换为所述第二寄存器的值,以此类推,在第59次输出的K值为 59,显然在步骤S102中可以判断出59异或所述第一寄存器的值Xin不等于Din=60十Xin, 因此,在步骤S103需要将S(59)异或所述第二寄存器的值S(58) ?S(57)......S(1)0 S(O)十输出掩码Xout的结果S(59)十S(58)十S(57)......S(1)十S(0)十输出掩码 Xout替换为所述第二寄存器的值。
[0116] 当在第60次输出的K值为60时,显然在步骤S102中可以判断出60异或所述第 一寄存器的值Xin等于Din=60十Xin,因此,在步骤S104需要保持所述第二寄存器的值, 也就是说,使所述第二寄存器的值仍为S(59) ?S(58)任)S(57)......S(1)?S(O)十输 出掩码Xout。
[0117] 接着,在第61次输出的K值为61,显然在步骤S102中可以判断出61异或所述第 一寄存器的值Xin不等于Din=60十Xin,因此,在步骤S103需要将S(61)异或所述第二寄 存器的值S(59)十S(58) ?S(57)......S(1)十S(0)十输出掩码Xout的结果S(61)十 S(59)十S(58)十S(57)......S(1)十S(0)十输出掩码Xout替换为所述第二寄存器的 值。以此类推,直至第63次输出的K值为63,显然在步骤S102中可以判断出63异或所述 第一寄存器的值Xin不等于Din=60十Xin,因此,在步骤S103需要将S(63)异或所述第二 寄存器的值S(62) ?S(61)十S(59) ?S(58)十S(57)......S(1)十S(0)十输出掩码 Xout的结果S(63)十S(62)十S(61)十S(59)十S(58)十S(57)......S( 1)十S(0)十 输出掩码Xout替换为所述第二寄存器的值。
[0118] 到此为止,所述数据发生器已将0至2n_l全部输出,而此时的第二寄存器的值为 S(63)十S(62)十S(61)十S(59)十S(58)十S(57)......S(1)十S(0)十输出掩码 父〇此,显然0111对应的0〇1^=5(60)?输出掩码父〇1^=5(63)?3(62)?3(61)?3(59)? S(58)十S(57)......S(1)十S(O)十输出掩码Xout。那么可以在步骤S106将所述数据 发生器将0至2n-l全部输出后对应的所述第二寄存器的值作为Din对应的Sout输出。
[0119] 不难发现,在实施例(2)中,当接收到S盒的输入值0丨11=11,0〈11〈211-1,且0丨11为原 始输入值Sin异或Xin的值,在步骤SlOO将所述第一寄存器的值初始化为η位的Xin,将 所述第二寄存器的值初始化为m位的输出掩码Xout。经过步骤SlOl至S105之后,第二寄 存器的值为S(O)十S(I)......十S(h-l)十S(h+1)......S(2n-2)十S(2n-1)十输出掩 码Xout,由于Din对应的Sout=SQi)十输出掩码Xout=S(O)十S(I)......十S(h_l)十 S(h+1)......S(2n-2)十S(2n-1) ?输出掩码Xout,那么在步骤S106就可以将第二寄存器 的值S(O)十S(I)......十S(h-l)十S(h+1)......S(2n-2)十S(2n-1)十输出掩码Xout 作为Din=h对应的Sout值输出。
[0120] 实施例二
[0121] 图5是本发明实施例二中数据处理方法的流程图。
[0122] 请参考图5,所述方法包括:步骤S200至S206。
[0123] 步骤S200,当接收到S盒的输入值Din时,初始化寄存器组,所述寄存器可以包括 第一寄存器和第二寄存器。
[0124] 在本实施例中,所述S盒的输入值位宽为n,输出值位宽为m,,m和η都为正整数, 所述S盒的原始输入值在0至2η-1的范围内取值,所述S盒的输出值Sout包含与0至2η-1 一一对应的输出值S(0)至S(2η-1)。
[0125] 在本施例中,请参考图6,后续的第一运算为加法运算,第二运算为减法运算,那么 当所述S盒的输入值Din为所述S盒的原始输入值Sin时,可以将所述第一寄存器的值初 始化为η位的0,将第二寄存器的值初始化为S(O)至S(2η-1)的总和。
[0126] 在本实施例中,请参考图7,后续的第一运算为加法运算,第二运算为减法运算,那 么当所述S盒的输入值Din为所述S盒的原始输入值Sin和η位的输入掩码Xin相加的 值时,可以将所述第一寄存器的值初始化为η的输入掩码Xin,将第二寄存器的值初始化为 S(O)至S(2n-1)的总和。
[0127] 所述寄存器组还可以包括第三寄存器,当所述S盒的输入值Din为所述S盒的 原始输入值Sin和η位的输入掩码Xin相加的值时,将第二寄存器的值初始化为S(O)至 S(2n-1)的总和,可以将所述第三寄存器初始化为m位的输出掩码Xout。
[0128] 步骤S201,采用数据发生器输出K。
[0129] 在本发明的实施例中,所述数据发生器每次输出值K都不相等,且所述输出值K 在0至2n-l的范围内取值。
[0130] 在本发明的实施例中,在每接收到一个Din后,所述数据发生器都需要依次将0 至2n-l全部输出。所述数据发生器可以有序地将0至2n-l依次输出,例如,按照1、2、3、4、 5......,2n-l的顺序将0至2n-l依次输出,所述数据发生器也可以无序地将0至2n-l依次 输出,例如,按照8、55、12、4、2n-l......,1的顺序将0至2n_l依次输出。需要说明的是,当 所述数据发生器无序地将〇至2n-l依次输出时,无序性和随机性越大,所述S盒的抗攻击 能力越强。
[0131] 步骤S202,在每输出一个K值后,判断所述数据发生器的输出值K加上所述第一寄 存器的值是否等于所述输入值Din。
[0132] 在本发明的实施例中,当所述S盒的输入值Din为所述S盒的原始输入值Sin时, 所述第一寄存器的值为η位的0,显然,这时将K加上所述第一寄存器的值仍然等于K,也就 是说,当所述S盒的输入值Din为所述S盒的原始输入值Sin时,步骤S202相当于判断所 述数据发生器的输出值K是否等于所述输入值Din。
[0133] 在本发明的实施例中,当所述S盒的输入值Din为所述S盒的原始输入值Sin加 上η位的输入掩码Xin的值时,所述第一寄存器的值初始化为η的输入掩码Xin,显然,这 时将K加上所述第一寄存器的值仍然等于K加上Xin的值,也就是说,当所述S盒的输入值 Din为所述S盒的原始输入值Sin加上η位的输入掩码Xin的值时,步骤S202相当于判断 所述数据发生器的输出值K加上Xin的值是否等于所述输入值Din。
[0134] 当所述数据发生器的输出值K和所述第一寄存器的值相加后的值不等于所述输 入值Din时,则执行步骤S203。
[0135] 步骤S203,使所述S盒输出S(K),并将所述第二寄存器的值减去S(K)的值替换为 所述第二寄存器的值。
[0136] 在本实施例中,所述第二寄存器的值为S(O)至S(2n_l)的总和,显然,第一次输出 K值后,所述第二寄存器的值减去S(K),例如第一次输出的K值为0,将S(O)至S(2n-l)的总 和减去S(0)的值替换为所述第二寄存器的值,第二次输出的K值为1时,将Sm至S(2n-l) 的总和减去S(1)的值替换为所述第二寄存器的值,第三次输出的K值为2时,将将S(2)至 S(2n-l)的总和减去S(2)的值替换为第二寄存器的值,以此类推,当第k次输出的K值为k, 将将S(k)至S(2n-l)的总和减去S(k)的值替换为第二寄存器的值。
[0137] 当所述数据发生器的输出值K和所述第一寄存器的值相加后的值等于所述输入 值Din时,执行步骤S204。
[0138] 步骤S204,根据所述第一寄存器的值和所述加法运算对所述第二寄存器的值进行 操作。
[0139] 在本实施例中,例如,当Din为60,K加上所述第一寄存器的值也等于60时,这时, 如果所述第一寄存器的值为η位的0,则保持所述寄存器的值不变,如果所述第一寄存器的 值为η位的输入掩码Xin,可以保持所述第二寄存器的值不变,那么就需要在一开始将所述 第二寄存器的值初始为m位的Xout,或者在步骤S106输出第二寄存器的值后将所述第二寄 存器的值加上m位的输出掩码Xout(图7中第三寄存器的值),也可以在步骤S104将所述 第二寄存器的值加上m位的输出掩码Xout后的值替换为所述第二寄存器的值,那么在在步 骤S106输出第二寄存器的值后就无需将所述第二寄存器的值加上m位的输出掩码Xout。
[0140] 步骤S205,判断所述数据发生器是否将0至2n_l全部输出。在本发明的实施例 中,当所述数据发生器没有将〇至2n-l全部输出时,则返回步骤S201,继续输出K值,然后 继执行步骤S202至S204,直至所述数据发生器将0至2n-l全部输出。
[0141] 当所述数据发生器已将0至2n_l全部输出时,则执行步骤S206。
[0142] 步骤S206,将所述数据发生器将0至2n_l全部输出后对应的所述第二寄存器的值 输出。
[0143] 下面将举例对所述步骤S200至S206进行进一步说明。
[0144] 实施例(3)
[0145] 在实施例(3)中,所述S盒的输入值位宽为6,输出值位宽为4,所述S盒的原始输 入值在0至63的范围内取值,所述S盒的输出值Sout包含与0至63--对应的输出值 S(O)至以63)。在本发明的其他实施例中,所述S盒的输入值位宽不限于6,输出值位宽不 限于4。
[0146] 当接收到S盒的输入值Din=60,且Din为原始输入值Sin,在步骤S200将所述第 一寄存器的值初始化为η位的0,将所述第二寄存器的值初始化为S(0)至S(63)的总和,和 将所述第三寄存器的值初始化为m位的0。
[0147] 在步骤S201,采用所述数据发生器有序地输出0至2n_l,第一次输出的K值为0, 显然在步骤S202中可以判断出0加上所述第一寄存器的值0不等于Din=60,因此,在步骤 S203需要将S(O)至S(63)的总和减去S(O)的值替换为所述第二寄存器的值,接着,继续 执行步骤S201,第二输出的K值为1,显然在步骤S202中可以判断出1加上所述第一寄存 器的值〇不等于Din=60,因此,在步骤S203需要将S(1)至S(63)的总和减去S(1)的值替 换为所述第二寄存器的值,以此类推,在第59次输出的K值为59,显然在步骤S202中可以 判断出59加上所述第一寄存器的值0不等于Din=60,因此,在步骤S203需要将S(59)至 S(63)的总和减去S(59)的值替换为所述第二寄存器的值。
[0148] 当在第60次输出的K值为60时,显然在步骤S202中可以判断出60加上所述第 一寄存器的值〇等于Din=60,因此,在步骤S204需要保持所述第二寄存器的值,也就是说, 使所述第二寄存器的值仍为将S(60)至S(63)的总和。
[0149] 接着,在第61次输出的K值为61,显然在步骤S202中可以判断出61加上所述第 一寄存器的值〇不等于Din=60,因此,在步骤S203需要将S(60)至S(63)的总和减去S(61) 的值替换为所述第二寄存器的值。以此类推,直至第63次输出的K值为63,显然,在步骤 S202中可以判断出63加上给你所述第一寄存器的值0不等于Din=60,因此,在步骤S203 需要将S(60)+S(63)的总和减去S(63)的值替换为所述第二寄存器的值。
[0150] 到此为止,所述数据发生器已将0至2n-l全部输出,而此时的第二寄存器的值为 S(60)。那么可以在步骤S206将所述数据发生器将0至2n-l全部输出后对应的所述第二 寄存器的值输出。
[0151] 实施例(4)
[0152] 在实施例(4)中,所述S盒的输入值位宽为6,输出值位宽为4,所述S盒的原始输 入值在0至63的范围内取值,所述S盒的输出值Sout包含与0至63--对应的输出值 S(O)至以63)。在本发明的其他实施例中,所述S盒的输入值位宽不限于6,输出值位宽不 限于4。
[0153] 当接收到S盒的输入值Din=60+Xin,Din为原始输入值Sin加上输入掩码Xin的 值,在步骤S200将所述第一寄存器的值初始化为η位的Xin,将所述第二寄存器的值初始化 为S(O)至S(63)的总和,和将所述第三寄存器的值初始化为m位的输出掩码Xout。
[0154] 在步骤S201,采用所述数据发生器有序地输出0至2n_l,第一次输出的K值为0, 显然在步骤S202中可以判断出0加上所述第一寄存器的值Xin不等于Din=60+Xin,因此, 在步骤S203需要将S(O)至S(63)的总和减去S(O)的值替换为所述第二寄存器的值,接着, 继续执行步骤S201,第二输出的K值为1,显然在步骤S202中可以判断出1加上所述第一 寄存器的值乂111不等于0111=60+乂111,因此,在步骤5203需要将5(1)至3(63)的总和减去 S(1)的值替换为所述第二寄存器的值,以此类推,在第59次输出的K值为59,显然在步骤 S202中可以判断出59加上所述第一寄存器的值Xin不等于Din=60+Xin,因此,在步骤S203 需要将S(59)至S(63)的总和减去S(59)的值替换为所述第二寄存器的值。
[0155] 当在第60次输出的K值为60时,显然在步骤S202中可以判断出60加上所述第 一寄存器的值Xin等于Din=60+Xin,因此,在步骤S204需要保持所述第二寄存器的值,也就 是说,使所述第二寄存器的值仍为将S(60)至S(63)的总和。
[0156] 接着,在第61次输出的K值为61,显然在步骤S202中可以判断出61加上所述第 一寄存器的值Xin不等于Din=60+Xin,因此,在步骤S203需要将S(60)至S(63)的总和减 去S(61)的值替换为所述第二寄存器的值。以此类推,直至第63次输出的K值为63,显然, 在步骤S202中可以判断出63加上所述第一寄存器的值Xin不等于Din=60+Xin,因此,在步 骤S203需要将S(60)+S(63)的总和减去S(63)的值替换为所述第二寄存器的值。
[0157] 到此为止,所述数据发生器已将0至2n_l全部输出,而此时的第二寄存器的值为 S(60)。那么可以在步骤S206将所述数据发生器将0至2n-l全部输出后对应的所述第二 寄存器的值输出。
[0158] 实施例三
[0159] 图8是本发明实施例二中数据处理方法的流程图。
[0160] 请参考图8,所述方法包括:步骤S300至S306。
[0161] 步骤S300,当接收到S盒的输入值Din时,初始化寄存器组,所述寄存器可以包括 第一寄存器和第二寄存器。
[0162] 在本实施例中,所述S盒的输入值位宽为n,输出值位宽为m,,m和η都为正整数, 所述S盒的原始输入值在0至2η-1的范围内取值,所述S盒的输出值Sout包含与0至2η-1 一一对应的输出值S(0)至S(2η-1)。
[0163] 在本实施例中,请参考图9,后续的第一运算为乘法运算,那么当所述S盒的输入 值Din为所述S盒的原始输入值Sin时,可以将所述第一寄存器的值初始化为η位的1,将 第二寄存器的值初始化为S(O)至S(2n-1)的乘积。
[0164] 在本实施例中,请参考图10,后续的第一运算为乘法运算,那么当所述S盒的输入 值Din为所述S盒的原始输入值Sin和η位的输入掩码Xin相乘的值时,可以将所述第一 寄存器的值初始化为η的输入掩码Xin,将第二寄存器的值初始化为S(O)至S(2η-1)的乘 积。
[0165] 所述寄存器组还可以包括第三寄存器,当所述S盒的输入值Din为所述S盒的 原始输入值Sin和η位的输入掩码Xin相乘的值时,将第二寄存器的值初始化为S(O)至 S(2n-1)的乘积,可以将所述第三寄存器初始化为m位的输出掩码Xout。
[0166] 步骤S301,采用数据发生器输出K。
[0167] 在本发明的实施例中,所述数据发生器每次输出值K都不相等,且所述输出值K 在0至2n-l的范围内取值。
[0168] 在本发明的实施例中,在每接收到一个Din后,所述数据发生器都需要依次将0 至2n-l全部输出。所述数据发生器可以有序地将0至2n-l依次输出,例如,按照1、2、3、4、 5......,2n-l的顺序将0至2n-l依次输出,所述数据发生器也可以无序地将0至2n-l依次 输出,例如,按照8、55、12、4、2n-l......,1的顺序将0至2n_l依次输出。需要说明的是,当 所述数据发生器无序地将〇至2n-l依次输出时,无序性和随机性越大,所述S盒的抗攻击 能力越强。
[0169] 步骤S302,在每输出一个K值后,判断所述数据发生器的输出值K和所述第一寄存 器的值相乘后的值是否等于所述输入值Din。
[0170] 在本发明的实施例中,当所述S盒的输入值Din为所述S盒的原始输入值Sin时, 所述第一寄存器的值为η位的1,显然,这时将K和所述第一寄存器的值相乘后的值仍然等 于Κ,也就是说,当所述S盒的输入值Din为所述S盒的原始输入值Sin时,步骤S302相当 于判断所述数据发生器的输出值K是否等于所述输入值Din。
[0171] 在本发明的实施例中,当所述S盒的输入值Din为所述S盒的原始输入值Sin和 η位的输入掩码Xin相乘的值时,所述第一寄存器的值初始化为η的输入掩码Xin,显然,这 时将K和所述第一寄存器的值相乘后的值等于K和Xin相乘后的值,也就是说,当所述S盒 的输入值Din为所述S盒的原始输入值Sin和η位的输入掩码Xin相乘的值时,步骤S302 相当于判断所述数据发生器的输出值K和Xin相乘后的值是否等于所述输入值Din。
[0172] 当所述数据发生器的输出值K和所述第一寄存器的值相乘后的值不等于所述输 入值Din时,则执行步骤S303。
[0173]步骤S303,使所述S盒输出S(K),并将所述第二寄存器的值除以S(K)的值替换为 所述第二寄存器的值。
[0174] 在本实施例中,所述第二寄存器的值为S(O)至S(2n_l)的乘积,显然,第一次输出 K值后,所述第二寄存器的值除以S(K),例如第一次输出的K值为0,将S(O)至S(2n_l)的乘 积除以S(O)的值替换为所述第二寄存器的值,第二次输出的K值为1时,将S(I)至S(2n-l) 的乘积除以S(1)的值替换为所述第二寄存器的值,第三次输出的K值为2时,将S(2)至 S(2n-l)的乘积除以S(2)的值替换为第二寄存器的值,以此类推,当第k次输出的K值为 k,将S(k)至S(2n-1)的乘积除以S(k)的值替换为第二寄存器的值。
[0175] 当所述数据发生器的输出值K和所述第一寄存器的值相乘后的值等于所述输入 值Din时,执行步骤S304。
[0176] 步骤S304,根据所述第一寄存器的值和所述乘法运算对所述第二寄存器的值进行 操作。
[0177] 在本实施例中,例如,当Din为60,K和所述第一寄存器的值相乘后的值也等于60 时,这时,如果所述第一寄存器的值为η位的1,则保持所述寄存器的值不变,如果所述第一 寄存器的值为η位的输入掩码Xin,可以保持所述第二寄存器的值不变,那么就需要在一开 始将所述第二寄存器的值初始为m位的Xout,或者在步骤S106输出第二寄存器的值后将 所述第二寄存器的值乘上m位的输出掩码Xout(图10中第三寄存器的值),也可以在步骤 S104将所述第二寄存器的值和m位的输出掩码Xout相乘后的值替换为所述第二寄存器的 值,那么在在步骤S106输出第二寄存器的值后就无需将所述第二寄存器的值和m位的输出 掩码Xout相乘。
[0178] 步骤S305,判断所述数据发生器是否将0至2n_l全部输出。在本发明的实施例 中,当所述数据发生器没有将〇至2n-l全部输出时,则返回步骤S301,继续输出K值,然后 继执行步骤S302至S304,直至所述数据发生器将0至2n-l全部输出。
[0179] 当所述数据发生器已将0至2n_l全部输出时,则执行步骤S306。
[0180] 步骤S306,将所述数据发生器将0至2n_l全部输出后对应的所述第二寄存器的值 输出。
[0181] 实施例四
[0182] 图11是本发明实施例二中数据处理方法的流程图。
[0183] 请参考图11,所述方法包括:步骤S400至S406。
[0184] 步骤S400,当接收到S盒的输入值Din时,初始化寄存器组,所述寄存器可以包括 第一寄存器和第二寄存器。
[0185] 在本实施例中,所述S盒的输入值位宽为n,输出值位宽为m,,m和η都为正整数, 所述S盒的原始输入值在0至2η-1的范围内取值,所述S盒的输出值Sout包含与0至2η-1 --对应的输出值S(0)至S(2η-1),例如,(S(0)+S(I)+S(2)+S(3.......+S(2n-3)+S(2η-2) S(2n-l))modN。
[0186] 在本实施例中,请参考图12,后续的第一运算为模加运算,第二运算为模减运算, 那么当所述S盒的输入值Din为所述S盒的原始输入值Sin时,可以将所述第一寄存器的值 初始化为η位的0,将第二寄存器的值初始化为S(O)至S(2n-l)行模加运算后的值,例如, (S(0)+S(I)+S(2)+S(3.......+S(2n-3)+S(2n-2)S(2n-l))modN。
[0187] 在本实施例中,请参考图13,后续的第一运算为模加运算,第二运算为模减运算, 那么当所述S盒的输入值Din为所述S盒的原始输入值Sin和η位的输入掩码Xin进行模 加运算后的值时,可以将所述第一寄存器的值初始化为η的输入掩码Xin,将第二寄存器的 值初始化为S(O)至S(2n-l)进行模加运算后的值。
[0188] 所述寄存器组还可以包括第三寄存器,当所述S盒的输入值Din为所述S盒的原 始输入值Sin和η位的输入掩码Xin进行模加运算后的值时,将第二寄存器的值初始化为 S(O)至S(2n-1)进行模加运算后的值,可以将所述第三寄存器初始化为m位的输出掩码 Xout0
[0189] 步骤S401,采用数据发生器输出K。
[0190] 在本发明的实施例中,所述数据发生器每次输出值K都不相等,且所述输出值K 在0至2n-l的范围内取值。
[0191] 在本发明的实施例中,在每接收到一个Din后,所述数据发生器都需要依次将0 至2n-l全部输出。所述数据发生器可以有序地将0至2n-l依次输出,例如,按照1、2、3、4、 5......,2n-l的顺序将0至2n-l依次输出,所述数据发生器也可以无序地将0至2n-l依次 输出,例如,按照8、55、12、4、2n-l......,1的顺序将0至2n_l依次输出。需要说明的是,当 所述数据发生器无序地将〇至2n-l依次输出时,无序性和随机性越大,所述S盒的抗攻击 能力越强。
[0192] 步骤S402,在每输出一个K值后,判断所述数据发生器的输出值K和所述第一寄存 器的值进行模加运算后的值是否等于所述输入值Din。
[0193] 在本发明的实施例中,当所述S盒的输入值Din为所述S盒的原始输入值Sin时, 所述第一寄存器的值为η位的0,显然,这时将K和所述第一寄存器进行模加运算后的值仍 然等于Κ,也就是说,当所述S盒的输入值Din为所述S盒的原始输入值Sin时,步骤S402 相当于判断所述数据发生器的输出值K是否等于所述输入值Din。
[0194] 在本发明的实施例中,当所述S盒的输入值Din为所述S盒的原始输入值Sin和 η位的输入掩码Xin进行模加运算后的值时,所述第一寄存器的值初始化为η的输入掩码 Xin,显然,这时将K和所述第一寄存器的值进行模加运算后的值等于K和Xin进行模加运 算的值,也就是说,当所述S盒的输入值Din为所述S盒的原始输入值Sin和η位的输入掩 码Xin进行模加运算后的值时,步骤S402相当于判断所述数据发生器的输出值K和Xin进 行模加运算后的值是否等于所述输入值Din。
[0195] 当所述数据发生器的输出值K和所述第一寄存器的值进行模加运算后的值不等 于所述输入值Din时,则执行步骤S403。
[0196]步骤S403,使所述S盒输出S(K),并将所述第二寄存器的值和S(K)的值进行模减 运算后的值替换为所述第二寄存器的值。
[0197] 在本实施例中,所述第二寄存器的值为S(O)至S(2n_l)的模加运算的结果(S(O) + S⑴+S⑵+S(3.......+S(2n-3)+S(2n-2)S(2n-l))modN,显然,第一次输出K值后,所述第二 寄存器的值减去S(K)后对N取模,例如第一次输出的K值为0,将S(0)至S(2n-l)的模加 运算的结果减去S(O)取模的值替换为所述第二寄存器的值,第二次输出的K值为1时,将 S(I)至S(2n-l)的模加运算的结果减去S(I)对N取模的值替换为所述第二寄存器的值,第 三次输出的K值为2时,将S(2)至S(2n-l)的模加运算的结果减去S(2)对N取模的值替 换为第二寄存器的值,以此类推,当第k次输出的K值为k,将S(k)至S(2n-l)的模加运算 的结果减去S(k)对N取模的值替换为第二寄存器的值。
[0198] 当所述数据发生器的输出值K和所述第一寄存器的值进行模加运算后的值等于 所述输入值Din时,执行步骤S404。
[0199] 步骤S404,根据所述第一寄存器的值和所述模加运算对所述第二寄存器的值进行 操作。
[0200] 在本实施例中,例如,当Din为60,K和所述第一寄存器的值进行模加运算后的值 也等于60时,这时,如果所述第一寄存器的值为η位的0,则保持所述寄存器的值不变,如果 所述第一寄存器的值为η位的输入掩码Xin,可以保持所述第二寄存器的值不变,那么就需 要在一开始将所述第二寄存器的值初始为m位的Xout,或者在步骤S106输出第二寄存器的 值后将所述第二寄存器的值和m位的输出掩码Xout(图13中第三寄存器的值)进行模加 运算,也可以在步骤S104将所述第二寄存器的值和m位的输出掩码Xout进行模加运算后 的值替换为所述第二寄存器的值,那么在在步骤S106输出第二寄存器的值后就无需将所 述第二寄存器的值和m位的输出掩码Xout进行模加运算。
[0201] 步骤S405,判断所述数据发生器是否将0至2n_l全部输出。在本发明的实施例 中,当所述数据发生器没有将〇至2n-l全部输出时,则返回步骤S401,继续输出K值,然后 继执行步骤S402至S404,直至所述数据发生器将0至2n-l全部输出。
[0202] 当所述数据发生器已将0至2n_l全部输出时,则执行步骤S406。
[0203] 步骤S406,将所述数据发生器将0至2n_l全部输出后对应的所述第二寄存器的值 输出。
[0204] 本发明的实施例还提供了一种数据处理装置,请参考图14,所述装置500包括:寄 存器组510,包括第一寄存器和第二寄存器;第一处理单元520,当接收到S盒的输入值Din 时,初始化第一寄存器和第二寄存器,其中,所述S盒的原始输入值Sin包含0至2n-l,所述 S盒的输出值Sout包含与0至2n-l--对应的S(0)至S(2n-l),所述S盒的输入值位宽为 n,输出值位宽为m,m和η都为正整数;数据发生器530,用于输出0至2n-l;第二处理单元 540,用于当所述数据发生器的输出值K和所述第一寄存器的值进行第一运算后的值不等 于所述输入值Din时,使所述S盒输出S(K),并将所述第二寄存器的值和S(K)进行第二运 算后的值替换为所述第二寄存器的值,当所述数据发生器的输出值K和所述第一寄存器的 值进行第一运算后的值等于所述输入值Din时,根据所述第一寄存器的值和所述第一运算 对所述第二寄存器的值进行操作;第三处理单元550,用于当所述数据发生器全部输出O至 2n_l后输出所述第二寄存器的值。
[0205] 在本发明的实施例中,所述第二运算可以为所述第一运算的逆运算,所述第一处 理单元520可以用于将所述第二寄存器的值初始化为将S(O)至S(2n-1)进行第一运算后 的值。
[0206] 在本发明的实施例中,所述第一运算可以为异或运算,所述第二运算可以为异或 运算,相应地,所述第一处理单元520可以用于将所述第二寄存器的值初始化为将S(O)至 S(2n_l)求异或的值。
[0207] 在本发明的实施例中,所述第一运算可以为加法运算,所述第二运算可以为减法 运算,相应地,所述第一处理单元520可以用于将所述第二寄存器的值初始化为将S(O)至 S(2n_l)求和的值。
[0208] 在本发明的实施例中,所述第一运算可以为模加运算,所述第二运算可以为模减 运算,相应地,所述第一处理单元520可以用于将所述第二寄存器的值初始化为将S(O)至 S(2n_l)进行模加运算后的值。
[0209] 在本发明的实施例中,当所述第一运算为异或、加法或模加运算时,所述第一处理 单元520可以用于当所述S盒的输入值Din为所述S盒的原始输入值Sin时,将所述第一 寄存器的值初始化为η位的0。
[0210] 在本发明的实施例中,当所述第一运算为异或、加法或模加运算时,所述第二处理 单元540可以用于当所述数据发生器的输出值K和所述第一寄存器的值进行第一运算后的 值等于所述输入值Din时,保持所述第二寄存器的值不变。
[0211] 在本发明的实施例中,当所述第一运算为异或、加法或模加运算时,所述第一处理 单元520可以用于当所述S盒的输入值Din为所述S盒的原始输入值Sin和η位的输入掩 码Xin进行第一运算后的值时,将所述第一寄存器的值初始化为η的输入掩码Xin。
[0212] 在本发明的实施例中,当所述第一运算为异或、加法或模加运算时,所述第二处理 单元540可以用于当所述数据发生器的输出值K和所述第一寄存器的值进行第一运算后的 值等于所述输入值Din时,将所述第二寄存器的值和m位的输出掩码Xout进行第一运算后 的值替换为所述第二寄存器的值。
[0213] 在本发明的实施例中,所述第一运算可以为乘法运算,所述第二运算可以为除法 运算,所述第一处理单元520可以用于将所述第二寄存器的值初始化为将S(O)至S(2n-l) 相乘的值。
[0214] 在本发明的实施例中,当所述第一运算为乘法运算时,所述第一处理单元520可 以用于当所述S盒的输入值Din为所述S盒的原始输入值Sin时,将所述第一寄存器的值 初始化为η位的1。
[0215] 在本发明的实施例中,当所述第一运算为乘法运算时,所述第二处理单元540可 以用于当所述数据发生器的输出值K和所述第一寄存器的值进行第一运算后的值等于所 述输入值Din时,保持所述第二寄存器的值不变。
[0216] 在本发明的实施例中,当所述第一运算为乘法运算时,所述第一处理单元520可 以用于当所述S盒的输入值Din为所述S盒的原始输入值Sin和η位的输入掩码Xin进行 第一运算后的值时,将所述第一寄存器的值初始化为η的输入掩码Xin。
[0217] 在本发明的实施例中,当所述第一运算为乘法运算时,所述第二处理单元540可 以用于当所述数据发生器的输出值K和所述第一寄存器的值进行第一运算后的值等于所 述输入值Din时,将所述第二寄存器的值和m位的输出掩码Xout进行第一运算后的值替换 为所述第二寄存器的值。
[0218] 在本发明的实施例中,所述第三处理单元550还可以用于将所述输出的第二寄存 器的值和m位的输出掩码Xout进行第一运算。
[0219] 在本发明的实施例中,所述数据发生器530可以用于有序地输出0至2n_l。
[0220] 在本发明的实施例中,所述数据发生器530可以用于无序地输出0至2n_l。
[0221] 本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可 以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储 介质可以包括:R〇M、RAM、磁盘或光盘等。
[0222] 虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本 发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所 限定的范围为准。
【权利要求】
1. 一种数据处理方法,其特征在于,包括: 当接收到S盒的输入值Din时,初始化寄存器组,所述寄存器组包括:第一寄存器和 第二寄存器,并采用数据发生器输出〇至2n-l,其中,所述S盒的原始输入值Sin包含0至 2n_l,所述S盒的输出值Sout包含与0至2n-l--对应的S (0)至S (2n-l),所述S盒的输 入值位宽为n,输出值位宽为m, m和n都为正整数; 当所述数据发生器的输出值K和所述第一寄存器的值进行第一运算后的值不等于所 述输入值Din时,由所述S盒输出S (K),并将所述第二寄存器的值和S (K)进行第二运算后 的值替换为所述第二寄存器的值; 当所述数据发生器的输出值K和所述第一寄存器的值进行第一运算后的值等于所述 输入值Din时,根据所述第一寄存器的值和所述第一运算对所述第二寄存器的值进行操 作; 当所述数据发生器全部输出〇至2n-l后输出所述第二寄存器的值。
2. 如权利要求1所述的方法,其特征在于,所述第二运算为所述第一运算的逆运算,初 始化所述第二寄存器包括:将所述第二寄存器的值初始化为将S(0)至S(2n-1)进行第一运 算后的值。
3. 如权利要求2所述的方法,其特征在于,所述第一运算为异或运算,所述第二运 算为异或运算,初始化所述第二寄存器包括:将所述第二寄存器的值初始化为将S(0)至 S(2n-1)求异或的值。
4. 如权利要求2所述的方法,其特征在于,所述第一运算为加法运算,所述第二运 算为减法运算,初始化所述第二寄存器包括:将所述第二寄存器的值初始化为将S(0)至 S(2n-1)求和的值。
5. 如权利要求2所述的方法,其特征在于,所述第一运算为模加运算,所述第二运 算为模减运算,初始化所述第二寄存器包括:将所述第二寄存器的值初始化为将S(0)至 S(2n-1)进行模加运算后的值。
6. 如权利要求3至5任一项所述的方法,其特征在于,当所述S盒的输入值Din为所述 S盒的原始输入值Sin时,初始化所述第一化寄存器包括:将所述第一寄存器的值初始化为 n位的0。
7. 如权利要求6所述的方法,其特征在于,根据所述第一寄存器的值和所述第一运算 对所述第二寄存器的值进行操作包括:保持所述第二寄存器的值不变。
8. 如权利要求3至5任一项所述的方法,其特征在于,当所述S盒的输入值Din为所 述S盒的原始输入值Sin和n位的输入掩码Xin进行第一运算后的值时,初始化所述第一 寄存器包括:将所述第一寄存器的值初始化为n的输入掩码Xin。
9. 如权利要求8所述的方法,其特征在于,根据所述第一寄存器的值和所述第一运算 对所述第二寄存器的值进行操作包括:将所述第二寄存器的值和m位的输出掩码Xout进行 第一运算后的值替换为所述第二寄存器的值。
10. 如权利要求2所述的方法,其特征在于,所述第一运算为乘法运算,所述第二运 算为除法运算,初始化所述第二寄存器包括:将所述第二寄存器的值初始化为将S(0)至 S(2n-1)相乘的值。
11. 如权利要求10所述的方法,其特征在于,当所述S盒的输入值Din为所述S盒的 原始输入值Sin时,初始化所述第一化寄存器包括:将所述第一寄存器的值初始化为n位的 1〇
12. 如权利要求11所述的方法,其特征在于,根据所述第一寄存器的值和所述第一运 算对所述第二寄存器的值进行操作包括:保持所述第二寄存器的值不变。
13. 如权利要求10所述的方法,其特征在于,当所述S盒的输入值Din为所述S盒的原 始输入值Sin和n位的输入掩码Xin进行第一运算后的值时,初始化所述第一寄存器包括: 将所述第一寄存器的值初始化为n的输入掩码Xin。
14. 如权利要求13所述的方法,其特征在于,根据所述第一寄存器的值和所述第一运 算对所述第二寄存器的值进行操作包括:将所述第二寄存器的值和m位的输出掩码Xout进 行第一运算后的值替换为所述第二寄存器的值。
15. 如权利要求1所述的方法,其特征在于,还包括:将所述输出的第二寄存器的值和m 位的输出掩码Xout进行第一运算。
16. 如权利要求1所述的方法,其特征在于,所述采用所述数据发生器输出0至2n-l包 括:采用所述数据发生器有序地输出〇至2n-l。
17. 如权利要求1所述的方法,其特征在于,所述采用所述数据发生器输出0至2n-l包 括:采用所述数据发生器无序地输出〇至2n-l。
18. -种数据处理装置,其特征在于,包括: 寄存器组,包括第一寄存器和第二寄存器; 第一处理单元,当接收到S盒的输入值Din时,初始化第一寄存器和第二寄存器,其中, 所述S盒的原始输入值Sin包含0至2n-l,所述S盒的输出值Sout包含与0至2n-l-- 对应的S (0)至S (2n-l),所述S盒的输入值位宽为n,输出值位宽为m,m和n都为正整数; 数据发生器,用于输出0至2n-l; 第二处理单元,用于当所述数据发生器的输出值K和所述第一寄存器的值进行第一 运算后的值不等于所述输入值Din时,使所述S盒输出S (K),并将所述第二寄存器的值和 S(K)进行第二运算后的值替换为所述第二寄存器的值,当所述数据发生器的输出值K和所 述第一寄存器的值进行第一运算后的值等于所述输入值Din时,根据所述第一寄存器的值 和所述第一运算对所述第二寄存器的值进行操作; 第三处理单元,用于当所述数据发生器全部输出0至2n-l后输出所述第二寄存器的 值。
19. 如权利要求18所述的装置,其特征在于,所述第二运算为所述第一运算的逆运算, 所述第一处理单元用于将所述第二寄存器的值初始化为将S(0)至S(2n-1)进行第一运算 后的值。
20. 如权利要求19所述的装置,其特征在于,所述第一运算为异或运算,所述第二运算 为异或运算,所述第一处理单元用于将所述第二寄存器的值初始化为将S(0)至S(2n-1)求 异或的值。
21. 如权利要求19所述的装置,其特征在于,所述第一运算为加法运算,所述第二运算 为减法运算,所述第一处理单元用于将所述第二寄存器的值初始化为将S(0)至S(2n-1)求 和的值。
22. 如权利要求19所述的装置,其特征在于,所述第一运算为模加运算,所述第二运算 为模减运算,所述第一处理单元用于将所述第二寄存器的值初始化为将S(0)至s(2n-l)进 行模加运算后的值。
23. 如权利要求20至22任一项所述的装置,其特征在于,所述第一处理单元用于当所 述S盒的输入值Din为所述S盒的原始输入值Sin时,将所述第一寄存器的值初始化为n 位的0。
24. 如权利要求23所述的装置,其特征在于,所述第二处理单元用于当所述数据发生 器的输出值K和所述第一寄存器的值进行第一运算后的值等于所述输入值Din时,保持所 述第二寄存器的值不变。
25. 如权利要求20至22任一项所述的装置,其特征在于,所述第一处理单元用于当所 述S盒的输入值Din为所述S盒的原始输入值Sin和n位的输入掩码Xin进行第一运算后 的值时,将所述第一寄存器的值初始化为n的输入掩码Xin。
26. 如权利要求25所述的装置,其特征在于,所述第二处理单元用于当所述数据发生 器的输出值K和所述第一寄存器的值进行第一运算后的值等于所述输入值Din时,将所述 第二寄存器的值和m位的输出掩码Xout进行第一 运算后的值替换为所述第二寄存器的值。
27. 如权利要求19所述的装置,其特征在于,所述第一运算为乘法运算,所述第二运算 为除法运算,所述第一处理单元用于将所述第二寄存器的值初始化为将S(0)至S(2n-1)相 乘的值。
28. 如权利要求27所述的装置,其特征在于,所述第一处理单元用于当所述S盒的输入 值Din为所述S盒的原始输入值Sin时,将所述第一寄存器的值初始化为n位的1。
29. 如权利要求28所述的装置,其特征在于,所述第二处理单元用于当所述数据发生 器的输出值K和所述第一寄存器的值进行第一运算后的值等于所述输入值Din时,保持所 述第二寄存器的值不变。
30. 如权利要求27所述的装置,其特征在于,所述第一处理单元用于当所述S盒的输入 值Din为所述S盒的原始输入值Sin和n位的输入掩码Xin进行第一运算后的值时,将所 述第一寄存器的值初始化为n的输入掩码Xin。
31. 如权利要求30所述的装置,其特征在于,所述第二处理单元用于当所述数据发生 器的输出值K和所述第一寄存器的值进行第一运算后的值等于所述输入值Din时,将所述 第二寄存器的值和m位的输出掩码Xout进行第一运算后的值替换为所述第二寄存器的值。
32. 如权利要求18所述的装置,其特征在于,所述第三处理单元还用于将所述输出的 第二寄存器的值和m位的输出掩码Xout进行第一运算。
33. 如权利要求18所述的装置,其特征在于,所述数据发生器用于有序地输出0至 2n-l。
34. 如权利要求18所述的装置,其特征在于,所述数据发生器用于无序地输出0至 2n-l。
【文档编号】H04L9/06GK104426653SQ201310391255
【公开日】2015年3月18日 申请日期:2013年8月30日 优先权日:2013年8月30日
【发明者】陆继承, 魏长征, 张志敏, 单伟君, 郭丽敏, 李清, 张纲 申请人:上海复旦微电子集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1