基于加密技术的非现场数据审计方法

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于加密技术的非现场数据审计方法作者:***

来源:《中国内部审计》2020年第04期

[摘要]本文探索加密技术在大数据审计中的实践应用,设计了一种基于加密技术的非现场数据审计方法,以确保审计数据、审计程序和审计结果的安全性和完整性,不仅适用于内部审计,也适用于监管部门对外部机构的数据检查。

[关键词]大数据加密技术数据安全非现场审计

数据审计环境下,审计人员需要调阅审计对

象的数据进行分析,但部分审计数据较为敏感,将数据复制到审计人员计算机上存在一定的信息安全风险。对此,笔者结合审计实践,设计了一套加密流程,以非现场形式在审计对象的服务器或计算机上运行审计程序,得到审计结果。通过该流程,审计人员无需接触全部数据,可确保审计数据的安全性;审计对象无法篡改审计程序和结果,可确保审计结果的有效性。

一、传统数据审计方法

传统数据审计流程中,审计人员需要将审计对象的数据复制至审计人员计算机上进行分析。典型的调阅数据审计流程如下:首先,审计对象将数据提供给审计人员,复制到审计人员的计算机上;然后,审计人员在计算机上编写审计程序分析数据,得到审计结果。如图1所示。

在上述流程中,审计对象提供的审计数据包括数据表等结构化数据及文本等非结构化数据;审计人员使用Excel等数据分析软件或Python等编程语言,编写审计程序分析数据,得到审计结果。目前,大部分审计均采用该流程,但该流程存在信息安全风险。以信息系统安全审计为例,审计人员调阅审计对象信息系统中的passwd或shadow口令文件,检查操作系统是否有弱口令,但该文件较敏感,导出分析存在口令泄露的风险。

为确保数据安全性,避免上述数据泄露风险,一种思路是审计人员在审计对象提供的环境中编写审计程序分析数据,审计数据不脱离审计对象环境,如图2所示。目前人民银行对外部机构检查通常采取该方法,但该方法仍存在数据泄露风险,审计人员在审计对象服务器上编写程序时仍可查看和筛选全量的审计数据。

二、基于加密技术的非现场数据审计方法

(一)非现场数据审计方法

为解决上述调阅数据审计和现场数据审计方法存在的数据安全问题,可以采用非现场数据审计方法,流程如下:首先,审计对象提交少量审计数据样本给审计人员;其次,审计人员根据样本数据编写审计程序,将审计程序交给审计对象,由审计对象在其服务器或计算机上运行得到审计结果;最后,审计对象将运行结果交回审计人员。如图3所示。

通过该方法,审计人员无需复制或查看全量数据即可进行审计,能够确保数据的安全性。但该方法存在两个问题:一是审计程序可能被审计对象查看或篡改。审计对象若能查看程序,

可以有针对性地修改审计数据使结果合规;审计对象若能篡改程序,可以令程序直接输出合规的结果。二是审计结果可能被审计对象篡改。

(二)基于加密技术的非现场数据审计流程

为解决上述问题,笔者设计了一套基于加密技术的非现场数据审计流程,以确保审计程序和结果不可被审计对象查看或篡改。该流程对审计程序和审计结果进行双重加密,步骤如下:首先,审计对象提交少量审计数据样本给审计人员;其次,审计人员根据样本数据编写审计程序并进行加密打包,并将加密打包的审计程序交给审计对象,由审计对象在其服务器或计算机上运行,得到加密的运行结果,并将运行结果交回审计人员;最后,审计人员使用解密程序对运行结果解密。审计结束后,审计人员可将解密程序提供给审计对象,由审计对象自行对审计结果解密,使审计对象确信取证的数据未包含全量或敏感数据。如图4所示。

针对审计程序被查看或篡改问题,该方法对审计程序进行了加密打包;针对审计结果被篡改问题,该方法对审计结果进行了加密,确保不会被篡改。在审计结束后,审计人员还可将解密程序提供给审计对象进行解密,使审计对象确信未提取全量或敏感数据。

(三)基于加密技术的非现场数据审计示例

审计程序、程序加密打包及结果加密算法的选择较为灵活。审计程序可以使用C++、Java、Python等编程语言进行编写,适用于Windows、Linux等系统;加密打包可以使用对应编程语言的二进制程序打包及代码混淆工具,使程序内容无法被查看或篡改;审计结果的加密算法可以使用DES、AES、Blowfish等加密算法。

以Windows操作系统的Python语言和AES加密算法为例。假设审计对象的审计数据文件为交易数据,如表1所示。

假设审计程序为计算全部交易金额的和(在实际审计过程中,审计程序可以完成更复杂的任務,例如根据条件筛选数据等)。针对该数据,审计人员需要编写审计程序和解密程序。

1. 审计程序。审计程序包括审计逻辑函数和结果加密函数。在完成审计程序编写后,使用打包工具对脚本进行加密打包。

(1)审计逻辑函数。审计逻辑函数对审计数据文件的第三列进行加和,输出求和结果。审计逻辑函数代码如下:

def audit(source_file): #source_file为审计数据文件名

with open(source_file, 'r') as f: #打开审计数据

s = 0 #初始化和为0

for line in f: #逐行读取审计数据

s += int(line.split('\t')[2]) #将数据的第3列加和

return s #输出结果

经过审计逻辑函数处理,得到交易金额的和为“300”。

(2)结果加密函数。结果加密函数中,使用Python加密库中的AES加密算法,使用一个随机密钥对输出结果进行加密。例如,输出结果为“300”,秘钥为“asdo129xkw9230o0”时,加密结果为“f6aff118ef8c05b5a1bd2009ff7cc536”。加密算法不仅能加密单个数据,也可加密多行文件。加密函数代码如下:

def encrypt(result): #result为审计结果

pc = PrpCrypt('asdo129xkw9230o0') # 初始化密钥

return pc.encrypt(result) #对审计结果加密

(3)对审计程序进行加密打包。使用Pyinstaller打包工具对脚本进行加密打包。代码如下:

pyinstaller -F program.py

打包后得到program.exe程序,将该程序交由审计对象运行后,即得到加密的审计结果。以上述结果为例,审计对象运行program.exe程序后,得到审计结果文件

“f6aff118ef8c05b5a1bd2009ff7cc536”,并交回审计人员。由于审计程序经加密打包,审计对象无法查看或篡改审计程序内容。

2. 解密程序。審计人员接收到加密的审计结果后,使用解密程序及密钥进行解密。代码如下:

pc = PrpCrypt('asdo129xkw9230o0') # 初始化密钥

with open(result, 'rb') as f: e = f.read() #读取加密的审计结果

d = pc.decrypt(e) # 解密

相关文档
最新文档