本发明涉及的是一种信息安全领域的技术,具体是一种基于引导随机数的动态白盒密码实现方法。
背景技术:
1、现有白盒密码实现由查找表和算法程序两部分组成,如果白盒攻击者同时获取这两部分就能够完成代码移植(code lifting)攻击。即白盒攻击者可以将参与白盒密码运算的查找表和算法程序视为等价的“大密钥”,通过完整地移植全部查找表和算法程序,攻击者仍然能够在任意设备上实现密码算法的功能。现有的白盒密码实现中,查找表部分通常足够庞大或被额外保护而无法被攻击者全部获取,但是算法程序却往往能够被攻击者轻易获取。现有基于分组密码白盒化的动态白盒库技术虽然能够使用查找表保护密钥,但无法对算法的实现程序进行保护,获得部分查找表的攻击者依旧能够执行代码移植攻击。
技术实现思路
1、本发明针对现有技术存在的上述不足,提出一种基于引导随机数的动态白盒密码实现方法,使用查找表池动态地生成算法程序,保证在部分查找表的表项泄露时,依旧维持算法程序的隐蔽性,确保系统的安全。
2、本发明是通过以下技术方案实现的:
3、本发明涉及一种基于引导随机数的动态白盒密码实现方法,在初始化阶段通过加密方与解密方协商确定核心参数后,由加密方生成查找表池并与解密方进行秘密共享,在加密阶段,加解密方根据同一个查找表池和生成的引导随机数通过加密程序生成算法得到加密程序,将消息明文输入加密程序,得到消息密文,再将消息密文与引导随机数发送给解密方;在解密阶段,解密方根据加密方发送的引导随机数通过解密程序生成算法得到解密程序后,将收到的消息密文输入解密程序,得到消息明文。
4、技术效果
5、本发明通过引导随机数来引导加密程序和解密程序调用查找表的顺序,进而将加密程序与解密程序的实现过程与引导随机数进行唯一性绑定。与现有技术相比,本发明能够有效地将白盒攻击者获取算法程序的困难性归约到了其获取查找表的困难性,即便部分查找表项暴露的情况下依旧无法对白盒密码进行移植,进一步提升了白盒密码实现的安全性。
1.一种基于引导随机数的动态白盒密码实现方法,其特征在于,在初始化阶段通过加密方与解密方协商确定核心参数后,由加密方生成查找表池并与解密方进行秘密共享,在加密阶段,加解密方根据同一个查找表池和生成的引导随机数通过加密程序生成算法得到加密程序,将消息明文输入加密程序,得到消息密文,再将消息密文与引导随机数发送给解密方;在解密阶段,解密方根据加密方发送的引导随机数通过解密程序生成算法得到解密程序后,将收到的消息密文输入解密程序,得到消息明文;
2.根据权利要求1所述的基于引导随机数的动态白盒密码实现方法,其特征是,所述的初始化阶段具体包括:
3.根据权利要求2所述的基于引导随机数的动态白盒密码实现方法,其特征是,所述的其余参数包括:查找表的输出长度加解密算法每轮使用的查找表数量加解密算法执行一次使用的查找表数量引导随机数的二进制长度以及查找表池的总大小
4.根据权利要求1或2所述的基于引导随机数的动态白盒密码实现方法,其特征是,所述的加密程序生成算法包括第一加密编译程序和第二加密编译程序,其中:第一加密编译程序输入引导随机数,输出中间加密程序;第二加密编译程序输入中间值,输出最终的加密程序;
5.根据权利要求4所述的基于引导随机数的动态白盒密码实现方法,其特征是,所述的加密编译程序根据输入的与引导随机数长度相同的随机数以及选择的加密算法,生成按随机数的位数的顺序调用查找表池中查找表并进行加密计算的程序;
6.根据权利要求1所述的基于引导随机数的动态白盒密码实现方法,其特征是,所述的加密阶段具体包括:加密方生成一个引导随机数,将引导随机数通过加密程序生成算法得到加密程序,将消息明文输入加密程序,得到消息密文,再将消息密文与引导随机数发送给解密方。
7.根据权利要求1或6所述的基于引导随机数的动态白盒密码实现方法,其特征是,所述的解密阶段具体包括:解密方通过引导随机数根据解密程序生成算法得到解密程序后,将收到的消息密文输入解密程序,得到消息明文。
8.根据权利要求1或4所述的基于引导随机数的动态白盒密码实现方法,其特征是,通过平衡feistel网络,根据输入xp通过r轮迭代过程得到xc,每一轮的输入xi被分成等长的两部分xl和xr分别进行运算,r轮运算共使用n次查找表,每轮使用次查找表,具体为:每轮迭代计算中令xl=xm-1||xm-2||…||x1||x0,其中:xi=xl||xr,xr'=xl,xi+1=xl'||xr',||表示比特串的拼接,xl与xr等长,x0,x1,…,xm-1等长,表示调用第ki·m个查找表的第x0项数据,ki·m即为引导随机数k的第i·m个字段,k二进制长度为n·log2s,其中s为查找表池中的查找表数量,n为一个加密程序中使用查找表的次数。
9.一种实现权利要求1-8中任一所述方法的基于引导随机数的动态白盒密码实现系统,其特征在于,包括:加密单元和解密单元,其中:向加密单元输入引导随机数和消息明文,加密单元根据引导随机数生成一个加密程序实例,并将消息明文作为此加密程序实例的输入得到输出即为消息密文;向解密单元输入引导随机数和消息密文,解密单元根据引导随机数生成一个解密程序实例,并将消息密文作为此解密程序实例的输入得到输出即为消息明文;加密单元和解密单元基于同一个查找表池进行构造,分别位于加密方和解密方各自所在的终端。
