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

2020-04-21 07:46陈唯源
中国内部审计 2020年4期
关键词:加密技术数据安全大数据

陈唯源

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

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

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

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

一、传统数据审计方法

传统数据审计流程中,审计人员需要将审计对象的数据复制至审计人员计算机上进行分析。典型的调阅数据审计流程如下:首先,审计对象将数据提供给审计人员,复制到审计人员的计算机上;然后,审计人员在计算机上编写审计程序分析数据,得到审计结果。如图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)  # 解密

通过该程序,审计人员解密上述密文,得到交易金额的和为“300”。由于加密算法的一致性,审计对象如果任意修改加密结果,解密程序将无法解密,因此可确保审计结果未被篡改。

示例的数据流程如图5所示。通过上述流程,审计人员无需全部数据即可获取审计结果,审计对象无法查看或篡改审计程序和结果。在审计结束后,若有必要,审计人员可将解密程序提供给审计对象,由审计对象自行对审计结果解密,使审计对象确信审计结果中未包含全量数据。

三、总结与展望

当前大数据审计趋势下,如何确保审计数据的安全性,是内审人员需要思考的重要问题。本文设计和示例的基于加密技术的非现场数据审计方法,可确保审计数据、审计程序和审计结果的安全性和完整性。該方法适用范围较广,不仅适用于内部审计,也可用于监管部门对外部机构的数据检查等领域。但该方法仅解决审计数据分析过程中的安全性问题,面对实际审计工作中的复杂任务,还需审计人员借助专业经验和数据挖掘算法设计审计逻辑函数,挖掘隐藏在数据背后的审计线索,促进大数据在审计中得到更好应用。

(作者单位:中国人民银行福州中心支行,邮政编码:350003,电子邮箱:cwyalpha@foxmail.com)

主要参考文献

任华新.数据加密算法的综述[J].电子世界, 2016(18):95-95

猜你喜欢
加密技术数据安全大数据
运用数据加密技术维护网络安全的可靠性研究
部署推进2020年电信和互联网 行业网络数据安全管理工作
工信部:2021年初步建立网络数据安全标准体系
信息加密技术在计算机网络安全中的应用
日本开发新型加密技术 号称量子计算机也难破解
数据安全政策与相关标准分享
基于大数据背景下的智慧城市建设研究
守好你的秘密