主权项 |
1.一种针对Twofish加密芯片的DFA分析方法,其特征在于,包括:①令k=0;②初始化一个集合cand<sub>k</sub>,cand<sub>k</sub>的元素是个三元组(owk<sub>k</sub>,sk<sub>k,0</sub>,sk<sub>k,1</sub>),分别代表控制Sbox<sub>k</sub>的两个字节密钥,跟对应的输出白化密钥字节;③初始化一系列的aid(d)集合;④随机选定一个明文P,利用加密设备进行一次新的加密,得到密文c,再次利用同一明文P加密一次,并在加密的最后一轮第k字节引入一个字节的随机错误得到错误密文c′,这样得到一个新的差分错误样本:8个三元组(c[i],c[i]′,ε<sub>3,i</sub>)(0≤i<8),其中c[i]表示密文的第i个字节;⑤从cand集合当中取出1个可能值(owk<sub>k</sub>,sk<sub>k,0</sub>,sk<sub>k,1</sub>),如果已经遍历完成,转4,否则利用这个可能值计算第k字节的sbox<sub>k</sub>输出:<maths num="0001"><![CDATA[<math><mrow><mi>so</mi><mo>=</mo><msub><mi>sbox</mi><mi>k</mi></msub><mrow><mo>(</mo><mi>ow</mi><msub><mi>k</mi><mi>k</mi></msub><mo>⊕</mo><mi>c</mi><mo>[</mo><mi>k</mi><mo>]</mo><mo>,</mo><mrow><mo>(</mo><mi>s</mi><msub><mi>k</mi><mrow><mi>k</mi><mo>,</mo><mn>0</mn></mrow></msub><mo>,</mo><msub><mi>sk</mi><mrow><mi>k</mi><mo>,</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0002"><![CDATA[<math><mrow><mi>s</mi><msup><mi>o</mi><mo>′</mo></msup><mo>=</mo><msub><mi>sbox</mi><mi>k</mi></msub><mrow><mo>(</mo><mi>ow</mi><msub><mi>k</mi><mi>k</mi></msub><mo>⊕</mo><mi>c</mi><msup><mrow><mo>[</mo><mi>k</mi><mo>]</mo></mrow><mo>′</mo></msup><mo>,</mo><mrow><mo>(</mo><mi>s</mi><msub><mi>k</mi><mrow><mi>k</mi><mo>,</mo><mn>0</mn></mrow></msub><mo>,</mo><msub><mi>sk</mi><mrow><mi>k</mi><mo>,</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>)</mo></mrow></mrow></math>]]></maths>⑥计算<img file="FDA0000063536150000013.GIF" wi="264" he="58" />并判断(a·ε<sub>1</sub>,ε<sub>3,i</sub>)∈aid(d)(0≤i<8)这8个关系式是否成立,如果8个关系式当中任意一个成立,将三元组(owk<sub>0</sub>,sk<sub>0</sub>,sk<sub>1</sub>)从cand当中去除,其中对于i=0,4,判断是否属于aid(0),其它情况下为aid(0)∩aid(1)∩aid(2);⑦判断cand集合大小,如果cand大小为1,则此三元组即为对应的三个密钥值,否则转⑤;⑧令k:=k+1,判断k是否小于4,如果成立,转②;⑨利用加密设备加密明文P得到密文C,形成明密文对(P,C);⑩穷举剩下的32比特密钥,然后将前几步确定的96比特子密钥与这32比特密钥串成128比特密钥,利用这些密钥和Twofish算法解密C,得到P′,若P=P′,则此128比特密钥即为完整的正确密钥K;<img file="FDA0000063536150000014.GIF" wi="50" he="49" />利用前几步得到的正确密钥K跟Twofish算法解密攻击者手头的机密数据所有密文,还原得到明文信息,结束。 |