1703864480
以上两个安全特性决定了这一算法就如同密封及打开信封。第一,如果仅仅知道com,即承诺函数的输出,就如同只看信封并不能得到信息内容;第二就是约束性,这就保证了你一旦承诺信封内的内容,就不能再改变主意。也就是说,我们无法找到两个不同的信息,当你在承诺一个信息后,而又声称你承诺了另一个信息。
1703864481
1703864482
我们如何在承诺协议中保证隐秘性和约束性这两个性质成立呢?在讨论这一点之前,我们需要讨论如何执行承诺方案。我们可以通过使用加密的哈希函数来达到目的,考虑如下承诺协议实施方案:
1703864483
1703864484
commit(msg, nonce):=H(nonce‖msg)
1703864485
1703864486
其中,nonce为长度为256位的临时随机数。
1703864487
1703864488
为承诺一段消息,我们首先生成一个256位的临时随机数,然后将这个临时随机数与信息链接,并返回这个链接值的哈希值,来作为承诺输出。为了便于验证,我们还要设定其他人来计算一下临时随机数与信息链接之后的哈希值,比对一下计算结果是否与承诺输出相同。
1703864489
1703864490
再来看一下我们的承诺方案要求的两个特性,如果我们将承诺和验证换成H(nonce‖msg),那么这些特性就变成:
1703864491
1703864492
● 隐秘性:已知H(nonce‖msg),没有可行方法找到msg。
1703864493
1703864494
● 约束性:没有可行方法找到两对(msg, nonce)和(msg’, nonce’),msg≠msg’,而H(nonce‖msg)==H(nonce’‖msg’)。
1703864495
1703864496
承诺的隐秘特性正是我们要求哈希函数要具备的隐秘性,如果将一个解密钥匙选定为256位的随机值,那么由隐秘性得出,如果解密钥匙与信息链接,那么仅仅从哈希函数的输出中恢复信息就是不可行的。约束性隐含在哈希函数的碰撞阻力特性中[3],如果哈希函数具有碰撞阻力,那么我们将不能找到不同的msg及msg’值,而H(nonce‖msg)=H(nonce’‖msg’),如果这种情况发生,将构成碰撞。
1703864497
1703864498
因此,如果哈希函数H具有碰撞阻力及隐秘性,从安全特性上来讲,这个承诺方案将有效。
1703864499
1703864500
特性3:谜题友好
1703864501
1703864502
哈希函数需要的第三个安全特性为谜题友好特性。这一特性较为复杂,我们首先解释该特性的技术要求,然后通过举例来阐释该特性的意义。
1703864503
1703864504
直觉上,谜题友好可以这样解释,如果有一个人想找到y值所对应的输入,假定在输入集合中,有一部分是非常随机的,那么他将非常难以求得y值对应的输入。
1703864505
1703864506
谜题友好 如果对于任意n位输出值y,假定k选自高阶最小熵分布,如果无法找到一个可行的方法,在比2n小很多时间内找到x,保证H(k‖x)=y成立,那么我们称哈希函数H为谜题友好。
1703864507
1703864508
应用:搜索谜题
1703864509
1703864510
现在,让我们试想一个应用以阐释谜题友好特性的意义。在这个应用中,我们将建立一个搜索谜题,该谜题是一个需要对庞大空间进行搜索,才能找到解决办法的数学问题。该搜索谜题没有捷径,也就是说除了搜索庞大的空间来进行求解,别无他法。
1703864511
1703864512
搜索谜题 搜索谜题构成:
1703864513
1703864514
● 一个哈希函数H。
1703864515
1703864516
● 从高阶最小熵分布选出的一个取值,id(我们称其为谜题ID)。
1703864517
1703864518
● 目标集合Y。
1703864519
1703864520
该谜题的解决方法为一个解,x,应该满足以下公式:
1703864521
1703864522
H(id‖x)∈Y
1703864523
1703864524
这个直觉是:如果H有一个n位输出,那么它的可能取值有2n个。解决这个谜题要求找到一个位于集合Y(通常比所有输出值集合小很多)内的输出值,Y的大小决定了谜题的难度。如果Y是所有n位字符串的集合,这个谜题就毫无意义。然而,如果Y只有一个元素,那么这个谜题难度最大,谜题ID取自高阶最小熵分布,这个事实保证了求解无捷径。反过来,如果该ID的确定性很高,那么有人可能会作弊,比如通过使用该ID,事先对谜题进行求解。
1703864525
1703864526
如果一个哈希函数具备谜题友好特性,这就意味着对于这个谜题没有一个解决策略,比只是随机地尝试x取值会更好。因此,如果我们要把谜题做成很难解决是可以的,只要我们能用适合的随机方式生成谜题ID。当我们讨论比特币采矿(是一种搜索谜题)时会采用这一思路。
1703864527
1703864528
安全哈希算法
1703864529
[
上一页 ]
[ :1.70386448e+09 ]
[
下一页 ]