密码学及加密货币概述2

2019-01-14  本文已影响0人  NHFX

1 密码学哈希函数

哈希函数是数据函数,特征如下:

输入可以为任意大小的字符串

产生固定大小的输出,eg:输出值为256位(可任意规模,紫瑶足够大)

能进行有效的计算,对于特定的输入字符串,在合理的时间内,算出hash Func的输出,复杂度为O(n)

如果哈希哈数要达到密码安全,就要附加一下3个特征:

碰撞阻力 collision - resistance

这里的碰撞指的是两个不同的输入,产生相同的输出。如果对于哈希函数H()没有人能找到碰撞,我们就称碰撞阻力。 在输入空间比输出空间大的情况下,根据鸽巢原理(pigeonhole Principle)可以证明碰撞的存在。

2的256次方 + 1 的输入对应 256位的输出,输入多余输出,在应用哈希函数时,必将产生碰撞---- 概率学中的生日悖论(birthday paradox) 2的256次方 + 1 的碰撞概率比较小。应用--信息摘要

隐秘性 hiding

我们只知道哈希函数的输出,并不能通过输出得到哈希哈数的输入;哈希函数H具有隐秘性,如果:当其输入r选自一个高阶最小熵的概率分布,在给定H(r||x)条件下来确定x是不可行的。

最小熵是用于测试结果可预测行的手段,二高阶最小熵这个概念比较直观描述了分布(如随机变量)的分散程度。应用承诺

谜题友好 puzzle - friendliness

如果一个人想找到y对应的输入,假定在输入集合中,有一部分是非常随机的,那么他将非常难以求得y值得对应输入。

谜题友好 如果对于任意n位输出值y,假定k选自高阶最小熵分布,如果无法找到一个可行的方法,在此比2的n次方小很多时间内找到x,保证H(k||x)=y成立,那么我们称哈希函数H为谜题友好。

应用:收索谜题

安全哈希算法 secure hash algorithm 256 sha-256

SHA-256 是一个主要被比特币世界采用,并且效果还不错的哈希函数;只要能建立一个用于固定长度输入的函数,然后通过一个方法,就可以将接受固定长度的哈希函数转化为可以接受任意长度输入的哈希函数,我们称这个转换过程为MD(Merkle-Damgard)变换,SHA-256是采用这种变换方法的常用哈希函数之一。这种基础型,可用于固定长度,具备碰撞阻力的哈希函数被称为压缩函数。(compression function)

2哈希指针及数据结构

哈希指针一个指向数据存储的位置及其位置数据的哈希值的指针。哈希指针可以告诉你数据的存储的地址,还可以告诉你验证数据有没有被篡改。

区块链

通过哈希指针构建的一个链表称为区块链blockchain 二在区块链中,上一个区块指针被置换为哈希指针。因此每个区块包含了区块的值地址,还包含了该值得摘要,使我们可以验证那个值没有改变。存储链表头部 the head of list 指向区块最近使用的数据,区块的一个应用就是防止篡改日志。链表头部的哈希指针被称为 创世区块 genesis block

梅克尔树 Merkle trees

用哈希指针的二叉树是梅克尔树,特点就是简洁的隶属证明

3数字签名 digital signatures

数字签名被认为是对纸上手写签名的数字建模。两个特性要求

只有你可以制作你自己的签名,任何看到他的人都可以验证其有效性;

我们希望签名只与某一个特定文件发生关系,因此改签名不能用于表明你同意或支持另一份不同的文件。(确保别人不能将你的签名从一份文件上剪下来,贴到另一份文件上)

数字签名的方案

由三个算法够成:

(sk,pk):=generateKeys(keysize) generateKeys方法把keysize做为输入,来产生一对公钥和私钥。sk被安全保存,并用来签名一段消息;公钥pk是人人都可以找到的,用于验证你的信息。

sig:=sign(sk,message)签名过程是把一段消息和私钥作为一个输入,对于消息输出是签名。

isVaild:=verify(pk,message, sig)验证过程是通过一段消息和签名消息和公钥作为输入,如果返回的结构使true,证明签名属实;如果返回的结构为假,证明签名消息为false

签名不可以伪造,并可以通过验证

3公钥即身份

你的省份确实是pk的哈希;信息能经过公钥pk的验证

去中心化身份管理

sk和pk的体系--引入去中心化的身份管理的理念。不需要中央机构。不需要告诉任何人你的注册名字、随时生成、数量不限。有了去中心化的管理,比特币中的身份被称为地址,地址就是公钥的哈希值。 在比特币中,你不需要明确的注册或揭露你的身份,但的行为模式本身是可以识别的。这就是比特币等加密货币的基本隐秘性问题。

4两种简单的加密货币

高飞币

唯一货币编号并建立字符串;秘密签署秘钥计算这个字符串的数字签名,该字符串于高飞的签名就构成了一个单位币,任何人都可以验证高飞有效签名。

高飞币的两个规则:

随时创建新币

可以转给其他人

高飞币没有解决双重支付 doublespending ---不安全

财奴币 scroogeCoin

以高飞币为基础解决双重支付问题但是没有去中性化

上一篇下一篇

猜你喜欢

热点阅读