区块链技术1---密码学基础

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

摘要BTC属于加密货币其中必然涉及到密码学的知识而比特币比较开放交易记录交易金额甚至是底层源代码都是对外开放那么加密使用在何处这里就来谈一谈······


1哈希

哈希函数是密码学的一个重要分支它是将任意长度的输入变换为固定长度输出的不可逆的单向密码体制在消息完整性检测消息认证和数字签名等方面有广泛的应用。Hash函数也称散列函数是一种单向密码体制即它是一个从明文到密文的不可映射的过程即只有加密过程没有解密过程

1.1哈希函数的三个重要性质

  • collision resistance如果x=y那么H(X)!=H(Y)对于一个给定的x很难找到y使得H(X)=H(Y)

  • hiding已知HX无法反推出X类似于X被隐藏起来了

  • puzzle friendly对HX的范围是无法预测的

1.2哈希函数介绍

  • 哈希碰撞对于给定的X和Y且X=Y有可能会得到HashX=HashY这种情况则称为哈希碰撞。而collision resistance的性质保证如果有HashX=HashY则必然有X=Y但是这是理想状态如果学过数据结构的同学应该知道常用的碰到哈希碰撞的解决办法有开放地址法等等。在实际使用的过程中哈希碰撞总是难以避免但是我们只需要尽可能保证在X=Y的前提下使得HashX=HashY就可以认为其是collision resistance

  • collision resistance的意义如果我们掌握了一条重要信息X希望别人知道我有X但是不希望别人知道X的具体信息就可以通过告诉别人X的哈希值。由于collision resistance性质的保证别人没有X也就没有对应的HashX因此别人也就知道你确实有X这一条信息。

  • hiding我们认为给定X和Hash(),可以很容易得到Hash(X),但没有办法在已知Hash(x)和Hash()的情况下反推出X的具体取值当然这也是一个理想的情况。

  • collision resistance和hiding结合实现digital commitment(数据保证): 可以拿市值预测的案例某个人对某个市值进行预测我们如何保证能够知晓其预测是否准确?最简单的是提前公布 等待实际结果出现后验证。但实际中当提前发布预测后可能会由于预测者本身对市值实际结果造成影响比如该预测者是业内极具影响力的人物。 所以应该将提前将其写于纸上并密封交给第三方机构保管等到实际结果出现后开启密封与实际对比这就是digital commitment。而第三方机构需要能够使人信服在实际生活中有很多场景并不存在一个这样的第三方机构而区块链技术正为此提供了一个很好的解决方法。 我们把预测结果看作X提前公布Hash(X)等到预测结果发生时间来临后公布X如果根据X可以得到公布的Hash(X)则说明公布的X确实为所预先预测的 内容。从而我们可以实际进行判断预测是否准确。实际使用中为了X足够大会对X进行“加盐”对X拼接一 个nonce对其整体取Hash。

  • Puzzle friendly该性质要求哈希值计算事先不可预测 仅仅根据输入很难预测出输出。例如:我们需要一个哈希值存在于某一个范围内只能通过不停运算查找出 来。该性质保证了比特币系统中只能通过“挖矿”获得BTC。也就是说该性质保证了工作量证明(POW)机制 可以运行下去【“挖矿难但验证易”】。 在BTC系统中采用SHA-256和RIPEMD160哈希函数


2挖矿

挖矿实际就是一个不断测试区块头部block header的随机数部分nonce使得整个区块头的哈希值满足Hblock header<= target的过程这里的target通常前面x位都是0

区块的构成有区块头block header和区块体block body组成

区块头的随机数就是nonce

2.1挖矿原理示意图


3签名

3.1数字签名和手写签名的不同之处

  • 手写签名是被签文件的物理组成部分数字签名是连接到被签消息上的数字串

  • 数字签名和所签名的消息能够在网络中传输。手写签名使用传统的安全方式传输

  • 手写签名是通过将它与真是的签名进行对比来验证正确与否而数字签名是利用公开的验证算法来验证

  • 数字签名的复制品是有效的手写签名的复制品是无效的。

  • 数字签名是0和1的字符串因消息而异手写签名是模拟的因人而异

3.2数字签名的安全要求

  • 接受者能够核实签名者对消息的签名

  • 除了签名者任何人不能伪造消息的签名

  • 同一消息不同时刻其签名是有区别的

  • 签名者事后不能抵赖对消息的签名出现争议时第三方可解决争端

3.3加入BTC系统账户

在BTC系统中创建账户只需要生成一个公私钥对。公私钥对保证了“数字签名”的应用。大致流程如下比如A转给BA需要用自己的私钥给该交易签名B通过A的公钥来验证该交易是否由A发起保证了交易的安全性。你可能会担心是否会有两个人有相同的公私钥对其实不必担心签名算法中创建相同公私钥对的可能性微乎其微所以通过大量创建账户来盗取他人交易的做法是不可行的

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: 区块链