基于区块链的审计数据查询框架构建研究

作者简介:
徐超,博士,南京审计大学计算机学院/智能审计学院院长,教授,博士生导师,研究方向为大数据审计、区块链审计;赵必然,南京审计大学计算机学院/智能审计学院硕士研究生,研究方向为区块链审计;陈勇,博士,高级工程师,南京审计大学计算机学院/智能审计学院硕士生导师,研究方向为大数据审计、区块链审计。

原文出处:
会计之友

内容提要:

02


期刊代号:V3
分类名称:审计文摘
复印期号:2023 年 05 期

关 键 词:

字号:

      随着物联网(IoT)、供应链管理、远程信息处理(Telematics)等的快速发展,数据逐渐成为事件驱动的载体,但在数据交互过程中其完整性和安全性无法得到保证,迫切需要新技术来有效地管理数据。区块链作为不可信环境中的可信机器,在数据完整性、去中心化和分布式账本技术方面已被证明是有效的。审计对数据的真实性和完整性的要求是十分严格的,所以在这点上,区块链很好地满足了审计的需求。

      在区块链技术和审计的结合方面,一些学者从不同角度开展了研究。毕秀玲等认为区块链技术是审计数据的安全保障,可以构建起“审计智能+”的免疫系统。郑石桥分析了区块链对审计取证路径的影响,并提出了一个区块链对审计取证影响的理论框架。王琳等基于区块链技术构建了一套适用于现代审计业务发展趋势的实时审计框架,并对框架内各个模块的组成、功能及工作机理进行详细说明。房巧玲等提出并构建了一种区块链技术驱动下的审计模式——基于双链架构的混合审计模式。王涵等提出了一种基于区块链和默克尔哈希树的公共审计数据共享方案,以达到对管理员权限的控制和数据的动态修改,并在实现隐私保护、批量审计和降低系统资源消耗的同时,保证了方案的安全性。综上,目前区块链与审计结合的研究主要还是停留在理论框架上,应用方面的侧重点也没有考虑到数据的查询问题。

      二、研究现状

      在审计过程中,被审计数据的数量和属性繁杂,审计问题多种多样,而每一个审计问题往往只涉及部分信息。所以除了要保证数据的完整性以外,如何根据特定的审计问题从区块链上快速地找出所有目标信息也变得越来越重要。

      然而,区块链缺少传统数据管理系统中的许多便利,例如强大的查询引擎,在查询语言和查询处理方面使用起来不方便,导致区块链只支持基于哈希的关键字查询,查询方式单一,且需要遵循特定的格式(例如128位十六进制元素)。同时,很多区块链系统为了追求卓越的写性能,都采用键值数据库作为底层数据库,例如Level DB。然而,这类数据库通常基于LSM-tree存储结构,其读取性能勉强令人满意,尤其是随机读取。

      近年来的研究主要分为三大方向来解决这些问题。一是通过智能合约驱动数据查询。Abuhashim et al.旨在通过编写不同的智能合约函数将数据放入区块链上的智能合约中,以支持区块链索引和检索。Gursoy et al,采用了在以太坊上使用FastQeury智能合约在区块链上存储和查询药物基因组学数据的方案,该方案利用属性值的唯一性进行存储映射,类似于哈希表,以实现高效的键值查询。然而,智能合约存在太多限制,包括智能合约本身的潜在漏洞、Gas限制、Solidity语言转换为字节码时功能边界模糊等。并且,从这些文献的实验部分可以看出,智能合约只能在特定的数据量较小的场景下使用,不具备泛化性。二是把区块链数据存储在其他数据库中。Ether QL系统中包含一个同步管理器模块,用于从区块链系统中获取新的区块数据,解析出区块链字段,存储在Mongo DB中,然后提供查询接口,借助外部数据库实现查询功能。Bragagnolo et al.提出使用大数据技术来提取和分析区块链中的信息。他们使用Map/Reduce模型的并行索引算法将区块链数据同步到关系数据库中。这些方法是高效的,但将数据从区块链更新到其他数据库时存在延迟,不能很好地满足用户实时查询数据的需求。其次,外部数据库不是防篡改的,无法保证查询数据与区块链数据的一致性。三是在区块链内部构建索引结构。Blockchain DB选择使用红黑树和Merkle树的组合RBTree作为索引结构。Huang et al.设计了一种基于双向链表的区块链,结合了线索二叉搜索树(TBST)和AVL树,提出了一种新的块内搜索结构。由于链上的数据与索引的更新是同步的,所以这些方法支持实时查询,但问题在于在区块链内构建索引结构实施难度较大,并且每种预定义的查询类型都要对应一个数据结构,扩展性弱。

      针对以上问题,为满足审计场景的数据查询需求,本文基于数据库和区块链技术提出了一种面向审计的查询系统框架。考虑到链上空间的局限性以及对数据保密性的要求,本文采取“链下审计”+“链上验证”的审计与区块链结合模式,即先对被审数据哈希加密后生成验证码,然后把所有的验证码存放在区块链中,链下进行审计时再从链上返回对应数据的验证码做计算比对,验证被审数据是否被篡改。

      三、系统框架

      本文提出的系统框架如图1所示,包括数据层、查询层和应用层:数据层包含一个数据库模块和一个区块链模块,分别存储被审数据和验证码;查询层包含一个数据库模块,负责同步区块链上的数据值,并提供快速、多样的查询服务;应用层根据审计问题获取所需的被审数据和验证码,并作计算比对,保证被审数据的完整性。

      

      (一)数据层

      在本文的系统中,会根据常见的审计问题维护一张表,该表包含三个属性字段:Audit_desc表示某审计问题的描述;Audit_attr表示该审计问题所涉及到的属性(每条被审数据会有很多属性,而一个审计问题往往只涉及其中的几个);Audit_num表示系统为该审计问题生成的唯一编号,其中表示第i个添加到该表中的审计问题。该表存储在数据库模块中。表1表示在医疗收费审计场景下审计问题表的一个具体示例:系统中编号对应的审计问题为“超标准收费”,其涉及的属性有“数次”“单价”“实收金额”“收费类别”“项目名称”等;系统中编号对应的审计问题为“多收取患者药品费”,其涉及的属性有“药品名称”“成本价”“零售价”“差价”“加价率”等。

相关文章: