IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> Ethereum以太坊区块链底层换用国密算法实验报告 -> 正文阅读

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

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

  • 验证签名,保证交易发起的真实性,用到了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还在千次每秒的水平级别,目前加密解密还不成为瓶颈

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 19:34:31  更:2021-11-09 19:34:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:02:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码