币图细说—区块链中的密码学

币图网 币图网     2022-12-03     770

关键词:

密码学是一门很深奥的学问,密码学促进了现代计算机的发展,在区块链领域所涉及到的密码学知识主要是哈希算法和数字签名,现在我们来看看哈希算法。

 

1.什么是哈希算法?

 

加密算法是指对数据进行一定的加密处理,让自己人可以识别,而别人无法识别的一种算法,哈希算法是常用的加密算法之一。简单说哈希算法就是对于任意一个数据(计算机领域叫字符串),通过哈希算法都可以产生一个256位的加密结果,并且在目前能力范围内无法找到与之重复的结果。我在网上随便找了一个哈希(Hash)算法工具如下所示:

 

哈希算法测试网址

 

重点是 任何输入数据都可以输出一个不一样的输出结果。哈希算法包含多种计算方式,常见的有MD5和SHA-256,在历史实践中发现MD5存在重复,在加密场景中已经逐渐被淘汰。我们熟悉的比特币(Bitcoin)使用的便是SHA-256算法(安全哈希算法),而莱特币(Litcoin)使用的则是scrypt算法,你只要记住这里不一样就行了。

 

进阶:

 

对于哈希算法来说,一般要求有两个特性:

 

1.碰撞阻力:无法找到两个输入值,可以使得哈希算法之后的结果相同。

 

2.隐蔽:就算你知道了输出结果,你也无法找到输入值

 

 

 

2.哈希算法在区块链中的应用

 

我在开篇中介绍过区块链和链表结构的关系和区别,其实区块链中应用的链表结构叫哈希指针(索引),哈希索引就是指在区块头中存储了上个区块的位置,最重要的是还存储了上个区块数据的哈希加密结果。哈希加密结果具有碰撞阻力(不重复性),所以我们一直听到的区块链具有无法篡改的特性便来自这里。一旦区块的数据被人为篡改,那么下一个区块上面存储的哈希加密结果便无法对应,整个链表便无法连续。

 

下面做了一张图做一个简要说明:

 

 

 

当然,区块链头部数据用于输入的值还包含一些其他东西,比如时间等,上图为了方便解释,不再加入。

 

最后再解释两个名词:

 

创世区块:在哈希指针结构中的第一个区块。

 

二叉树(梅克尔树):一个区块对应两个子区块,这两个子区块都有上一个区块的哈希信息。

 

以上便是区块链中应用的哈希算法介绍,下一篇将介绍数字签名。这两者组成了区块链的加密系统。

如果要求哈希算法达到密码学安全的话,我们还要求它具备以下三个附加特性:

1. 碰撞阻力:

是指对于两个不同的输入,必须产生两个不同的输出。如果对于两个不同的输入产生了相同的输出,那么就说明不具备碰撞阻力,或是弱碰撞阻力。

2. 隐秘性:

也被称为不可逆性,是指 y = HASH(x)中,通过输入值x,可以计算出输出值y,但是无法通过y值去反推计算出x值。为了保证不可逆,就得让x的取值来自一个非常广泛的集合,使之很难通过计算反推出x值。

3. 谜题友好:

这个特性可以理解为,谜题是公平友好的,例如算法中 y = HASH(x),如果已知y值,想去得到x值,那就必须暴力枚举,不断的尝试才能做到,并且没有比这更好的办法,没有捷径。

 

哈希算法有很多,比特币主要使用的哈希算法是 SHA-256 算法。

 

除此之外,还有其他一些哈希算法也很流行,例如 MD5、SHA-1、SHA-2(SHA-224、SHA-256、SHA-384、SHA-512)、SHA-3 等,其中 MD5、SHA-1 已被证明了不具备 强碰撞阻力,安全性不够高,因此市场上不再推荐使用。

区块链中有一个很关键的点就是账户问题,但比特币中是没有账户概念的,那大家是怎么进行转账交易的呢?

这里就得先介绍区块链中的非对称加密技术了。

 

(笔记)区块链技术笔记——区块链中的密码学1

(笔记)区块链技术笔记——区块链中的密码学1文章目录(笔记)区块链技术笔记——区块链中的密码学1一、随机数据序列二、对称(单钥)密码希尔密码(HillCipher)加密过程解密过程三、非对... 查看详情

(笔记)区块链技术笔记——区块链中的密码学2

(笔记)区块链技术笔记——区块链中的密码学2(RSA加密算法笔记)文章目录(笔记)区块链技术笔记——区块链中的密码学2(RSA加密算法笔记)三、非对称密码1、RSA加密算法创立原理例题描述... 查看详情

区块链中的密码学

...sp;        区块链是一串使用密码学方法相关联产生的数据块,每一个区块中包含上一个区块的ha 查看详情

1.3.1区块链中的加密算法——hash算法(更新)(代码片段)

...密码哈希函数和椭圆曲线公钥密码技术在内的大量的现代密码学技术,同时,这些密码学技术也被用于设计基于工作量证明的共识算法并识别用户。  在前边的文章中已经系统的讲述了密码学中的哈希算法,在本节,将会给大... 查看详情

1.3.2区块链中的密码学——merkle树

  在计算机领域,Merkle树大多用来进行完整性验证处理。在处理完整性验证的应用场景中,特别是在分布式环境下进行这样的验证时,Merkle树会大大减少数据的传输量以及计算的复杂度。  Merkle哈希树是一类基于哈希值的二... 查看详情

区块链中的密码学-椭圆曲线加密算法分析

在目前密码学的非对称加密算法中,RSA算法依然是一种主流,但是随着比特币中对于一种之前不太流行的算法:椭圆加密算法(ECC)的成功应用后,这种算法得到了很大的关注和普及。有一种说法是中本聪不信任RSA算法,认为美... 查看详情

java实现区块链中的区块,block的实现

1、区块是区块链的基础单元区块链由若干个区块组成,区块是区块链的基础单元2、区块链中区块的基本属性区块6个属性的说明-Index区块的索引值,区块链中的唯一键区块6个属性的说明-Timestamp区块的时间戳,用于区分区块的产... 查看详情

信息摘要算法之七:sha在区块链中的应用

最近几年比特币的火爆带动了人们对区块链技术的研究。当然我们在这里并不讨论区块链技术本身,而是讨论一下区块链中的SHA算法的应用。对于SHA系列算法我们已经在前面作了说明,在这里也不再重复。1、区块链中的SHA区块... 查看详情

区块链中的节点是什么?

随着区块链科技的进步,各种形态不同的链展现在大家面前,有些区块链中节点有很多(如以太坊),而有些区块链中的节点又很少(如EOS),今天我们拿第一代区块链比特币来讲。比特币被设计为一种去中心化的点对点(P2P)网络如中... 查看详情

区块链中的节点是什么

随着区块链科技的进步,各种形态不同的链展现在大家面前,有些区块链中节点有很多(如以太坊),而有些区块链中的节点又很少(如EOS),今天我们拿第一代区块链比特币来讲。比特币被设计为一种去中心化的点对点(P2P)网络如中... 查看详情

区块链共识协议指南

...止分叉。在工作量证明机制中,矿工通过解决极其困难的密码学难题互相竞争来将下一个区块(一系列交易)添加到区块链中。第一个解决难题的矿工将会获得奖励,该矿工会获得 查看详情

如何获取存储在区块链中的数据,然后显示在网页上?

】如何获取存储在区块链中的数据,然后显示在网页上?【英文标题】:HowcanIgetthedatastoredinblockchainandthendisplayonwebpage?【发布时间】:2020-03-2807:36:34【问题描述】:我正在使用metamask、ganache、truffle和web3js开发一个系统,该系统可... 查看详情

区块链中的密码学之数字证书体系(十四)

1.前言数字证书用来证明某个公钥是谁的,并且内容是正确的。对于非对称加密算法和数字签名来说,很重要的一点就是公钥的分发。一旦公钥被人替换(典型的如中间人攻击),则整个安全体系将被破坏掉。怎么确保一个公钥... 查看详情

text在万神殿区块链中的isethcall(代码片段)

查看详情

区块链中的epoch

Epoch用于定义区块链上特定事件发生的时间纪元(eraoftime),如:激励支付的时间新的验证者组负责验证交易的时间不同的区块链协议,epoch的定义不同。常用于表示在链上完成特定区块数的时间。如在以太坊... 查看详情

错误 3080006:EOSIO 区块链中的交易时间过长

】错误3080006:EOSIO区块链中的交易时间过长【英文标题】:Error3080006:TransactiontooktoolonginEOSIOblockchain【发布时间】:2020-03-0720:23:40【问题描述】:EOS使用以下方法。nodeos(node+eos=nodeos)-核心EOSIO节点守护进程,可以配置插件以运行节... 查看详情

关于今年以来区块链中的安全事件分析

区块链中的安全性相较于传统互联网安全高了很多,但高安全性也并不意味着绝对安全,再加上由于技术的缺陷和搭建时可能存在的漏洞,这让区块链中也时常会发生很多安全事件。区块链由于将数字内容转化为数字... 查看详情

[老k说区块链]区块链中的共识—免信任的共识机制

老k,柏链道捷CTO、清华阿尔山区块链研究中心高级工程师,超过17年的系统软件开发经验,在操作系统、编译器、虚拟机和符号执行方面都有实战经验。主持开发多个开眼项目,目前主要从事区块链底层系统开发工作。这个系列... 查看详情