美文网首页
读书笔记 of 区块链(二)

读书笔记 of 区块链(二)

作者: 烈酱 | 来源:发表于2018-01-07 22:52 被阅读4次

    第1章 密码学 for 货币加密

    想像一下,你想发布一种货币,首先想到的技术就是防伪,而你想发布一种虚拟货币,则还要再考虑防止“混淆”的问题——避免A向B支付了数字币001后,C向A也支付了同样的数字币001
    并且这些规则完完全全依赖于技术手段来实现,没有一个中央机构来帮你。
    幸运的是,我们有密码学的理论,来帮助实现货币加密
    下面我们开始密码学的学习。

    1.1 密码学哈希函数

    哈希函数是一个数学函数,拥有以下3个特性:

    1. 输入可以是任意大小的字符串。
    2. 输出则是固定长度的。但这个长度必须足够大。
    3. 从输入到得到输出结果的时间不会太长,准确来讲,输入n位的字符串,计算其哈希值的复杂度是O(n)。

    也就是说,满足以上3个特性的数学函数,可以称之为哈希函数(有点废话哈)。
    但仅仅这3个特性还不足以实现密码安全,我们要求其还有需要有以下3个附加特性:

    1. 碰撞阻力
    2. 隐密性
    3. 谜题友好

    1.1.1 附加特性1:碰撞阻力

    在解释何为碰撞阻力之前,我先举一个场景例子:
    你也许留意到,有时候在一些论坛下载一些资源,作者会附带下载资源的MD5值供你下载后进行比对,以帮助你验证,作者上传的和你下载的是同一个东西。如果你知道MD5值的意义——如果最后得到的值并不相同,你就可以确定文件被破坏了,要嘛就是文件损坏了,要嘛就是上传的文件在服务器上已经被修改过了。

    以上操作建立在:对于不同的文件内容,所得到的Md5值肯定是不同的。

    我们将这个场景,应对于哈希函数:

    • 输入:文件内容
    • 输入长度:任意大小(很容易理解,文件大小肯定是任意的)
    • 输出:MD5值(非常实用,文件可能有几G大,但我们存储的哈希值是非常小的)
    • 输出长度:固定大小(标准的md5函数是生成128位的)
    • 附加特性:碰撞阻力,对于不同的输入,如果无法找到,相同的输出(想像一下你精心打扮去Party,结果和别人穿同样的衣服,即衫,那多尴尬),我们就说这个哈希函数具有碰撞阻力

    注意,我们说没人能找到碰撞,不表示不存在碰撞。只是很难找到而已。尤其对于哈希函数的定义——输入无限但输出有限,既然输出有限,一个萝卜(输入)一个坑(输出),当坑被填满了后,再来一个萝卜,则总是会撞到某个坑里的萝卜的,亦即总会产生碰撞的。甚至用概率学的理论,不用等到坑满的时候,很可能早就有碰撞的发生,只不过我们说了输出长度必须足够大,坑足够多,所以概率还是非常非常小的。事实上,我们说,世界上没有哈希函数,具有防碰撞的特性。

    1.1.2 附加特性2:隐密性

    我们希望这个能满足我们密码安全的需求的哈希函数的第二个附加特性是:隐密性。我们希望:你知道哈希函数的输出值y = H (x)了,但没有可行的办法算出输入值x
    同样的,我举一个场景作为例子:
    老年周星星想搞一个街坊福利会的一个项目,来主持他最喜欢的摇色盅游戏。但是众所周知他有特异功能,除了透视技能,街坊们坚信买定离手后,周星星依然能改变色盅里的色子,所以没人来玩他的项目。这让他非常苦恼。

    为了帮助周星星,我们定义一个承诺协议,它由2个算法构成:

    • 承诺函数com = commit(msg,nonce)。由信息msg和临时随机数 nonce组成,作为输入,输出com就是一个承诺
    • 验证函数verify(com,msg,nonce)。这里面就计算出msgnonce得到的承诺,和待验证的承诺进行比对,假如不一样,则返回false。

    并且我们附加2个安全特性:

    • 隐密性:知道承诺,没有可行的方法找到msg
    • 约束性:没有可行的办法找到两组输入值,msg不相同,但是承诺相同。

    在解释如何用加密的哈希函数来实现这个承诺协议之前,我先来说明如何使用这个协议:
    每次周星星摇完骰子,他得到骰子的点数,亦即msg,这个时候他算出承诺值并且公开出承诺。街坊们知道了承诺,但是并不知道msg,亦即骰子的点数。街坊们欣然下注后,周星星打开色盅,公开了msg,街坊们可以用验证函数,对比此时骰子的点数得到的承诺是否与之前周星星给出的承诺一致,即可知道周星星有没有改变色盅内容了。从此周星星与街坊过着幸福的生活。

    待续。。。

    相关文章

      网友评论

          本文标题:读书笔记 of 区块链(二)

          本文链接:https://www.haomeiwen.com/subject/plwmnxtx.html