一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

确定加密散列函数的原像元素的方法、计算机程序和数据处理系统与流程

2022-06-01 07:48:35 来源:中国专利 TAG:


1.本公开涉及用于特别是在如量子退火设备等量子计算机上确定加密散列函数的原像元素的技术。


背景技术:

2.反转加密散列函数涉及对它们各自的加密强度的分析。对于散列函数h:x

y,其中, x是一组输入值(输入位序列、报文),并且y是一组输出值(散列值、固定长度的位序列),y中元素y的大小|y|通常比|x|小得多。因此,散列函数不是双射的,并且等式
3.h(x)=y
ꢀꢀꢀ
(1)
4.一般会有很多解,即,集合h-1
(y)={x:h(x)=y}(与某个散列值y相对应的原像元素或逆像元素的集合)可能包含许多元素。尽管如此,对于“强”散列函数来说,搜索这些元素中的任何一个都是计算上的难题。近年来,散列函数已被用作区块链技术的核心要素。计算能力消耗最大的阶段,也就是所谓的挖掘,也可以理解为求解以下不等式:
5.h({x,x
fixed
})≤y,
ꢀꢀꢀ
(2)
6.其中,{x,x
fixed
}是散列函数h的参量,所述参量包括未知部分x(所谓的随机数,通常是4字节字段)和带有区块头的固定剩余部分x
fixed
,并且散列值y对应于预定义的阈值。等式(2)的左侧和右侧是位序列,但也可以解释为整数的二进制表示。这样,根据等式(2)得出,散列值y的预定义数量的前导位都等于零。在例如散列函数h是128位散列函数的情况下,散列值y可以写成(有限)序列y=(yk)
k=1,

,128
,其中,ym是序列 (yk)
k=1,

,128
中的第一个(从左起)非零位。因此,等式(2)等价于
7.[h({x,x
fixed
})k=0(k=1:(m-1)),
ꢀꢀꢀ
(2’)
[0008]
其中,散列函数h的(m-1)个前导位等于零。这样,一组原像元素中的一个可以被确定。
[0009]
对由加密散列函数处理的输入的访问或修改有两种主要类型:碰撞攻击和原像攻击。在碰撞攻击中,目标是找到两个不同的报文x1,x2使得h(x1)=h(x2)。这种对md5加密散列函数的攻击是已知的,并且需要大约2
18
的md5压缩,这仍然比穷举搜索(需要2
64
的md5压缩)要少得多。因此,这种攻击可以在普通pc上进行。另一方面,原像攻击更复杂,但也比碰撞攻击更强大。在原像攻击期间,要为给定的y确定x,使得h(x)=y。对于md5,这种攻击目前仅是理论上的,即,虽然需要比穷举搜索更少的md5压缩(2
123.4
与2
128
),但已知的原像攻击实际上仍然不可能在可获得的计算机上完成。


技术实现要素:

[0010]
本公开的目的是提供一种用于以高效且节约资源的方式确定与由加密散列函数处理的散列值相对应的原像元素的方法。
[0011]
为了求解该问题,提供了根据独立权利要求1所述的一种在数据处理系统中执行
的用于确定加密散列函数的原像元素的方法。进一步地,分别提供了根据独立权利要求14 和15所述的一种计算机程序和一种数据处理系统。在从属权利要求中公开了其他实施例。
[0012]
根据一个方面,提供了一种在数据处理系统中执行的用于确定加密散列函数的原像元素的方法。所述方法包括:提供加密散列函数的输出值以及所述加密散列函数的散列函数运算;对于散列函数运算中的每一个,确定至少一个散列函数关系,所述散列函数关系包括等式和/或不等式;以及确定优化问题。所述优化问题包括所述输出值、指配给所述加密散列函数的迭代的至少一个约束(优化关系)、以及优化变量,所述优化变量包括所述加密散列函数的内部状态变量以及至少一个原像变量。所述至少一个约束是根据所述至少一个散列函数关系确定的、并且包括指配给先前迭代的先前内部状态变量。所述方法进一步包括求解所述优化问题并根据所述至少一个原像变量的优化值确定所述加密散列函数的原像元素。
[0013]
根据另一方面,提供了一种包括指令的计算机程序和/或计算机程序产品,当所述计算机程序和/或所述计算机程序产品在数据处理系统中执行时,所述指令使所述数据处理系统执行用于确定加密散列函数的原像元素的方法的步骤。
[0014]
根据另一方面,提供了一种数据处理系统,所述数据处理系统被配置为通过执行以下步骤来确定加密散列函数的原像元素:提供加密散列函数的输出值以及所述加密散列函数的散列函数运算;对于所述散列函数运算中的每一个,确定至少一个散列函数关系,所述散列函数关系包括等式和/或不等式;确定优化问题;以及求解所述优化问题并根据所述至少一个原像变量的优化值确定所述加密散列函数的原像元素。所述优化问题包括所述输出值、指配给所述加密散列函数的迭代的至少一个约束、以及优化变量,所述优化变量包括所述加密散列函数的内部状态变量以及至少一个原像变量。所述至少一个约束是根据所述至少一个散列函数关系确定的、并且包括指配给先前迭代的先前内部状态变量。
[0015]
所述至少一个散列函数关系可以包括指配给紧接在前的迭代的先前内部状态变量。所述优化问题可以包括多个约束。所述加密散列函数可以包括多次迭代,特别是48、64、 80或128次迭代。优选地,可以将所述约束中的每一个指配给所述迭代中的一个。进一步地,可以为所述迭代中的每一个指配所述约束中的至少一个。可以为所述迭代中的每一个指配所述约束中的至少一个,每个约束可以包括指配给紧接在前的迭代的先前内部状态变量中的至少一个内部状态变量。约束可以包括优化等式、优化不等式和目标函数中的至少一者。值得注意的是,当对于优化问题采用等式(1)或等式(2)时,可能不需要明确的目标函数(例如,要将其最小化)。因此,优化问题可以包括虚设零常数目标函数。所述多个约束中的一些也可以转换为目标函数元素作为惩罚项。
[0016]
当确定优化问题的最小值和/或最大值时,可以假定所述至少一个原像变量的优化值。优化问题可以包括多个原像变量,例如16个原像变量。可以通过级联原像变量的优化值来确定原像元素。最小值和/或最大值可以是全局的和/或局部的。
[0017]
加密散列函数的输出值可以是散列值(摘要(digest)),优选地大小为128或160 位。
[0018]
散列函数运算可以包括以下各项中的至少一项:非线性布尔函数、左位旋转、右位旋转以及模加法,特别是以下各项中的至少一项
[0019]
f(b,c,d)=(b∧c)∨(!b∧d),
[0020]
g(b,c,d)=(b∧d)∨(c∧!d),
[0021][0022]

[0023]
j(b,c,d)=(b∧c)∨(b∧d)∨(c∧d)。
ꢀꢀꢀ
(3)
[0024]
散列函数运算中的至少一个、优选地函数运算中的每一个可以被指配给加密散列函数的迭代和/或轮次。
[0025]
左位旋转可以包括将位向左旋转一个位置(place)或多个位置。右位旋转可以包括将位向右旋转一个位置或多个位置。旋转位置的数量可以取决于指配给左位旋转和/或右位旋转的迭代和/或轮次。
[0026]
所述方法可以包括:确定所述散列函数运算中的至少一个的初等运算;对于所述初等运算中的每一个,确定至少一个初等关系,所述初等关系包括初等等式和/或初等不等式;以及根据所述至少一个散列函数运算的初等关系确定所述至少一个散列函数关系。优选地,所述初等运算可以包括not、and、or和xor中的至少一种。
[0027]
在实施例中,所有散列函数关系都可以根据初等关系来确定。可替代地,根据散列函数运算直接确定散列函数关系中的至少一个或全部。
[0028]
所述散列函数关系中的所述至少一个和/或所述初等关系中的至少一个可以包括双线性等式和/或线性等式,所述双线性等式和/或线性等式优选地包括连续变量、二值变量和整型变量中的至少一种。
[0029]
所述散列函数关系中的所述至少一个和/或所述初等关系中的所述至少一个可以具有形式其中,二值变量和/或整型变量包括和并且连续变量包括b、和其中,q是散列函数运算中的一个和/或初等运算中的一个。
[0030]
所述连续变量和/或所述二值变量中的至少一者可以通过求解初始优化问题(辅助优化问题)、优选地是约束二次问题来确定。
[0031]
具体地,变量b、和可以通过求解初始优化问题来确定。初始优化问题可以包括(c
1-1)2形式的目标函数,其中,c1是的第一分量。所述形式允许归一化。初始优化问题可以包括辅助约束,所述辅助约束包括和中的至少一项。具体地,初始优化问题可以是
[0032][0033]
这里,f表示一组可行的配置,并且na表示等式(4)中辅助变量的数量。
[0034]
所述散列函数关系中的所述至少一个和/或所述初等关系中的所述至少一个(优选地通过初始优化问题确定)可以包括线性等式,所述线性等式具有连续系数和二值变量,所述连续系数优选地是整值系数。
[0035]
例如,所述初等关系中的至少一个可以包括x y-1=0、x y-2z-a=0、x y-2z a=0和x y-z-2a=0中的至少一种,其中,x、y、z和a是二值变量。进一步地,所述散列函数关系中的至少一个可以包括x 3y 2z-6f 2a
0-3a1 2a2=0、 3x 2y-z-6g-3a0 2a1 2a2=0、x y z-h-2a0=0、x 2y-z-2i a
0-4a1=0和x y z-2j-a=0中的至少一种,其中,x、y、z、f至j、以及
a0至a2是二值变量。
[0036]
所述初等关系中的至少一个还可以包括以下初等不等式集合中的至少一个集合: {z≤x,z≤y,z≥x y-1};{x≤z,y≤z,z≤x y,z≤1};和 {z≤x y,z≥x-y,z≥y-x,z≤2-x-y},其中,x和y是二值变量,并且 z是连续变量。散列函数关系的不等式可以根据所述初等不等式集合中的至少一个集合来确定。
[0037]
在求解优化问题时,初始内部状态值和/或最终内部状态值(优选地被指配给最后一次迭代)可以是固定的。优化变量可以不具有指配给最后一次迭代的内部状态变量。
[0038]
所述方法可以进一步包括在求解优化问题之前至少部分地预求解优化问题。通过预求解优化问题,可以减少约束和/或优化变量的数量。预求解可以包括确定优化问题的值、优选地是最优值。预求解还可以包括确定至少一个替代约束,所述至少一个替代约束替代所述约束中的至少一个其他约束。
[0039]
所述优化问题可以是混合整数线性规划(milp)、混合整数非线性规划(minlp) 或二次无约束二元优化(qubo)问题。所述优化问题也可以是约束整数规划。qubo问题的目标函数可以根据为milp和/或minlp确定的约束来确定,优选地通过对约束求平方来确定。所述优化问题可以包括离散搜索空间。
[0040]
所述优化问题可以(至少部分地)在数据处理系统的量子处理设备中求解,所述量子处理设备优选地是量子退火设备。
[0041]
例如,量子退火设备可以是d-wave退火设备。所述优化问题也可以在通用量子计算机上求解。为此,可以采用量子近似优化算法来求解所述优化问题。
[0042]
可替代地,所述优化问题可以仅在经典处理设备(优选地,数据处理系统中的经典处理设备)中求解。经典处理设备可以包括处理器和存储器。确定初等关系、确定散列函数关系、确定优化问题和/或根据所述至少一个原像变量的优化值确定加密散列函数的原像元素,可以在经典数据处理设备中执行,特别是由经典处理设备的处理器执行。
[0043]
数据处理系统可以包括量子处理设备,特别是量子退火设备。可替代地,量子处理设备可以与数据处理系统分离。
[0044]
所述约束中的至少一个、优选地所有约束可以优选地从经典处理设备(特别是从经典处理设备的存储器)被传送到量子处理设备。传送所述约束可以包括在优化期间传送固定值,例如,加密散列函数的输出值。
[0045]
所述优化变量可以被指配给量子态的叠加和/或优化器可以是所述优化问题的最小值、优选地全局最小值。
[0046]
具体地,优化变量的每个可能的值分配可以对应于量子态(优选地由量子处理设备生成的)中的一个。在初始时刻,叠加的每个量子态可以具有相同的权重。叠加可以由量子处理设备根据从约束确定的规约而随时间演化。规约例如可以由哈密顿量表示。所述至少一个原像变量的优化值(分配)可以根据最终时刻的叠加来确定。在最终时刻,量子态中的优化量子态(对应于优化值分配)可能具有叠加的量子态中的最大权重。优化量子态例如可以对应于哈密顿量的基态。
[0047]
所述至少一个原像变量的优化值可以通过确定优化量子态来确定。优化值可以传送到经典数据处理设备。这样,可以在经典数据处理设备中、特别是在经典处理设备的存储器中提供原像元素。
[0048]
加密散列函数可以提供信息安全性,优选地用于认证和/或数据损坏检测。进一步地,加密散列函数可以是md4、md5、sha-1和sha-2中的一种。
[0049]
所述原像元素可以包括要进行数字签名和/或验证(优选地用于数据完整性和/或工作证明)的报文和/或数据文件。通过工作证明,可以确认区块链中的交易和/或可以生成区块链的新区块。
[0050]
上述与用于确定加密散列函数的原像元素的方法相关的实施例可以相应地被提供给被配置为确定加密散列函数的原像元素的数据处理系统。
附图说明
[0051]
在下文中,通过示例的方式参考附图来描述实施例,在附图中:
[0052]
图1示出了md5散列函数的图形表示。
[0053]
图2示出了sha-1散列函数的图形表示。
[0054]
图3示出了用于确定加密散列函数的原像元素的方法的图形表示。
[0055]
图4示出了数据处理系统的图形表示。
具体实施方式
[0056]
图1示出了md5散列函数的图形表示。散列函数的输入数据(例如报文)被划分为具有固定区块长度(在md5情况下:32位)的报文区块(原像数据区块)mk,所述报文区块对应于散列函数的不同迭代k。散列函数包括每次迭代k的内部状态,每个内部状态由四个32位区块ak,bk,ck,dk组成。
[0057]
从初始内部状态(a0,b0,c0,d0)开始,将散列函数运算应用于第一次迭代内的初始内部状态(a0,b0,c0,d0),从而产生第一内部状态(a1,b1,c1,d1),这进而为应用散列函数运算的第二次迭代提供了起点。图1所示的图图示了针对迭代k对散列函数运算的应用。在每次迭代k内,报文区块mk被处理并被用于修改内部状态。在达到最大迭代次数(在md5 的情况下为64)后,将最后一个内部状态的32位区块级联,从而产生加密散列函数的输出值。
[0058]
md5散列函数(以及大多数广泛使用的加密散列函数,比如md4、sha-1和sha
‑ꢀ
2)包括以下散列函数运算:
[0059]-基于按位逻辑运算的非线性布尔函数fk,
[0060]-16位、32位整数模2
16
或2
32
的加法,以及
[0061]-将位序列移位多个位。
[0062]
md5散列函数的64次迭代分为四个轮次,每个轮次16次运算。对于每个轮次,采用不同的布尔函数fk。kk由32位常数组成,并且对于每次迭代k都是不同的。符号<<<s表示左位旋转s个位置,其中,s对于每次迭代是不同的。符号表示模2
32
的加法。
[0063]
对于迭代k,从内部状态(a
k-1
,b
k-1
,c
k-1
,d
k-1
)开始,根据图1,对所述内部状态的值进行如下处理:
[0064]ak
=d
k-1

[0065]bk
=(fk(b
k-1
,c
k-1
,d
k-1
) a
k-1
m
μ(k-1)
k
k-1
)<<<sk b
k-1

[0066]ck
=b
k-1
,dk=c
k-1
·
ꢀꢀꢀ
(5)
[0067]
函数μ被定义为
[0068][0069]
取决于迭代k,将非线性布尔函数fk定义为
[0070][0071]
前16次迭代k构成第一轮次,随后的16次迭代构成第二轮次,再其次的16次迭代构成第三轮次,并且最后16次迭代构成最后的第四轮次。符号∨,∧和!分别表示逻辑运算or、and、xor和not。变量b、c和d是32位字。
[0072]
所有的ak,bk,ck,dk,m
μ
(k),kk可以被视为32位无符号整数。a
64
,b
64
,c
64
,d
64
是最终散列值的32位区块。mk(k∈0...15)构成要确定的输入报文并被用作优化变量(原像变量)。出现在等式(1)和(2)中的变量y是内部状态/数据区块a
64
,b
64
,c
64
,d
64
的并集。
[0073]
因此,确定给定散列值y的原像元素x对应于确定给定a
64
,b
64
,c
64
,d
64
的原像变量mk。
[0074]
图2是sha-1散列函数的对应图形表示,图示了针对迭代k对散列函数运算的应用。每次迭代的内部状态由五个32位数据区块ak,bk,ck,dk,ek组成。mk表示迭代k的报文区块,并且kk是每次迭代k的不同常数。
[0075]
将在md5和sha-1中使用的非线性布尔函数fk定义为:
[0076][0077]
虽然在md5和sha-1中只使用了上述布尔函数中的两个,但所有布尔函数都是对二值变量x和y的以下初等布尔运算的组合:!x,x∧y,x∨y,以及
[0078]
在位级别上,not运算只是等同于在0与1之间切换,即,!1=0并且!1=0。其他三个初等运算定义如下(注意,对应于模2加法):
[0079][0080]
左位旋转运算和加法模运算可以由以下公式表示。对n位数字x进行的s个位置的左移位旋转y被定义为
[0081]
y=x<<<s:=(x<<s)|(x>>(n-s))=x
·2s
mod 2n x//2
n-s

[0082]
其中,符号“//”表示向下取整除,并且符号“《《”和“》》”分别表示左移位和右移位。
右移位旋转被定义为:
[0083]
y=x>>>s=(x>>s)|(x<<(n-s))=x//2s x
·2n-s
mod 2n[0084]
模2n的加法的意思是加法、然后计算除以2n之后的余数。
[0085]
a.用于确定原像元素的方法
[0086]
如果等式(2)h({x,x
fixed
})≤y的左侧和右侧用二进制记数法表示,则当且仅当 h({x,x
fixed
})的前导位数量nz(由y的值预定义)等于0时,等式(2)成立。nz越大,就越难确定满足等式(2)的原像元素x。用(b)k来表示(二进制)有限序列b中的第k位,等式(2)可以表述为以下方程组:
[0087]
(h({x,x
fixed
}))k=0,k=1,...,nz·
ꢀꢀꢀ
(9)
[0088]
等式(1)h(x)=y和等式(9)可以进一步重新表述为具有二值变量的混合整数规划问题,特别是具有约束的混合整数线性规划问题(milp),所述约束包括线性等式和 /或线性不等式作为约束。
[0089]
等式(1)和等式(9)还可以表述为具有双线性函数并且对二值变量的可行值没有附加约束的二次无约束二元优化问题(qubo)。milp和qubo都可以使用可获得的经典求解器(例如,cplex、gurobi、xpress或scip)来求解,但也可以在量子处理设备中求解。具体地,可以采用如d-wave等量子退火设备来求解qubo。由于qubo可以包括离散搜索空间(其包含优化变量的所有可能值分配),因此可以并行地处理可能值分配(量子并行性),可以显著加速对原像元素的确定。
[0090]
求解方程组(比如等式(1)和(9))的任何明显加速都将大大提高特别是依赖数据完整性或工作证明的系统(如区块链系统)的性能。目前,随机数搜索可允许的时间限制为十分钟。特别是在这种情况下,量子退火设备可以有助于将所需的计算时间减少到几秒钟。
[0091]
图3示出了在数据处理系统中执行的用于确定加密散列函数的原像元素的方法的图形表示。
[0092]
在第一步骤10中,提供了加密散列函数(比如md5或sha-1)的如在等式(8)中定义的散列函数运算f,

,j。对于散列函数运算f,

,j中的每一个,确定一个对应的散列函数关系或多个对应的散列函数关系(步骤11)。每个散列函数关系可以是等式。可替代地,所述多个对应的散列函数可以是一组不等式。这些等式可以通过求解优选地较低维的辅助(初始)优化问题来确定。
[0093]
散列函数关系直接根据散列函数运算或经由可选的中间步骤11a来确定。在步骤11a 中,确定散列函数运算f,

,j的构成初等运算(包括not、and、or和/或xor),并且对于每个初等运算,确定对应的初等等式和/或一组初等不等式。
[0094]
在确定散列函数关系之后,确定优化问题(比如milp和qubo)(步骤12)。对于根据散列函数关系建立的散列函数的每次迭代,优化问题包括一组优化等式或优化不等式(约束)。优化问题进一步包括散列函数的内部状态(在md5的情况下为 (ai,bi,ci,di),并且在sha-1的情况下为(ai,bi,ci,di,ei))、以及作为优化变量的原像变量mi。初始内部状态(a0,b0,c0,

)和最终内部状态(对应于得到的散列值)是已知的,并且在优化期间保持固定。指配给某次迭代的约束包括指配给先前迭代的内部状态变量。
[0095]
在可选步骤12a中,可以减少约束和/或优化变量的数量。这可以通过预求解约束和 /或优化变量来实现。
[0096]
在确定优化问题之后,求解优化问题,并且根据优化问题的优化变量的优化集合(优化器)来确定散列函数的原像元素(步骤13)。
[0097]
图4示出了数据处理系统20的图形表示。数据处理系统20包括经典处理设备21。另外,数据处理系统20可以包括量子处理设备22,例如量子退火设备。可以在经典处理设备21与量子处理设备22之间交换数据。具体地,在采用d-wave量子退火设备的情况下,可以使用d-wave python api进行数据交换。步骤10至12优选地在经典处理设备21中执行。步骤13也可以在经典处理设备21中执行。然而,当在量子处理设备22 中求解优化问题时,步骤13显著加速。
[0098]
b.确定初等运算的初等关系
[0099]
根据步骤11a确定初等关系包括为初等运算!x=y,x∧y=z,x∨y=z,和中的每一个建立(初等)等式或一组不等式。
[0100]
考虑将具有基本布尔函数的等式归约为milp约束。
[0101]
对于二值变量x,y,not运算对应于包含减法运算的等式,从而得到以下等价:
[0102][0103]
更一般地,为了确定与其他初等运算(它们是布尔函数)中的一个相对应的线性方程组,求解相应的初始优化问题。在下文中,被定义为初等运算q、输入变量集合和输出的联合向量进一步地,f表示一组可行的配置。要确定的等式具有如下形式
[0104][0105]
其中,是二值系数辅助向量,b是连续系数,是连续系数向量,并且是二值变量向量。向量的转置表示为(
·
)
t
。值得注意的是,等式(11)的是线性的。
[0106]
线性系统必须满足:
[0107][0108]
要由初始优化问题确定的所寻求系数是连续变量和b。初始优化问题可以表述为milp,并且根据等式(12)确定如下。首先,选择等式(12)中辅助量的数量na。原始问题中的变量数量表示为n
x
。milp由一组辅助约束和一个目标函数组成。来自可行配置的每个向量产生具有连续变量和b以及na个新二值变量的辅助约束中的一个:
[0109][0110]
对于来自不可行配置的每个向量添加个新辅助约束:
[0111][0112]
辅助约束的数量呈指数增长,但大多数普及的散列函数具有的是只有少量输入变量和输出变量的函数。其包括md-散列函数和sha-散列函数。我们不考虑求和,因为我们为此创造了对应的线性等式。
[0113]
因此,建立具有个辅助约束(|f|和|f
*
|分别是可行配置和不可行配置的数量)和n
x
na 1 |f|
·
na个变量的milp。这种同构的milp有很多解(将所有系数乘以相同的数字也会得到解)。因此,第一个系数c1设为1,从而产生附加的辅助约束或对应的惩罚项c1=1。
[0114]
然后,初始优化问题写为:
[0115][0116]
其中,b,包括实值变量,并且包括二值变量。作为示例,下文描述了确定初等运算z=x∧y的初等等式。所述运算的可行配置和不可行配置如下:
[0117][0118]
等式(13)简化为c
x
x cyy czz caa=b,并且要确定系数c
x
,cy,cz,ca,b以使得:
[0119][0120]
然后,初始优化问题写为
[0121][0122]
服从:
[0123]cx
·
0 cy·
0 cz·
0 c
a a0=b,
[0124]cx
·
0 cy·
1 cz·
0 c
a a1=b
[0125]cx
·
1 cy·
0 cz·
0 c
a a2=b
[0126]cx
·
1 cy·
1 cz·
1 c
a a3=b
[0127]cx
·
0 cy·
0 cz·
1 ca·
0≠b,
[0128]cx
·
0 cy·
0 cz·
1 ca·
1≠b,
[0129]cx
·
0 cy·
1 cz·
1 ca·
0≠b,
[0130]cx
·
0 cy·
1 cz·
1 ca·
1≠b,
[0131]cx
·
1 cy·
0 cz·
1 ca·
0≠b,
[0132]cx
·
1 cy·
0 cz·
1 ca·
1≠b,
[0133]cx
·
1 cy·
1 cz·
0 ca·
0≠b,
[0134]cx
·
1 cy·
1 cz·
0 ca·
1≠b,
[0135][0136]
上述初始优化问题可以直接交给最先进的求解器(比如cplex),或者可以转换为经典minlp(无不等式约束)或milp。
[0137]
针对初等运算z=x∧y,优化问题产生以下带有辅助变量a的初等等式:
[0138]
x y-2z-a=0
ꢀꢀꢀ
(18)
[0139]
等式(18)在以下意义上等价于z=x∧y:当且仅当存在二值a使得等式(18)成立时,二值变量的三元组满足z=x∧y。从下表中可以看出这一点(粗体的零表明x,y,z的可行三元组):
[0140][0141]
代替用等式来表示z=x∧y,初等运算也可以用一组不等式来表示:
[0142]
z≤x,z≤y,z≥x y-1.
ꢀꢀꢀ
(19)
[0143]
重要的是,如果x,y是二值的并且如果z满足等式(19),则z只能取不同的值0和1而不明确要求z是二值的。这样,可以降低原像和/或挖掘问题的milp表示的复杂性。
[0144]
相应地,进一步的初等运算or
[0145]
x∨y=z
ꢀꢀꢀ
(20)
[0146]
产生以下初等等式:
[0147]
x y-2z a=0.
ꢀꢀꢀ
(21)
[0148]
这可以通过下表进行验证:
[0149][0150]
对于一组(初等)不等式,初等运算or表示为
[0151]
x≤z,y≤z,z≤x y,z≤1.
ꢀꢀꢀ
(22)
[0152]
如果x,y同样是二值的并且如果z满足等式(22),则z只能取不同的值0和1而不明确要求z是二值的。
[0153]
在如下初等关系xor
[0154][0155]
的情况下,对应的初等等式写为
[0156]
x y-z-2a=0,
ꢀꢀꢀ
(24)
[0157]
这可以通过下表进行验证:
[0158][0159]
xor运算也可以用一组不等式来表示
[0160][0161]
如上所述,如果连续变量z满足带二值x和y的等式(25),则所述连续变量仍然只能假定值0和1。
[0162]
c.确定散列函数关系
[0163]
与初等关系类似,步骤11中确定的散列函数关系可以是等式或不等式。在等式的情况下,所述等式可以通过求解如等式(15)中的形式的初始优化问题来确定。可替代地,所述不等式组可以根据与构成相应散列函数运算的初等运算相对应的不等式组来确定。
[0164]
在如下散列函数运算f(见等式(8.1))
[0165]
f(x,y,z)=(x∧y)∨(!x∧z),
ꢀꢀꢀ
(26)
[0166]
并且x,y,z对应于来自32位字b、c和d的共有位的情况下,确定带有二值变量f’以及二值辅助变量a0、a1和a2的以下等式:
[0167]
x 3y 2z-6f

2a
0-3a1 2a2=0,
ꢀꢀꢀ
(27)
[0168]
为了根据初等不等式确定散列函数运算的不等式组,将等式(26)重新表述为带有连续辅助变量uf=(x∧y)和vf=(!x∧z)的如下等式
[0169]
f(uf,vf)=uf∨vfꢀꢀꢀ
(28)
[0170]
但所述等式实际上也只会取二元值。然后,将散列函数运算f的不等式组确定为带有二值变量f’的如下不等式组:
[0171]
uf≤x,uf≤y,uf≥x y-1,
[0172]
vf≤1-x,vf≤z,vf≥z-x,vf≥0,
[0173]
vf≤f

,uf≤f

,f

≤uf vf,f

≤1,
ꢀꢀꢀ
(29)
[0174]
等式(27)和等式(29)可以分别用于确定优化问题(优选地是milp)中的约束。
[0175]
在如下散列函数运算g
[0176]
g(x,y,z)=(x∧z)∨(y∧!z),
ꢀꢀꢀ
(30)
[0177]
并且x,y,z对应于来自32位字b、c和d的共有位的情况下,确定带有二值变量g

以及二值辅助变量a0、a1和a2的以下等式:
[0178]
3x 2y-z-6g
′‑
3a0 2a1 2a2=0,
ꢀꢀꢀ
(31)
[0179]
为了根据初等不等式确定散列函数运算的不等式组,将等式(30)重新表述为带有连续辅助变量ug=(x∧z)和vg=(y∧!z)的如下等式
[0180]
g(ug,vg)=ug∨vgꢀꢀꢀ
(32)
[0181]
从而所述等式取二元值。然后,将散列函数运算g的不等式组确定为带有二值变量g

的如下不等式组:
[0182]
ug≤x,ug≤z,ug≥x z-1,
[0183]
vg≤1-z,vg≤y,vg≥y-z,vg≥0,
[0184]
vg≤g

,ug≤g

,g

≤ug vg,g

≤1,
ꢀꢀꢀ
(33)
[0185]
在如下散列函数运算h(见等式(8.3))
[0186][0187]
并且x,y,z对应于来自32位字b、c和d的共有位的情况下,确定带有二值变量h

和二值辅助变量a的以下等式:
[0188]
x y z-h
′‑
2a=0,
ꢀꢀꢀ
(35)
[0189]
为了根据初等不等式确定散列函数运算的不等式组,将等式(34)重新表述为带有连续辅助变量的如下等式
[0190][0191]
从而所述等式取二元值。然后,将散列函数运算h的不等式组确定为带有二值变量h’的如下不等式组:
[0192][0193]
在如下散列函数运算i
[0194][0195]
并且x,y,z对应于来自32位字b、c和d的共有位的情况下,确定带有二值变量i

以及二值辅助变量a0和a1的以下等式:
[0196]
x 2y-z-2i

a
0-4a1=0,
ꢀꢀꢀ
(39)
[0197]
为了根据初等不等式确定散列函数运算i的不等式组,将等式(38)重新表述为带有连续辅助变量ui=x∨!z的如下等式
[0198][0199]
从而所述等式取二元值。然后,将散列函数运算i的不等式组确定为带有二值变量i′
的如下不等式组:
[0200]
x≤ui,1-z≤ui,ui≤x-z 1,ui≤1.
[0201]i′
≤y ui,i

≥y-ui,i

≥u
i-y,i

≤2-y-ui,
[0202]
(41)
[0203]
在如下散列函数运算j
[0204]
j(x,y,z)=(x∧y)∨(x∧z)∨(y∧z),
ꢀꢀꢀ
(42)
[0205]
并且x,y,z对应于来自32位字b、c和d的共有位的情况下,确定带有二值变量j

和二值辅助变量a的以下等式:
[0206]
x y z-2j
′‑
a=0,
ꢀꢀꢀ
(43)
[0207]
为了根据初等不等式确定散列函数运算j的不等式组,将等式(42)重新表述为带有连续辅助变量pj=(x∧y),qj=(x∧z),uj=(pj∨qj)和vj=(y∧z)的如下等式
[0208]
j(uj,vj)=uj∨vjꢀꢀꢀ
(44)
[0209]
从而所述等式取二元值。然后,将散列函数运算j的不等式组确定为带有二值变量j

的如下不等式组:
[0210][0211]
等式(43)和等式(45)可以分别用于确定优化问题(优选地是milp)中的约束。
[0212]
在散列函数运算是作用于线性方程组(其中,是变量向量,并且是参数固定向量(在优化期间是恒定的))的移位运算的情况下,仅发生对应变量的重命名。用来表示移位后的向量则在右旋转(x

=x>>>s)的情况下,并且在左旋转(x

=x<<<s)的情况下,因此,应用移位运算后的线性方程组只是被重新索引的另一个线性方程组
[0213]
在散列函数运算是作用于的加法模运算的情况下,即,
[0214][0215]
其中,被加数要考虑等式(46)中的每个位位置。展开和其中,a
ij
,bj分别是ai和b的第j位,则等式(46)等效于:
[0216]
[0217][0218][0219][0220][0221]
其中,ci是ai和b的第i位的进位位数。
[0222]
从针对散列函数运算f,g,h,i和j的milp约束确定的散列函数等式开始,可以确定对应的qubo惩罚项,即
[0223]
qf(f,b,c,d,a0,a1)=-2bc 2bd 4bf 4ba0 4ba
1-4cf
ꢀ‑
4ca0 4da1 4fa0 4fa
1-4b 4c-2d-2f-4a1 4
[0224]
qg(g,b,c,d,a0,a1)=2bd-4bg 4ba
0-2cd-4cg 4ca1 4da
0-4da
1-4ga
0-4ga1 2c 6g 4a1[0225]
qh=(h,b,c,d,a0,a1)=4bd-4ba
0-4ba
1-4ch-4ca0 4ca1ꢀ‑
4da
0-4da1 4ha
0-4ha1 2b 2c 2d 2h 4a0 4a1[0226]
qi=(i,b,c,d,a0,a1)=-2bd 4ba0 4ba1 4ci 4ca0ꢀ‑
4ca
1-4da
0-4da1 4ia
0-4ia
1-2c 2d-2i 8a1 2
[0227]
qj(j,b,c,d)=2bc 2bd-4bj 2cd-4cj-4dj 6j
ꢀꢀꢀ
(48)
[0228]
等式(48)中的qubo惩罚不一定产生比通过对milp形式的对应确定散列函数等式进行平方而直接获得的优化更高效的优化。例如,上述qubo惩罚可以包括更多二值辅助变量。
[0229]
通常,应该避免附加的二值变量,因为离散变量越多,潜在采用的分支定界算法搜索树的大小就越大。另一方面,最先进的milp求解器可以接纳数千个连续变量,而不会明显降低性能。
[0230]
进一步地,当对一个散列函数运算采用一组不等式而不是一个等式时,有不同的替代方法来创建可行的不等式组。
[0231]
d.确定优化问题
[0232]
在确定散列函数关系之后,根据步骤12确定优化问题。为此,当计算散列值时,加密散列函数的每一次迭代内的散列函数关系按照它们的(时间)顺序进行组合,如图1或图2所示。
[0233]
对于md5,并且当使用等式作为散列函数关系时,从初始内部状态的数据区块(内部状态变量)b0,c0,和d0开始,确定优化问题的第一约束,
[0234][0235]
其方式为将b0,c0,d0,f1和辅助变量向量分别插入等式(27)中的变量x,y,z,f

和 (a0,a1,a2)的(第一轮次的)散列函数运算符f的等式中。随后,根据图1,执行f1= f(b0,
c0,d0)与原像变量m
μ(1)
和常数k1的模加法。将f1、m
μ(1)
和k1插入等式(47)中的对应散列函数关系中并在等式左侧排列所有的项,确定带有辅助变量ξ
1,1
的约束
[0236]
∑(f1,a0,m
μ(1)
,k1,fm1,ξ
1,1
)=0
ꢀꢀꢀ
(50)
[0237]
在此之后,对得到的项fm1进行移位并将其与b0相加,从而产生带有辅助变量ξ
1,2
的约束
[0238][0239]
模加法的所得项对应于指配给下一次迭代的内部状态变量b1。确定其他约束,以表示将内部状态变量b0,c0和d0指配给相应的内部状态变量c1,d1和a1(它们被指配给下一次迭代)。
[0240]
总之,确定被指配给第一次迭代的以下约束:
[0241][0242]
以类似方式确定指配给后续迭代的约束,从而得到以下一组约束(此处为优化等式):
[0243][0244]
等式(53)导致约束满足问题(csp),其中,要确定满足等式(53)中的所有约束的可行解。值得注意的是,a
64
、b
64
、c
64
、d
64
是散列值y的一部分,并且mk(k=1,

,16) 是散列函数的参量(原像元素)的一部分。
[0245]
通常,变量a0,b0,c0,d0,a
64
,b
64
,c
64
,d
64
和kk(k=1,

,64)是已知的,并且在优化期间是固定的。其余变量构成优化变量。
[0246]
在优化等式的情况下,所有mk都是事先未知的,并且a
64
、b
64
、c
64
、d
64
是固定的。
[0247]
在优化不等式(参见等式(9))的情况下,一些mk(例如k=3,

,16)是固定的,并且只有其余的(例如,m1、m2)是未知变量。进一步地,当将a
64
、b
64
、c
64
、d
64
中的每一个视为有限序列时,例如a
64
被固定为零位序列并且其余变量可以取任意值。
[0248]
然后求解优化问题(带有约束(等式(53))的milp),从而产生优化变量的最优值。
报文区块mk的最优值构成加密散列函数md5的原像元素中的一个。对于sha-1和其他加密散列函数,可以类似地确定约束。
[0249]
在可选的预求解步骤12a中,可以减少约束和/或优化变量的数量。通过分析约束,可以在整体求解优化问题之前确定一些优化变量的值。从例如包括以下各项的约束开始,
[0250][0251]
可以确定关系x y=1-z≤1;并且由此,确定关系x y=1和z=0。随后,确定一组具有较少优化变量/约束的修改后的约束:
[0252][0253]
也可以通过采用预求解库(比如scip内的papilo)来进行预求解。
[0254]
代替将优化问题确定和求解为milp,还可以将优化问题确定和求解为qubo问题。具体地,milp(等式(53)和(54))可以转换为qubo。为此,约束(等式(53))被各自取平方并被求和,从而得到要最小化的qubo目标函数f
qubo

[0255][0256]
也可以使用可获得的求解器来求解优化问题。可以使用例如cplex、gurobi、ficoxpress、parascip、fiberscip和/或开源scip来经典地求解milp和minlp。可以使用一般的退火求解器(例如,数字退火和/或模拟分岔机(simulated bifurcation machine)) 来经典地求解qubo问题。
[0257]
当使用量子处理设备求解qubo问题时,可以采用量子退火设备(例如,d-wave退火器)。为此,将qubo目标函数f
qubo
传送到量子退火设备。然后在量子退火设备中求解qubo,从而产生优化变量的最优值分配、尤其是原像变量mk的最优值。由此,可以确定加密散列函数的原像元素。
[0258]
在本说明书、附图和/或权利要求中公开的特征可以是用于单独地或以其各种组合实现各种实施例的材料。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献