区块链数字签名和哈希算法

第五届世界互联网大会将在乌镇举行,此次互联网大会的主题是“创造互信共治的数字世界--携手共建网络空间命运共同体”。以“ABCDEHI5G”(人工智能、区块链、云计算、大数据、边缘计算、智慧家庭、物联网和5G)为代表的新技术蓬勃兴起,正深刻地改变人类的生产方式、生活方式及思维方式,改变着人类文明的进程。

区块链发展进入寒冬期,专注做事情,一起来深入学习区块链数字签名和哈希算法。为了防止发送节点信息和数据被恶意伪造和篡改,区块链也引入数字签名技术。

一 交易过程

区块链交易过程如下,如下图1所示:

1 加密者生成公钥私钥对。

2 加密者对信息进行哈希运算生成摘要,利用加密者私钥对摘要处理生成数字签名信息。

3 加密后的数字签名信息和信息连同公钥三者一起发送给接受者。

4 接受者通过发送者公钥对加密哈希数值进行解密,还原哈希数值。

5 对签名信息进行验证。

图1 区块链数据层交易过程示意图

区块链中,数字签名技术包含两种运算算法:签名和验证

信息数据的哈希,也称为“摘要”,无论信息有多大,都可生成一个固定长度的摘要,该摘要可校验信息是否被篡改,只要消息被修改任任意字节,摘要的校验都会失败。

签名是利用私钥和信息的哈希数值产生签名;

发送节点信息数据通过Hash加密生成摘要,然后利用发送节点的私钥对摘要进行数字签名,发送节点把信息数据/数字签名/发送节点公钥一起全网广播给接收节点。

图2 数字签名及Hash加密示意图

验证是使用公钥验证签名的真实性

接收节点把接收到的数据信息进行哈希加密得到散列数值,与发送节点发送来的数字签名解密得到的散列数值进行校验,若相同在签名有效,则数据正确。

图 3 数字签名验证示意图

数字签名技术作用是保证发送信息不会被篡改。

二 哈希算法及优缺点

哈希算法解决了将信息简洁高效编码并且可让参与者安全快速进行验证的问题。

以太坊与比特币都采用了ECDSA算法,唯一区别是Hash函数不同;比特币的哈希算法使用的是SHA2-256,以太坊的哈希算法采用的是全新的SHA3-256;

最早Hash算法标准之一还有MD5哈希算法,输出固定128位字符串,因为字符串长度较短并且操作较为简单,容易被破解而受攻击。

SHA1是在MD5基础上提高了输出长度,输出160位固定长度字符串,并未根本上提高其抵御更强大机器能力。

与SHA1/SHA2不一样,SHA3并不是单纯扩展字节数,而是采用了新的Keccak算法。目前SHA1已经被攻破,SHA2被攻破只是时间问题。同样字节宽度的SHA3比SHA2更安全。

SHA3是从根本上替代SHA2的新标准,内部算法机制完全不同,SHA3具备海绵结构机制,可以使用随机排列组合来吸收和输出数据,同时还给位未来输入数值提供随机源。

虽然现在已经有SHA3,随着计算机运算能力提高,量子计算发展,但是Hash算法仍然面临下面两个问题:

1)Hash函数内部复杂度不够高

1)Hash函数生成的数值长度不够长

三 数字签名技术及优缺点

数字签名,又名为公钥数字签名,是一种通过公钥加密鉴别数字信息的方法。基于该技术信息发送者可以通过发送别人不能伪造的一串数字字符,也可以证明发送信息真实性。

根据密钥不同将现代密码技术分为两类:对称加密算法和非对称加密算法:

A 对称加密是只要一个密钥,加密和解密都是使用同一个密钥。

B 非对称加密密钥和解密钥匙是不同的。

非对称加密优点是不需要在网络上暴露加密的密钥,从机制上来说更安全。缺点加密效率比对称加密低很多,所以非对称加密一般只是使用于数字签名这样数据量较小的加密运算中。

区块链公钥加密系统采用是非对称加密算法。采用较多的是公钥加密算法, 如DSA、RSA、PGP、ECC。

目前区块链中常用的数字签名算法是椭圆曲线签名算法ECDSA。以太坊与比特币都采用了ECDSA算法;EOS采用多重签名算法。网银行系统采用的是RSA算法。

在ECSDA算法中,使用椭圆曲线密码(ECC)对数字签名算法(DSA)的模拟。ECC创建基于使用椭圆曲线上的点来定义的公钥/私钥对,黑客很难用通常使用的暴力破解的方法来破解,是以较少的计算能力提供比RSA加密算法更快的加密算法。

ECC的主要缺点:

1)比RSA加密显著地增加了加密消息的大小。

2)ECC算法比RSA更复杂和难实现,降低了算法的安全性。

四 未来

随着数字计算迅速发展, 量子计算会破解RSA加密算法,也会暴力破解Hash算法,不论选择何种算法,都会驶向一个计算更加高效的未来,须尽力挑选经得起时间考验的好算法。

如果一个人全部信息全部局限于他的工作领域,那么他的工作不会做的很好。一个人必须有阳光,他可以从书籍上或者人们身上-最好是两者兼有培养眼光。

—哈维.费尔斯通

欢迎分享

网易乐得DBA组负责网易乐得电商、网易邮箱、网易技术部数据库日常运维,负责数据库私有云平台的开发和维护,负责数据库及数据库中间件的开发和测试等,分享最前沿实用数据库干货,关注网易乐得DBA,精修数据库功底。

关注「网易乐得DBA」

了解前沿数据库技术

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181108G0SL2J00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券