易凡 刘燕莉
摘 要:为了解决信息加密中硬件加密效率较低、软件加密安全性不足的问题,设计了一种基于区块链和高速密码卡的软硬件结合加密系统。系统在数据加密前增加了信息准备步骤。通过去中心化的区块链对待加密信息进行处理,将计算机的硬件特征引入签名验签,不通过第三方CA机构即可达到可信的目的。加密系统避免了密码资源暴露在网络中,提高了效率,改善了用户体验,增强了点对点通信的安全强度。
关键词:区块链;
智能合约;
加密卡;
摘要值
中图分类号:TP309.7;
TP183 文献标识码:A 文章编号:2096-4706(2023)09-0181-04
Abstract:
In order to solve the problems of low efficiency of hardware encryption and insufficient security of software encryption in information encryption, a combined software and hardware encryption system based on blockchain and high-speed cryptographic card is designed. The system adds a new information preparation step before data encryption. By processing the information to be encrypted through a decentralized blockchain, the hardware characteristics of the computer are introduced into the signature and verification, the purpose of trustworthiness can be achieved without going through a third-party CA institution. The encryption system avoids the leakage of cryptographic resources in the network, increases efficiency, improves user experience, and enhances the security strength of peer-to-peer communication.
Keywords:
blockchain; smart contract; cryptographic card; digest value
0 引 言
數据加密是计算机系统对信息进行保护的一种可靠办法。它利用密码技术对待发送信息进行编码,实现信息隐蔽,从而起到保护信息安全的作用。可以说,加密技术是网络信息安全的基石。从加密技术的发展来看,大致可以分为软件加密和硬件加密两种形式。
软件加密的定义比较宽泛,一般来讲,经过加密软件授权与某一种或某几种特定信息进行绑定,再进行加密的方法都称为软件加密。这里的特定信息通常包括三类,一是用户信息如用户名、用户编号,二是计算机硬件特征如CPU序列号、MAC地址、硬盘序列号、BIOS信息,三是互联网上的授权服务器绑定,是云计算模式的授权方案。其中,采用绑定计算机硬件特征的加密方式,不使用额外的硬件设备,易于管理和维护,且加密软件可以电子化发行,有助于提高效率。但软件加密的密码资源存储于主机内,不法分子能通过技术手段获取密码资源,甚至篡改、伪造密码资源,造成了一定的安全隐患。
相比于软件加密,硬件加密的安全强度可以得到保证,它借助硬件设备来实现。在加密过程中,加密密钥、加密算法、自定义文件、敏感数据等都存储加密卡中。硬件加密所采用的加密卡一般都与计算机PCIE主板插槽完全匹配,可直接插入槽中工作。加密卡与计算机之间的数据通过PCIE总线进行传输,所有的加解密过程都在加密卡中进行。由于卡中的密码资源相对独立,没有相应的授权无法导出,极大地增加了加密的可靠性。但与此同时,硬件加密一次性永久授权的方式,无法方便实现用户的按需购买和二次更新。另外,信息发送者采用加密卡单独进行加密时,必须委托CA颁发证书,之后向全网公布公钥,获取公钥后对信息进行加密。这个过程不仅需要选择可信的第三方CA机构,而且整个证书认证体系的过程也影响了客户体验,造成了效率的降低。
为了解决上述两种加密方式分别存在的问题,本文设计了一种基于“区块链-加密卡”的软硬件结合信息加密系统(以下简称加密系统)。
1 加密系统设计
加密系统由区块链模块、加密卡硬件模块和管理软件模块三部分组成。
1.1 区块链模块
区块链模块包括区块链底层平台、智能合约及区块链上层应用:区块链底层平台由传输网络中的计算机组成,在此基础上,向上部署了智能合约上层应用系统。由于区块链反转了应用层和协议层之间的分布模式,区块链应用层为满足用户需求,需要调用协议层及智能合约层的接口,来丰富整个区块链生态。
加密系统在传输网络中部署区块链模块的流程包括了智能合约的部署、传输网络中计算机账号的注册、摘要值的获取。
1.1.1 部署智能合约
智能合约作为目前区块链的核心技术之一,是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约最大的优势在于可以不通过第三方进行可信交易,自动促进、验证或执行可信的交易,这些交易可追踪且不可逆转。本系统借助智能合约完成数据的加密,部署智能合约需要五个步骤:
1)启动并配置一个以太坊节点,首先安装go语言,目的是编译go-ethereum源碼;
之后安装安装git用以拉取go-ethereum 源码;
获取go-ethereum后,切换到指定的release branch;
添加geth到系统路径并启动geth重要参数。当出现如下类似结果时表明配置成功,如图1所示。
2)编写智能合约。合约部署交易的数据部分是初始化期间将要执行的代码。这部分代码会做下面两件事:运行构造器部分的代码,设置存储值等。复制剩下的代码到内存区并返回。
3)智能合约经以太坊虚拟机的编译,成为计算机可运行的字节码,同时会产生二进制接口规范(ABI)。ABI是合约接口的JSON表示,包括了变量、事件和可以调用的方法;
另外编译能够处理编译时抛出的错误,确保不会在包含错误的源代码上进行编译。
4)合约发起用户将编译好的字节码文件通过发起交易的形式广播到区块链网络中。
5)矿工确认后将智能合约存入区块链,同时使用节点的默认地址为合约签名,并得到智能合约所在地址及调用合约所需接口。
1.1.2 注册账户
传输网络中的计算机通过区块链上层应用,注册账户,获得区块链上唯一的账户ID。
1.1.3 获取摘要
各计算机通过智能合约,将公钥数据及计算机硬件特性信息摘要上链存为块消息;
每个上链的计算机通过块消息的哈希值,查找获取块消息中的公钥及硬件特性信息摘要数据。
1.2 PCIE加密卡硬件模块
PCIE加密卡采用PCIE插槽,内部集成了一款64位的RISC嵌入式处理器,有专用的软件集成开发环境和扩展指令,支持SM1、SM2、SM3、SM4等国密算法以及DES、3DES、AES、RSA等多种国标算法,适用于数字签名与身份认证。
加密卡基于StratixIII系统FPGA-DE3开发板实现,DE3开发板包含丰富的器件资源及外设结构,有充足的开关、LED流水灯、按键,能够满足各种数据传输与加密的需求,内部的高速扩展接口可以实现与其他开发板的连接,提升了数据传输效率。DE3开发板不仅器件资源丰富,外设接口也相当成熟,在设计时只需对FPGA芯片内部控制系统进行二次开发,减少了工作量。
考虑到加密卡在开发阶段与应用阶段你的不同需求,设计了两种电源供电:一是稳压电源供电,通过稳压电源直接输出三路所需电压到DE3开发板上。这种方案效率较高,输出电流大,但同时功耗较高,噪声大,使用前需要调节相应参数,可以用于开发板的设计验证阶段。二是电源芯片供电,选用LT1764系列电源芯片将输入的5 V直流电压转换成各个模块所需要的不同电压,这种方案输出电流、噪声、功耗都较小,设计完成后无须人工干预,适合用于开发板的实际工作阶段。
本系统通过Nios II嵌入式处理开发包中的组件SOPC Builder完成SOPC子系统的定制,实现软核系统的基本配置与生成;
使用Verilog硬件描述语言对自定义控制模块进行描述并借助Altera集成开发环境Quartus II下载到主控芯片FPGA中。在硬件设计完成之后使用集成开发环境Nios II进行软件的开发与调试,实现对硬件逻辑的控制。在进行数据传输时,开发板通过内部FPGA芯片Nios II CPU接收与下发上位机命令,并在数据传输完成后将测试结果上传,完成系统上位机与下位机间的数据交互。
1.3 管理软件模块
管理软件模块提供杂凑算法API接口、公钥加密API接口、签名生成API接口、签名验证API接口,可以为用户提供从公钥加密到签名、验签的一整套算法接口,无须借助其他设备与模块,方便随时调用。以签名生成与签名验证为例,管理软件模块工作流程如下:
1)将所有业务请求参数按优先级进行排序。
2)将参数名称和参数值链接成一个字符串。
3)在字符串的首尾加上签名API接口密钥组成一个新字符串。
4)对新字符串进行散列运算得到API签名,对签名进行编码,完成签名的生成。
5)对这两个签名进行校验,比对生成的API签名是否一致,得出签名的有效性。如果有效,则继续执行业务流程,否则拒绝请求。
当布置完成区块链网络后,加密系统即可开展工作,其工作流程可以分为:信息准备阶段、信息加密阶段、信息解密阶段。
2 信息准备阶段
计算机通过加密卡管理软件模块调用公私钥对生成函数接口API,生成一组公私钥对作为后续公钥加密的密钥。其中,公钥传入计算机内存中,私钥只存储在加密卡中。
计算机调用加密卡杂凑算法API接口,将计算机的硬件特征信息加密生成计算机硬件特征信息摘要,存放于加密卡并上传至计算机中。硬件特征信息摘要存放于加密卡的地址固定,内容无法更改,包括CPU序列号、BIOS序列号、网卡MAC地址和硬盘序列号。
计算机将加密卡提供的公钥及自身硬件特征信息摘要通过智能合约规定上传至区块链中,得到每个区块地址哈希值。通过区块链上层应用,计算机可以根据区块地址的摘要值获取其他计算机公钥及硬件特征信息摘要。信息准备阶段流程如图2所示。
3 信息加密阶段
以两台通用计算机为例,描述信息加密阶段流程:
1)在信息加密数据准备完毕后,调用非对称加密算法API接口,计算机Ⅰ以计算机Ⅱ的公钥Ⅱ作为加密密钥,以明文信息作为待加密数据,通过加密卡处理得到加密消息Ⅰ。
2)计算机Ⅰ从加密卡固定地址内读取自身的计算机硬件特征信息摘要Ⅰ,和加密消息Ⅰ拼接后,通过杂凑算法生成待验签消息Ⅰ。
3)计算机Ⅰ调用签名算法API接口,以待验签消息Ⅰ作为待加密数据,以密码卡内的私钥Ⅰ作为加密密钥,通过加密卡处理得到签名消息Ⅰ。
4)将加密消息Ⅰ和签名消息Ⅰ打包发送给计算机Ⅱ完成加密流程。
信息加密阶段流程如图3所示。
4 信息解密阶段
以两台通用计算机为例,描述信息解密阶段流程:
1)在信息加密完毕后,计算机Ⅱ从区块链中获取计算机Ⅰ的公钥及硬件特征信息Ⅰ的摘要,调用验签算法API接口,以签名消息Ⅰ作为待验签数据,以计算机Ⅰ的公钥Ⅰ作为解密密钥,在加密卡中解密签名消息Ⅰ得到验签消息Ⅰ。
2)调用杂凑算法API接口,计算机Ⅱ将计算机Ⅰ的硬件特征信息摘要Ⅰ与加密消息Ⅰ拼接后通过杂凑算法处理得到验签消息Ⅱ。
3)在计算机Ⅱ的密码卡内,对比验签消息Ⅰ和验签消息Ⅱ是否一致,如果一致则判定计算机Ⅰ身份信息无误且数据未被更改。
4)计算机Ⅱ调用非对称解密算法API接口,以加密消息Ⅰ作为待解密数据,以计算机Ⅱ密码卡内的私钥Ⅱ作为解密密钥解密得到明文;
如果不一致则判定计算机Ⅰ身份信息无效或信息被篡改。
信息解密阶段流程如图4所示。
5 结 论
传统区块链体系中的加密算法大多没有用于链上的数据的加密存储,即任何人都能获取链上数据,仅仅能实现了交易双方身份的隐私。加密卡加密的方式虽然可以避免上述问題,却因为第三方CA的介入,增加了加解密的流程。
本文设计的基于“区块链-加密卡”信息加密系统,将区块链、加密卡硬件、管理软件进行融合,在依靠硬件设备的参与保证了信息安全的同时摒弃了CA,减少了加密流程,大大提高了加解密及签名验签效率,具有重要的价值。经过对AES算法密钥生成、加密解密运算进行测试。在密钥长度采用256位,数据分组长度为128位的ECB模式下,相较于传统密码机加密,其加密效率提高了大约27%。
参考文献:
[1] 彭阳,孟李林,李年,等.基于FPGA的高速加密卡设计与实现 [J].电子科技,2013,26(6):42-45.
[2] 刘烊,侯方勇,陈雪.基于嵌入式系统硬件加密的技术研究 [J].黑龙江科技信息,2012(36):105+11.
[3] 王继业,高灵超,董爱强,等.基于区块链的数据安全共享网络体系研究 [J].计算机研究与发展,2017,54(4):742-749.
[4] HUANG B T,LIU Z G,CHEN J H,et al. Behavior pattern clustering in blockchain networks [J].Multimedia Tools and Applications,2017,76:20099–20110.
[5] 胡凯,白晓敏,高灵超,等.智能合约的形式化验证方法 [J].信息安全研究,2016,2(12):1080-1089.
[6] 李明.基于PCI-E高性能密码卡的关键技术的研究 [D].西安:西安电子科技大学,2018.
[7] 唐乐爽,窦同锐,桑洪波,等.基于I/O前后端模型的密码卡软件虚拟化 [J].计算机系统应用,2022,31(1):286-294.
[8] 李萍,朱春琴,曹磊,等.基于高性能密码实现的大数据安全研究 [J].无线互联科技,2021,18(1):104-107.
作者简介:易凡(1990—),男,汉族,河南信阳人,工程师,硕士,研究方向:信息安全;
刘燕莉(1988—),女,汉族,河南新乡人,助教,硕士,研究方向:通信与信息系统。