发明名称 一种针对Twofish加密芯片的DFA分析方法及系统
摘要 本发明涉及密码芯片安全技术领域,尤其涉及一种Twofish加密硬件的DFA分析方法及系统。本发明结合Twofish这类未知S盒的加密系统的特点,跟踪密码硬件中错误传播途径,在未知S盒的情况下进行DFA分析,改进了传统的DFA分析方法,使得在未知S盒的情况下也能够进行有效的DFA分析,分析得到密钥;在DFA的基础上运用不可能输入输出差分集合,对可能的集合进行筛选,从而有效的进行密钥的分析;结合字节随机错误模型以及不可能输入输出差分集合方法,有效降低了算法的复杂度,使得这一DFA分析方法仅需16对错误样本,在4*224的计算复杂度上就能够成功恢复出96bit的密钥。
申请公布号 CN102158338A 申请公布日期 2011.08.17
申请号 CN201110137171.5 申请日期 2011.05.25
申请人 武汉大学 发明人 唐明;邓慧;伍前红;沈菲;张欣雨;邱镇龙
分类号 H04L9/06(2006.01)I 主分类号 H04L9/06(2006.01)I
代理机构 武汉科皓知识产权代理事务所(特殊普通合伙) 42222 代理人 张火春
主权项 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>&CirclePlus;</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>&prime;</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>&CirclePlus;</mo><mi>c</mi><msup><mrow><mo>[</mo><mi>k</mi><mo>]</mo></mrow><mo>&prime;</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算法解密攻击者手头的机密数据所有密文,还原得到明文信息,结束。
地址 430072 湖北省武汉市武昌区珞珈山武汉大学