基于白盒分组密码CLEFIA分析的密钥恢复方法与流程

文档序号:17070326发布日期:2019-03-08 23:15阅读:309来源:国知局
基于白盒分组密码CLEFIA分析的密钥恢复方法与流程

本发明属于计算机技术领域,更进一步涉及信息安全技术领域中的一种基于白盒分组密码clefia分析的密钥恢复方法。本发明可用于从白盒分组密码clefia中恢复密钥信息,提高了恢复白盒分组密码clefia密钥的空间利用率和时间效率。



背景技术:

随着信息技术的快速发展,密码算法正在广泛地应用于军事,经济等重要领域,保护信息的安全性。鉴于密码算法的重要性,密码算法软硬件实现(密码模块)的分析研究对保护信息安全性具有重要意义。近年来,多种对密码模块的分析已广为业界所知,从密码模块所处的环境方面主要分为“黑盒”环境,“灰盒”环境和“白盒”环境。在“黑盒”环境中,分析者最多可以访问输入的明文和输出的密文,无权访问实现的执行过程;在“灰盒”环境中,分析者可以通过计时分析、电磁分析获得更多的信息;在“白盒”环境中分析者可以自由地观察动态代码的执行甚至改变内部算法的细节,它突破了传统密码的分析模式,攻击能力强大且实施容易。近年来,越来越多的设备处于“白盒”攻击环境,为在这种环境中提供密码保护chow等人首次提出白盒密码思想,这种思想是将分组密码实现转化为查找表网络,并以随机的双射函数混淆各轮的输入和输出,从而达到隐藏密钥信息的目的。近年来,对分组密码白盒实现的分析也越来越多,例如已经实现了从分组密码des和aes的白盒实现中提取密钥,因此也可从基于白盒密码思想构造的clefia白盒实现中提取密钥。

yang.shi,wujing.wei,zongjian.he,andhongfeng.fan在其发表的论文“anuktra-lightweightwhite-boxencryptionschemeforsecuringresource-constrainedlotdevices”(inproceedingsofthe32ndannualconferenceoncomputersecurityapplications,losangeles,california,2016,pp.16-29.)中公开了一种对分组密码clefia白盒实现分析的密钥恢复方法。该方法利用分组密码clefia白盒实现中每轮的32个8进8出查找表组合出每轮轮函数,从而得到每轮轮函数的逆运算,根据轮函数的逆运算构造出每轮所用到的32个8进8出的可逆查找表,对于分组密码clefia白盒实现的18轮共需构造出576个8进8出的可逆查找表,对于给定的密文恢复出明文信息,进而恢复出密钥信息。但是,该方法存在的不足之处是,在恢复分组密码clefia密钥过程中需要轮数多、所需查找表占用存储空间大。

北京握奇数据系统有限公司在其拥有的专利技术“一种智能卡sm4算法的dpa攻击与密钥还原方法及系统”(专利申请号201310445225.3,授权公告号cn103546277b)中公开了一种智能卡sm4算法的dpa(differentialpoweranalysis)攻击与密钥还原方法。该方法先对分组密码sm4加密过程的前4轮进行dpa攻击,获取前4轮的子密钥,利用得到的4轮子密钥恢复sm4主密钥。该方法存在的不足之处是,该方法在恢复密钥的过程中需要的轮次是固定的前4轮,缺乏随机性,需要额外的时间计算轮次的位置,降低了恢复密钥的时间效率。



技术实现要素:

本发明的目的在于针对上述现有技术的不足,提出一种基于白盒分组密码clefia分析的密钥恢复方法。

实现本发明目的的具体思路是:从由白盒分组密码clefia18轮非线性变换组成的包含密钥的144个查找表中,选取任意相邻两轮非线性变换组成的包含密钥的16个查找表,利用该16个查找表分别生成16个包含密钥的非线性查找表和16个仿射映射,生成的16个包含密钥的非线性查找表与包含相同的密钥的分组密码clefia的s盒两者满足仿射等价关系,通过构建编码集合恢复出满足仿射等价关系中仿射查找表和包含密钥的向量,从而利用满足条件的仿射查找表和包含密钥的向量以及仿射映射恢复出密钥信息。

本发明的具体步骤如下:

(1)从由白盒分组密码clefia18轮非线性变换组成的包含密钥的144个查找表中,选取任意相邻两轮非线性变换组成的包含密钥的16个查找表;

(2)从16个查找表中随机选取一个未选过的查找表,作为8进32出查找表;

(3)获取仿射映射:

(3a)从8进32出查找表中随机选取一个32bit的行向量,作为仿射向量;

(3b)从8进32出查找表中随机选取8个不同的32bit的行向量,将8个行向量分别转置,得到8个列向量,将该8个列向量依次连接组成一个矩阵,作为线性矩阵,其中,每次所选的8个行向量中至少有一个行向量是从未选过的;

(3c)判断线性矩阵的秩是否与线性矩阵的列数相等,若是,则得到可逆的线性矩阵后执行步骤(3d),否则,执行步骤(3b);

(3d)利用下式,将仿射向量和可逆的线性矩阵组合成利用8进32出查找表获得的仿射映射:

其中,δ表示仿射映射,表示异或操作,b表示仿射向量,表示连接操作,m表示可逆的线性矩阵;

(4)生成相邻两轮包含密钥的非线性查找表:

(4a)当从8进32出查找表的输入中随机选取一个未选过的8bit向量,作为当前迭代时非线性查找表的输入;

(4b)对仿射映射求逆,得到仿射映射对应的逆仿射映射;

(4c)在8进32出查找表中,查找与当前迭代时的非线性查找表的输入相对应8进32出查找表的输出,用该输出左乘逆仿射映射,得到一个8bit向量,作为与当前迭代时的非线性查找表的输入形成映射关系的输出;

(4d)将当前迭代时的非线性查找表的输入和与其形成映射关系的输出,放到当前迭代时的非线性查找表中;

(4e)判断是否选完8进32出查找表中所有的输入,若是,则得到查找表后执行步骤(5),否则,执行步骤(4a);

(5)构建一个数组,该数组的长度为28,数组中存储的是28个8bit向量;

(6)生成相邻两轮包含密钥的仿射查找表:

(6a)从数组中随机选取一个未选过的向量;

(6b)构造一个空的仿射查找表;

(6c)从8进32出查找表的输入中,随机选取一个未选过的8bit向量,作为当前迭代时的仿射查找表的输入;

(6d)将当前迭代时的仿射查找表的输入与所选向量进行异或操作,在分组密码clefia的逆s盒中查找与该异或值对应的输出,作为中间输出;

(6e)从当前迭代时的仿射查找表中查找与中间输出值相对应的输出,将该输出作为与当前迭代时的仿射查找表的输入形成映射关系的输出,将形成该映射关系的输入和输出,放到当前迭代时的仿射查找表中;

(6f)判断是否选完8进32出查找表中所有的输入,若是,则得到仿射查找表后执行步骤(7),否则,执行步骤(6c);

(7)构建编码集合:

(7a)利用向量对生成方法,从仿射查找表中得到一个输出向量对,将该向量对中的两个向量进行异或操作得到一个32bit向量,作为检验向量;

(7b)利用向量生成方法,从仿射查找表中得到一个32bit向量,作为验证向量;

(7c)若检验向量中每个元素的bit值与验证向量中对应位置元素bit值相等,则将仿射查找表与步骤(7a)中所选向量放到编码集合中;

(8)判断是否选完数组中的所有向量,若是,则执行步骤(9),否则,执行步骤(6);

(9)判断是否选完16个查找表,若是,则执行步骤(10),否则,执行步骤(2);

(10)恢复密钥:

(10a)利用下式,计算相邻两轮的后一轮中每个分支对应的4个查找表中包含的32bit子密钥,其中,每个查找表包含8bit子密钥:

其中,表示白盒分组密码clefia的第r-1轮和第r轮连续两轮中的第r轮非线性变换第i个分支对应的4个查找表中包含的32bit子密钥,r=1,2,3,...,18,i=1,3,表示从第r轮非线性变换第i个分支对应的每个编码集合中选1个8bit向量,将所选的4个向量依次连成一个32bit的向量,θ表示累积异或操作,表示由第r-1轮非线性变换第i个分支对应的4个查找表中的第j个查找表生成的仿射映射,其中,j=0,1,2,3,表示从第r-1轮非线性变换第i个分支对应的4个仿射查找表的第j个仿射查找表中查找与8bit全0向量对应的输出;

(10b)将两个32bit依次连接,得到64bit的密钥。

本发明与现有技术相比具有如下优点:

第一,由于本发明利用白盒分组密码clefia选取任意相邻两轮变换对应的包含密钥的16个查找表,生成相邻两轮包含密钥的非线性查找表和仿射查找表组成的编码集合,将需要的轮数减少为两轮,克服了现有技术在恢复分组密码clefia密钥过程中存在的需要轮数多、所需查找表占用存储空间大的技术问题,使得本发明有效地节省了查找表存储空间,提高了恢复密钥过程中的空间利用率。

第二,由于本发明利用白盒分组密码clefia选取任意相邻两轮变换,从白盒分组密码clefia所选的相邻两轮的分析中恢复密钥,将恢复密钥需要的轮次是固定的前4轮变为任意选取的相邻两轮,克服了现有技术在恢复密钥过程中存在的需要的轮次是固定的前4轮,缺乏随机性,需要额外的时间计算轮次位置,降低了恢复密钥的时间效率的技术问题,使得本发明可随机选取相邻两轮进行分析,减少了确定轮次位置需要的时间,提高了恢复密钥过程中的计算效率。

附图说明

图1为本发明的流程图。

具体实施方式

参照附图1,对本发明实现的步骤作进一步的详细描述。

步骤1,从由白盒分组密码clefia18轮非线性变换组成的包含密钥的144个查找表中,选取任意相邻两轮非线性变换组成的包含密钥的16个查找表。

所述白盒分组密码clefia是指,将输入的128bit数据经有密钥参与的相同的非线性变换18轮后,得到128bit输出数据,所述每轮有64bit密钥参与的非线性变换是将128bit输入数据均分成4个分支的输入数据,第1个分支输入数据和第3个分支输入数据经的非线性变换可由8个包含密钥的查找表表示,18轮非线性变换,共由等价的144个包含密钥的查找表组成,每个查找表可由表示,其中,r=1,2,...,18,i=1,3,j=0,1,2,3,每个查找表中包含8bit密钥,8bit输入解码及32bit输出编码,第r轮非线性变换第i个分支对应的4个查找表中包含的4个8bit输入解码依次连接成的32bit输入解码第r-1轮非线性变换第i个分支对应的4个查找表中包含的4个32bit输出编码其中,表示连接操作。

步骤2,从16个查找表中随机选取一个未选过的查找表,作为8进32出查找表。

步骤3,获取仿射映射。

(3.1)从8进32出查找表中随机选取一个32bit的行向量,作为仿射向量

(3.2)从8进32出查找表中随机选取8个不同的32bit的行向量,将8个行向量分别转置,得到8个列向量,将该8个列向量依次连接组成一个矩阵,作为线性矩阵其中,每次所选的8个行向量中至少有一个行向量是从未选过的。

(3.3)判断线性矩阵的秩是否与线性矩阵的列数相等,若是,则得到可逆的线性矩阵后执行本步骤的(3.4),否则,执行本步骤的(3.2)。

线性矩阵的秩与线性矩阵的列数相等时,得到本步骤中的可逆线性矩阵,因为线性矩阵是可逆的,则由线性矩阵构成的仿射映射也是可逆的。

(3.4)利用下式,将仿射向量和可逆的线性矩阵组合成利用8进32出查找表获得的仿射映射:

其中,δ表示仿射映射,表示异或操作,b表示仿射向量,表示连接操作,m表示可逆的线性矩阵。

步骤4,生成相邻两轮包含密钥的非线性查找表,由以下公式可知,非线性查找表q与包含相同的密钥的分组密码clefia的s盒查找表s两者满足其中仿射变换,是8bit向量。

其中,表示仿射映射,表示复合操作,mi,j表示白盒分组密码clefia第i个分支的第j个32×8扩散子矩阵。

(4.1)当从8进32出查找表的输入中随机选取一个未选过的8bit向量,作为当前迭代时非线性查找表的输入。

(4.2)对仿射映射求逆,得到仿射映射对应的逆仿射映射。

(4.3)在8进32出查找表中,查找与当前迭代时的非线性查找表的输入相对应8进32出查找表的输出,用该输出左乘逆仿射映射,得到一个8bit向量,作为与当前迭代时的非线性查找表的输入形成映射关系的输出。

(4.4)将当前迭代时的非线性查找表的输入和与其形成映射关系的输出,放到当前迭代时的非线性查找表中。

(4.5)判断是否选完8进32出查找表中所有的输入,若是,则得到查找表后执行步骤5,否则,执行本步骤的(4.1)。

步骤5,构建一个数组,该数组的长度为28,数组中存储的是28个8bit向量。

步骤6,生成相邻两轮包含密钥的仿射查找表。

(6.1)从数组中随机选取一个未选过的向量

(6.2)构造一个空的仿射查找表。

(6.3)从8进32出查找表的输入中,随机选取一个未选过的8bit向量,作为当前迭代时的仿射查找表的输入。

(6.4)将当前迭代时的仿射查找表的输入与所选向量进行异或操作,在分组密码clefia的逆s盒中查找与该异或值对应的输出,作为中间输出。

(6.5)从当前迭代时的仿射查找表中查找与中间输出值相对应的输出,将该输出作为与当前迭代时的仿射查找表的输入形成映射关系的输出,将形成该映射关系的输入和输出,放到当前迭代时的仿射查找表中。

(6.6)判断是否选完8进32出查找表中所有的输入,若是,则得到仿射查找表后执行步骤7,否则,执行本步骤的(6.3)。

步骤7,构建编码集合。

利用向量对生成方法,从仿射查找表中得到一个输出向量对,将该向量对中的两个向量进行异或操作得到一个32bit向量,作为检验向量。

所述向量对生成方法的步骤如下:

第1步,从数组中任选两个向量构成输入向量对,其中输入向量是从未选过的。

第2步,在当前迭代时的仿射查找表中,分别查找与输入向量对中的每个向量对应的输出,将两个输出构建一个输出向量对。

第3步,在当前迭代时的仿射查找表中,查找与数组中8bit全0向量所对应的输出向量,作为中间验证向量。

第4步,将输入向量对中的两个元素进行异或操作,从当前迭代时的仿射查找表中查找与该异或值对应的输出,该输出与中间验证向量进行异或操作,得到一个32bit向量,作为验证向量。

利用向量生成方法,从仿射查找表中得到一个32bit向量,作为验证向量。

所述向量生成方法的步骤如下:

第1步,从数组中任选两个向量构成输入向量对,其中输入向量是从未选过的。

第2步,在当前迭代时的仿射查找表中,分别查找与输入向量对中的每个向量对应的输出,将两个输出构建一个输出向量对。

若检验向量中每个元素的bit值与验证向量中对应位置元素bit值相等,则将仿射查找表与所选向量放到编码集合中,本步骤中的仿射查找表的输入与形成映射关系的输出满足仿射变换编码集合中的向量是向量

步骤8,判断是否选完数组中的所有向量,若是,则执行步骤9,否则,执行步骤6。

步骤9,判断是否选完16个查找表,若是,则执行步骤10,否则,执行步骤2。

步骤10,恢复密钥。

利用下式,计算相邻两轮的后一轮中每个分支对应的4个查找表中包含的32bit子密钥,其中,每个查找表包含8bit子密钥:

其中,表示白盒分组密码clefia的第r-1轮和第r轮连续两轮中的第r轮非线性变换第i个分支对应的4个查找表中包含的32bit子密钥,r=1,2,3,...,18,i=1,3,表示从第r轮非线性变换第i个分支对应的每个编码集合中选1个8bit向量,将所选的4个向量依次连成一个32bit的向量,θ表示累积异或操作,表示由第r-1轮非线性变换第i个分支对应的4个查找表中的第j个查找表生成的仿射映射,其中,j=0,1,2,3,表示从第r-1轮非线性变换第i个分支对应的4个仿射查找表的第j个仿射查找表中查找与8bit全0向量对应的输出。

将两个32bit依次连接,得到64bit的密钥。

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