开云优惠体育网页版入口

开云优惠体育网页版入口:分组密码的区分器获得方法、装置、设备及存储介质

更新时间:2026-09-01
分组密码的区分器获得方法、装置、设备及存储介质 专利申请类型:实用新型专利;
源自:北京高价值专利检索信息库;

专利名称:分组密码的区分器获得方法、装置、设备及存储介质

专利类型:实用新型专利

专利申请号:CN202210207350.X

专利申请(专利权)人:天翼安全开云优惠体育网页版入口有限公司
权利人地址:北京市东城区朝阳门北大街19号中国电信大厦

专利发明(设计)人:刘紫千,余启明,常力元,曹然,佟欣哲,李金伟,陈林,刘长波

专利摘要:本申请提供了一种分组密码的区分器获得方法、装置、设备及存储介质,用于解决区分器的搜索效率较低的问题,所述方法包括:获取分组密码,确定所述分组密码的区分器对应的前置最大扩展轮数和后置最大扩展轮数;基于所述前置最大扩展轮数确定所述区分器的输入值集合;以及,基于所述后置最大扩展轮数确定所述区分器的输出值集合;根据所述输入值集合及所述输出值集合构建所述区分器的初始搜索值集合;其中,所述初始搜索值集合中的每一个元素包括所述输入值集合中的一个输入值和所述输出值集合中的一个输出值;基于所述初始搜索值集合,构建所述分组密码的区分器。

主权利要求:
1.一种分组密码的区分器获得方法,其特征在于,所述方法包括:获取分组密码,确定所述分组密码的区分器对应的前置最大扩展轮数和后置最大扩展轮数;
基于所述前置最大扩展轮数确定所述区分器的输入值集合;以及,基于所述后置最大扩展轮数确定所述区分器的输出值集合;
根据所述输入值集合及所述输出值集合构建所述区分器的初始搜索值集合;其中,所述初始搜索值集合中的每一个元素包括所述输入值集合中的一个输入值和所述输出值集合中的一个输出值;
基于所述初始搜索值集合,构建所述分组密码的区分器。
2.如权利要求1所述的方法,其特征在于,获取分组密码,确定所述分组密码的区分器的前置最大扩展轮数以及区分器的后置最大扩展轮数,包括:获取所述分组密码的多个分组块,每个分组块包括多个比特;
针对所述多个分组块,执行如下操作:
针对任意两个分组块,对所述任意两个分组块各自包括的多个比特进行差分操作,获得所述任意两个分组块之间的差分值;
基于所述差分值标记所述任意两个分组块中每个分组块的内部比特状态,所述内部比特状态包括每个分组块中的每个比特的单比特状态,所述单比特状态包括第一比特状态和第二比特状态;
对包含第一比特状态的内部比特状态进行多轮轮函数逆向操作,直至所有单比特状态为第一比特状态,并基于所述轮函数逆向操作的轮数确定所述前置最大扩展轮数;
对包含第一比特状态的内部比特状态进行多轮轮函数正向操作,直至所有单比特状态为第一比特状态,并基于所述轮函数正向操作的轮数确定所述后置最大扩展轮数。
3.如权利要求2所述的方法,其特征在于,对每个分组块中各自的内部比特状态进行多轮轮函数正向操作,直至每个分组块中所有单比特状态为第一比特状态,包括:对所述每个分组块中的第一比特状态进行矩阵排列,得到相应的第一状态矩阵;
针对所述第一状态矩阵进行多轮轮函数正向操作,直至每个分组块中所有单比特状态为第一比特状态;其中,每一次轮函数正向操作包括如下步骤:从所述第一状态矩阵中第一个状态值开始,依次针对每个状态值从预设的置换盒中查找替换值,并以所述替换值替换相应状态值;
针对所述第一状态矩阵中的每一行进行左循环移位操作,获得第二状态矩阵;其中,第n行左移n个比特;
将所述第二状态矩阵与预设矩阵相乘,得到第三状态矩阵;
对得到的第三状态矩阵进行轮密钥加处理,得到目标状态矩阵;
若所述目标状态矩阵中包含第二比特状态,执行下一次轮函数正向操作。
4.如权利要求1所述的方法,其特征在于,基于所述前置最大扩展轮数确定所述区分器的输入值集合,包括:获得所述区分器对应的多个候选输入值;
针对所述多个候选输入值,分别进行如下操作:
针对一个候选输入值,进行所述前置最大扩展轮数对应的轮函数逆向操作,获得所述一个候选输入值对应的结果状态;
若所述结果状态中包含第二比特状态,则将所述一个候选输入值添加至所述区分器的输入值集合。
5.如权利要求1所述的方法,其特征在于,基于所述后置最大扩展轮数确定所述区分器的输出值集合,包括:获得所述区分器对应的多个候选输出值;
针对一个候选输出值,进行所述后置最大扩展轮数对应的轮函数正向操作,获得所述一个候选输出值对应的结果状态;
若所述结果状态中包含第二比特状态,则将所述一个候选输出值添加至所述区分器的输出值集合。
6.如权利要求1所述的方法,其特征在于,根据所述输入值集合及所述输出值集合构建所述区分器的初始搜索值集合,包括:将所述输入值集合中的每一个元素与所述输出值集合中的每一个元素两辆进行组合,得到多个元素组合;
基于所述多个元素组合,构建所述初始搜索值集合。
7.如权利要求6所述的方法,其特征在于,基于所述初始搜索值集合,构建所述分组密码的区分器,包括:获得所述区分器包含的轮函数数目;
针对所述初始搜索值集合包括的各个元素组合,分别进行如下操作:针对一个元素组合,将所述一个元素组合中的输入值和输出值作为相应候选区分器的输入值和输出值,针对所述候选区分器进行所述轮函数数目对应次数的搜索,确定由所述输入值传播至所述输出值的传播概率;
当所述传播概率大于设定传播率阈值,则确定所述候选区分器为有效区分器。
8.一种分组密码的区分器搜索装置,其特征在于,包括:扩展轮数确定单元,用于获取分组密码,确定所述分组密码的区分器对应的前置最大扩展轮数和后置最大扩展轮数;
输入输出确定单元,用于基于所述前置最大扩展轮数确定所述区分器的输入值集合;
以及,基于所述后置最大扩展轮数确定所述区分器的输出值集合;
搜索值构建单元,用于根据所述输入值集合及所述输出值集合构建所述区分器的初始搜索值集合;其中,所述初始搜索值集合中的每一个元素包括所述输入值集合中的一个输入值和所述输出值集合中的一个输出值;
区分器搜索单元,用于基于所述初始搜索值集合,构建所述分组密码的区分器。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述方法的步骤。
10.一种计算机存储介质,其上存储有计算机程序指令,其特征在于,该计算机程序指令被处理器执行时实现权利要求1至7任一项所述方法的步骤。
11.一种计算机程序产品,包括计算机程序指令,其特征在于,该计算机程序指令被处理器执行时实现权利要求1至7任一项所述方法的步骤。 说明书 : 分组密码的区分器获得方法、装置、设备及存储介质技术领域[0001] 本申请涉及数据安全技术领域,尤其涉及一种分组密码的区分器获得方法、装置、设备及存储介质。背景技术[0002] 随着网络技术的发展,网络安全与信息安全尤为重要,密码算法是保证信息与网络安全的基石。分组密码是一种每次处理特定长度的一块数据的一类密码算法,包括高级加密标准(AdvancedEncryptionStandard,AES)算法和SM4等。分组密码具有加解密速率快,实现简单的特点,可以应用到日常生活的各个领域,因此对分组密码进行安全性分析,可以发现算法存在的不足,确保保密通信、数据加密的安全进行。典型的分组密码分析方法有差分分析、线性分析、高阶差分分析、截断差分分析、积分攻击和不可能差分分析等,在对分组密码进行安全性分析时,非常重要的一个步骤便是寻找具有内部状态传播非随机性特征的区分器,区分器的好坏直接影响到对分组密码的分析结果的有效性。[0003] 相关技术中的区分器搜索方法通常是将区分器的搜索过程和后续的分析步骤看作两个独立的过程,即先建模搜索尽可能长的区分器,然后尝试基于寻找到的区分器对分组密码进行攻击。[0004] 但是,这种方式寻找到的区分器虽然涵盖的轮函数较长,但可能不能用于实际的分析过程,并且搜索过程随着涵盖的轮函数的增长,搜索空间呈指数增长,需要耗费大量的算力,使得区分器的搜索效率较低。发明内容[0005] 本申请提供一种分组密码的区分器获得方法、装置、设备及存储介质,用于解决区分器无法用于实际分析过程以及搜索效率较低的问题。[0006] 一方面,提供的一种分组密码的区分器搜索方法,包括:[0007] 获取分组密码,确定所述分组密码的区分器对应的前置最大扩展轮数和后置最大扩展轮数;[0008] 基于所述前置最大扩展轮数确定所述区分器的输入值集合,以及基于所述后置最大扩展轮数确定所述区分器的输出值集合;[0009] 根据所述输入值集合及所述输出值集合构建所述区分器的初始搜索值集合;其中,所述初始搜索值集合中的每一个元素包括所述输入值集合中的一个输入值和所述输出值集合中的一个输出值;[0010] 基于所述初始搜索值集合,构建所述分组密码的区分器。[0011] 一方面,提供一种分组密码的区分器搜索装置,所述装置包括:[0012] 扩展轮数确定单元,用于获取分组密码,确定所述分组密码的区分器对应的前置最大扩展轮数和后置最大扩展轮数;[0013] 输入输出确定单元,用于基于所述前置最大扩展轮数确定所述区分器的输入值集合;以及,基于所述后置最大扩展轮数确定所述区分器的输出值集合;[0014] 搜索值构建单元,用于根据所述输入值集合及所述输出值集合构建所述区分器的初始搜索值集合;其中,所述初始搜索值集合中的每一个元素包括所述输入值集合中的一个输入值和所述输出值集合中的一个输出值;[0015] 区分器搜索单元,用于基于所述初始搜索值集合,构建所述分组密码的区分器。[0016] 可选的,所述扩展轮数确定单元,具体用于:[0017] 获取所述分组密码的多个分组块,每个分组块包括多个比特;[0018] 针对所述多个分组块,执行如下操作:[0019] 针对任意两个分组块,对所述任意两个分组块各自包括的多个比特进行差分操作,获得所述任意两个分组块之间的差分值;[0020] 基于所述差分值标记所述任意两个分组块中每个分组块的内部比特状态,所述内部比特状态包括每个分组块中的每个比特的单比特状态,所述单比特状态包括第一比特状态和第二比特状态;[0021] 对包含第一比特状态的内部比特状态进行多轮轮函数逆向操作,直至所有单比特状态为第一比特状态,并基于所述轮函数逆向操作的轮数确定所述前置最大扩展轮数;[0022] 对包含第一比特状态的内部比特状态进行多轮轮函数正向操作,直至所有单比特状态为第一比特状态,并基于所述轮函数正向操作的轮数确定所述后置最大扩展轮数。[0023] 可选的,所述扩展轮数确定单元,具体用于:[0024] 对所述每个分组块中的第一比特状态进行矩阵排列,得到相应的第一状态矩阵;[0025] 针对所述第一状态矩阵进行多轮轮函数正向操作,直至每个分组块中所有单比特状态为第一比特状态;其中,每一次轮函数正向操作包括如下步骤:[0026] 从所述第一状态矩阵中第一个状态值开始,依次针对每个状态值从预设的置换盒中查找替换值,并以所述替换值替换相应状态值;[0027] 针对所述第一状态矩阵中的每一行进行左循环移位操作,获得第二状态矩阵;其中,第n行左移n个比特;[0028] 将所述第二状态矩阵与预设矩阵相乘,得到第三状态矩阵;[0029] 对得到的第三状态矩阵进行轮密钥加处理,得到目标状态矩阵;[0030] 若所述目标状态矩阵中包含第二比特状态,执行下一次轮函数正向操作。[0031] 可选的,所述输入输出确定单元,具体用于:[0032] 获得所述区分器对应的多个候选输入值;[0033] 针对所述多个候选输入值,分别进行如下操作:[0034] 针对一个候选输入值,进行所述前置最大扩展轮数对应的轮函数逆向操作,获得所述一个候选输入值对应的结果状态;[0035] 若所述结果状态中包含第二比特状态,则将所述一个候选输入值添加至所述区分器的输入值集合。[0036] 可选的,所述输入输出确定单元,具体用于:[0037] 获得所述区分器对应的多个候选输出值;[0038] 针对一个候选输出值,进行所述后置最大扩展轮数对应的轮函数正向操作,获得所述一个候选输出值对应的结果状态;[0039] 若所述结果状态中包含第二比特状态,则将所述一个候选输出值添加至所述区分器的输出值集合。[0040] 可选的,所述搜索值构建单元,具体用于:[0041] 将所述输入值集合中的每一个元素与所述输出值集合中的每一个元素两辆进行组合,得到多个元素组合;[0042] 基于所述多个元素组合,构建所述初始搜索值集合。[0043] 可选的,所述区分器搜索单元,具体用于:[0044] 获得所述区分器包含的轮函数数目;[0045] 针对所述初始搜索值集合包括的各个元素组合,分别进行如下操作:[0046] 针对一个元素组合,将所述一个元素组合中的输入值和输出值作为相应候选区分器的输入值和输出值,针对所述候选区分器进行所述轮函数数目对应次数的搜索,确定由所述输入值传播至所述输出值的传播概率;[0047] 当所述传播概率大于设定传播率阈值,则确定所述候选区分器为有效区分器。[0048] 一方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一种方法的步骤。[0049] 一方面,提供一种计算机存储介质,其上存储有计算机程序指令,该计算机程序指令被处理器执行时实现上述任一种方法的步骤。[0050] 一方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任一种方法的步骤。[0051] 本申请通过确定区分器的前置最大扩展轮数,以及区分器的后置最大扩展轮数,基于所述前置最大扩展轮数确定所述区分器的输入值集合,以及基于所述后置最大扩展轮数确定所述区分器的输出值集合,从而在区分器搜索阶段便将决定分组密码分析效果的影响因素,即输入值、输出值考虑在内,不再将区分器的搜索和对分组密码的分析看作两个独立的过程,从而使得搜索到的区分器能够具有明显的分析优势,避免了在区分器搜索阶段的资源浪费,提高了区分器的搜索效率。同时,由于初始搜索值集合中的元素确定了输入值和输出值,不会使得区分器搜索时轮函数的数量激增,从而节省了算力,进一步的提高区分器的搜索效率。附图说明[0052] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。[0053] 图1为本申请实施例提供的分组密码的区分器搜索方法的流程示意图;[0054] 图2为本申请实施例提供的获得分组密码的区分器的前置最大扩展轮数和后置最大扩展轮数的流程示意图;[0055] 图3为本申请实施例提供的轮函数正向操作的流程示意图;[0056] 图4为本申请实施例提供的构建区分器的流程示意图;[0057] 图5为本申请实施例提供的分组密码的区分器获得装置的一种结构示意图;[0058] 图6为本申请实施例提供的计算机设备的一种结构示意图。具体实施方式[0059] 为使本申请的目的、技术方案和优点更加清楚明白,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。[0060] 为便于理解本申请实施例提供的技术方案,这里先对本申请实施例提供的一些关键名词进行解释:[0061] 分组密码(blockcipher)算法:是指每次处理特定长度的一块数据的一类密码算法,这里的“一块”就称为一个分组块(block),其中,一个分组块的比特数称为分组长度(blocklength)。[0062] 区分器的前置扩展轮数和后置扩展轮数为执行R轮轮函数操作过程后,分组块内部比特状态包含的所有单比特状态为第一状态时,所进行的轮函数操作次数R,其中一轮轮函数操作包括字节替换处理、行移位处理、列混合变换以及轮密钥加处理。前置最大扩展轮数为执行R轮轮函数逆向操作后,分组块内部比特状态的所有单比特状态为第一状态时所需要的轮函数操作次数,即前置最大扩展轮数r1为R?1。后置最大扩展轮数为执行L轮轮函数正向操作后,分组块内部比特状态的所有单比特状态为第一状态时所需要的轮函数操作次数,即后置最大扩展轮数r2为L?1。前置最大扩展轮数和后置最大扩展轮数用于确定区分器在执行不同轮函数操作时所需要的最大轮数。[0063] 下面对本申请实施例的设计思想进行简要介绍。[0064] 目前,在对分组密码进行安全性分析时,一个非常重要的步骤便是寻找具有内部状态传播非随机性特征的区分器,区分器的好坏直接影响到对分组密码的分析结果的有效性。相关技术中的区分器搜索方法多将区分器的搜索过程和后续的分析步骤看作两个独立的过程,即先建模搜索尽可能长的区分器,然后尝试基于寻找到的区分器对分组密码进行攻击。这种方式找到的区分器虽然涵盖的轮函数较长,但可能不能用于实际的分析过程,并且,搜索过程随着涵盖的轮函数的增长,搜索空间多呈指数增长,需要耗费大量的算力,使得区分器的搜索效率较低。[0065] 基于此,本申请实施例提供一种分组密码的区分器获得方法,通过确定区分器的前置最大扩展轮数,以及区分器的后置最大扩展轮数,基于所述前置最大扩展轮数确定所述区分器的输入值集合,以及基于所述后置最大扩展轮数确定所述区分器的输出值集合,从而在区分器搜索阶段便将决定分组密码分析效果的影响因素,即输入值、输出值考虑在内,不再将区分器的搜索和对分组密码的分析看作两个独立的过程,从而使得搜索到的区分器能够具有明显的分析优势,避免了在区分器搜索阶段的资源浪费,提高了区分器的搜索效率。[0066] 为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。[0067] 本申请实施例提供的分组密码的区分器获得方法的执行主体可以为服务器或者终端设备等能够具备一定计算能力的电子设备。其中,终端设备例如可以为手机、平板电脑(PAD)、个人计算机(Personalcomputer,PC)以及可穿戴设备等。服务器例如可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器,但并不局限于此。[0068] 下面结合说明书附图介绍本申请实施例提供的技术方案。[0069] 请参见图1,为本申请实施例提供的分组密码的区分器获得方法的流程示意图,该方法的流程介绍如下。[0070] 步骤S1:获取分组密码,确定所述分组密码的区分器对应的前置最大扩展轮数和后置最大扩展轮数。[0071] 本申请实施例中,分组密码算法是每次处理特定长度的一块数据的一类密码算法,这里的“一块”就称为分组块,其中,一个分组块的比特数就称为分组长度。分组密码例如可以为使用广泛的AES算法和SM4算法等。以AES算法为例,其分组长度为128比特。[0072] 本申请实施例中,分组密码通过以下映射进行表示:[0073][0074][0075] 其中, 表示加密过程的映射, 表示解密过程的映射,记F2为二元域, 和 分别为F2上的n和m维向量空间, SK为密钥空间。[0076] 通常而言,一个区分器的组成要素可以包括输入值、输出值、长度及概率,其中,长度表示区分器所包含的轮函数数目,概率表示区分器的输入值传播到输出值的概率。[0077] 参见图2所示,为获得前置最大扩展轮数和后置最大扩展轮数的流程示意图。[0078] 步骤S101:获取所述分组密码的多个分组块,每个分组块包括多个比特。[0079] 具体的,分组密码的数学模型是将明文消息编码表示后的数字序列,划分成长度为n的组,每组分别在密钥的控制下变换成等长的输出数字序列。[0080] 步骤S102:针对多个分组块中的任意两个分组块,对各自包括的多个比特进行差分操作,获得所述任意两个分组块之间的差分值。[0081] 本申请实施例中,差分操作可以采用任意可能的差分方式来进行,例如可以采用异或差分的方式。[0082] 以异或差分的方式为例,可以采用如下异或差分公式计算两个分组块之间的差分值:[0083][0084] 其中,m1、m2为两个分组块中的两个比特位,△m表示差分值。例如A分组块A为[0110],B分组块B为[0011],对A和B中的比特位从始至终依次对应作差分,则AB分组块的差分值为[0101]。[0085] 步骤S103:基于差分值标记所述任意两个分组块中每个分组块的内部比特状态,所述内部比特状态包括每个分组块中的每个比特的单比特状态,所述单比特状态包括第一比特状态和第二比特状态。[0086] 本申请实施例中,每个分组块的内部比特状态的单比特状态包含两种状态,第一比特状态和第二比特状态,第一比特状态用于表征活跃状态,第二比特状态表征非活跃状态。以内部比特状态若有128比特为例,单个比特都可以对应一种比特状态,或是第一状态,或是第二状态,当内部状态的所有比特都属于第一状态,即活跃状态时,那么共拥有128个单比特活跃状态。[0087] 在实际应用时,为了方便表示,可以分别用1和0进行表示两种不同的状态。例如,可以采用1表示活跃状态,采用0表示非活跃状态。[0088] 步骤S104:对包含第一比特状态的内部比特状态进行多轮轮函数逆向操作,直至所有单比特状态为第一比特状态,并基于所述轮函数逆向操作的轮数确定所述前置最大扩展轮数。[0089] 本申请实施例中,分组块中两个比特位作差分,例如A分组块[0110],B分组块[0011],AB分组块的差分值为[0101],当分组块A中和分组块B中比特位可能的差分值一定为0时,将其标记为0,即第二比特状态,如A和B分组块中的第一个比特位。分组块A中和分组块B中比特位可能的差分值为0或1,将其标记为1,即第一比特状态,如分组块A中和分组块B中的第二、三、四比特位。通过使用差分状态对内部状态进行标记,可以更方便的确定差分值在轮函数中的传播性质,从而提高区分器的搜索效率。[0090] 具体的,在对标记后包含第一比特状态的内部比特状态每一次进行轮函数逆向操作后,记录轮函数的轮数,若经过R轮轮函数逆向操作后内部比特状态均为第一比特状态,那么该区分器的前置最大扩展轮数r1即为R?1。[0091] 步骤S105:对包含第一比特状态的内部比特状态进行多轮轮函数正向操作,直至所有单比特状态为第一比特状态,并基于所述轮函数逆向操作的轮数确定所述后置最大扩展轮数。[0092] 与步骤S104类似的,对包含第一比特状态的内部比特状态进行多轮轮函数正向操作,直至所有单比特状态为第一比特状态,基于轮函数正向操作的轮数确定后置最大扩展轮数,若最多经过L轮轮函数正向操作后内部比特状态均为第一比特状态后,则该区分器的后置最大扩展轮数为r2即为L?1。[0093] 参见图3所示,为本申请实施例提供的轮函数正向操作的流程示意图。[0094] 步骤S1051:对所述每个分组块中的第一比特状态进行矩阵排列,得到相应的状态矩阵。[0095] 以128位比特为例,按照128为单位进行分组,每组包含16个字节,排成一个4×4矩阵,AES在该4×4矩阵中进行,此矩阵称为状态矩阵。在每一轮轮函数操作后,状态矩阵的值变化一次,轮函数执行结束以后状态矩阵的值即为加密后的密文值,从而得到密文矩阵。[0096] 步骤S1052:进行字节替换处理,即从所述状态矩阵的第一个字节开始,通过预设的S盒将状态矩阵中的每一个字节替换成另外一个字节,得到替换后的第一状态矩阵。[0097] 其中,S盒是一种代换表,例如可以是16×16字节组成的矩阵,包含了8位值所能表达的256种可能的变换,状态矩阵中的每个字节的高4位作为行值,低4位作为列值,取出S盒中对应行列交叉处的元素作为输出。[0098] 步骤S1053:对第一状态矩阵进行行移位处理,得到第二状态矩阵。[0099] 具体的,在进行行移位处理时,第n行左移n个比特。以4×4矩阵为例,第0行不移位,第1行向左移位1个字节,第2行向左移位2个字节,第3行向左移位3个字节,行移位后的字节组合成一个新的4×4矩阵,为第二状态矩阵。[0100] 步骤S1054:对得到的第二状态矩阵进行列混合变换,即经过行移位后的第二状态矩阵与固定的预设矩阵相乘,得到混淆后的第三状态矩阵。[0101] 具体的,以4×4矩阵为例,[0102][0103] 步骤S1055:对列混合变换后得到的第三状态矩阵进行轮密钥加处理。[0104] 其中,轮密钥加处理是将轮密钥和第三状态矩阵中的数据来进行逐位异或运算,所述异或运算是每轮迭代的加密函数与状态矩阵进行运算,加密函数E_k(m)由子密钥k_i控制的轮函数F(m,k_i)=F_(k_i)(m)迭代n次生成,即:[0105] E_k(m)=F_(k_n)?F_(k_(n?1))…F_(k_2)·F_(k_1)(m)[0106] 例如,以128位比特为例,轮密钥包含着4个字节,每个字节为32位比特。通过将轮密钥每轮迭代到状态矩阵上,进行异或运算,最后得到由轮密钥加处理后的状态矩阵。[0107] 执行上述所有过程,即字节替换、行移位处理、列混合变换、轮密钥加为一轮轮函数正向操作过程。[0108] 对于轮函数逆向操作,即执行上述每个过程中的逆向操作过程,在字节替换处理中,定义了逆S盒;行移位处理中逆向操作是将状态矩阵的每一行执行相反的移位操作;列混合变换中逆向操作即逆变换固定的预设矩阵同正变换固定的预设矩阵的乘积为单位矩阵,除此之外,其他操作过程无变化;需要说明的是在轮密钥加中的逆向操作同正向操作的轮密钥加运算是完全一致的,因为异或运算的逆操作是其本身。[0109] 区分器的前置扩展轮数和后置扩展轮数为执行R轮上述轮函数操作过程后,分组块内部比特状态包含的所有单比特状态为第一状态时,所进行的轮函数操作次数R。[0110] 区分器的前置最大扩展轮数为执行R轮上述轮函数逆向操作后,分组块内部比特状态的所有单比特状态为第一状态时所需要的轮函数操作次数,即前置最大扩展轮数r1为R?1。[0111] 区分器的后置最大扩展轮数为执行L轮上述轮函数正向操作后,分组块内部比特状态的所有单比特状态为第一状态时所需要的轮函数操作次数,即后置最大扩展轮数r2为L?1。[0112] 步骤S2:基于所述前置最大扩展轮数确定所述区分器的输入值集合以及基于所述后置最大扩展轮数确定所述区分器的输出值集合。[0113] 具体的,遍历所有可能的值作为候选输入值,针对多个候选输入值中的每个候选输入值,分别进行前置最大扩展轮数对应的轮函数逆向操作,获得候选输入值对应的结果状态,若结果状态中包含第二比特状态,则将候选输入值放入区分器的输入值集合。[0114] 类似的,遍历所有的可能的值作为候选输出值,针对多个候选输出值中的每个候选输出值,分别进行后置最大扩展轮数对应的轮函数正向操作,获得候选输出值对应的结果状态,若结果状态中包含第二比特状态,则将候选输出值放入区分器的输出值集合。[0115] 以上述活跃状态以1表示,非活跃状态以0表示为例,可以遍历所有可能的初始输入值,对每一个初始输入值,进行r1轮轮函数逆向操作,若结果状态中含有状态值为0的比特状态,则该初始输入值符合条件,放入输入值集合,同时,遍历所有可能的初始输出值,对每一个初始输出值,进行r2轮轮函数正向操作,若结果状态中含有状态值为0的比特状态,则该初始输出值符合条件,放入输出值集合。[0116] 本申请实施例中,通过前置最大扩展轮数确定区分器的输入值集合,以及通过后置最大扩展轮数确定区分器的输出值集合,在区分器搜索阶段便将决定分组密码分析效果的影响因素(输入值、输出值)纳入其中,不再将区分器的搜索和对分组密码的分析看作两个独立的过程,从而使得搜索到的区分器能够具有明显的分析优势,避免了在区分器搜索阶段的资源浪费。[0117] 步骤S3:根据所述输入值集合以及输出值集合构建所述区分器的初始搜索值集合。[0118] 将所述输入值集合中的每一个元素与所述输出值集合中的每一个元素两两进行组合,得到多个元素组合,基于所述多个元素组合构建所述初始搜索值集合。[0119] 例如,输入值集合中包含有n个元素{a1,a2,...,an},输出值集合中包含有m个元素{b1,b2,...,bm},将输出值集合中的每个元素和输出值集合中的每个元素进行配对,则最后生成的初始搜索值集合共n*m个元素,即{{a1,b1},{a1,b2},...,{a1,bm},...,{an,b1},{an,b2},...,{an,bm}},通过配对输入值集合和输出值集合中的每个元素,可以得到更加丰富的搜索值集合,扩展区分器搜索的范围。[0120] 步骤S4:基于所述初始值搜索集合,构建所述分组密码的区分器。[0121] 参见图4所示,为构建区分器的流程示意图。[0122] 步骤S401:获得所述区分器包含的轮函数数目r。[0123] 具体的,区分器包含的轮函数数目r,也称为区分器的长度,即区分器的输入值到输出值所需要的轮函数数目,r值可以任意选定,或者通过设定的计算方法计算得到。[0124] 步骤S402:针对所述初始搜索值集合包含的各个元素组合,分别进行如下操作:对一个元素组合中的输入值和输出值作为相应的候选区分器的输入值和输出值,针对所述候选区分器进行所述轮函数数目r对应次数的搜索,确定由所述输入值传播到所述输出值的传播概率。[0125] 由于各个元素组合的操作过程是类似的,因此这里一个元素组合为例进行介绍。[0126] 本申请实施例中,通过预设的搜索方法,按照搜索值元素中输入值到输出值的传播路径进行区分器的搜索。所述预设的区分器搜索方法可以为MILP方法和SAT方法等。以MILP方法为例,确定区分器包含的轮函数数目,即其长度r,r可以任意选定。遍历搜索值集合中的所有元素,对于其中每一个元素{ai,bj},将ai设定为区分器的输入值,bj设定为区分器的输出值,通过输入值传播到输出值的概率进行区分器的搜索,输出每个元素{ai,bj}中,输入值ai传播到输出值bj的概率,计算区分器集合中所有区分器对应传播路径的平均?n概率,其中,传播路径的平均概率为当ai传播到bj时若有n比特,平均概率则为2 ;当初始值ai可以以高于平均概率经过r轮轮函数传播到输出值bj时,则成功搜索到了一条有分析优势的区分器,即 同时,通过确定轮函数的数目来进行路径搜索,不会使得区分器搜索时轮函数的数量激增,从而节省算力,提高区分器的搜索效率。[0127] 步骤S403:当所述传播概率大于设定的传播率阈值时,确定所述候选区分器为有效的区分器,汇总所有传播路径上的有效区分器得到区分器集合。[0128] 本申请通过确定区分器的前置最大扩展轮数,以及区分器的后置最大扩展轮数,基于所述前置最大扩展轮数确定所述区分器的输入值集合,以及基于所述后置最大扩展轮数确定所述区分器的输出值集合,在区分器搜索阶段便将决定分组密码分析效果的影响因素(输入值、输出值)纳入其中,不再将区分器的搜索和对分组密码的分析看作两个独立的过程,从而使得搜索到的区分器能够具有明显的分析优势,避免了在区分器搜索阶段的资源浪费,提高了区分器的搜索效率。同时,基于搜索值集合对区分器进行路径搜索,由于搜索值集合中的元素确定了输入输出值,不会使得区分器搜索时轮函数的数量激增,从而节省算力,进一步的提高区分器的搜索效率。[0129] 请参见图5,基于同一发明构思,本申请实施例还提供了一种分组密码的获得装置50,该装置包括:[0130] 扩展轮数确定单元501,用于获取分组密码,确定所述分组密码的区分器对应的前置最大扩展轮数和后置最大扩展轮数;[0131] 输入输出确定单元502,用于基于所述前置最大扩展轮数确定所述区分器的输入值集合;以及,基于所述后置最大扩展轮数确定所述区分器的输出值集合;[0132] 搜索值构建单元503,用于根据所述输入值集合及所述输出值集合构建所述区分器的初始搜索值集合;其中,所述初始搜索值集合中的每一个元素包括所述输入值集合中的一个输入值和所述输出值集合中的一个输出值;[0133] 区分器搜索单元504,用于基于所述初始搜索值集合,构建所述分组密码的区分器。[0134] 可选的,所述扩展轮数确定单元501,具体用于:[0135] 获取所述分组密码的多个分组块,每个分组块包括多个比特;[0136] 针对所述多个分组块,执行如下操作:[0137] 针对任意两个分组块,对所述任意两个分组块各自包括的多个比特进行差分操作,获得所述任意两个分组块之间的差分值;[0138] 基于所述差分值标记所述任意两个分组块中每个分组块的内部比特状态,所述内部比特状态包括每个分组块中的每个比特的单比特状态,所述单比特状态包括第一比特状态和第二比特状态;[0139] 对包含第一比特状态的内部比特状态进行多轮轮函数逆向操作,直至所有单比特状态为第一比特状态,并基于所述轮函数逆向操作的轮数确定所述前置最大扩展轮数;[0140] 对包含第一比特状态的内部比特状态进行多轮轮函数正向操作,直至所有单比特状态为第一比特状态,并基于所述轮函数正向操作的轮数确定所述后置最大扩展轮数。[0141] 可选的,所述扩展轮数确定单元501,具体用于:[0142] 对所述每个分组块中的第一比特状态进行矩阵排列,得到相应的第一状态矩阵;[0143] 针对所述第一状态矩阵进行多轮轮函数正向操作,直至每个分组块中所有单比特状态为第一比特状态;其中,每一次轮函数正向操作包括如下步骤:[0144] 从所述第一状态矩阵中第一个状态值开始,依次针对每个状态值从预设的置换盒中查找替换值,并以所述替换值替换相应状态值;[0145] 针对所述第一状态矩阵中的每一行进行左循环移位操作,获得第二状态矩阵;其中,第n行左移n个比特;[0146] 将所述第二状态矩阵与预设矩阵相乘,得到第三状态矩阵;[0147] 对得到的第三状态矩阵进行轮密钥加处理,得到目标状态矩阵;[0148] 若所述目标状态矩阵中包含第二比特状态,执行下一次轮函数正向操作。[0149] 可选的,所述输入输出确定单元502,具体用于:[0150] 获得所述区分器对应的多个候选输入值;[0151] 针对所述多个候选输入值,分别进行如下操作:[0152] 针对一个候选输入值,进行所述前置最大扩展轮数对应的轮函数逆向操作,获得所述一个候选输入值对应的结果状态;[0153] 若所述结果状态中包含第二比特状态,则将所述一个候选输入值添加至所述区分器的输入值集合。[0154] 可选的,所述输入输出确定单元502,具体用于:[0155] 获得所述区分器对应的多个候选输出值;[0156] 针对一个候选输出值,进行所述后置最大扩展轮数对应的轮函数正向操作,获得所述一个候选输出值对应的结果状态;[0157] 若所述结果状态中包含第二比特状态,则将所述一个候选输出值添加至所述区分器的输出值集合。[0158] 可选的,所述搜索值构建单元503,具体用于:[0159] 将所述输入值集合中的每一个元素与所述输出值集合中的每一个元素两辆进行组合,得到多个元素组合;[0160] 基于所述多个元素组合,构建所述初始搜索值集合。[0161] 可选的,所述区分器搜索单元504,具体用于:[0162] 获得所述区分器包含的轮函数数目;[0163] 针对所述初始搜索值集合包括的各个元素组合,分别进行如下操作:[0164] 针对一个元素组合,将所述一个元素组合中的输入值和输出值作为相应候选区分器的输入值和输出值,针对所述候选区分器进行所述轮函数数目对应次数的搜索,确定由所述输入值传播至所述输出值的传播概率;[0165] 当所述传播概率大于设定传播率阈值,则确定所述候选区分器为有效区分器。[0166] 通过上述装置,确定区分器的前置最大扩展轮数,以及区分器的后置最大扩展轮数,基于所述前置最大扩展轮数确定所述区分器的输入值集合,以及基于所述后置最大扩展轮数确定所述区分器的输出值集合,在区分器搜索阶段便将决定分组密码分析效果的影响因素(输入值、输出值)纳入其中,不再将区分器的搜索和对分组密码的分析看作两个独立的过程,从而使得搜索到的区分器能够具有明显的分析优势,避免了在区分器搜索阶段的资源浪费,提高了区分器的搜索效率。同时,基于搜索值集合对区分器进行路径搜索,由于搜索值集合中的元素确定了输入输出值,不会使得区分器搜索时轮函数的数量激增,从而节省算力,进一步的提高区分器的搜索效率。[0167] 该装置可以用于执行本申请各实施例中所示的方法,因此,对于该装置的各功能模块所能够实现的功能等可参考前述实施例的描述,不多赘述。[0168] 请参见图6,基于同一技术构思,本申请实施例还提供了一种计算机设备60,该计算机设备60可以为终端设备或服务器,该计算机设备60可以包括存储器601和处理器602。[0169] 所述存储器601,用于存储处理器602执行的计算机程序。存储器601可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据计算机设备的使用所创建的数据等。处理器602,可以是一个中央处理单元(centralprocessingunit,CPU),或者为数字处理单元等等。本申请实施例中不限定上述存储器601和处理器602之间的具体连接介质。本申请实施例在图6中以存储器601和处理器602之间通过总线603连接,总线603在图6中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线603可以是外设部件互连标准(peripheralcomponentinterconnect,简称PCI)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称EISA)总线等;被设置为实现所述存储器601以及至少一个处理器602等之间的连接通信。可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。[0170] 存储器601可以是易失性存储器(volatilememory),例如随机存取存储器(random?accessmemory,RAM);存储器601也可以是非易失性存储器(non?volatilememory),例如只读存储器,快闪存储器(flashmemory),硬盘(harddiskdrive,HDD)或固态硬盘(solid?statedrive,SSD)、或者存储器601是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器601可以是上述存储器的组合。[0171] 处理器602,用于调用所述存储器601中存储的计算机程序时执行本申请各实施例中设备所执行的方法。[0172] 计算机设备还可以包括通信接口,用于与其他设备之间的通信,包括网络接口和用户接口。可选地,所述网络接口可以包括有线接口和/或无线接口(如WI?FI接口、蓝牙接口等),通常用于在该电子设备与其他电子设备之间建立通信连接。所述用户接口可以是显示器(Display)、输入单元(比如键盘(Keyboard)),可选地,用户接口还可以是标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(OrganicLight?EmittingDiode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备中处理的信息以及用于显示可视化的用户界面。[0173] 图6仅示出了具有部件的计算机设备,本领域技术人员可以理解的是,图6示出的结构并不构成对所述计算机设备的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。[0174] 例如,尽管未示出,所述计算机设备还可以包括给各个部件供电的电源(比如电池),优选地,电源可以通过电源管理装置与所述至少一个处理器逻辑相连,从而通过电源管理装置实现充电管理、放电管理、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述电子设备还可以包括多种传感器、蓝牙模块、Wi?Fi模块等,在此不再赘述。[0175] 进一步地,所述电子设备还可以包括网络接口,可选地,所述网络接口可以包括有线接口和/或无线接口(如WI?FI接口、蓝牙接口等),通常用于在该电子设备与其他电子设备之间建立通信连接。[0176] 可选地,该计算机设备还可以包括用户接口,用户接口可以是显示器(Display)、输入单元(比如键盘(Keyboard)),可选地,用户接口还可以是标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(OrganicLight?EmittingDiode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备中处理的信息以及用于显示可视化的用户界面。[0177] 在一些可能的实施方式中,本申请提供的方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在计算机设备上运行时,所述程序代码用于使所述计算机设备执行本说明书上述描述的根据本申请各种示例性实施方式的方法中的步骤,例如,所述计算机设备可以执行本申请各实施例中设备所执行的方法。[0178] 所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD?ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。[0179] 尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。[0180] 显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

专利地区:北京

专利申请日期:2022-03-04

专利公开日期:2024-11-29

专利公告号:CN114614973B


以上信息来自国家知识产权局,如信息有误请联系我方更正!
该专利所有权非本平台所有,我方无法提供专利权所有者联系方式,请勿联系我方。
电话咨询
到底部
搜本页
回顶部
开云优惠体育(中国)官网 — 开云优惠体育app下载