第一章 密码学及加密货币概述

1.密码学哈希函数

1.1 哈希函数的三个特性:任意大小字符串的输入,固定大小字符串的输出,能够进行有效计算。

Note:能够进行有效计算,指对应n位的字符串,其哈希值计算的复杂度为O(n)。

1.2 哈希函数要想达到密码安全,需要三个附加特性: 碰撞阻力,隐秘性, 谜题友好。

(1)碰撞阻力。
碰撞指对于两个不同的输入,产生相同的输出。如果没有人能够找到碰撞,则称该函数具有碰撞阻力。事实上,碰撞是确实存在的,没有人能够找到并不表示不存在。

碰撞阻力的应用:信息摘要。只需要存储信息的哈希值,而不需要存储完整信息。当下载到这个信息,计算哈希值,与之前存储的哈希值对比,如果哈希值相同,则表明信息没有被更改。
(2)隐秘性
隐秘性指我们仅仅知道哈希函数的输出,没有可行的办法计算出输入值。哈希函数H具有隐秘性,如果:当其输入r选自一个高阶最小熵的概率分布,在给定H(r||x)条件下,来确定x是不可行的。

隐秘性的应用:承诺。一个承诺协议方案由两个算法构成:承诺函数和验证函数。承诺函数将信息(msg)和一个临时随机数(nonce)作为输入,输出一个承诺。验证函数将某个承诺输出(com),信息(msg)以及临时随机数(nonce)作为输入,如果由msg以及nonce生成的承诺输出与com相同,则返回True。
承诺协议要求哈希函数的隐秘性和碰撞阻力。
(3)谜题友好(?)
假定输入集合中,有一部分是非常随机的,那么很你那求得输出y所对应的输入值,则称为谜题友好。
如果对于任意n位输出值y,假定k选自高阶最小熵(?)分布,如果无法找到一个可行的方法,在比2的n次方小很多时间内找到x,保证H(k||x)=y成立,纳那么我们称哈希函数H为谜题友好。

谜题友好的应用:搜索谜题。搜索谜题的构成:哈希函数H,从高阶最小熵分布选出的一个取值谜题id,目标集合Y。该谜题的解决方法为一个解x,满足H(id||x)属于Y。如果H有一个n位输出,那么它的可能取值为2的n次方个。解决这个谜题要求找到一个位于集合Y内的输出值,Y的大小决定了谜题的难度。如果Y是所有n位字符串的集合,这个谜题就毫无意义。然而,如果Y只有一个元素,那么这个谜题的难度最大。谜题ID来自高阶最小熵分布,这个事实保证了求解无捷径。

如果一个哈希函数具备谜题友好特性,意味着对于这个谜题没有一个解决策略,比只是随机地尝试x取值会更好。

1.3安全哈希算法

安全哈希算法(Secure Hash Algorithm 256,简称SHA-256)。
MD变换,可以将一个用于固定长度输入的哈希函数转换为可接受任意长度输入的哈希函数。在通用术语中,这种基础型,可用于固定长度,具备碰撞阻力的哈希函数被称为压缩函数,经过验证,如果基本压缩函数具备碰撞阻力,则转换后的哈希函数也具备碰撞阻力。

MD变换:压缩函数输入长度为m,输出长度为n。则哈希函数的输入(任意长度)被分为长度为m-n的区块。将每个区块去之前区块的输出一起作为压缩函数的输入,输入长度为m-n+n=m。对于第一个区块而言,之前没有区块,选取一个初始向量。最后一个区块的输出是返回结果。

SHA-256函数利用了这样一个压缩函数,这个压缩函数把一个768位的输入压缩成一个256位的输出,每一个区块的大小是512位。

SHA-256哈希函数简化图

2.哈希指针及数据结构

哈希指针是一个指向数据存储位置及其位置数据的哈希值的指针。哈希指针不但可以告诉你数据存储的位置,还可以提供一种方式,验证数没有被篡改过。

2.1区块链

(对应数据链表)
区块链中,每个区块不仅能告诉我们上一个区块的值在哪里,还包含了该值的摘要,是我们能够验证那个值没有改变。
区块链的应用:防篡改日志。

2.2梅克尔树

(对应二叉搜索树)
隶属证明:如果整棵树上有n个节点。只需要展示log(n)个项目,因为每个步骤仅需要计算子区块的哈希值,验证过程时间约为log(n)。
非隶属证明:在排序梅克尔树的基础上,可以在一个对数复杂度的条件下验证某一个数据区块并非来自某梅克尔树。

3.数字签名

3.1数字签名

(1)只有自己可以制作自己的签名,但任何看到他的人都可以验证其有效性。
(2)签名只与某一特定文件发生联系,因此该签名只不能用于表明你支持或同意另一份不同的文件。
(3)数字签名方案。(sk,pk):=generateKeys(keysize),genereateKeys方法把keysize作为输入,产生一对公匙和私匙。私匙sk被安全保存,用来签名一段消息。公匙pk人人都可以找到,用来验证签名。sig:=sign(sk,message)签名过程是把一段消息和私匙作为一个输入,消息输出是签名。
isValid:=verify(pk,message,sig)验证过程通过把一个消息和签名消息与公匙作为输入,若返回结果是真,证明签名属实。若返回结果为假,证明签名消息为假。

3.2实践问题

(1)签名算法是随机的,需要性能良好的随机来源。
(2)能够签署的信息大小是有限制的,可以通过对信息的哈希值而不是信息本身进行签名解决长度限制问题。
(3)对哈希指针进行签名

3.3椭圆曲线数字签名算法(延伸阅读)

4.公匙即身份

5.两种简单的加密货币

5.1高飞币

(1)包含创建和交易规则。
(2)没有解决双重支付问题。

5.2财奴币

(1)财奴记录仅增账目在区块链。
(2)造币:可以在一次交易中创建多个币量。
(3)付币的四个条件:被消耗的币为有效币,被消耗的币不是被双重支出,产生币值等于消耗币值,被消耗的币有其所有者的有效签署。
(4)财奴具有中心化集权。

该系列文章均为《区块链技术驱动金融》一书的学习笔记,非原创。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值