一种白盒加密方法、装置及存储介质与流程

文档序号:15357648发布日期:2018-09-05 00:11阅读:241来源:国知局

本申请涉及计算机技术领域,尤其涉及一种白盒加密方法、装置及存储介质。



背景技术:

随着终端技术的发展,终端中安装的应用程序越来越多。终端中往往会有一些不希望被攻击者窃取的数据,比如,用户在使用应用程序的过程中会用到的或者产生的私密数据,或者开发者往往不希望应用程序的执行逻辑被攻击者逆向破解。为了保护应用程序及其运行过程中产生的数据的安全,常常需要对这些数据进行加密。

近年来,智能终端大量普及,由于智能终端的运行环境是相对开放的,智能终端的运行环境对攻击者而言是可见的(俗称白盒(white-box)环境),白盒密码技术相应地被提出。通过白盒密码技术,把密码算法进行混淆,使得攻击者无法得知具体的算法流程,进而达到保护密钥信息的目的,防止攻击者在白盒环境中提取出密钥,从而保证被保护数据的安全。

现有的白盒加密技术,白盒高级加密标准加密法(advancedencryptionstandard,aes)实现过程中,列混合变换(mixcolumns)操作矩阵mc是公开的,并且这个矩阵的每一列都取值01,01,02,03,其中的两个单位元素01暴露密钥信息。使得白盒库存在被破解的可能,导致数据存在安全威胁。



技术实现要素:

本申请实施例提供一种白盒加密方法,用以提高现有技术中数据的安全性。

本申请实施例采用下述技术方案:

一种白盒加密方法,包括:

通过查找表的方式执行字节代替操作和行移位操作;

在列混淆操作中,通过对第一预设查找表进行查找表操作,以执行列混淆矩阵变换操作;其中,所述第一预设查找表是通过对列混淆mc矩阵进行置乱编码后得到的。

本申请实施例还提供一种白盒加密装置,用以提高现有技术中数据的安全性。

本申请实施例采用下述技术方案:

一种白盒加密装置,包括:

第一单元,通过查找表的方式执行字节代替操作和行移位操作;

第二单元,在列混淆操作中,通过对第一预设查找表进行查找表操作,以执行列混淆矩阵变换操作;其中,所述第一预设查找表是通过对列混淆mc矩阵进行置乱编码后得到的。

本申请实施例还提供一种白盒加密装置,用以提高现有技术中数据的安全性。

本申请实施例采用下述技术方案:

一种白盒加密装置,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现本发明的白盒加密方法的步骤。

本申请实施例还提供一种白盒加密装置,用以提高现有技术中数据的安全性。

本申请实施例采用下述技术方案:

一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现本发明的白盒加密方法的步骤。

本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:

通过对列混淆mc矩阵进行置乱编码得到第一预设查找表,然后将列混淆矩阵变换操作替换为对第一预设查找表的查找表操作,这样bge攻击方法便无法计算出各变换之间的关系,从而无法得到隐藏着的密钥信息。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1为本申请实施例提供的一种白盒加密方法的实现流程示意图;

图2为本申请实施例提供的一种白盒加密方法的实现过程示意图;

图3是本申请的一个实施例电子设备的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

以下结合附图,详细说明本申请各实施例提供的技术方案。

针对白盒aes,billet、gilbert和ech-chatbi针对chow等设计的白盒aes提出的一种攻击方法,简称为bge攻击方法。白盒aes每一轮可看做由四个4比特到4比特的映射组成,映射中的列混合矩阵mc是公开的,比如可以是如下矩阵:

由于列混合变换(mixcolumns)操作矩阵mc是公开的,并且这个矩阵的每一列都取值01,01,02,03,其中的两个单位元素01暴露密钥信息。使得白盒库存在被破解的可能,导致数据存在安全威胁。

为解决现有技术中数据安全性较低的问题,本申请实施例提供一种白盒加密方法。本申请实施例提供的白盒加密方法的执行主体可以是终端设备,例如手机、平板电脑等等。此外,该方法的执行主体,也可以是实现该方法的程序模块,比如用来保障应用程序安全的模块,例如白盒密钥模块。

为便于描述,下文以该方法的执行主体为白盒密钥模块为例,对该方法的实施方式进行介绍。可以理解,该方法的执行主体为白盒密钥模块只是一种示例性的说明,并不应理解为对该方法的限定。

该方法的实现流程示意图如图1所示,包括下述步骤:

步骤11:通过查找表的方式执行字节代替操作和行移位操作;

本发明实施例中,在白盒环境中,字节代替操作和行移位操作也可以用查找表的方式来实现,以进一步提高数据安全。

在aes算法的字节代替操作中,会使用一个表(被称为s盒)对分组进行字节替换。在aes中,定义了一个s盒,它是由16×16个字节组成的矩阵,把state中每个字节的高4位作为行值,低4位作为列值,然后取出s盒中对应行列的元素作为输出。这个步骤提供了aes算法加密的非线性变换能力。s盒与有限域乘法逆元有关,具有良好的非线性特性。为了避免简单代数攻击,s盒结合了乘法逆元及可逆的仿射变换矩阵建构而成。

本申请实施例中,在白盒环境中,可以对字节代替操作的映射进行置乱编码,将该过程的结果用查找表的方式表示,使得攻击者无法从查找表中分析得到密钥。

在aes算法的行移位操作中,会将state数组的第一行保持不变,第二行循环左移一个字节,第三行循环左移两个字节,第四行循环左移三个字节。那么其逆变换则将移位的几行进行相反方向的移位操作即可。

本申请实施例中,在白盒环境中,可以对行移位操作的映射进行置乱编码,将该过程的结果用查找表的方式表示,使得攻击者无法从查找表中分析得到密钥。

现有技术的白盒aes算法中,行移位操作没有结合到查找表中,而是通过对输入进行适当的移位来实现的,这样就使得置乱编码的只是8×8比特的映射。

另外,现有技术的列混合变换操作中的mc矩阵是公开的,矩阵中的单位元素01会暴露密钥信息。下面将详细描述本申请实施例中通过查找表来进行列混淆操作。

步骤12:在列混淆操作中,通过对第一预设查找表进行查找表操作,以执行列混淆矩阵变换操作。

其中,所述第一预设查找表是通过对列混淆mc矩阵进行置乱编码后得到的。

本申请实施例中,第一预设查找表为预先设定的查找表,通过该查找表,可以用简单的查询操作,来替换列混淆操作。

在aes算法的列混淆变换操作中,会对一个状态的每一列去乘一个矩阵,即使用乘法矩阵,矩阵的系数是基于码字间最大距离的线性编码,这使得在每列的所有字节可以较好地混淆。但是,在列混淆操作中,操作矩阵mc是公开的,并且这个矩阵的每一列都取值01,01,02,03,其中的两个单位元素01暴露密钥信息。

本申请实施例中,在对列混淆mc矩阵进行置乱编码时,可以将加密算法的列混淆操作中的四个mc矩阵的输入和输出之间的映射,以一个查找表的方式进行表示,得到第一预设查找表。

本申请实施例中,为了防止bge攻击,所述第一预设查找表为不可分割的整体,这样bge攻击方法便无法将其分割成更小的变换,也无法计算出各变换之间的关系,从而无法得到隐藏着的密钥信息。

在白盒aes的每一轮中,有4个mc矩阵,那么将4个mc矩阵转换操作,合并为一个查找表的操作后,第一预设查找表的输入和输出均为128比特。

在通过对第一预设查找表进行查找表操作,以执行列混淆矩阵变换操作后,还可以通过查找表的方式进行轮密钥加变换操作。在aes算法的轮密钥加变换操作中,会将轮密钥与明文(状态)按比特异或。轮密钥通过密钥扩展得到,初始密钥与初始明文均可由用户自己设置

本申请提供的白盒加密方法,通过对列混淆mc矩阵进行置乱编码得到第一预设查找表,然后将列混淆矩阵变换操作替换为对第一预设查找表的查找表操作,这样bge攻击方法便无法计算出各变换之间的关系,从而无法得到隐藏着的密钥信息。

需要说明的是,本申请提供的白盒加密方法,既可以应用于静态白盒,也可以应用于动态白盒中,针对静态白盒而言,白盒库文件生成后不需要再更新,原始密钥通过特定的白盒密钥生成工具,进行密钥转换,得到白盒密钥;白盒密钥与相应文件传输相匹配的白盒库文件后,就可以通过查表的方式对明文进行加密,或对密文进行解密。在动态白盒的加解密方案中,白盒密钥是安全的,攻击者不能通过分析白盒密钥得到任何关于原始密钥的信息,从而,能够加强原始密钥的破解难度,保障加解密操作的安全性。

以上为本申请提供的白盒加密方法,基于上述白盒加密方法,本申请还提供一种白盒加密装置。该白盒加密装置的结构示意图如图2所示,主要包括下述功能单元:

第一单元201,通过查找表的方式执行字节代替操作和行移位操作;

第二单元202,在列混淆操作中,通过对第一预设查找表进行查找表操作,以执行列混淆矩阵变换操作;其中,所述第一预设查找表是通过对列混淆mc矩阵进行置乱编码后得到的。

在一种实施方式中,所述第一预设查找表通过混淆单元203得到的,所述混淆单元具体用于:

将加密算法的列混淆操作中的四个mc矩阵的输入和输出之间的映射,以一个查找表的方式进行表示,得到第一预设查找表。

在一种实施方式中,所述第一预设查找表为不可分割的整体,所述第一预设查找表的输入和输出均为128比特。

在一种实施方式中,所述装置还包括:

第三单元204,在通过对第一预设查找表进行查找表操作,以执行列混淆矩阵变换操作后,通过查找表的方式进行轮密钥加变换操作。

本申请提供的白盒加密装置,通过对列混淆mc矩阵进行置乱编码得到第一预设查找表,然后将列混淆矩阵变换操作替换为对第一预设查找表的查找表操作,这样bge攻击方法便无法计算出各变换之间的关系,从而无法得到隐藏着的密钥信息。

图3是本申请的一个实施例电子设备的结构示意图。请参考图3,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(random-accessmemory,ram),也可能还包括非易失性存储器(non-volatilememory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。

处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是isa(industrystandardarchitecture,工业标准体系结构)总线、pci(peripheralcomponentinterconnect,外设部件互连标准)总线或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。

处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成应用白盒加密装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:

通过查找表的方式执行字节代替操作和行移位操作;

在列混淆操作中,通过对第一预设查找表进行查找表操作,以执行列混淆矩阵变换操作;其中,所述第一预设查找表是通过对列混淆mc矩阵进行置乱编码后得到的。

上述如本申请图1所示实施例揭示的白盒加密装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。

该电子设备还可执行图1中白盒加密装置执行的方法,并实现白盒加密方法在图1所示实施例的功能,本申请实施例在此不再赘述。

本申请实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的电子设备执行时,能够使该电子设备执行图1所示实施例中白盒加密装置执行的方法,并具体用于执行:

通过查找表的方式执行字节代替操作和行移位操作;

在列混淆操作中,通过对第一预设查找表进行查找表操作,以执行列混淆矩阵变换操作;其中,所述第一预设查找表是通过对列混淆mc矩阵进行置乱编码后得到的。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1