Ethereum以太坊区块链底层换用国密算法实验报告

13 篇文章 0 订阅
5 篇文章 0 订阅

区块链技术的基础是计算机密码学,可以说***“没有计算机密码学,就没有区块链技术”***,区块链在如下方面用到了计算机密码学:

  • 验证签名,保证交易发起的真实性,用到了ECDSA

  • 哈希校验区块完整性,保证不可篡改特性,用到了hash算法(以太坊中具体用到sha2 sha3的hash算法)

  • 对区块链通讯报文进行加密,防止传输过程泄密;在北京银行网贷资金存管项目中,我司方案用加密保证私密性和可监管性

区块链应用国密算法的重要性

为了保障商用密码的安全性,国家商用密码管理办公室制定了一系列密码标准,包括SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法(ZUC)那等等。

其中:

  • SM1、SM4、SM7、祖冲之密码(ZUC)是对称算法

  • SM2、SM9是非对称算法

  • SM3是哈希算法

目前,这些算法已广泛应用于国家各个领域中,其中金融领域比如PBOC3.0中国密是国家标准。在国内区块链应用采用国密算法作为标准是必然的。

国密算法对应表

前面所述区块链功能及所采用的密码学算法,国密中都有对应的部分,见如下表格

在这里插入图片描述

完全用国密去建立起一套区块链框架,理论上是有可能的,且所用到的国密算法主要是SM2,SM3,SM4


国密替代方案

完全用国密建立起一套区块链框架,虽然理论上是有可能的,但是实际实现时需要考虑兼容性问题,我们知道以太坊的账户就是基于ECDSA椭圆曲线算法生成的,私钥是32位,公钥是65位,公钥压缩成地址后是20位。国密的对应算法是SM2,虽然同样属于椭圆曲线算法体系,但是曲线参数的不同,造成其并不兼容以太坊账户。

  • 用现有以太坊账户签名的交易,用SM2无法验证签名

  • 以太坊账户和SM2生成的账户无法进行有效的密钥交换

因此国密替换的重点放在了用SM4算法替换AES算法。

SM4算法介绍:SM4分组密码算法是我国自主设计的分组对称密码算法,用于实现数据的加密/解密运算,以保证数据和信息的机密性。要保证一个对称密码算法的安全性的基本条件是其具备足够的密钥长度,SM4算法与AES算法具有相同的密钥长度分组长度128比特,因此在安全性上高于3DES算法。

回头看我们为北京银行网贷资金存管项目所做的加密流程:
在这里插入图片描述

其中设计加密算法的如下:

  • 对业务明文加密是用对称算法进行的,此处可以用国密SM4,现在是DES

  • 对交易密钥本身的加密,也是采用对称算法的,此处可以用国密SM4,现在是AES

  • 对交易密钥加密的密钥是通过ECDSA椭圆曲线算法生成的,此处不替换,但是由于做了缓存,这种运算只有程序初始化的时候用到

也就是说如果前2种情况采用国密,就相当于覆盖了99%的加密需求


替换国密后性能对比测试

使用国密算法后,性能问题要重点考虑,因为:

  • 之前公开报道中,国内某家公司用SM2代替ECDSA后,性能显著下降,需要在架构上考虑剥离加密,采用GPU加速等方式来对冲性能影响

  • 我们之前对北京银行网贷资金存管项目的测试中发现加密速度对项目性能有较大影响,而且CPU占用率较高

考虑到如上情况,所以设计了一个实验

  • 环境为工作笔记本,4C8G,其中CPU是i5-5200U,2.2Ghz

  • 明文长度是16字节,密钥长度16字节,密文长度16字节

  • 基于Junit,每个循环经历一次加密,一次解密,且解密结果和原文进行核对,如果对不上中断退出

  • 每次测试,发起100万个加密解密请求

  • 同样地,加密过程中所用的哈希算法也替换成国密(比如密钥交换后得到的大数用hash变为32位以便后续运算),同样是每次测试发出100万个哈希请求,比对原有算法和国密的速度

对称加密测试结果对比表格:(红色为最长耗时,蓝色为最短耗时)

在这里插入图片描述
测试期间CPU占用情况比对:(前者AES,后者SM4)
在这里插入图片描述

SM4算法调用的代码:
在这里插入图片描述

SM3哈希算法调用的代码:
在这里插入图片描述

哈希算法测试结果对比表格:

在这里插入图片描述


测试情况说明:

  1. Java中加密算法的实现,可以由不同的第三方去实现;本次测试所用3种,分布是JDK自带的标准实现,著名第三方提供商SpongyCastle包中提供的AES和SM4算法。

  2. JDK自带的AES实现,速度比较慢,经过代码分析,该实现代码较为简单,没有为了提升速度将一些中间过程中可能用到的变量全部以静态方式预存;相反地SpongyCastle AES算法,采用**“以空间换时间”**的方法,定义了大量的空间用于对称加密过程中的比特变化,大大提升了速度。

  3. SongyCastle SM4实现上和SpongyCastle AES算法较为相似,也采用了类似“以空间换时间”的方法,速度较快。同样地,哈希算法使用以太坊Util类中自带的哈希算法,和采用国密SM3哈希算法,速度也差不多,甚至国密还快点。预计区块链换用国密SM3和SM4后,速度不会因此下降。

  4. 目前单单计算加密解密的TPS,可以达到十万次每秒的水平级别,而我们区块链的TPS还在千次每秒的水平级别,目前加密解密还不成为瓶颈

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
国密即国家密码局认定的国产密码算法,即商用密码。国密算法是国家密码局制定标准的一系列算法。其中包括了对称加密算法,椭圆曲线非对称加密算法,杂凑算法。具体包括SM1,SM2,SM3等,其中:SM2为国家密码管理局公布的公钥算法,其加密强度为256位。其它几个重要的商用密码算法包括:SM1,对称加密算法,加密强度为128位,采用硬件实现;SM3,密码杂凑算法,杂凑值长度为32字节,和SM2算法同期公布,参见《国家密码管理局公告(第 22 号)》;SMS4,对称加密算法,随WAPI标准一起公布,可使用软件实现,加密强度为128位。商用密码,是指能够实现商用密码算法的加密、解密和认证等功能的技术。(包括密码算法编程技术和密码算法芯片、加密卡等的实现技术)。商用密码技术是商用密码的核心,国家将商用密码技术列入国家秘密,任何单位和个人都有责任和义务保护商用密码技术的秘密。商用密码的应用领域十分广泛,主要用于对不涉及国家秘密内容但又具有敏感性的内部信息、行政事务信息、经济信息等进行加密保护。比如:商用密码可用于企业门禁管理、企业内部的各类敏感信息的传输加密、存储加密,防止非法第三方获取信息内容;也可用于各种安全认证、网上银行、数字签名等。例如:在门禁应用中,采用SM1算法进行身份鉴别和数据加密通讯,实现卡片合法性的验证,保证身份识别的真实性。 安全是关系国家、城市信息、行业用户、百姓利益的关键问题。国家密码管理局针对现有重要门禁系统建设和升级改造应用也提出指导意见,加强芯片、卡片、系统的标准化建设。截止目前,国密门禁系统的升级的案例也逐渐增多,基于自主国产知识产权的CPU卡、CPU卡读写设备及密钥管理系统广泛受到关注。一些厂商如同方锐安在2009年推出CPU卡安全门禁系列产品,在2010年北京安博会上,该公司再次向业界展示出“御”系列CPU卡门禁系统、TF-DF6000系列安全门禁读卡器以及基于CPU卡技术的一卡通系统等主流产品和系统。这些厂商是全国推广的国密门禁产品的先驱者,使“御”系列CPU卡门禁系统广泛应用于政府、监狱、司法、军工企业和大型公共智能建筑等高安全领域。以太坊是互联网新时代的基础:内建货币与支付。用户拥有个人数据主权,且不会被各类应用监听或窃取数据。人人都有权使用开放金融系统。基于中立且开源的基础架构,不受任何组织或个人控制。以太坊主网于 2015 年上线,是世界头部的可编程区块链。和其它区块链一样,以太坊也拥有原生加密货币,叫作 ether (ETH)。 ETH 是一种数字货币, 和比特币有许多相同的功能。 它是一种纯数字货币,可以即时发送给世界上任何地方的任何人。 ETH 的供应不受任何政府或组织控制,它是去中心化且具稀缺性的。 全世界的人们都在使用 ETH 进行支付,或将其作为价值存储和抵押品。但与其它区块链不同的是,以太坊可以做更多的工作。 以太坊是可编程的,开发者可以用它来构建不同于以往的应用程序。这些去中心化的应用程序(或称“dapps”)基于加密货币与区块链技术, 因而值得信任,也就是说 dapps 一旦被“上传”到以太坊,它们将始终按照编好的程序运行。 这些应用程序可以控制数字资产,以便创造新的金融应用; 同时还是去中心化的,这意味着没有任何单一实体或个人可以控制它们。目前,全世界有成千上万名开发者正在以太坊上构建应用程序、发明新的应用程序,其中有许多现在已经可以使用:加密货币钱包:让你可以使用 ETH 或其他数字资产进行低成本的即时支付金融应用程序:让你可以借贷、投资数字资产去中心化市场:让你可以交易数字资产,甚至就现实世界事件的“预测”进行交易游戏:你可以拥有游戏内的资产,甚至可以由此获得现实收益以及更多,更多。以太坊社区是世界上最大最活跃的区块链社区。它包括核心协议开发者、加密经济研究员、密码朋克、挖矿组织、ETH 持有者、应用开发者、普通用户、无政府主义者、财富 500 强公司,以及现在的你。没有公司或中心化的组织能够控制以太坊。 一直以来,以太坊由多元化的全球性社区贡献者来协同进行维护和改善,社区成员耕耘于以太坊的方方面面,从核心协议到应用程序。 这个网站,就像以太坊的其他部分一样,是由一群人共同构建的,并将持续构建下去。本课程定制符合国家标准的以太坊
以太坊是一个平台,它上面提供各种模块让用户来搭建应用,如果将搭建应用比作造房子,那么以太坊就提供了墙面、屋顶、地板等模块,用户只需像搭积木一样把房子搭起来,因此在以太坊上建立应用的成本和速度都大大改善。具体来说,以太坊通过一套图灵完备的脚本语言(Ethereum Virtual Machinecode,简称EVM语言)来建立应用,它类似于汇编语言。我们知道,直接用汇编语言编程是非常痛苦的,但以太坊里的编程并不需要直接使用EVM语言,而是类似C语言、Python、Lisp等高级语言,再通过编译器转成EVM语言。上面所说的平台之上的应用,其实就是合约,这是以太坊的核心。合约是一个活在以太坊系统里的自动代理人,他有一个自己的以太币地址,当用户向合约的地址里发送一笔交易后,该合约就被激活,然后根据交易中的额外信息,合约会运行自身的代码,最后返回一个结果,这个结果可能是从合约的地址发出另外一笔交易。需要指出的是,以太坊中的交易,不单只是发送以太币而已,它还可以嵌入相当多的额外信息。如果一笔交易是发送给合约的,那么这些信息就非常重要,因为合约将根据这些信息来完成自身的业务逻辑。合约所能提供的业务,几乎是无穷无尽的,它的边界就是你的想象力,因为图灵完备的语言提供了完整的自由度,让用户搭建各种应用。白皮书举了几个例子,如储蓄账户、用户自定义的子货币等。 2013年年末,以太坊创始人Vitalik Buterin发布了以太坊初版白皮书,启动了项目。2014年7月24日起,以太坊进行了为期42天的以太币预售。2016年初,以太坊的技术得到市场认可,价格开始暴涨,吸引了大量开发者以外的人进入以太坊的世界。中国三大比特币交易所之二的火币网及OKCoin币行都于2017年5月31日正式上线以太坊。 [1] 自从进入2016年以来,那些密切关注数字货币产业的人都急切地观察着第二代加密货币平台以太坊的发展动向。作为一种比较新的利用比特币技术的开发项目,以太坊致力于实施全球去中心化且无所有权的的数字技术计算机来执行点对点合约。简单来说就是,以太坊是一个你无法关闭的世界计算机。加密架构与图灵完整性的创新型结合可以促进大量的新产业的出现。反过来,传统行业的创新压力越来越大,甚至面临淘汰的风险。比特币网络事实上是一套分布式的数据库,而以太坊则更进一步,她可以看作是一台分布式的计算机:区块链是计算机的ROM,合约是程序,而以太坊的矿工们则负责计算,担任CPU的角色。这台计算机不是、也不可能是免费使用的,不然任何人都可以往里面存储各种垃圾信息和执行各种鸡毛蒜皮的计算,使用它至少需要支付计算费和存储费,当然还有其它一些费用。最为知名的是2017年初以摩根大通、芝加哥交易所集团、纽约梅隆银行、汤森路透、微软、英特尔、埃森哲等20多家全球top金融机构和科技公司成立的企业以太坊联盟。而以太坊催生的加密货币以太币近期又成了继比特币之后受追捧的资产。  智能合约的潜在应用很多。彭博社商业周刊称它是“所有人共享但无法篡改的软件”。更高级的软件有可能用以太坊创建网络商店。区块链程序以太坊可以用来创建去中心化的程序、自治组织和智能合约,据纽约时报的报导,在2016年5月已经有数十个可用的程序。预期的应用目标涵盖金融、物联网、农田到餐桌(farm-to-table)、智能电网、体育,菠菜等。去中心化自治组织有潜力让许多原本无法运行或成本过高的营运模型成为可能。较知名的应用有:去中心化创业投资:The DAO用以太币资金创立,目标是为商企业和非营利机构创建新的去中心化营业模式、The Rudimental让独立艺术家在区块链上进行群众募资。社会经济平台:Backfeed。去中心化预测市场:Augur。物联网:Ethcore(一间以太坊公司)研发的客户端、Chronicled(一间区块链公司)发表了以太坊区块链的实物资产验证平台;芯片公司、物理IP创建者和生产者可以用植入的蓝牙或近场通信进行验证。Slock.It开发的智能锁可以在付费后自动打开,让用户在付费后可以帮电动车充电、或是打开租屋的房门。虚拟宝物交易平台:FreeMyVunk。版权授权:Ujo Music平台让创作人用智能合约发布音乐,消费者可以直接付费给创作人。伊莫珍·希普用此平台发布了一首单曲。智能电网:TransActive Grid让用户可以和邻居买卖能源。去中心化期权市场:Etheropt。钉住汇率的代币:DigixDAO提供与黄金挂钩的代币,在2016年四月正式营运。Decentralized Capital提供和各种货币挂钩的代币。移动支付:Everex让外劳汇款回家乡。客户端软件以太坊的两个主要的客户端软件是Geth和Parity。企业软件企业软件公司也正测试以太坊作为各种用途。已知有兴趣的公司包括微软、IBM、摩根大通。德勤和ConsenSys在2016年
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值