原文精选:我们希望哈希函数拥有的第二个特性是其隐秘性。隐秘性保证,如果我们仅仅知道哈希函数的输出y=H(x),我们没有可行的办法算出输入值x。问题是,上述的表示形式不一定是正确的。考虑以下简单的例子:我们做一个抛硬币的实验,如果抛硬币结果为正面,我们会宣布字符串哈希为“正面”;如果结果为反面,我们会宣布字符串哈希为“反面”。
然后我们问我们的对手,在他没有见到抛硬币,而只见到哈希函数的输出的前提下说出哈希函数的输入字符串(很快我们就知道为什么要玩这个游戏了)。为了回答问题,对手会简单计算“正面”字符串的哈希值及“反面”字符串的哈希值,然后对手便可以知道他得到的是哪一个。这样,只需要几步,对手就能反解出输入值。
读书笔记: 1,哈希函数必须具有隐秘性,以便不被反解。
2,比如抛硬币游戏,正面一个哈希值,反面一个哈希值,对手就可以根据哈希值
来解出硬币是正面还是反面了。
原文精选:对手能够猜出字符串,这是因为x只有两个可能,他可以很轻易地将两个可能对应的哈希值计算出来。为了能够实现隐秘性,我们需要x的取值来自一个非常广泛的集合,也就是说,仅仅通过尝试几个特定的x,就能找到输出值的方式将不会发生了。
现在的问题是:在类似抛硬币的“正面”、“反面”实验中,如果我们想要的反解的输入值并非来自分散的集合,我们是否还能得到隐秘性? 幸运的是,对于这个问题答案是肯定的! 我们甚至能够通过与另一个较为分散的输入进行结合,而将一个并不分散的输入进行隐秘。现在我们可以更精确地表示隐秘的含义了(双竖线ǁ为连接符号,代表把一系列事件、事情等联系起来)。
读书笔记: 1,为了能够实现隐秘性,我们需要x的取值来自一个非常广泛的集合。
2,即便我们想要的反解的输入值并非来自分散的集合,我们也能够得到隐秘性。
原文精选:隐秘性
哈希函数H具有隐秘性,如果:当其输入r选自一个高阶最小熵(high min�entroy)的概率分布,在给定H(rǁx)条件下来确定x是不可行的。
在信息论中,最小熵是用于测试结果可预测性的手段,而高阶最小熵这个概念比较直观描述了分布(如随机变量)的分散程度。具体来说,在从这样分布中取样时,我们将无法判定取样的倾向。举个具体的例子,如果r是从长度为256位的字符串中随意选出的,那么任意特定字符串被选中的概率为1/2256,这是一个小到几乎可以忽略的取值。
读书笔记: 1,最小熵:用于测试结果可预测性的手段。
2,高阶最小熵: 描述分布的分散程度。
3,如果随意从256位的字符串中选一个,那么任何特定的字符串被选中的概率非
常低,只有1/2256,这样对手就没办法判定我们取样的目的了,自然也很难反
解出来。
一叶之秋带你一分钟速读经典书籍,每天一分钟(只需阅读读书笔记部分),天天获新知。
一叶之秋——非著名股票分析师
CCTV证券资讯频道特邀分析师
币乎,币问内测作者;区分节点分析师
金色财经,币世界专栏作家
《区块链编年史》 《区块链重塑未来》系列作者
量价时空战法体系,一分钟读书俱乐部创始人
公众号:区块链项目评测
007er
网友评论