一种快速的s盒透明阶检测方法

文档序号:7693288阅读:175来源:国知局

专利名称::一种快速的s盒透明阶检测方法
技术领域
:本发明提出了一种s盒透明阶检测方法,尤其涉及一种采用阈值过滤的快速s盒透明阶检测方法,可应用于密码方案中s盒(或者其它等价的多输入多输出布尔函数)的透明阶的快速检测与分析,属于信息
技术领域
,主要应用于信息安全相关的密码设计与分析。
背景技术
:s盒是一种用于构造现代密码体制的极其重要的非线性部件。例如,大部分的迭代型分组密码算法都采用了S盒来获得"混淆"效果。S盒是一类定义在二元域上的具有n比特输入、m比特输出的布尔函数,被广泛应用于多种密码方案中。换句话说,一个F工—F^上的S盒可以表示为2n个m比特的二进制整数,记作nXm的S盒。S盒的特性很大程度上决定了使用该部件的密码体制的安全性。例如,S盒的非线性度与密码算法抵抗线性攻击能力有直接的关系,在分组密码中使用高非线性度的S盒有助于抵抗线性攻击;如果使用不平衡的S盒,相应的密码方案则容易受到统计攻击。目前,嵌入到密码设备中的分组密码通常会受到两大类型的攻击。一种是针对内嵌的密码算法的传统攻击,比如线性攻击、差分攻击;另外一种是以密码实现的信息泄漏为基础的侧信道攻击。在侧信道攻击的各种方法中,差分能量分析(DifferentialPowerAnalysis,DPA)是对迭代型分组密码最有效的一种攻击方法。透明阶(TransparencyOrder)是刻画S盒抵抗DPA攻击能力的量化度量指标。对于任意一个F;—Ff的S盒,其透明阶Ts是一个O和m之间的实数,其定义为这里,Ff代表非O的二元域;<formula>formulaseeoriginaldocumentpage4</formula>H(a)表示向量"的汉明重量,其中aeF2",neN;<formula>formulaseeoriginaldocumentpage4</formula>VieF^AeF^lSi^m,表示"模2加"运算;Ws(u,v)表示F2"—F2m的S盒的Walsh谱变换;cor(f,g)=Z(-l)f(x)+g(x)表示两个布尔函数f和g的相关系数;XE巧DaS代表函数D(x)二S(x)0S(xea),aeF2n,WDaS(0,v)实际上就是两个布尔函数S(x)与S(x④a)的相关系数。本文中,将根据D。S函数求得的Walsh谱变换值的累加值Z(-l)^AVD^(0,v)记作累加结果2,用&'gma2表示,即S/g附"2为对应于某一个输出向量"和某一个非零输入向量a,对所有汉明重量为l长度为m的向量V计算函数DaS的Walsh谱变换的累加值;将结果值S<formula>formulaseeoriginaldocumentpage5</formula>记作累加结果1,用^'gwfll表示,即为对应于某一个输出向量P时,对所有的非零输入向量a的Sigma2绝对值累加结果。通常,计算S盒的透明阶可采用如下方法(本发明称之为"原始方法")1.设置透明阶初始值7;—o2.对于每一个^(从o到")2.1设置&'gmal仨02.2对每一个a(从1到2"),重复步骤2.2.1至步骤2.2.32.2.1设置5Vgw"2仨02.2.2对每一个汉明重量为1的v(从1到")计算Sfg腿2<~S/g廳2+wDaF(0,。2.2.3计算57g應/<~57g,/+一廳2|2.3如果rs—w-2H(^J|-&'gma〃(22"-2"」,则计算7;<~|附-聊〃;|-s—〃p2"-2"j3.返回r,。上述"原始方法"中,计算透明阶采用的是遍历所有的输出向量"、所有的非零输入向量a和所有汉明重量为l长度为m的向量F,累加计算(-l)^WD^(0,v)的值,根据公式(l)找出最大的值作为T;的返回结果。步骤2.2.2中所用到的WD^(0,v)实际上等于S(—『[s(,s(由)l,这里x的累加次数为"。对原始方法的分析可知,对一个F纟—Ff的S盒求解透明阶,其计算规模大约为2m.2n.m.2n,相应的复杂度为0(22^)。例如,对于一个F「—Ff(简记作10x10,以下同)的S盒求解透明阶,其复杂度约为0(23°);并且,随着S盒规模的增加,该计算复杂度呈指数增长。这样的计算复杂度在实际中是无法应用的。本发明从减少循环次数、降低计算复杂度的角度出发,给出了一种采用阈值过滤的方法快速获取S盒透明阶。
发明内容由S盒透明阶原理可知,最终求得的透明阶是在遍历各种情况下的一个最大值。那么在进行求解的过程中,如果在循环过程的某一个计算点能够判断该种情况下所计算出的透明阶的值一定小于当前透明阶的值,则可以跳出该次循环,从而终止该种情况的后续计算,以便达到加速计算的目的。这里,将lm-2H(x)l记作5(x);将I(-l)"s(0,v)F2mH(v)=l22n—2"记作C。给定x、y,将中间计算过程所得到透明阶临时值记作:T(x,y)=5(X)—^f(y)记作,a'"y)=^^;将(2)由(2)式可以看出,若给定x,则《x)就可确定。"y)随着y的增大是非减的(增大或保持不变)。并且,"x)20,"y)20。因此,给定x的情况下,随着y的增大,T(x,y)是一个非增函数(不变或者变小)。固定x,假如存在一个y,二y',使得T(x,y,)^TF,那么对于任意的y2>y'时,T(x,y2)2TF。将此时的y'作为一个中止后续计算的阈值,若出现T(x,y')《TF,则后继的运算可以跳过。另外,由于z(-ir"wDaS(o,v)=zh)v.々z(-『(sw,一),而点乘运算所v《,H(v)=l"KeF2m,H(。=lx《耗时间比直接计算汉明重量的时间要长,因此,本发明采用该公式的一个变形<formula>formulaseeoriginaldocumentpage7</formula>(3)通过使用式(3),可将累加点乘结果的运算变换为累加汉明重量的运算。通常情况下,求解汉明重量都采用逐比特求解方法。这种方法比较直观,但其缺点为对每一个字节,都至少需要8次运算。考虑到计算机的存储特点,预先在一个整型数组中存储整数值0255的汉明重量,求解汉明重量时采用对逐字节"查表"的方式进行计算。因此,利用公式(3)将透明阶公式(1)表示为何<formula>formulaseeoriginaldocumentpage7</formula>(4)将累加计算汉明重量的值ZH(^④S(力④SO^"》记作累加结果3,用&gw"3表示,换ye巧句话说,Sz'gm"3就是根据当前的输出向量/和非零输入向量a,对所有输入域F^上的输入向量y累加计算"④S("@S(y@a)的汉明重量。求解过程中得到的透明阶临时值记作/"—加朋onier。基于上述计算原理,本发明提出了利用阈值过滤快速实现求解S盒透明阶的方法(本发明称之为"阈值过滤法")。将的S盒的描述数据读取到一个大小为2n的数组S之后,其处理步骤如下1.设置透明阶初始值Ma;crraraOWer<~02.遍历每一个输出向量/(从0到尸)重复步骤2.1至步骤2.62.1根据<formula>formulaseeoriginaldocumentpage7</formula>设置阈值ThredValue2.2如果<formula>formulaseeoriginaldocumentpage7</formula>,则跳转至步骤2,执行对下一个输出向量/的操作2.3设置Sigma1—02.4对每一个非零输入向量a(从1到2"),重复步骤2.4.1设置Sigmal-02.4.2对每一个输入向量7(从0到2"计算<formula>formulaseeoriginaldocumentpage7</formula>2.4.3计算<formula>formulaseeoriginaldocumentpage7</formula>2.4.4计算<formula>formulaseeoriginaldocumentpage7</formula>2.4.5如果&'gmab77zm/Fh/we,则跳转至步骤2,执行对下一个输出向量/的操作2.5计算L加腳油r=|附--雄廳1/(22"-2")2.6如果iWoxrra/wOder<f」ramwYifer,贝!ji十算3.返回Max7hms"(9油r。其中,步骤2.1中阈值77zm/Fa/"e的设置方法为,对于当前的输出向量々和当前的透明阶MaxrraraOrafer,77^e<iFa/we=(|m—2H(/)|-MaxrraraOrcfer)x(22"-2")。其中,步骤2.4.2和步骤2.5中计算一个向量x的汉明重量的方法如下1.设置汉明重量的初始值ifoww&gF"/we—02.对向量x的从高到低的每一个字节,重复步骤2.1至步骤2.32.1读取当前字节到Cwrew"We中2.2査表i十算f/a"附iwgFi3/we<~Z/a"附z'wgFi3/wg+//a"附i"graft/e[Cwr;-e"^B;^e]2.3将x当前字节指针移到下一个字节3返回//a鹏z'wgKa/we//amm'"g7^/e是一个大小为256的数组,该数组的第x个单元中存储的是对应的二进制向量的汉明重量,例如//a"/w'"gr"6/e[o]=o(整数o对应向量oooooooo),/fomrn'"g7^/e[15]二4(整数15对应向量00001111),/7朋m/"gr"We[255]=8(整数255对应向量11111111)。综上分析,本发明的技术方案为一种快速的S盒透明阶检测方法,其步骤为1)设置透明阶M"xrra朋OW^的初始值和一用于比较透明阶临时值和当前值的阈值变2)对第一个输出向量yS,执行步骤3)到步骤5)的操作;3)计算并判断当前阈值变量77j/T6/I^/Me的值是否小于设定值/myWwe,如果小于设定值/"/Fa/we,则跳至步骤6);4)计算当前输出向量的透明阶临时值fjra"卵Ww;5)根据临时值,"araorafer更新透明阶MaxrraraOcfer的值;86)计算下一个输出向量"的透明阶,重复步骤3)到步骤5);7)遍历每个输出向量/,返回最后得到的Max7VwwOifer的值。计算所述阈值变量77zre^^/w的方法为77^t/Fa/Me=(3(/)-M<xcrram06feO><(22"—2"),其中5(釣=|附_2//(")|,Z/(y5)为输出向量"的汉明重量;其中,m为S盒的输出长度,n为S盒的输入长度,m、n为自然数。计算所述临时值fJraraoWw的方法为1)设置并初始化变量5Vgwal、agwa2;所述&gwm2为对应于某一个输出向量/和某一个非零输入向量a,对所有汉明重量为l长度为m的向量vH十算函数DaS的Walsh谱变换的累加值;所述S!'gmal为对应于某一个输出向量p时,对所有的非零输入向量"的&'gm/2绝对值累加结果;2)计算透明阶的临时值r」raraorakr=&gmal/(22"-2")。计算所述S/gwa2的方法为设置并初始化一变量S/gma3,所述&'gma3为根据当前的输出向量/和非零输入向量a,对所有输入域F^上的输入向量y累加计算"④SO)④SO④a)的汉明重量H("0SO)④SO④")),根据公式化腸2=wx2"-2x雄腸3计算所述雄謹2的值。计算所述&'gw"l的过程中,累加每一个非零输入向量a的S/gma2绝对值后判断当前S/gmal的值是否大于所述阈值变量77^^/&/欲的当前值,如果大于所述阈值变量7T^t/Fa/"e的当前值则直接计算下一个输出向量"的透明阶。计箅所述向量的汉明重量的方法为1)设置汉明重量初始值/foww'"gKa/we=0;2)对需要计算汉明重量的向量的从高到低的每一个字节,重复步骤ac;a)读取当前字节到Cwre"r5y/e中,b)査表i十算^Ta"附/wgF^/Me-■//a"附/wgF"a/we+//att附/wg7"a6/e[Cwrrg"/"5[y&],c)将当前向量的当前字节指针移到下一个字节,4)返回Z/a臓/wgF"a/we。所述更新透明阶MaxrramOc^的方法为判断所述临时值f^msoWw是否大于当前透明阶MaxrraraOW"的值,如果大于当前透明阶MaxTransOrder的值,则保留当前透明阶MajcrraraO&r的值,否则更新当前的透明阶MaxTransOrder值为临时值t-transorder的值。所述透明阶MaxtransOrder的初始值为零,设定值InviValue为零。本发明的积极效果与现有技术相比,本发明对S盒透明阶的检测速度具有显著提高;由表l可以看出,本发明检测速度的提升效果随着S盒规模的增加而愈加明显;同时本发明采用的阈值过滤方法具有通用性,由表2可以看出,本发明的方法对不同类型和不同规模的S盒的透明阶进行检测,都能够进行快速处理,相比较于提高的效率,不同类型的S盒所耗时间差异很小。图lS盒透明阶快速计算方法流程图;图2两种方法对不同规模的S盒进行计算所耗时间对比图。具体实施方式计算F纟—Ff的S盒的透明阶的"阈值过滤法"处理步骤如下(流程图见图1):1.读取S盒描述数据,将其存储到Sbox数组中2.设置透明阶的初始值MaxTrawOc/er<~03.对每一个从0到2m的输出向量B,重复步骤3.1至步骤3.73.1计算5(B)的值,这里,5(B)---|m-2H(/)13.2计算阈值ThredValue---M(5(B)-MaxTransOrder)x(2(2n)—2n)3.3如果ThredValue<0,则跳转至步骤33.4设置Sigma3---03.5对每一个从1到2n的非零输入向量r,重复步骤3.5.1至步骤3.5.53.5.1设置Sigma3---0;3.5.2对每一个从0到2n的y,重复步骤3.5.2.1至步骤3.5.2.23.5.2.1计算<formula>formulaseeoriginaldocumentpage10</formula>3.5.2.2计算57g顯3仨57gOT"3+H(temp—s6ox)3.5.3计算5Vg扁2<~wx2"-2x57g附a33.5.4计算5Vg謹l<~5Vg應l+liS7g附"2!3.5.5如果&'gmal〉77w^^a/恥,则跳转至步骤33.6计算L^"似o^;fer=-/(22"-2")3.7如果Maxrram(9nier〈Z—rramwvier则计算4.返回Mox7Vww(9rfifer其中,步骤3.1和3.5.2.2中计算汉明重量H(femp—Aox)的步骤如下1.设置汉明重量的初始值/^"冊>^^/^—02.对fe/wp—Aox的从高到低的每一个字节,重复步骤2.1至步骤2.32.1读取当前字节到Owre"^yfe中2.2查表i十算//a"m/"gFb/we<~//fl"w/"gF"a/we+//a"w/"gra6/e[CM/re"/_S>^e]2.3将&mp一Aox当前字节指针移到下一个字节4.返回//a画z'"gFa/"e为了说明"阈值过滤法"计算效率的提高情况,现在DellGx260机器(基本配置为CPU为IntelPentium4NorthwoodProcessor2,40GHz,RAM为1.0GB)上对多种规模、多种类型的S盒透明阶进行求解。另外,为了说明本发明中阈值过滤对提高计算效率的影响,引入"优化方法"进行对比。其中,"原始方法"为按照原始定义实现的方法,"优化方法"是在"原始方法"的基础上,加上利用查表加速求解汉明重量的方法,"阈值过滤法"则是在"优化方法"的基础上加上了阈值过滤方法(即本发明中的方法)。记录使用三种方法对各种规模的S盒的透明阶进行计算所消耗的时间,这里,为了使得实验的结果具有通用性和代表性,采用的s盒为随机选择的S盒。实验结果如表1所示。表1三种方法消耗时间对比情况(单位秒)s盒规模求解S盒透明阶所耗时间性能提高倍数原始方法优化方法阈值过滤法优化方法阈值过滤法4x40.00090.00030.000033306x40.01440.00430.000503296x60.06550.01630.0005341247x70.54590.13840.0021142588x84.26811.05160.0095644469x935.55728.80160.03797493610x10300.565667.59060.138784216612x1222161.92204299.29702.1463751032514x1416.4天3.2天34.457854112116x161050.6天#203.8天tt555.19385163496注本表中,标#的时间为估算时间由表1的对比可以看出,"阈值过滤法"和"优化方法"比"原始方法"的计算效率有了大幅的提升。特别的,"阈值过滤法"提升效果明显。例如,在对10x10的s盒进行S盒检测时,原始方法需要约300的时间,"优化方法"需要约67秒的时间,而"阈值过滤法"仅仅需要约0.1秒的时间。并且这种提升效果随着S盒规模的增加而愈加明显,例如在计算8x8的S盒时,"阈值过滤法"已经有了近450倍的提高;随着计算S盒规模的增大,"阈值过滤法"的效率提升效果愈发显著。特别地,当S盒的规模达到16x16时,使用"阈值过滤法"的性能比使用原始方法的性能提高了近2"倍。此外,由表l"优化方法"与"阈值过滤法"的性能提高倍数的对比可以看出,比较在"阈值过滤法"中采用的两个策略查表方法提高计算汉明重量计算效率和阈值过滤方法减少循环次数,对提高效率起决定性作用的是阈值过滤方法。为了说明本发明采用的阈值过滤方法具有通用性,使用"阈值过滤法"对不同类型和不同规模的S盒的透明阶进行检测,为了使得实验的结果具有通用性和代表性,采用的S盒为随机选择的S盒。实验所消耗时间的对比如表2所示。表2使用"阈值过滤法"计算不同类型S盒的透明阶所消耗时间的对比情况(单位秒)s盒规模求解s盒透明阶所耗时间性能差异倍数<table>tableseeoriginaldocumentpage13</column></row><table>由表2可以看出,对不同类型的S盒,"阈值过滤法"都能够进行快速处理,相比较于提高的效率,不同类型的S盒所耗时间差异很小。例如,在对8x8的S盒求解透明阶,优化倍数约为450倍,而不同的类型的S盒时间相差仅为1.25倍。并且这种差异并不随着S盒规模的增大而线性增加。因此,该发明中的阈值过滤法具有通用性。权利要求1.一种快速的S盒透明阶检测方法,其步骤为1)设置透明阶MaxTransOrder的初始值和一用于比较透明阶临时值和当前值的阈值变量ThredValue;2)对第一个输出向量β,执行步骤3)到步骤5)的操作;3)计算并判断当前阈值变量ThredValue的值是否小于设定值IniValue,如果小于设定IniValue值,则跳至步骤6);4)计算当前输出向量的透明阶临时值t_transorder;5)根据临时值t_transorder更新透明阶MaxTransOrder的值;6)计算下一个输出向量β的透明阶,重复步骤3)到步骤5);7)遍历每个输出向量β,返回最后得到的MaxTransOrder的值。2.如权利要求1所述的方法,其特征在于计算所述阈值变量77^^/Fa/^的方法为7V^H^/"e=(^(/)-M(XcrrawOc^)x(22"—2"),其中|附—2//(〃)|,//(")为输出向量P的汉明重量;其中,m为S盒的输出长度,n为S盒的输入长度,m、n为自然数。3.如权利要求2所述的方法,其特征在于计算所述临时值/^ramoWw的方法为1)设置并初始化变量&'gmal、5Vgwa2;所述&'gma2为对应于某一个输出向量/和某一个非零输入向量",对所有汉明重量为l长度为m的向量V计算函数D^的Walsh谱变换的累加值;所述S/gmal为对应于某一个输出向量"时,对所有的非零输入向量a的&g/^2绝对值累加结果;2)计算透明阶的临时值/JraraoWw=-S/g附al/(22"-2")。4.如权利要求3所述的方法,其特征在于计算所述&g/^2的方法为设置并初始化一变量&'gmd,所述S/gma3为根据当前的输出和非零输入向量",对所有输入域F;上的输入向量7累加计算^④SO)@SO④a)的汉明重量H(/@S(力SO@a)),根据公式&'gwa2="x2"-2xAgwa3计算所述&'gwa2的值。5.如权利要求3所述的方法,其特征在于计算所述&gm"l的过程中,累加每一个非零输入向量a的^'gma2绝对值后判断当前S/gmal的值是否大于所述阈值变量7T^t/7a/恥的当前值,如果大于所述阈值变量77zr^/Fa/恥的当前值则直接计算下一个输出向量/的透明阶。6.如权利要求2或4所述的方法,其特征在于计算所述向量的汉明重量的方法为1)设置汉明重量初始值Zfomm'wgFa/we二0;2)对需要计算汉明重量的向量的从高到低的每一个字节,重复步骤ac;a)读取当前字节到Cwre^S^e中,b)査表i十算i/a"owV7gFa/we=//""附Z"gFa/we+T/a"附/"gT""6/e[Cwrre"^S[yfe],c)将当前向量的当前字节指针移到下一个字节,4)返回//a騰/"gF"a/we。7.如权利要求l所述的方法,其特征在于所述更新透明阶MaxrraraOn/^的方法为判断所述临时值^JramoWw是否大于当前透明阶Ma;c7V"附Oc/w的值,如果大于当前透明阶M"JcrraraOrafef的值,则保留当前透明阶Ma;c7VcmsOc^的值,否则更新当前的透明阶Max:rra附Ofifer值为临时值f」ram"onier的值。8.如权利要求l所述的方法,其特征在于所述设定值/m'F"/M的值为零。全文摘要本发明公开了一种快速的S盒透明阶检测方法,属于信息
技术领域
。其方法为首先设置透明阶MaxTransOrder的初始值和一用于比较透明阶临时值和当前值的阈值变量ThredValue,在遍历每一个输出向量,计算其透明阶临时值时,如果在循环过程的某一个计算点能够判断该种情况下所计算出的透明阶的临时值一定小于当前透明阶的值,则可以跳出该次循环,从而终止该种情况的后续计算,以便达到加速计算的目的。与现有技术相比,本发明检测速度的提升效果随着S盒规模的增加而愈加明显;同时本发明的方法具有通用性。文档编号H04L9/14GK101257383SQ20081010290公开日2008年9月3日申请日期2008年3月28日优先权日2008年3月28日发明者冯登国,周永彬,范丽敏,陈海宁申请人:中国科学院软件研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1