Coursera之Bitcoin and Cryptocurre

作者: kk的思考日记 | 来源:发表于2018-02-04 08:20 被阅读1536次

    借着区块链的东风,技术男(我)也蠢蠢欲动了。从去年开始的这一波区块链热潮目前来看还在愈演愈烈,当然,作为理工男,不应该停留在表面上的市场热情,于是搜索了一下各大教育平台,希望找到一套系统的入门指南。于是,Bitcoin and Cryptocurrency Technologies这门课成了不二之选。在开讲之前,介绍一下Arvind Narayanan这个人,他目前在普林斯顿做助理教授,研究方向为信息隐私和安全。有兴趣的朋友可以在这里下载和该课程配套的书,这本书同时也已经上线amazon。

    希望内容对大家有所帮助!最终解释权归Coursera及Princeton所有!

    老规矩,先上图:

    来自我的幕布 https://mubu.com/inv/123114

    第一周,其实也就是第一讲,主题是Crypto and Cryptocurrencies,加密技术和加密货币。在Coursera里面是分成5部分讲的。下面我们一步步讲解:

    一、cryptographic hash functions 加密哈希函数

    1、什么是哈希函数?

    哈希函数的定义很简单:

    1、可以将任意值作为输入;

    2、输出值是一个固定的长度(这里取256bits);

    3、易于计算。

    可以理解为y=H(x),其中,x的取值范围近乎无限大。但y的取值范围相对小很多。

    2、哈希函数的特性

    为什么我们使用哈希函数作为区块链的底层加密技术呢?来看一下哈希函数的特性就知道了。

    首先,collision free(无碰撞)。

    什么意思呢?就是说我们无法找到两个x,哈希运算后的值相同。既然如此,一旦我们发现两个值算出来的哈希值相同,那么我们认为两个值相同。这个性质在识别文件方面很好用,因为输出的哈希值很容易对比。

    这里的collision free其实并不是没有碰撞的可能,只是在大概率上很难找到两个不同的输入,使得输出的哈希值相同。因为可输入的取值范围足够大。(2的130次方不同的输入,99.8%的可能性产生一个碰撞)。嗯,换句话说,用所有可用的电脑从宇宙产生开始到现在一直计算,发现一个碰撞的可能性也小于2秒钟之内地球被小行星碰撞而毁灭的概率。


    其次,hiding(可隐藏)。

    给你一个值x的哈希结果H(x),你无法倒推该值。当然,这也是有前提的,因为如果你的x值被限定在一定范围,比如投硬币的朝向结果,也是可以被倒推出来的。因此,解决方法是:无序的r并上x,哈希运算H(x)之后会难以反推x

    无序的r,即high min-entropy,是指该值被预测的可能性很低。你可以理解为r的取值越随机,熵值(entropy)越低。If r is chosen uniformly from among all of the stringsthat are 256 bits long, then any particular string was chosen with probability 1/2^256。换句话说,你丢硬币256次,把每次产生的0和1组合起来作为随机数,那么有1/2^256的可能性会被人一次性猜到你选的数。

    这个特性可以用于commitment(​A commitment is the digital analog of taking a value, sealing it in an envelope, and putting that envelope out on the table where everyone can see it).简单的说,就是做一个envelope(信封),将信息密封其中,之后还可以打开它。

    so,如何达成这个目标呢?(这部分比较烧脑,可绕开)

    commitment的过程

    流程是这样的(视频和书中比较绕,这里简化一下):

    1、随机生成一个低墒的key,只使用一次,在密码学中称为nonce。

    2、用nonce+msg(即信息)通过哈希函数生成com,com代表envelope(即信封),nonce是打开信封的钥匙。

    3、用你的nonce、com、和msg通过verify验证匹配,说明你可以打开envelope(信封)

    OK,我们绕出来,这样做有什么好处呢?

    1、hiding隐藏:因为哈希函数不可倒推输入值,你发出envelope后msg不会泄露

    2、binding捆绑:因为collision free,其他人很难找到和你的msg/nonce不同的msg'/nonce',使得nonce、com、和msg通过verify验证。

    这样,通过哈希函数,我们可以使得某些信息被隐藏起来。


    最后,puzzle-friendly(难破译)

    这点其实上面一个部分也用到了,就是说给定y,以及随机数r,想要找到x满足H(r|x)=y很难。同样也是由于collision free。那么这里是想说什么呢?其实是将这种难搜索的特性做成一个搜索谜题(search puzzle),给出一些y的值和r,如果你找到x的值可以满足H(r|x)=y(这里y是一个范围),你的工作量就被证明了。因为所有人几乎只能从所有可能的输入中一个个尝试来得到一个可用的x。

    search puzzle

    是不是很有趣,工作量证明(POW)之后还会提到。

    3、SHA-256 hash function

    最后,说下SHA-256。哈希函数有很多种,目前bitcoin使用的是SHA-256,为什么这么叫它呢?因为这个函数的输出是256bits,下图是函数的简化版示意图。

    ​​SHA‐256 uses the Merkle‐Damgard transform to turn a fixed‐length collision‐resistant compression function into a hash function that accepts arbitrary‐length inputs. The input is “padded” so that its length is a multiple of 512 bits.

    每次哈希计算都是通过将上次计算的256bits的数据和新block里的512bits数据作为输入,最终输出的是256bits的结果,因此,哈希函数也是一种compression function(压缩函数)。

    看了一下表,这次就到这里吧,之后的内容下回分解。

    欢迎与我交流,我的微信号q734550709。

    ETH赞赏地址:

    0x88317662aaa503678341476e40c5d93627826a91

    Coursera之Bitcoin and Cryptocurrency Technologies ——第一周 1.1

    您的赞赏是对作者最大的鼓励!~

    *本文参与优享话题夺宝,话题“区块链前沿”。

    相关文章

      网友评论

        本文标题:Coursera之Bitcoin and Cryptocurre

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