一种基于布尔电路的白盒保护方案的加速实现方法及系统

未命名 09-07 阅读:210 评论:0


1.本发明属于数据加密领域,尤其涉及一种基于布尔电路的白盒保护方案的加速实现方法及系统。


背景技术:

2.本部分的陈述仅仅是提供了与本发明相关的背景技术信息,不必然构成在先技术。
3.随着智能手机等的飞速发展,越来越多的加密实现被部署在开放性环境中,传统的aes等加密算法已经变得脆弱。白盒密码作为一种密钥保护机制,具有很强的实践意义,符合不安全设备上对密码加密体系的需要,被广泛应用于金融安全、电子商务、物联网、移动设备等场景。
4.在白盒密码中,密码算法被视为一个完全透明的“白盒”,密码算法不仅对外提供了加密(解密)接口,同时也可以暴露出算法的内部实现。攻击者可以在完全了解密码算法的实现细节的前提下,分析算法的内部处理过程来获取加密秘钥或者密文等重要信息和观测更改程序运行时的内部数据,从而实现攻击。随着智能手机和嵌入第三方应用程序的可穿戴设备等的飞速发展,越来越多的加密实现被部署在不受信任的环境中,导致人们对白盒加密的兴趣与日俱增。白盒密码的应用场景主要在需要较高安全性的领域,例如金融支付、数字版权管理、智能市场等。除传统场景外,白盒技术还可以用于物联网设备认证等领域和应用中,防止黑客对设备进行篡改和攻击。
5.比起传统的查表方法,基于布尔函数的白盒加密方案在安全性和可扩展性上都有明显的优势,但也存在加密时间开销增大的缺点。现有技术采用包括非线性掩码的加密方案,将加密过程中的所有元素用掩码值表示,然后再进行按位逻辑操作。相较于线性掩码,非线性掩码对侧信道攻击的抵御能力更强。复杂的掩码形式增强了加密算法的安全性,但是计算过程较为复杂,因此存在比较大的开销和性能损耗。


技术实现要素:

6.为了解决上述背景技术中存在的技术问题,本发明提供一种基于布尔电路的白盒保护方案的加速实现方法及系统,其弥补了目前针对白盒保护方案加密算法设计缺乏的空白。还实现了针对生成白盒加密程序的有效混淆方案,可以在结构隐藏方面进一步提高白盒方案的安全性。且本发明足够灵活,可根据不同的白盒保护方案进行调整,应用前景广阔。
7.为了实现上述目的,本发明采用如下技术方案:本发明的第一个方面提供一种基于布尔电路的白盒保护方案的加速实现方法。其包括:一种基于布尔电路的白盒保护方案的加速实现方法,包括:获取白盒的明文和密钥;
基于密钥,同时对多组明文进行若干轮加密,经掩码和束的重排列,得到密文;其中,利用密钥扩展算法生成每一轮的轮密钥;在加密之前,对明文和密钥进行位切片处理,将一个n比特数据按位拆分成若干个1比特,使得每个输入的第i位出现在第i个字中;在束的重排列过程中采用移位操作对切片进行重排列,将每个明文比特拆成n个比特编码表示。
8.在生成掩码过程中,每个比特均由三个比特编码(a,b,c)表示,使得,其中,a和b由随机数生成,c通过计算得出。
9.在加密过程中,包括:使用无规律的变量名称,结束作用域的变量随机重复利用。所述变量随机重复利用具体包括:在加密的过程中建立第一列表和第二列表;第一列表存储当前所有处于作用域的变量名称,每个变量结束作用域时,将其名称从第一列表转到第二列表;每产生一个新变量时,判断第二列表是否为空,若是,重复产生随机数与固定前缀组合,直到产生一个新的变量名称,声明并插入第一列表;否则,随机从第二列表中选出一个变量名称分配给该新变量,并将该名称移入第一列表。
10.在加密过程中,改进密钥硬编码的方式,即,在aes加密算法的轮密钥加过程中将aes的轮密码加与字节替换结合成一个新的t表;或,将一个共享的全局变量拆分成三个掩码,每次的取反操作为与全局变量的三个掩码做异或运算,并将refresh函数得到的三个新掩码替换全局变量的三个掩码。
11.在aes加密算法的s盒过程,采用布尔函数anf描述s盒的非线性。
12.在aes加密算法的过线性层过程,采用启发式搜索框架进行线性层列混合;在掩码过程,采用二次非线性的掩码方案。
13.本发明的第二个方面提供一种基于布尔电路的白盒保护方案的加速实现系统。
14.一种基于布尔电路的白盒保护方案的加速实现系统,包括:数据获取模块,其被配置为:获取白盒的明文和密钥;加密模块,其被配置为:基于密钥,同时对多组明文进行若干轮加密,经掩码和束的重排列,得到密文;加速模块,其被配置为:利用密钥扩展算法生成每一轮的轮密钥;在加密之前,对明文和密钥进行位切片处理,将一个n比特数据按位拆分成若干个1比特,使得每个输入的第i位出现在第i个字中;在束的重排列过程中采用移位操作对切片进行重排列,将每个明文比特拆成n个比特编码表示。
15.本发明的第三个方面提供一种计算机可读存储介质。
16.一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一个方面所述的基于布尔电路的白盒保护方案的加速实现方法中的步骤。
17.本发明的第四个方面提供一种计算机设备。
18.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述第一个方面所述的基于布尔电路的白盒保护方案的加速实现方法中的步骤。
19.与现有技术相比,本发明的有益效果是:本发明采用位切片方法,一次加密过程可以并行加密n组数据,实现了基于布尔电路的白盒加密算法的加速,具有更优的性能。
20.本发明的方案使用纯逻辑运算,在不同硬件环境中都可以实现高效的数据操作。同时,本发明充分利用了现代处理器中的并行计算和向量化功能,使吞吐量有了显著提高,加速效率提升与并行程度成正比。
21.本发明针对二次非线性掩码方案在安全性方面做了进一步的改进与尝试,实现了针对生成白盒加密程序的有效混淆方案,包括:使用无规律的变量名称,展开全部的函数调用和循环,结束作用域的变量随机重复利用等;尤其是改进了密钥的硬编码方式,可以在结构隐藏方面进一步提高白盒方案的安全性。且本发明足够灵活,可根据不同的白盒保护方案进行调整,应用前景广阔。
附图说明
22.构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
23.图1是本发明示出的程序逻辑结构图;图2是本发明示出的生成的部分白盒加密程序;图3是本发明示出的取反操作的频率折线图;图4是本发明示出的取反操作的频率条形图;图5是本发明示出的存储在64位处理机内存中和重排列后的束;图6是本发明示出的aes的113逻辑门的结构图;图7是本发明示出的lfsr生成器结构图;图8是本发明示出的变量复用情况示意图。
具体实施方式
24.下面结合附图与实施例对本发明作进一步说明。
25.应该指出,以下详细说明都是例示性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
26.需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
27.需要注意的是,附图中的流程图和框图示出了根据本公开的各种实施例的方法和系统的可能实现的体系架构、功能和操作。应当注意,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分可以包括一个或多个用于实现各个实施例中所规定的逻辑功能的可执行指令。也应当注意,在有些作为备选的实现中,方框中所标注的功能也可以按照不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,或者它们有时也可以按照相反的顺序执行,这取决于所涉及的功能。同样应当注意的是,流程图和/或框图中的每个方框、以及流程图和/或框图中的方框的组合,可以使用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以使用专用硬件与计算机指令的组合来实现。
28.术语解释:布尔电路:布尔电路基本上由逻辑门(logic gates)和连接它们的导线(wires)组成。
29.实施例一本实施例提供了一种基于布尔电路的白盒保护方案的加速实现方法,本实施例以该方法应用于服务器进行举例说明,可以理解的是,该方法也可以应用于终端,还可以应用于包括终端和服务器和系统,并通过终端和服务器的交互实现。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务器、云通信、中间件服务、域名服务、安全服务cdn、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本技术在此不做限制。本实施例中,该方法包括以下步骤:获取白盒的明文和密钥;基于密钥,同时对多组明文进行若干轮加密,经掩码和束的重排列,得到密文;其中,利用密钥扩展算法生成每一轮的轮密钥;在加密之前,对明文和密钥进行位切片处理,将一个n比特数据按位拆分成若干个1比特,使得每个输入的第i位出现在第i个字中;在束的重排列过程中采用移位操作对切片进行重排列,将每个明文比特拆成n个比特编码表示。
30.本实施例的具体过程包括:1.获取明文和密钥;2.利用密钥扩展算法生成每一轮的轮密钥;3.切片操作将一个n比特数据按位拆分成若干个1比特,使得每个输入的第i位出现在第i个字中;4.lfsr生成伪随机数;5.每个比特都由3比特编码(a,b,c)表示,使得,其中a和b由随机数生成。c通过计算得出;6.基于密钥,对明文进行若干轮加密,每一轮有字节替换(subbytes)、行移位(shiftrows)、列混淆(mixcolumns)和轮密钥加(addroundkey)四种操作。
31.7.经过解掩码和束的重排列,得到密文。
32.本实施例设计的方案分为两层,如图 1所示。
33.上层程序使用python编程语言实现,实现密钥扩展,并生成白盒加密程序。
34.白盒加密程序代码使用的c++编程语言,如图2所示,程序代码长度约为140万行,实现了代码混淆(shuffle),加密主体表面上是毫无规律的布尔逻辑运算,能保证白盒攻击者在得到代码之后不能轻易分析出代码的结构。轮密钥采用硬编码的方式编入程序,不显式表现在程序中,进一步保护了密钥。
35.(1)密钥扩展和编码密钥扩展算法在上层程序中完成,所以可以基于查表或者布尔电路实现,不影响加密的效率和安全性。每一轮的轮密钥通过硬编码的方式写入白盒加密程序中。
36.具体的扩展算法流程如下:(1-1)将初始密钥拆分成多个字节,每个字节用一个数组元素表示。
37.(1-2)根据不同的aes加密轮数,计算扩展所需的轮密钥数量。
38.(1-3)对于生成的每个轮密钥,先将上一个轮密钥的最后一个字节复制到一个临时数组中,然后进行以下操作:(1-3-1)对字节进行循环左移1位。
39.(1-3-2)对字节进行字节替换操作,使用aes中的s盒进行替换。
40.(1-3-3)从临时数组中取出4个字节,依次与当前轮密钥的前4个字节进行异或操作。
41.(1-3-4)对第一个字节进行与固定常量rcon进行异或操作,固定常量rcon等于,其中,i是轮密钥的序号。
42.即:即:(1-4)将生成的轮密钥存入轮密钥数组中。直到生成的轮密钥数量等于aes加密轮次。
43.密钥通过普通的硬编码方式编入加密程序,会导致密钥泄露的风险增加,从而增加程序的安全性风险。
44.aes中涉及取反操作的步骤包括轮密钥加和 s 盒两个步骤。如图3所示,取反操作呈现明显的周期性。其中,11段斜率比较大的段是轮密钥加操作,会有连续重复多个取反操作。10段比较平缓的段进行的是字节替换(过 s 盒操作),每个s盒有4个取反操作。在字节代换后面紧接着一小段斜率基本为 0,列混淆操作不包含取反操作。
45.利用python的频率统计函数,将bins参数设置为字符串长度的平方根,,是一种“自适应”分组方法,plt.hist() 函数将 positions中的数据分配到bins个等距的区间中,并计算每个区间包含的数据的数量。生成图4,呈现很好的周期性,也清晰显示了加密算法轮结构。
46.攻击者如果能够获知加密算法的轮结构,就可以利用这些信息来破解加密算法。轮密钥加过程中,将轮密钥分为单个比特,如果该比特位为1,则进行取反操作,该过程会短时间产生大量取反操作,最坏的结果是可能导致白化密钥直接暴露。
47.为了避免这种密钥泄露的风险,通常将密钥存储在配置文件或通过密码学安全的方法动态生成,以保护密钥不被直接暴露在程序中。另一个可行的解决方法是将aes的轮密钥加与字节替换合成一个新的表,但新表转化成anf会带来开销增大等的问题。
48.使用一个共享的全局变量mf,值为全 1(即 0xff),拆分成三个掩码。每次的取反操作为与 mf 对应的3个掩码做异或。异或逻辑运算包括 refresh() 函数,刷新函数返回mf的新的随机编码:用新生成的三个掩码替换mf原先的三个掩码,可以隐藏对应三个掩码变量固定频率的复用。
49.(2)位切片切片操作将一个n比特数据按位拆分成若干个1比特元素,在进行并行计算时,多个输入的对应同1比特元素都可以独立地进行相同的运算。通过并行计算来加速整体运算的速度。这种方法尤其适合在处理大量数据时,提高加/解密算法的并行性和运算速度。
50.在位切片实现中,不是用单个变量存储n位数字,而是用n个变量(即为切片)。将一个数据块按位切分成多个位块,将每个位块中的数据都看作是若干个数的某一位,例如把32位数据分成32个1位数据。然后,将这些数据均放在一个表格中,每列列举的都是这个值的不同位上的数据集合,每行代表着一组数据,所有数据均采用相同逻辑运算处理。在单个逻辑运算时,多组数据交错进行并行运算。
51.加密算法是基于布尔电路的,不能使用if等条件语句,本实施例采用移位操作实现切片重排列。
52.如图5所示,束的重排列采用移位的方法使得每个输入的第一位出现在第一个字中,每个输入的第二位出现在第二个字中。重排列函数对于束的每次加密都被调用两次。
53.在开始加密之前对明文进行第一次调用,在每一束加密完成之后对密文进行第二次调用。
54.(3)掩码biryukov的掩码方案中,每个比特都由3比特编码(a,b,c)表示,使得,其中a和b由随机数生成。在白盒环境中难以实现真正的随机,伪随机数生成将在后面进行详细介绍。c通过计算得出。
55.上层代码封装掩码类,成员由3个掩码变量组成。掩码类的成员函数,包括生成随机掩码、解码掩码、重载and、xor、not等运算操作等,其中加密函数将明文先分解为3个比特组成的掩码。解密函数将3个掩码比特还原为明文比特。
56.加密完成后,利用公式,将掩码还原为密文。
57.为了对编码后的变量进行计算,定义了xor函数、and函数和not函数。这些新的函数根据编码后的比特进行运算,并在运算结果中返回新的编码。
58.通过刷新函数返回a的新的随机编码,对于任何r:新的编码不显示关于旧编码的信息,从而进一步提高了算法的安全性。
59.(4)过s盒s盒是一种128-bit输入和输出的非线性映射。s盒是aes中最重要的部分之一,用于实现加密和解密操作中的置换和代换。
60.s盒的构造是aes中的核心部分,其中涉及到布尔函数anf(algebraic normal form)。在aes的s盒构造中,anf用于描述s盒的非线性特性。s盒的构造要求其满足一定的代换特性和非线性特性,而anf可以帮助设计出满足这些要求的s盒。
61.输入字节a的s盒函数由两个子步骤定义:逆:设,中的乘法逆(如果a=0不成立,则c=0)。
62.仿射变换:则输出为,其中m是指定的8
×
8比特矩阵,b是指定的字节,
字节c、b、s被视为比特向量。
63.更明确地说:aes算法使用8比特字节的特定伽罗瓦域,其中比特是多项式(即多项式基)的系数,并且乘法是对不可约多项式取模。(9位二进制表示是q(x)=100011011;从比较二进制数表示的意义上来说,这是gf(2)上“最小”的8次不可约多项式)具体地,aes的s盒是通过将gf()上的变换(mds)和一个非线性的变换(subbytes)结合而成的。subbytes变换使用一个由256个元素构成的置换表,其中每个元素都是一个8位二进制数。anf用于描述该置换表的非线性特性。在构造s盒时,需要找到一组元素,使得在anf中所产生的项数越少越好,即使得其非线性度尽量高。通过优化anf中所产生的项数,可以达到提高s盒非线性度的目的。
64.不经过优化的s盒需要的门电路数量约为3000,目前世界上最先进的aes的s盒基于113个逻辑门的anf,结构如图6,分为27层。
65.(5)过线性层aes中线性层是一个非常重要的部分,包括行移位、列混合和轮密钥加操作。在aes中,线性层通常被称为“加法-置换层”,其包括一些线性变换和置换变换。在算法的加密阶段中,线性层接收来自轮函数的输出,并通过执行一系列线性变换,包括按位异或、矩阵乘法和位移操作,以及一些置换操作来混合输出。这些线性变换包括了使用布尔函数anf来描述的特定的代数方程式。
66.aes中行移位操作通常作为aes轮函数的一个步骤,与其他操作一起执行或者在上层程序实现,直接改变变量之间的映射,而轮密钥加是简单的重复异或操作,所以在加密程序中比较重要的是列混合的效率。本实施例采用目前最快的线性层列混合实现,启发式搜索框架采用迭代分割输出位直到所有输入位出现的策略,适合低延迟标准。向后框架确保每个节点达到最小深度,这适用于所有矩阵。而正向算法则不适用于某些矩阵。此功能将影响节点是否可以用于生成新节点。因此,对于一些矩阵,该框架可以在有限的时间内以最小的深度覆盖比以前的算法更多的实现。
67.启发式搜索框架实现具有103个xor逻辑门、深度为3的aes列混合,是具有最小深度的aes线性层的最佳硬件实现之一。
68.(6)伪随机数生成器-lfsrbiryukov的掩码方案中,每个比特都由3比特编码(a,b,c)表示,使得,其中a和b均为随机数。然而,在白盒环境中难以实现真正的随机,攻击者可以将外源引入的
随机数全部置为0从而破解掩码结构,所以优秀的伪随机数生成算法对于隐藏掩码至关重要。密码学中比较广泛使用的伪随机数生成器包括基于lfsr、哈希函数或块加密算法的伪随机数生成器。本实施例的伪随机数生成算法采用biryukov所用的lfsr方案。
69.lfsr是一种简单快速地产生伪随机数的方法,被广泛用于加密、校验、数据压缩等领域。它是一种线性反馈移位寄存器,具有简单、易于实现、高效的优点。硬件结构是由多个二进制寄存器和异或门组成,如图7所示。
70.lfsr可以利用其移位和异或运算的特点,生成伪随机序列。lfsr伪随机数生成器通常采用一个线性方程模型,即利用寄存器中当前的状态,再通过一组事先确定的系数进行一系列异或运算,从而得到下一个状态,高效实现伪随机数生成。通过选择不同的系数,lfsr可以生成不同的伪随机数序列。python和c++11版本中的函数都基于lfsr生成。
71.lfsr的结构是固定性的,所以产生的新数据取决于寄存器上一个状态。因为寄存器数量有限,产生随机数次数达到特定值会出现循环,选择合适的本原多项式可以使伪随机数周期更长,实现更高的安全性。
72.实验中寄存器数量固定为分组密码的长度128,使用的本原多项式是种子为初始明文在无掩码状态下空跑2轮aes的密文结果(空跑即为对于aes的轮函数只执行字节替换、行移位、列混合三个步骤,而忽略轮密钥加步骤)。
73.(7)变量名称设计及复用本实施例生成长度超过140万行的程序代码,但是只使用900个临时变量来存储所有的中间状态,变量名称有很好的复用性。
74.上层代码建立两个list存储变量名称,分别为busy和free,busy中存储当前所有处于作用域的变量名称,每个变量结束作用域时,将其名称从busy中弹出,压入free。
75.每产生一个新变量时,如果free不空,随机从中选出一个变量名称分配给它,并将该名称移入busy;如果free为空,则重复产生随机数与固定前缀“whitebox”组合直到产生一个新的变量名称,声明它并将其插入busy。
76.在白盒密码中,变量复用对隐藏算法结构的优点在于:(7-1)增加算法复杂性:对于攻击者来说,算法中同一个变量出现多次,可能难以推测出哪些变量实际是相同的,从而增加了攻击算法的复杂性。
77.(7-2)模糊运算步骤:变量复用也可以增加算法中的混淆(obfuscation)效果,将算法实现中不同的运算步骤混合在一起,使得攻击者难以区分其中哪些步骤是真正的核心加密运算。
78.(7-3)贴合白盒密码的设计理念:白盒密码的设计原则之一是隐藏密钥派生函数的实现细节,包括算法的结构和设计选择。变量复用技术正是这一原则的实现手段之一,可以将算法实现细节隐藏在复杂的代码结构中。
79.为了进一步提高安全性,本实施例采用展开了全部的函数调用和循环方式,即将函数体和循环体直接显示在主函数中,使程序丧失可读性和可编辑性,从而提高安全性。
80.如图8所示,907个变量在程序前后各个位置平均出现几千次,很好地隐藏了加密
算法的结构,对变量统计攻击等有一定的抵抗作用。
81.(8)测试结果与分析对于使用了同种掩码与伪随机数的加密,在同样的处理机和网络状态下,对于不使用bitslice、8位并行bitslice和64位并行bitslice三种测试加密多组明文的平均时间。
82.测试结果如表 1 测试结果统计所示(取10次运行时间的平均值,精度为1e-9):表 1 掩码方案测试结果统计对于组明文来说,8位并行bitslice和64位并行bitslice加密速度分别为不使用bitslice的7.979倍和61.997倍,接近8倍和64倍。
83.对于组明文来说,8位并行bitslice和64位并行bitslice加密速度分别为不使用bitslice的7.855倍和61.52倍,接近8倍和64倍。
84.对于不使用掩码的方案测试结果如表 2:表 2无掩码方案测试结果统计对于组明文来说,8位并行bitslice和64位并行bitslice加密速度分别为不使用bitslice的7.168倍和3.51倍,小于期望的8倍和64倍,说明在此时切片的开销无法忽略,加密速度与代码量成正比。
85.掩码方案的两组实验都基本满足实验预期,无掩码方案的加速效果较差。说明在加密开销比较大的情况下,切片产生的额外开销可以忽略,利用bitslice并行加密n组数据可以充分利用处理机的优势,达到比较好的加速效果。这种方法可以显著降低加密时间、提高加密效率和性能,尤其是在大规模数据集和高性能计算环境上。
86.因此,本发明可以应用于几乎任何基于布尔电路的白盒保护方案,在二次非线性掩码方案的基础上测试加速方案,进行多次实验,测试分析了8位和64位并行的bitslice加密效率,加密速度的提升接近8倍和64倍,基本达到了实验预期。
87.实施例二
本实施例提供了一种基于布尔电路的白盒保护方案的加速实现系统。
88.一种基于布尔电路的白盒保护方案的加速实现系统,包括:数据获取模块,其被配置为:获取白盒的明文和密钥;加密模块,其被配置为:基于密钥,同时对多组明文进行若干轮加密,经掩码和束的重排列,得到密文;加速模块,其被配置为:利用密钥扩展算法生成每一轮的轮密钥;在加密之前,对明文和密钥进行位切片处理,将一个n比特数据按位拆分成若干个1比特,使得每个输入的第i位出现在第i个字中;在束的重排列过程中采用移位操作对切片进行重排列,将每个明文比特拆成n个比特编码表示。
89.此处需要说明的是,上述数据获取模块、加密模块和加速模块与实施例一中所实现的示例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为系统的一部分可以在诸如一组计算机可执行指令的计算机系统中执行。
90.实施例三本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例一所述的基于布尔电路的白盒保护方案的加速实现方法中的步骤。
91.实施例四本实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述实施例一所述的基于布尔电路的白盒保护方案的加速实现方法中的步骤。
92.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
93.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
94.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
95.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
96.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以
通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)或随机存储记忆体(random accessmemory,ram)等。
97.以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

技术特征:
1.一种基于布尔电路的白盒保护方案的加速实现方法,其特征在于,包括:获取白盒的明文和密钥;基于密钥,同时对多组明文进行若干轮加密,经掩码和束的重排列,得到密文;其中,利用密钥扩展算法生成每一轮的轮密钥;在加密之前,对明文和密钥进行位切片处理,将一个n比特数据按位拆分成若干个1比特,使得每个输入的第i位出现在第i个字中;在束的重排列过程中采用移位操作对切片进行重排列,将每个明文比特拆成n个比特编码表示。2.根据权利要求1所述的基于布尔电路的白盒保护方案的加速实现方法,其特征在于,在生成掩码过程中,每个比特均由三个比特编码(a,b,c)表示,使得,其中,a和b由随机数生成,c通过计算得出。3.根据权利要求1所述的基于布尔电路的白盒保护方案的加速实现方法,其特征在于,在加密过程中,包括:使用无规律的变量名称,结束作用域的变量随机重复利用。4.根据权利要求3所述的基于布尔电路的白盒保护方案的加速实现方法,其特征在于,所述变量随机重复利用具体包括:在加密的过程中建立第一列表和第二列表;第一列表存储当前所有处于作用域的变量名称,每个变量结束作用域时,将其名称从第一列表转到第二列表;每产生一个新变量时,判断第二列表是否为空,若是,重复产生随机数与固定前缀组合,直到产生一个新的变量名称,声明并插入第一列表;否则,随机从第二列表中选出一个变量名称分配给该新变量,并将该名称移入第一列表。5.根据权利要求1所述的基于布尔电路的白盒保护方案的加速实现方法,其特征在于,在加密过程中,改进密钥硬编码的方式,即,在aes加密算法的轮密钥加过程中将aes的轮密码加与字节替换结合成一个新的t表;或,将一个共享的全局变量拆分成三个掩码,每次的取反操作为与全局变量的三个掩码做异或运算,并将refresh函数得到的三个新掩码替换全局变量的三个掩码。6.根据权利要求5所述的基于布尔电路的白盒保护方案的加速实现方法,其特征在于,在aes加密算法的s盒过程,采用布尔函数anf描述s盒的非线性。7.根据权利要求5所述的基于布尔电路的白盒保护方案的加速实现方法,其特征在于,在aes加密算法的过线性层过程,采用启发式搜索框架进行线性层列混合;或,在掩码过程,采用二次非线性的掩码方案。8.一种基于布尔电路的白盒保护方案的加速实现系统,其特征在于,包括:数据获取模块,其被配置为:获取白盒的明文和密钥;加密模块,其被配置为:基于密钥,同时对多组明文进行若干轮加密,经掩码和束的重排列,得到密文;加速模块,其被配置为:利用密钥扩展算法生成每一轮的轮密钥;在加密之前,对明文和密钥进行位切片处理,将一个n比特数据按位拆分成若干个1比特,使得每个输入的第i位出现在第i个字中;在束的重排列过程中采用移位操作对切片进行重排列,将每个明文比特拆成n个比特编码表示。9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一项所述的基于布尔电路的白盒保护方案的加速实现方法中
的步骤。10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-7中任一项所述的基于布尔电路的白盒保护方案的加速实现方法中的步骤。

技术总结
本发明属于数据加密领域,采用位切片方法,一次加密过程可以并行加密N组数据,提供了一种基于布尔电路的白盒保护方案的加速实现方法及系统。方案使用纯逻辑运算,在不同硬件环境中都可以实现高效的数据操作。使吞吐量有了显著提高,加速效率提升与并行程度成正比。除此之外,还提出并实现了白盒加密安全性方面的进一步改进,包括:进一步的混淆实现结构隐藏,改进密钥编码的方式等。改进密钥编码的方式等。改进密钥编码的方式等。


技术研发人员:王锦良 王美琴 武旭晶 张卓龙
受保护的技术使用者:山东大学
技术研发日:2023.07.05
技术公布日:2023/9/6
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐