之前本人研究的东西大多偏向于智能合约和共识算法、跨链等一些知识,确实也是这俩比较值得研究一些,在此基础上区块链中的相关关键技术还有密码学相关知识和分布式存储相关的一些知识。
本期就结合着最近在忙的东西归纳了一下区块链密码学的整理,当然学东西都得学全套不是。废话不多说上干货。
密码学在区块链中的应用归纳为3类:数字摘要算法、数字签名、加密算法。
数字摘要(又称哈希、散列或杂凑)算法能将任意长度的二进制明文映射为较短的固定长度的二进制值,即生成摘要(又称哈希值)。数字摘要算法具有输入敏感、输出快速轻量、逆向困难的特性,在区块链中,可用于实现数据防篡改、链接区块、快速比对验证等功能。此外,数字摘要算法还应用在消息认证、数字签名及验签等场景中。目前主流的数字摘要算法包括SHA256、SM3等。
数字签名算法主要包括数字签名和签名验签两个具体操作,数字签名操作指签名者用私钥对信息原文进行处理生成数字签名值;签名验签操作指验证者利用签名者公开的公钥针对数字签名值和信息原文验证签名。在区块链中,数字签名算法用以确认数据单元的完整性、不可伪造性和不可否认性。常用的数字签名算法包括RSA、ECDSA、SM2等。
根据加密密钥和解密密钥是否相同,加密算法可以分为对称加密算法和非对称加密算法。对称加密算法中两个密钥相同,并且加解密操作速度相对较快,一般用于普通数据的加密保护,主流的对称加密算法包括AES、SM4等。非对称加密算法的解密密钥是由解密者持有,而加密密钥是公开可见的,几乎无法从加密密钥推导出解密密钥,能够节约系统中密钥存储,一般用于对称密钥的封装保护和短数据加密,主流的非对称加密算法包括RSA、SM2等。在区块链中,非对称密钥算法可用于数字签名、地址生成、交易回溯和交易验证等。此外,在区块链网络系统中,密钥的
有效保护和受限使用对整个系统的安全亦有重要影响。在公有链场景,用户密钥通常通过区块链客户端程序来进行保存、管理和操作等。在联盟链或专有链场景,通常会有更复杂多层级的用户管理和密钥托管的需求,包括身份鉴别和权限管理等。
下面着重讲解哈希函数: 哈希是一种加密算法
1、哈希是一种加密算法
(1)哈希函数(Hash Function),又叫散列函数、散列算法。
哈希函数是一个公开函数,可以将任意长度的消息M映射成为一个长度较短且长度固定的值H(M),称H(M)为哈希值、散列值(Hash Value)、杂凑值或者消息摘要(Message Digest)。
(2)它是一种单向密码体制,即一个从明文到密文的不可逆映射,只有加密过程,没有解密过程。
(3)它的函数表达式为:h=H(m)
函数说明:
m:任意长度消息(不同算法实现,长度限制不同,有的哈希函数(SHA-3)不限制消息长度,有的限制(SHA-2),但即使有限制其长度也非常大,可以认为是任意长度消息)
H:哈希函数
h:固定长度的哈希值
无论输入是什么数字格式、文件有多大,输出都是固定长度的比特串。以比特币使用的Sha256算法为例,无论输入是什么数据文件,输出就是256bit
2、Hash函数的特性
一个好的哈希函数必然具备:不定长输入固定长输出、抗碰撞性、不可逆性这三个特点。
(1)不定长度输入,固定长度输出
所谓不定长度输入,固定长度输出,我们在前文中已经讲过了。就是不管输入的数据是多长,是多大,输出的数据长度、格式都是固定的。比如你选择sha256,那么你的输出就是256位。
(2)抗碰撞性
如果x不等于y,但是H(x)等于H(y),那么我们就说H()这个函数不具有抗碰撞性。反之,我们就认为其是具有抗碰撞性的。一个好的hash函数是一定要具有抗碰撞性的。
(3)不可逆性(单项性)
给定哈希函数H()和输入数据,可以很方便的求解出哈希值,但是给定哈希值和哈希函数几乎不能求解出输入数据是什么,这就是不可逆性,也叫做单向性。
一个优秀的 hash 算法,将能实现:
(1)正向快速:给定明文和 hash 算法,在有限时间和有限资源内能计算出 hash 值。
(2)逆向困难:给定(若干) hash 值,在有限时间内很难(基本不可能)逆推出明文。
(3)输入敏感:原始输入信息修改一点信息,产生的 hash 值看起来应该都有很大不同。
(4)冲突避免:很难找到两段内容不同的明文,使得它们的 hash 值一致(发生冲突)。
3、哈希函数在区块链中的作用
(1)快速验证。哈希函数在区块链中,生成各种数据的摘要,当比较两个数据是否相等时,只需要比较他们的摘要就可以了。例如,比较两个交易是否相等,只需要比较两者的hash值,快捷又方便。
(2)防止篡改。传递一个数据,要保证它在传递过程中不被篡改,只需要同时传递它的摘要即可。收到数据的人将这个数据重新生成摘要,然后比较传递的摘要和生成的摘要是否相等,如果相等,则说明数据在传递过程中没有被篡改。
(3)用于POW共识算法工作量证明。这个主要是在pow的共识算法中使用。详细说来,就是给定一定的数据,然后让你寻找其他的数据,合并起来计算出来的hash值小于某个值。比特币、目前的以太坊,都是使用的POW共识。
POW简介 Proof of Work,工作证明。
POW共识算法主要是通过计算难度值来决定谁来出块。POW的工作量是指方程式求解,谁先解出来,谁就有权利出块。方程式是通过前一个区块的哈希值和随机值nonce来计算下一个区块的哈希值,谁先找到nonce,谁就能最先计算出下一个区块的哈希值,这种方式之所以被称为计算难度值是因为方程式没有固定解法,只能不断的尝试,这种解方程式的方式称为哈希碰撞,是概率事件,碰撞的次数越多,方程式求解的难度就会越大。比特币就是采用POW共识算法
winter
参考:https://blog.csdn.net/weixin_42694422/article/details/119853859
CBD中国区块链技术和应用发展研究报告
区块链发展研究报告2020
(201