◆何宇豪 赵杰 李泽欣 张鸿 丁悦舟 胡春月
(福建江夏学院电子信息科学学院 福建 350108)
目前数字资产已逐渐成为社会生活中不可或缺的信息载体,例如,图片、音视频、文档等。传统的数字存证是依靠中心化管理系统来实现的,缺乏统一的接口。由于数字资产的易篡改性,很容易导致数据的丢失和泄露,而人们对于数字资产的保护意识薄弱,容易让不法分子有机可乘,从而造成各种网络安全事故。由此可见,急需一种新技术来确保当前数据存证的安全性,而这个新技术就是区块链。
区块链技术由比特币(Bitcoin)发展而来的,是比特币最核心的技术。2008年发表的论文《比特币:一个P2P 电子现金系统》[1],让人们知道了区块链具有安全透明、去中心化、不可篡改和可追溯性等特点。虽然不是最完美的技术,但在各方面都优于传统的存证技术,所以区块链技术迅速发展并运用于电子货币、金融科技、医疗、互联网等方面。而我国在2013年1月1日把电子证据纳入法定证据之范畴,正式写入《中华人民共和国民事诉讼法》中[2],大大提升了电子证据的地位,但是由于电子证据的缺乏,以及电子证据的数字易篡改性,使其难以运用在实际生活中,所以需要通过运用区块链技术和密码学原理的技术,来实现可自动检验输入信息并寻找其中要保存的数字资产,以保证数字资产的保密性和安全性。
区块链技术是由IPFS、密码算法、共识算法、智能合约、P2P通信等技术组成的技术,其由多个节点组成,具有去中心、公开透明、不易修改等特点[3]。区块链的结构有区块头和区块体组成。区块头负责实现区块的重要功能,包括了前一区块的Hash 值、本区块的Hash值、TimeStamp、Merkle Root 等内容;区块体则是存放交易数据的地方,运用Merkle Root 算法对整棵树进行签名,鉴定数据的真假。
区块链在不同的平台可以划分为公有链、联盟链、私有链三种模型[4-5]。公有链(Public Blockchains)是指个体和企业都可以发送交易,且交易能得到区块的确认,公有链的共识算法有PoS-PoW 混合(即PoA)、DPoS。联盟链(Consortium Blockchain)由多个机构共同管理维护,只对联盟内部成员开放全部或部分功能,其公开程度是介于公有链和私有链之间的,它的共识算法包括BFT 和Kafka。私有链(Private Blockchain)是与公有链相反的,其权限值在一个人或一个机构手里,信息是不公开的,它的共识算法包括RAFT 和Paxos,本文主要采用的是私有链。
数字资产是企业或个人具有的电子数据,以备出售或正在生产的非货币性资产。这种资产价格昂贵、数量大、依附性强、成本递减、互动性强。政府工作报告在2015年增加了“互联网+”的内容,数字化转型成为越来越多企业的选择。因为数字资产自身具有数字性和易篡改性等特点,所以有效保存数字资产显得尤为重要。
社会发展进入了信息时代,计算机可以帮助人类储存大量信息,同时进行大规模运算,由此产生了大量的数字资产。数字资产易变且脆弱,容易遭到破坏而使其失去价值,系统运用区块链技术,探索数字经济模式的创新之路,以获得可靠的数字资产存证。
IPFS 是一种共享的、分布式的、长久的网络传输协议,是分布式哈希表(DHT)、比特流(Bittorrent)和Git 版本控制系统的综合继承创新,是由Juan Benet 设计,为Protocol Labs 所拥有[6]。这是种内容寻址的对等超媒体分发协议,可缓解传统信息过度负载的情况,使访问分散到网络的其他参与节点,减少对文件托管中心的依赖。IPFS 被称为下一代Web 协议,因为如今的HTTP 协议受制于目标服务器,易出现服务中断、数据丢失、数据篡改等现象,所以IPFS 是一种比较好的协议并可以用来解决以上问题。
(1)SM2
SM2 算法是椭圆曲线密码算法,是非对称密码算法。其运行速度较快、密码算法设计较为复杂、性能开销较小。SM2 算法由我国自主设计,包括SM2-1 椭圆曲线数字签名算法、SM2-2 椭圆曲线密钥交换协议、SM2-3 椭圆曲线公钥加密算法,本系统拟在数据加密中使用此算法保证安全性。
算法基本原理:
用户A 拥有公钥PB=[dB]G(仅有PB 值),用户B 拥有私钥dB;
加密:C1=k*G C2=M⊕(k*PB);
解密:M′=C2 ⊕(dB*C1);
证明:dB*C1=dB*k*G=k*(dB*G)=k*PB;
因此,M′=C2⊕(dB*C1)=M⊕(k*PB)⊕(k*PB)=M,得证。
(2)哈希算法
哈希算法(Hash)又称散列算法,是一种与指纹类似,以较短信息为保证的唯一性方法。其原理是使用一个输入有效的明文后,会得到一个与之相对应的、唯一确定的、固定长度的字符串[7]。Hash算法的特点是加密过程是单向的,输出的密文不能反推出输入明文,输入的明文出现任何变化,输出的结果就会大不相同[8-9]。Hash 算法在区块链中最主要的作用是用来检验原始数据是否被篡改,通过将上一区块的Hash 值发送保存到下一区块的链式结构中,来保证当链条的任何一环断开时,都能被及时发现。
(3)数字签名
数字签名,是唯有信源才能产生的一段数字串,让其他人无法冒充信源,这是证明信息是否真实的重要手段。它运用了公钥加密技术来实现,类似于写在纸上的签名。一套数字签名通常有两种密钥,一个用于验证,另一个用于签名。数字签名与非对称密钥加密技术以及数字摘要技术相结合,使用后文件具有完整性和抗否认性。
(4)默克尔树
默克尔树(Merkle Tree)也被称作哈希树。默克尔树在区块链中是一种特殊的二叉树,其叶子节点上的值由Hash 值来表示,Hash 值是由数据块经过Hash 算法运算得到的。Merkle 树的防篡改能力很强,对于任意数据区块上的原始内容,即使是一个很微小的改变都会导致最后结果不同[10]。因此可以利用Merkle 树的唯一确定性来保障数据的安全性,同时可以在较短时间内对数据进行比对,快速确定与原始数据不同内容的位置[11]。
3.1.1 主要功能需求
系统为用户提供了以下主要功能:
(1)主界面,包括加密、上链、授权、查询、下载、比对以及文件内容提取等;
(2)将需要存证的文件上传至系统,系统会返回一个hash 值,以备上链;
(3)通过授权的用户可以查看被加密的文件信息;
(4)用户不仅可以查看自己上传的文件,还可以查看他人上传的文件。
用户注册是用户输入用户名和密码,系统将信息存放至系统数据库,使用户获得进入系统的权限。用户登录需提供唯一代表其身份的用户标识符,如果用户存在,则区块链会自动识别用户身份,密码输入正确后就可以使用系统提供的服务。
文件加密功能是指在原始文件上传后,对其进行加密的过程,保证文件的安全性。没有被授权的用户,不可以访问这个文件。
文件上链功能是文件进行哈希化最重要的一步,是提取上传文件的关键信息,用SM2 算法加密内容,同时参与文件的Hash 值生成,并保存至IPFS 中。
文件授权功能是指可以给第三方对象授权访问自身所拥有的文件,让其拥有权限可以访问、查看以及下载。
文件查询功能是指用户选择文件查询模块,系统会直接查询出文件的信息,用户可以在查询出的信息中选择自己需要的内容。
文件下载功能是指用户在文件查询界面,可以选择下载所要的文件,并得到原始文件。IPFS 文件生成哈希值的方式,并以哈希值的方式进行下载。
文件比对功能是指用户文件比对模块,能比对文件是否为用户已存证文件,是否未经篡改。
文件内容提取功能是指用户选择文件内容提取模块,选择文件之后点击提取,系统会截出关键信息,显示在页面中。可以让用户大致了解文件内容。
用户在选择用户信息管理后,系统会要求用户输入原密码、新密码,并对密码进行修改。
3.1.2 用例分析
用例图描述了系统的功能以及交互对象,如图1所示。其中,参与者是用户,系统提供注册模块、登录模块、修改密码、文件上链、文件查询、文件比对、文件授权、文件内容提取等功能,供用户使用。
图1 用例图
本系统的用户子模块主要是由注册和登录以及修改密码组成。
用户在使用本系统前需要进行注册,获得进入系统的权限,需要输入用户名、密码,确认密码等信息后才可以进行注册,若信息无误,且输入的用户名被未注册,则注册成功,即可进入登录并使用系统。
已注册的用户即可进行登录,用户需输入登录信息,验证通过即可进入系统,进行上传文件、比对文件、查询文件等操作。如果身份验证出现错误,就回到登录界面重新进行登录。
如果需要修改密码,可以在系统里进行修改,输入旧密码和新密码,在确认密码都正确后,则修改成功,如果旧密码不对或者确认密码与新密码不符,则修改失败。
本区块链的可信数字资产存证系统是默认上传的文件在读取完文件信息后,生成相应的关键信息,运用SM2 加密算法来加密文件关键信息,生成密文,参与区块链的hash 演算并作为数据保存下来。
文件加密的流程如下:
(1)用户上传文件,系统通过对文件的读取,获取到文件的关键信息;
(2)使用SM2 公开密钥加密算法对获取到的文件关键信息进行加密;
(3)将SM2 密文作为数据再参与区块链的hash 值演算并作为数据保存下来。
(4)将文件上传至IPFS 进行保存。
信息检索是存证用户在点击查询后,系统直接输出用户权限范围内的文件信息,输出的结果包括BlockID、Hash 值、PreviousHash、FilePath、TimeStamp 和Nonce 等信息,并且能够对已存证的文件进行下载和比对。
文件授权是用户允许授权对象访问经过加密的文件内容,其他对象未经允许是不能够访问查看加密的文件内容,是文件管理的延伸,其主要是为了保障传输数据过程的安全性。
文件授权的流程如下:
(1)存证用户输入要授权的文件的BlockID;
(2)存证用户输入要授权的用户的用户名;
(3)被授权的用户可以对文件进行对应的操作。
数字资产保全和管理模块是本系统以及区块链存证应用中较重要的一个模块,该模块主要是实现上传文件的上链操作。数字资产保全中的保全对象是系统所提取的关键信息,其为经过SM2 加密得到的密文信息,并且把保全对象的密文信息保存到私人链上。
文件内容提取模块主要是为了选择需要进行内容提取的文件,由系统对这个文件按照某种规则进行分割,从而提取出关键信息以及文件的主要内容,并显示在下方,方便用户查看。
测试过程按照系统需求逐一测试检查每个模块的功能是否完整,流程是否正确,各个模块的衔接能否正常跳转。主要测试文件能否正常上链,文件能否正常查询,文件能否正常比对等功能。测试情况如表1所示。
表1 测试表
数字资产其应用前景广阔,但因受其数字化易篡改性特点,易受攻击,且大多数人不知道如何去妥善保管自身的数字资产,而传统的存证方式又存有众多问题而难以解决。
本文使用区块链的去中心化技术,探寻数字经济模式创新,亟待提高传统存证系统的安全性,实现一个可自动检验输入信息,寻找要保存的数字资产,并实现基于区块链的可信数字资产存证的系统。系统主要采用的是私有链模式和国产SM2 密码算法来保存用户所上传的数据,总体上实现了系统设计的基本功能。
最后,对系统进行的模块测试,无论是文件上链、文件下载、存证文件比对,还是存证文件授权、文件内容提取以及用户功能等均能达到预期的效果。系统目前正逐步推广应用于大学生毕业设计系统等相关领域,未来可进一步在文档保密、金融数字证书以及其他相关信息安全领域发挥应有的作用。