CN108768624B - 一种基于Camellia算法的防御逆向工程加密方法 - Google Patents

一种基于Camellia算法的防御逆向工程加密方法 Download PDF

Info

Publication number
CN108768624B
CN108768624B CN201810383818.4A CN201810383818A CN108768624B CN 108768624 B CN108768624 B CN 108768624B CN 201810383818 A CN201810383818 A CN 201810383818A CN 108768624 B CN108768624 B CN 108768624B
Authority
CN
China
Prior art keywords
bit binary
function
bit
binary data
feistel network
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810383818.4A
Other languages
English (en)
Other versions
CN108768624A (zh
Inventor
杜世民
杨润萍
殷金曙
钟志光
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
College of Science and Technology of Ningbo University
Original Assignee
College of Science and Technology of Ningbo University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by College of Science and Technology of Ningbo University filed Critical College of Science and Technology of Ningbo University
Priority to CN201810383818.4A priority Critical patent/CN108768624B/zh
Publication of CN108768624A publication Critical patent/CN108768624A/zh
Application granted granted Critical
Publication of CN108768624B publication Critical patent/CN108768624B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0863Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种基于Camellia算法的防御逆向工程加密方法,通过构建混淆有限状态机后加载到Camellia算法中,然后向Camellia算法中输入与混淆有限状态机中设置的4位二进制授权密钥Key相同的授权秘钥使Camellia算法中的混淆有限状态机输出64位二进制数Ot,并基于64位二进制数Ot对待加密电路的待加密数据进行三次迭代加密运算得到加密数据;优点是当攻击者通过逆向工程来提取电路中被加密数据时,由于攻击者不知道正确的授权秘钥以及正确授权秘钥对应的64位二进制数Ot,会使解密过程出错,从而解密出不正确数据,由此本发明可以有效阻止逆向工程等攻击,提高了硬件知识产权的保护力度。

Description

一种基于Camellia算法的防御逆向工程加密方法
技术领域
本发明涉及一种基于Camellia算法的加密方法,尤其是涉及一种基于Camellia算法的防御逆向工程加密方法。
背景技术
随着超大规模集成电路和信息技术的发展,软/硬件系统已经获得广泛应用,在极大地方便人们生活的同时也为设计者带来合法的经济收益,但知识产权盗用事件时有发生。在诸多防护技术中,安全混淆是保护知识产权的有效途径之一。混淆的概念最早在软件代码混淆领域中被提出,在软件保护、数字水印等领域有着实际的应用。代码混淆借助程序本身逻辑来保护内部重要信息和关键算法,确保系统开发者和用户利益不受侵害。而Camellia算法作为当前加密方法中一种通用的防护技术,是保护信息安全的重要手段。当前Camellia算法通常采用硬件电路实现其算法功能,主要针对软件系统的安全问题进行加密,很少涉及硬件知识产权(集成电路中的数据)的混淆保护,这为不法分子采用逆向工程等手段谋取利益创造了条件。而逆向工程作为硬件知识产权盗用的一种手段,它是通过技术手段对密码芯片进行解剖,然后逐层拍照,提取电路的数据信息,对提取的数据信息进行整理,根据新的工艺调整电路,对调整后电路进行仿真与修改,从而完成对原始密码芯片的盗用,使得硬件知识产权的安全性面临着很大的威胁,给集成电路产业的发展带来了巨大的挑战。
鉴此,设计一种基于Camellia算法的防御逆向工程加密方法对集成电路的硬件知识产权进行保护具有重要意义。
发明内容
本发明所要解决的技术问题是提供一种基于Camellia算法的防御逆向工程加密方法,该加密方法可以防御逆向工程对集成电路的攻击,对集成电路的硬件知识产权进行保护。
本发明解决上述技术问题所采用的技术方案为:一种基于Camellia算法的防御逆向工程加密方法,包括以下步骤:
①在Camellia算法中添加一个用于输入4位二进制授权密钥Key的输入端口,Camellia算法采用硬件电路结构实现;
②构建用于加载到Camellia算法中的混淆有限状态机,具体过程为:
②-1将待构建的混淆有限状态机的混淆状态的数量记为G,G满足条件:G+N=2n,n为正整数且n大于等于Camellia算法中原始有限状态机的有效状态的二进制编码的位宽,N为Camellia算法中的原始有限状态机的有效状态个数,N为常数11;
②-2计算Camellia算法中原始有限状态机的N个有效状态的二进制编码对应的十进制数,从0~2n-1这2n个十进制数中去除原始有限状态机的N个有效状态的二进制编码对应的十进制数,得到G个位于0~2n-1之间的十进制数,将这G个0~2n-1之间的十进制数与混淆有限状态机中G个混淆状态一一对应,将各个混淆状态对应的十进制数转换为n位的二进制编码赋予该混淆状态,并分别定义混淆有限状态机的各混淆状态的名称;
②-3将G个混淆状态的名称以及G个混淆状态的二进制编码作为Kruskal算法的输入,确定汉明距离之和最小情况下的各混淆状态的连接关系,具体过程为:
a.采用Kruskal算法自动计算每两个混淆状态的二进制编码之间的汉明距离以及各混淆状态与自身的汉明距离,将计算得到的G×G个汉明距离的值存放在G×G的邻接矩阵中,该邻接矩阵具有对称性,该邻接矩阵的主对角线上存放的汉明距离的值全为零;
b.设定一个空的边集合E,选取邻接矩阵上三角部分或下三角部分,先从其内找到汉明距离最小的值以及它对应的两个混淆状态,将这两混淆状态形成的边放入边集合E中,然后找到除已经找到的汉明距离以外剩余汉明距离中最小的值以及它对应的两个混淆状态,判断这两个混淆状态形成的边与前一次放入边集合E中的边是否会形成回路,如果是则舍弃该边,如果否的话将该边也放入边集合E中,以此类推,直至连通所有混淆状态,此时边集合E中含有G-1条边;
c.输出邻接矩阵和G-1条边确定的各混淆状态之间的连接关系;
d.将各混淆状态之间的连接关系定义为双向连接,同时定义其中一个混淆状态为初始状态,设定4位二进制授权密钥Key,并设定向Camellia算法中输入的授权秘钥与混淆有限状态机中设置的4位二进制授权密钥Key相同时,混淆有限状态机输出值为64位二进制数据Ot,向Camellia算法中输入的授权秘钥与混淆有限状态机中设置的4位二进制授权密钥Key不相同时,混淆有限状态机输出值为不同于Ot的64位二进制数据。
②-4混淆有限状态机构建完成;
③将构建得到的混淆有限状态机加载到Camellia算法中,使Camellia算法工作在混淆有限状态机的状态,通过输入端口向Camellia算法中输入授权秘钥,该授权秘钥与混淆有限状态机中设置的4位二进制授权密钥Key相同,此时混淆有限状态机生成与4位二进制授权密钥Key匹配的64位二进制数据Ot;
④随机生成128位二进制加密主密钥K,采用128位二进制加密主密钥K产生26个子密钥,26个子密钥均为64位二进制数,分别记为kw1~kw4、kl1~kl4、k1~k18,具体过程如下:
④-1.设定两个中间参数KL和KR,令KL=K,KR为所有位均为0的128位二进制数,将KL与KR按位进行XOR操作,得到K1,将K1的第65位~第128位作为一个64位二进制数,记为K1l,K1的第1位~第64位作为另一个64位二进制数,记为K1r,将K1l与十六进制数据A09E667F3BCC908B作为Feistel网络的F函数的输入数据输入到Feistel网络的F函数中得到第一个Feistel网络的F函数输出数据,第一个Feistel网络的F函数输出数据为64位二进制数,将第一个Feistel网络的F函数输出数据与K1r按位进行XOR操作得到K2r,将K2r与十六进制数据B67AE8584CAA73B2为Feistel网络的F函数的输入数据输入到Feistel网络的F函数中得到第二个Feistel网络的F函数输出数据,将第二个Feistel网络的F函数输出数据与K1l按位XOR操作后得到K2l,将K2l与K2r拼接得到一个128位二进制数K2,K2l为K2的高64位,K2r为K2的低64位,将KL与K2按位进行XOR操作得到K3,将K3的第65位~第128位作为一个64位二进制数,记为K3l,K3的第1位~第64位作为另一个64位二进制数,记为K3r,将K3l与十六进制数据C6EF372FE94F82BE作为Feistel网络的F函数的输入数据输入到Feistel网络的F函数中得到第三个Feistel网络的F函数输出数据,第三个Feistel网络的F函数输出数据为64位二进制数,将第三个Feistel网络的F函数输出数据与K3r按位XOR操作后得到K4r,将K4r与十六进制数据54FF53A5F1D36F1C作为Feistel网络的F函数的输入数据输入到Feistel网络的F函数中得到第四个Feistel网络的F函数输出数据,第四个Feistel网络的F函数输出数据为64位二进制数,将第四个Feistel网络的F函数输出数据与K3l按位XOR操作后得到K4l,将K4l与K4r拼接得到一个128位二进制数据KA,K4l为KA的高64位,K4r为KA的低64位;
④-2.将KL循环左移0位得到的128位二进制数的高64位二进制数据记为kw1,低64位二进制数据记为kw2,将KL循环左移15位得到的128位二进制数的高64位二进制数据记为k3,低64位二进制数据记为k4,将KL循环左移45位得到的128位二进制数的高64位二进制数据记为k7,低64位二进制数据记为k8,将KL循环左移60位得到的128位二进制数的低64位二进制数据记为k10,将KL循环左移77位得到的128位二进制数的高64位二进制数据记为kl3,低64位二进制数据记为kl4,将KL循环左移94位得到的128位二进制数的高64位二进制数据记为k13,低64位二进制数据记为k14,将KL循环左移111位得到的128位二进制数的高64位二进制数据记为k17,低64位二进制数据记为k18,将KA循环左移0位得到的128位二进制数的高64位二进制数据记为k1,低64位二进制数据记为k2,将KA循环左移15位得到的128位二进制数的高64位二进制数据记为k5,低64位二进制数据记为k6,将KA循环左移30位得到的128位二进制数的高64位二进制数据记为kl1,低64位二进制数据记为kl2,将KA循环左移45位得到的128位二进制数的高64位二进制数据记为k9,将KA循环左移60位得到的128位二进制数的高64位二进制数据记为k11,低64位二进制数据记为k12,将KA循环左移94位得到的128位二进制数的高64位二进制数据记为k15,低64位二进制数据记为k16,将KA循环左移111位得到的128位二进制数的高64位二进制数据记为kw3,低64位二进制数据记为kw4
⑤获取待加密电路中需要加密的二进制数据的位数,该需要加密的二进制数据的位数不超过128,如果该待加密电路中待加密的二进制数据的位数不足128位,则在其高位补0,使需要加密的二进制数据的位数为128,将128位的需要加密的二进制数据记为M;将M的高64位二进制数据作为一个64位二进制数记为M0l,将M的低64位二进制数据作为一个64位二进制数记为M0r;将M0l与子密钥kw1进行按位XOR操作得到的64位二进制数与64位二进制数据Ot进行按位XOR操作后得到64位二进制数据M1l;将M0r与子密钥kw2进行按位XOR操作得到64位二进制数M1r
⑥进行第一次加密迭代运算:将M1l与k1一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M2l与M1r进行按位XOR运算,得到64位二进制数M2r;将M2r与k2一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M2r'与M1l进行按位XOR运算,得到64位二进制数M2l;将M2l与k3一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M2l'与M2r进行按位XOR运算,得到64位二进制数M3r;将M3r与k4一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M3r'与M2l进行按位XOR运算,得到64位二进制数据M3l;将M3l与k5一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M3l'与M3r进行按位XOR运算,得到64位二进制数M4r;将M4r与k6一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M4r'与M3l进行按位XOR运算,得到64位二进制数据M4l;将M4r与kl1一起进行FL变换,FL变换后输出64位二进制数M5r,将M4l与kl2一起进行FL-1变换,FL-1变换后输出64位二进制数M5l
⑦进行第二次加密迭代运算:将M5r与k7一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M6r与M5l进行按位XOR运算,得到64位二进制数M6l;将M6l与k8一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M6l'与M5r进行按位XOR运算,得到64位二进制数M6r;将M6r与k9一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M6r'与M6l进行按位XOR运算,得到64位二进制数据M7l;将M7l与k10一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M7l'与M6r进行按位XOR运算,得到64位二进制数据M7r;将M7r与k11一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M7r'与M7l进行按位XOR运算,得到64位二进制数据M8l;将M8l与k12一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M8l'与M7r进行按位XOR运算,得到64位二进制数据M8r;将M8l与kl3一起进行FL变换,FL变换后输出64位二进制数M9l,将M8r与kl4一起进行FL-1变换,FL-1变换后输出64位二进制数M9r
⑧将步骤③生成的64位二进制数Ot循环右移16位得到64位二进制数Ot',
⑨进行第三次加密迭代运算:将M9l与k13一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M10l与M9r进行按位XOR运算,得到64位二进制数据M10r;将M10r与k14一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M10r'与M9l进行按位XOR运算,得到64位二进制数据M10l;将M10l与k15一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M10l'与M10r进行按位XOR运算,得到64位二进制数据M11r;将M11r与k16一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M11r'与M10l进行按位XOR运算,得到64位二进制数据M11l;将M11l与k17一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M11l'与M11r进行按位XOR运算,得到64位二进制数据M12r;将M12r与k18一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M12r'与M11l进行按位XOR运算,得到64位二进制数据M12l;将64位二进制数M12l与kw3进行按位XOR操作,得到的64位二进制数与Ot'进行按位XOR操作,输出64位二进制数M12l',64位二进制数M12r与kw4进行按位XOR操作,得到的64位二进制数与Ot'进行按位XOR操作,得到64位二进制数M12r',将M12l'和M12r'拼接起来,M12l'为高64位,M12r'为低64位,得到加密后的128位二进制数C,加密完成。
与现有技术相比,本发明的优点在于通过构建混淆有限状态机并将该混淆有限状态机加载到采用硬件电路机构实现的Camellia算法中,然后通过输入端口向Camellia算法中输入与混淆有限状态机中设置的4位二进制授权密钥Key相同的授权秘钥使Camellia算法中的混淆有限状态机输出64位二进制数Ot,当攻击者通过逆向工程来提取电路中被加密数据时,由于64位二进制数Ot为混淆有限状态机基于4位二进制授权密钥Key生成而存在,当攻击者不知道正确的授权秘钥以及正确授权秘钥对应的64位二进制数Ot时,只能获取到数据是如何被加密的,而无法获取加密过程中每一步具体输入数以及基于该输入数得到的输出数,而授权密钥和以及正确授权秘钥对应的64位二进制数Ot是由设计者掌握的,攻击者无法获取到,由此当授权密钥错误时,其混淆有限状态机输出不再是正确授权密钥下的输出64位二进制数Ot而是不同于Ot的其他64位二进制数,由于混淆有限状态机输出不同于64位二进制数Ot的其他数据,此时64位二进制数Ot'也将发生变化,利用错误的授权密钥下的生成的的错误的Ot和Ot'进行解密时,会使整个数据的解密过程出错,从而解密出不正确的数据M,由此本发明的加密方法可以有效阻止逆向工程等攻击,提高了硬件知识产权的保护力度。
具体实施方式
以下结合实施例对本发明作进一步详细描述。
实施例:一种基于Camellia算法的防御逆向工程加密方法,包括以下步骤:
①在Camellia算法中添加一个用于输入4位二进制授权密钥Key的输入端口,Camellia算法采用硬件电路结构实现;
②构建用于加载到Camellia算法中的混淆有限状态机,具体过程为:
②-1将待构建的混淆有限状态机的混淆状态的数量记为G,G满足条件:G+N=2n,n为正整数且n大于等于Camellia算法中原始有限状态机的有效状态的二进制编码的位宽,N为Camellia算法中的原始有限状态机的有效状态个数,N为常数11;
②-2计算Camellia算法中原始有限状态机的N个有效状态的二进制编码对应的十进制数,从0~2n-1这2n个十进制数中去除原始有限状态机的N个有效状态的二进制编码对应的十进制数,得到G个位于0~2n-1之间的十进制数,将这G个0~2n-1之间的十进制数与混淆有限状态机中G个混淆状态一一对应,将各个混淆状态对应的十进制数转换为n位的二进制编码赋予该混淆状态,并分别定义混淆有限状态机的各混淆状态的名称;
②-3将G个混淆状态的名称以及G个混淆状态的二进制编码作为Kruskal算法的输入,确定汉明距离之和最小情况下的各混淆状态的连接关系,具体过程为:
a.采用Kruskal算法自动计算每两个混淆状态的二进制编码之间的汉明距离以及各混淆状态与自身的汉明距离,将计算得到的G×G个汉明距离的值存放在G×G的邻接矩阵中,该邻接矩阵具有对称性,该邻接矩阵的主对角线上存放的汉明距离的值全为零;
b.设定一个空的边集合E,选取邻接矩阵上三角部分或下三角部分,先从其内找到汉明距离最小的值以及它对应的两个混淆状态,将这两混淆状态形成的边放入边集合E中,然后找到除已经找到的汉明距离以外剩余汉明距离中最小的值以及它对应的两个混淆状态,判断这两个混淆状态形成的边与前一次放入边集合E中的边是否会形成回路,如果是则舍弃该边,如果否的话将该边也放入边集合E中,以此类推,直至连通所有混淆状态,此时边集合E中含有G-1条边;
c.输出邻接矩阵和G-1条边确定的各混淆状态之间的连接关系;
d.将各混淆状态之间的连接关系定义为双向连接,同时定义其中一个混淆状态为初始状态,设定4位二进制授权密钥Key,并设定向Camellia算法中输入的授权秘钥与混淆有限状态机中设置的4位二进制授权密钥Key相同时,混淆有限状态机输出值为64位二进制数据Ot,向Camellia算法中输入的授权秘钥与混淆有限状态机中设置的4位二进制授权密钥Key不相同时,混淆有限状态机输出值为不同于Ot的64位二进制数据;
②-4混淆有限状态机构建完成;
③将构建得到的混淆有限状态机加载到Camellia算法中,使Camellia算法工作在混淆有限状态机的状态,通过输入端口向Camellia算法中输入授权秘钥,该授权秘钥与混淆有限状态机中设置的4位二进制授权密钥Key相同,此时混淆有限状态机生成与4位二进制授权密钥Key匹配的64位二进制数据Ot;
④随机生成128位二进制加密主密钥K,采用128位二进制加密主密钥K产生26个子密钥,26个子密钥均为64位二进制数,分别记为kw1~kw4、kl1~kl4、k1~k18,具体过程如下:
④-1.设定两个中间参数KL和KR,令KL=K,KR为所有位均为0的128位二进制数,将KL与KR按位进行XOR操作,得到K1,将K1的第65位~第128位作为一个64位二进制数,记为K1l,K1的第1位~第64位作为另一个64位二进制数,记为K1r,将K1l与十六进制数据A09E667F3BCC908B作为Feistel网络的F函数的输入数据输入到Feistel网络的F函数中得到第一个Feistel网络的F函数输出数据,第一个Feistel网络的F函数输出数据为64位二进制数,将第一个Feistel网络的F函数输出数据与K1r按位进行XOR操作得到K2r,将K2r与十六进制数据B67AE8584CAA73B2为Feistel网络的F函数的输入数据输入到Feistel网络的F函数中得到第二个Feistel网络的F函数输出数据,将第二个Feistel网络的F函数输出数据与K1l按位XOR操作后得到K2l,将K2l与K2r拼接得到一个128位二进制数K2,K2l为K2的高64位,K2r为K2的低64位,将KL与K2按位进行XOR操作得到K3,将K3的第65位~第128位作为一个64位二进制数,记为K3l,K3的第1位~第64位作为另一个64位二进制数,记为K3r,将K3l与十六进制数据C6EF372FE94F82BE作为Feistel网络的F函数的输入数据输入到Feistel网络的F函数中得到第三个Feistel网络的F函数输出数据,第三个Feistel网络的F函数输出数据为64位二进制数,将第三个Feistel网络的F函数输出数据与K3r按位XOR操作后得到K4r,将K4r与十六进制数据54FF53A5F1D36F1C作为Feistel网络的F函数的输入数据输入到Feistel网络的F函数中得到第四个Feistel网络的F函数输出数据,第四个Feistel网络的F函数输出数据为64位二进制数,将第四个Feistel网络的F函数输出数据与K3l按位XOR操作后得到K4l,将K4l与K4r拼接得到一个128位二进制数据KA,K4l为KA的高64位,K4r为KA的低64位;
④-2.将KL循环左移0位得到的128位二进制数的高64位二进制数据记为kw1,低64位二进制数据记为kw2,将KL循环左移15位得到的128位二进制数的高64位二进制数据记为k3,低64位二进制数据记为k4,将KL循环左移45位得到的128位二进制数的高64位二进制数据记为k7,低64位二进制数据记为k8,将KL循环左移60位得到的128位二进制数的低64位二进制数据记为k10,将KL循环左移77位得到的128位二进制数的高64位二进制数据记为kl3,低64位二进制数据记为kl4,将KL循环左移94位得到的128位二进制数的高64位二进制数据记为k13,低64位二进制数据记为k14,将KL循环左移111位得到的128位二进制数的高64位二进制数据记为k17,低64位二进制数据记为k18,将KA循环左移0位得到的128位二进制数的高64位二进制数据记为k1,低64位二进制数据记为k2,将KA循环左移15位得到的128位二进制数的高64位二进制数据记为k5,低64位二进制数据记为k6,将KA循环左移30位得到的128位二进制数的高64位二进制数据记为kl1,低64位二进制数据记为kl2,将KA循环左移45位得到的128位二进制数的高64位二进制数据记为k9,将KA循环左移60位得到的128位二进制数的高64位二进制数据记为k11,低64位二进制数据记为k12,将KA循环左移94位得到的128位二进制数的高64位二进制数据记为k15,低64位二进制数据记为k16,将KA循环左移111位得到的128位二进制数的高64位二进制数据记为kw3,低64位二进制数据记为kw4
⑤获取待加密电路中需要加密的二进制数据的位数,该需要加密的二进制数据的位数不超过128,如果该待加密电路中待加密的二进制数据的位数不足128位,则在其高位补0,使需要加密的二进制数据的位数为128,将128位的需要加密的二进制数据记为M;将M的高64位二进制数据作为一个64位二进制数记为M0l,将M的低64位二进制数据作为一个64位二进制数记为M0r;将M0l与子密钥kw1进行按位XOR操作得到的64位二进制数与64位二进制数据Ot进行按位XOR操作后得到64位二进制数据M1l;将M0r与子密钥kw2进行按位XOR操作得到64位二进制数M1r
⑥进行第一次加密迭代运算:将M1l与k1一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M2l与M1r进行按位XOR运算,得到64位二进制数M2r;将M2r与k2一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M2r'与M1l进行按位XOR运算,得到64位二进制数M2l;将M2l与k3一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M2l'与M2r进行按位XOR运算,得到64位二进制数M3r;将M3r与k4一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M3r'与M2l进行按位XOR运算,得到64位二进制数据M3l;将M3l与k5一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M3l'与M3r进行按位XOR运算,得到64位二进制数M4r;将M4r与k6一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M4r'与M3l进行按位XOR运算,得到64位二进制数据M4l;将M4r与kl1一起进行FL变换,FL变换后输出64位二进制数M5r,将M4l与kl2一起进行FL-1变换,FL-1变换后输出64位二进制数M5l
⑦进行第二次加密迭代运算:将M5r与k7一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M6r与M5l进行按位XOR运算,得到64位二进制数M6l;将M6l与k8一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M6l'与M5r进行按位XOR运算,得到64位二进制数M6r;将M6r与k9一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M6r'与M6l进行按位XOR运算,得到64位二进制数据M7l;将M7l与k10一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M7l'与M6r进行按位XOR运算,得到64位二进制数据M7r;将M7r与k11一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M7r'与M7l进行按位XOR运算,得到64位二进制数据M8l;将M8l与k12一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M8l'与M7r进行按位XOR运算,得到64位二进制数据M8r;将M8l与kl3一起进行FL变换,FL变换后输出64位二进制数M9l,将M8r与kl4一起进行FL-1变换,FL-1变换后输出64位二进制数M9r
⑧将步骤③生成的64位二进制数Ot循环右移16位得到64位二进制数Ot',
⑨进行第三次加密迭代运算:将M9l与k13一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M10l与M9r进行按位XOR运算,得到64位二进制数据M10r;将M10r与k14一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M10r'与M9l进行按位XOR运算,得到64位二进制数据M10l;将M10l与k15一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M10l'与M10r进行按位XOR运算,得到64位二进制数据M11r;将M11r与k16一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M11r'与M10l进行按位XOR运算,得到64位二进制数据M11l;将M11l与k17一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M11l'与M11r进行按位XOR运算,得到64位二进制数据M12r;将M12r与k18一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M12r'与M11l进行按位XOR运算,得到64位二进制数据M12l;将64位二进制数M12l与kw3进行按位XOR操作,得到的64位二进制数与Ot'进行按位XOR操作,输出64位二进制数M12l',64位二进制数M12r与kw4进行按位XOR操作,得到的64位二进制数与Ot'进行按位XOR操作,得到64位二进制数M12r',将M12l'和M12r'拼接起来,M12l'为高64位,M12r'为低64位,得到加密后的128位二进制数C,加密完成。

Claims (1)

1.一种基于Camellia算法的防御逆向工程加密方法,其特征在于包括以下步骤:
①在Camellia算法中添加一个用于输入4位二进制授权密钥Key的输入端口,Camellia算法采用硬件电路结构实现;
②构建用于加载到Camellia算法中的混淆有限状态机,具体过程为:
②-1将待构建的混淆有限状态机的混淆状态的数量记为G,G满足条件:G+N=2n,n为正整数且n大于等于Camellia算法中原始有限状态机的有效状态的二进制编码的位宽,N为Camellia算法中的原始有限状态机的有效状态个数,N为常数11;
②-2计算Camellia算法中原始有限状态机的N个有效状态的二进制编码对应的十进制数,从0~2n-1这2n个十进制数中去除原始有限状态机的N个有效状态的二进制编码对应的十进制数,得到G个位于0~2n-1之间的十进制数,将这G个0~2n-1之间的十进制数与混淆有限状态机中G个混淆状态一一对应,将各个混淆状态对应的十进制数转换为n位的二进制编码赋予该混淆状态,并分别定义混淆有限状态机的各混淆状态的名称;
②-3将G个混淆状态的名称以及G个混淆状态的二进制编码作为Kruskal算法的输入,确定汉明距离之和最小情况下的各混淆状态的连接关系,具体过程为:
a.采用Kruskal算法自动计算每两个混淆状态的二进制编码之间的汉明距离以及各混淆状态与自身的汉明距离,将计算得到的G×G个汉明距离的值存放在G×G的邻接矩阵中,该邻接矩阵具有对称性,该邻接矩阵的主对角线上存放的汉明距离的值全为零;
b.设定一个空的边集合E,选取邻接矩阵上三角部分或下三角部分,先从其内找到汉明距离最小的值以及它对应的两个混淆状态,将这两混淆状态形成的边放入边集合E中,然后找到除已经找到的汉明距离以外剩余汉明距离中最小的值以及它对应的两个混淆状态,判断这两个混淆状态形成的边与前一次放入边集合E中的边是否会形成回路,如果是则舍弃该边,如果否的话将该边也放入边集合E中,以此类推,直至连通所有混淆状态,此时边集合E中含有G-1条边;
c.输出邻接矩阵和G-1条边确定的各混淆状态之间的连接关系;
d.将各混淆状态之间的连接关系定义为双向连接,同时定义其中一个混淆状态为初始状态,设定4位二进制授权密钥Key,并设定向Camellia算法中输入的授权秘钥与混淆有限状态机中设置的4位二进制授权密钥Key相同时,混淆有限状态机输出值为64位二进制数据Ot,向Camellia算法中输入的授权秘钥与混淆有限状态机中设置的4位二进制授权密钥Key不相同时,混淆有限状态机输出值为不同于Ot的64位二进制数据;
②-4混淆有限状态机构建完成;
③将构建得到的混淆有限状态机加载到Camellia算法中,使Camellia算法工作在混淆有限状态机的状态,通过输入端口向Camellia算法中输入授权秘钥,该授权秘钥与混淆有限状态机中设置的4位二进制授权密钥Key相同,此时混淆有限状态机生成与4位二进制授权密钥Key匹配的64位二进制数据Ot;
④随机生成128位二进制加密主密钥K,采用128位二进制加密主密钥K产生26个子密钥,26个子密钥均为64位二进制数,分别记为kw1~kw4、kl1~kl4、k1~k18,具体过程如下:
④-1.设定两个中间参数KL和KR,令KL=K,KR为所有位均为0的128位二进制数,将KL与KR按位进行XOR操作,得到K1,将K1的第65位~第128位作为一个64位二进制数,记为K1l,K1的第1位~第64位作为另一个64位二进制数,记为K1r,将K1l与十六进制数据A09E667F3BCC908B作为Feistel网络的F函数的输入数据输入到Feistel网络的F函数中得到第一个Feistel网络的F函数输出数据,第一个Feistel网络的F函数输出数据为64位二进制数,将第一个Feistel网络的F函数输出数据与K1r按位进行XOR操作得到K2r,将K2r与十六进制数据B67AE8584CAA73B2为Feistel网络的F函数的输入数据输入到Feistel网络的F函数中得到第二个Feistel网络的F函数输出数据,将第二个Feistel网络的F函数输出数据与K1l按位XOR操作后得到K2l,将K2l与K2r拼接得到一个128位二进制数K2,K2l为K2的高64位,K2r为K2的低64位,将KL与K2按位进行XOR操作得到K3,将K3的第65位~第128位作为一个64位二进制数,记为K3l,K3的第1位~第64位作为另一个64位二进制数,记为K3r,将K3l与十六进制数据C6EF372FE94F82BE作为Feistel网络的F函数的输入数据输入到Feistel网络的F函数中得到第三个Feistel网络的F函数输出数据,第三个Feistel网络的F函数输出数据为64位二进制数,将第三个Feistel网络的F函数输出数据与K3r按位XOR操作后得到K4r,将K4r与十六进制数据54FF53A5F1D36F1C作为Feistel网络的F函数的输入数据输入到Feistel网络的F函数中得到第四个Feistel网络的F函数输出数据,第四个Feistel网络的F函数输出数据为64位二进制数,将第四个Feistel网络的F函数输出数据与K3l按位XOR操作后得到K4l,将K4l与K4r拼接得到一个128位二进制数据KA,K4l为KA的高64位,K4r为KA的低64位;
④-2.将KL循环左移0位得到的128位二进制数的高64位二进制数据记为kw1,低64位二进制数据记为kw2,将KL循环左移15位得到的128位二进制数的高64位二进制数据记为k3,低64位二进制数据记为k4,将KL循环左移45位得到的128位二进制数的高64位二进制数据记为k7,低64位二进制数据记为k8,将KL循环左移60位得到的128位二进制数的低64位二进制数据记为k10,将KL循环左移77位得到的128位二进制数的高64位二进制数据记为kl3,低64位二进制数据记为kl4,将KL循环左移94位得到的128位二进制数的高64位二进制数据记为k13,低64位二进制数据记为k14,将KL循环左移111位得到的128位二进制数的高64位二进制数据记为k17,低64位二进制数据记为k18,将KA循环左移0位得到的128位二进制数的高64位二进制数据记为k1,低64位二进制数据记为k2,将KA循环左移15位得到的128位二进制数的高64位二进制数据记为k5,低64位二进制数据记为k6,将KA循环左移30位得到的128位二进制数的高64位二进制数据记为kl1,低64位二进制数据记为kl2,将KA循环左移45位得到的128位二进制数的高64位二进制数据记为k9,将KA循环左移60位得到的128位二进制数的高64位二进制数据记为k11,低64位二进制数据记为k12,将KA循环左移94位得到的128位二进制数的高64位二进制数据记为k15,低64位二进制数据记为k16,将KA循环左移111位得到的128位二进制数的高64位二进制数据记为kw3,低64位二进制数据记为kw4
⑤获取待加密电路中需要加密的二进制数据的位数,该需要加密的二进制数据的位数不超过128,如果该待加密电路中待加密的二进制数据的位数不足128位,则在其高位补0,使需要加密的二进制数据的位数为128,将128位的需要加密的二进制数据记为M;将M的高64位二进制数据作为一个64位二进制数记为M0l,将M的低64位二进制数据作为一个64位二进制数记为M0r;将M0l与子密钥kw1进行按位XOR操作得到的64位二进制数与64位二进制数据Ot进行按位XOR操作后得到64位二进制数据M1l;将M0r与子密钥kw2进行按位XOR操作得到64位二进制数M1r
⑥进行第一次加密迭代运算:将M1l与k1一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M2l与M1r进行按位XOR运算,得到64位二进制数M2r;将M2r与k2一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M2r'与M1l进行按位XOR运算,得到64位二进制数M2l;将M2l与k3一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M2l'与M2r进行按位XOR运算,得到64位二进制数M3r;将M3r与k4一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M3r'与M2l进行按位XOR运算,得到64位二进制数据M3l;将M3l与k5一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M3l'与M3r进行按位XOR运算,得到64位二进制数M4r;将M4r与k6一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M4r'与M3l进行按位XOR运算,得到64位二进制数据M4l;将M4r与kl1一起进行FL变换,FL变换后输出64位二进制数M5r,将M4l与kl2一起进行FL-1变换,FL-1变换后输出64位二进制数M5l
⑦进行第二次加密迭代运算:将M5r与k7一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M6r与M5l进行按位XOR运算,得到64位二进制数M6l;将M6l与k8一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M6l'与M5r进行按位XOR运算,得到64位二进制数M6r;将M6r与k9一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M6r'与M6l进行按位XOR运算,得到64位二进制数据M7l;将M7l与k10一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M7l'与M6r进行按位XOR运算,得到64位二进制数据M7r;将M7r与k11一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M7r'与M7l进行按位XOR运算,得到64位二进制数据M8l;将M8l与k12一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M8l'与M7r进行按位XOR运算,得到64位二进制数据M8r;将M8l与kl3一起进行FL变换,FL变换后输出64位二进制数M9l,将M8r与kl4一起进行FL-1变换,FL-1变换后输出64位二进制数M9r
⑧将步骤③生成的64位二进制数Ot循环右移16位得到64位二进制数Ot',
⑨进行第三次加密迭代运算:将M9l与k13一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M10l与M9r进行按位XOR运算,得到64位二进制数据M10r;将M10r与k14一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M10r'与M9l进行按位XOR运算,得到64位二进制数据M10l;将M10l与k15一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M10l'与M10r进行按位XOR运算,得到64位二进制数据M11r;将M11r与k16一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M11r'与M10l进行按位XOR运算,得到64位二进制数据M11l;将M11l与k17一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M11l'与M11r进行按位XOR运算,得到64位二进制数据M12r;将M12r与k18一起输入Feistel网络的F函数中,Feistel网络的F函数输出64位二进制数M12r'与M11l进行按位XOR运算,得到64位二进制数据M12l;将64位二进制数M12l与kw3进行按位XOR操作,得到的64位二进制数与Ot'进行按位XOR操作,输出64位二进制数M12l',64位二进制数M12r与kw4进行按位XOR操作,得到的64位二进制数与Ot'进行按位XOR操作,得到64位二进制数M12r',将M12l'和M12r'拼接起来,M12l'为高64位,M12r'为低64位,得到加密后的128位二进制数C,加密完成。
CN201810383818.4A 2018-04-26 2018-04-26 一种基于Camellia算法的防御逆向工程加密方法 Active CN108768624B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810383818.4A CN108768624B (zh) 2018-04-26 2018-04-26 一种基于Camellia算法的防御逆向工程加密方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810383818.4A CN108768624B (zh) 2018-04-26 2018-04-26 一种基于Camellia算法的防御逆向工程加密方法

Publications (2)

Publication Number Publication Date
CN108768624A CN108768624A (zh) 2018-11-06
CN108768624B true CN108768624B (zh) 2021-03-02

Family

ID=64012066

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810383818.4A Active CN108768624B (zh) 2018-04-26 2018-04-26 一种基于Camellia算法的防御逆向工程加密方法

Country Status (1)

Country Link
CN (1) CN108768624B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111167122B (zh) * 2020-01-07 2023-09-08 福建天晴在线互动科技有限公司 一种基于wake算法的动态秘钥下发的加固方法及其系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102215112B (zh) * 2010-04-08 2013-11-27 杭州华三通信技术有限公司 应用于FCoE组网的优化FSPF协议的方法及交换机
US9881070B2 (en) * 2014-12-12 2018-01-30 Microsoft Technology Licensing, Llc Controlling service functions in response to service instigation and service reactivation messages

Also Published As

Publication number Publication date
CN108768624A (zh) 2018-11-06

Similar Documents

Publication Publication Date Title
US4319079A (en) Crypto microprocessor using block cipher
AU2011363942B2 (en) Method and system for protecting execution of cryptographic hash functions
US5222139A (en) Cryptographic method and apparatus
EP3559811B1 (en) Protecting parallel multiplication operations from external monitoring attacks
US8428251B2 (en) System and method for stream/block cipher with internal random states
CN108964872B (zh) 一种基于aes的加密方法及装置
CN107690681B (zh) 用于集成电路数据路径保密性及其扩展的技术
WO2002101979A2 (en) Improved data encryption and decryption system and method
EP3075097A2 (en) Construction and uses of variable-input-length tweakable ciphers
WO2017000726A1 (zh) 一种密钥变换方法、装置及终端
US11436946B2 (en) Encryption device, encryption method, decryption device, and decryption method
CN111555862A (zh) 基于掩码保护的随机冗余轮函数的白盒aes实现方法
CN108768624B (zh) 一种基于Camellia算法的防御逆向工程加密方法
CN107534550B (zh) 密码设备、密码方法、计算设备和计算机可读存储介质
CN109190414B (zh) 一种用于乘法器的全同态混淆方法
US20110126085A1 (en) Method of signature verification
US20030103625A1 (en) Method for Calculating Cryptographic Key Check Data
EP3286869B1 (en) High-speed aes with transformed keys
RU2188513C2 (ru) Способ криптографического преобразования l-битовых входных блоков цифровых данных в l-битовые выходные блоки
CN111859427A (zh) 一种防止撞库多级加密数据存储方法、系统及可读介质
US7142673B1 (en) Method for the cryptographic conversion of L-bit input blocks of digital data into L-bit output blocks
US11664976B2 (en) Method and devices for creating redundancy and encryption using Mojette Transform
CN114662151A (zh) 一种基于fpga实现生成不可约多项式和哈希算法的系统
CN111711519A (zh) 一种基于动态白盒的数据处理方法、装置及设备
WO2021201780A1 (en) Method and system for white-box implementation of a stream cipher

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP02 Change in the address of a patent holder

Address after: 315331 No. 521, Wenwei Road, Baisha road street, Cixi City, Ningbo City, Zhejiang Province

Patentee after: COLLEGE OF SCIENCE & TECHNOLOGY NINGBO University

Address before: 315212 No. 505 Yuxiu Road, Zhuangshi Street, Zhenhai District, Ningbo City, Zhejiang Province

Patentee before: COLLEGE OF SCIENCE & TECHNOLOGY NINGBO University

CP02 Change in the address of a patent holder
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20181106

Assignee: Anhui Kubu Technology Co.,Ltd.

Assignor: COLLEGE OF SCIENCE & TECHNOLOGY NINGBO University

Contract record no.: X2023980050356

Denomination of invention: A Defense Reverse Engineering Encryption Method Based on Camellia Algorithm

Granted publication date: 20210302

License type: Common License

Record date: 20231206

EE01 Entry into force of recordation of patent licensing contract
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20181106

Assignee: Hefei Baihe Intelligent Technology Co.,Ltd.

Assignor: COLLEGE OF SCIENCE & TECHNOLOGY NINGBO University

Contract record no.: X2023980050791

Denomination of invention: A Defense Reverse Engineering Encryption Method Based on Camellia Algorithm

Granted publication date: 20210302

License type: Common License

Record date: 20231208

EE01 Entry into force of recordation of patent licensing contract