基于水印与属性筛选的用电数据泄露溯源方法

2022-04-07 03:23邹云峰
计算机与现代化 2022年3期
关键词:可用性用电重要性

单 超,邹云峰

(国网江苏省电力有限公司营销服务中心,江苏 南京 210036)

0 引 言

电力数据包含反映社会生活和生产的居民和企业真实用电数据,具有广泛的应用场景和深层的使用价值。随着电力系统信息化和电力大数据应用的不断深入,作为电力营销数据的重要组成部分,用电数据在电力数据分析中发挥着重要作用,需要频繁地在系统内进行分发共享,支撑电力大数据分析应用。即便对需分发共享的用电数据进行了脱敏处理,仍然存在数据接收者对用电数据进行非授权转发泄露的风险,用电数据的安全分发和发生数据泄露后的溯源问责,已成为提升营销数据安全管理能力的重要环节。

数字水印是目前解决数据版权问题的常用方法,文献[1]将水印嵌入转化为约束条件下的求最优解问题,使用遗传算法、粒子群算法创建水印;文献[2]将图像水印领域的灰度直方图调节方法应用在数据库领域,实现较小的数据扰动;文献[3]提出了基于小波的数字水印,支持电力数据安全传输问题;文献[4]提出了基于混合变换域数字水印,支持数据安全传输。此外,伪行伪列水印也是目前电力行业常用的水印方法。

已有研究方法主要存在以下不足:1)对数据挖掘分析可用性关注不足,已有方法主要关注查询类应用,预测电费是否逾期是用电数据分析的重要场景,现有的水印方法难以有效支撑用电数据分发共享中数据挖掘分析可用性的维持,如聚类的可用性等;2)已有方法大多假设分发共享中数据外泄形式是对完整数据表进行非授权转发,但在实际情况下,非法使用者可能只转发部分数据记录,这将导致嵌入在数据中的水印遭到破坏,难以有效提取水印并对泄露者进行溯源。

针对上述问题,本文引入信息增益率和基尼系数,提出重要性指数指标来衡量属性重要程度,并选择重要性指数较小的若干属性作为非重要属性,向非重要属性嵌入水印,降低水印对数据分析可用性的影响,实现对用电数据分析可用性的维持,并考虑对每条用电元组嵌入完整水印,结合所选非重要属性数目,划分子水印,通过密钥和主键随机选择子水印在元组中的嵌入位置,保证水印安全性,实现部分数据泄露的溯源。

本文主要工作如下:

1)针对非授权的部分用电数据的泄露溯源问题,将水印切分后分别嵌入数据的多个非重要属性,本文提出根据主键和密钥随机选择水印在小数部分嵌入位置的方法,实现部分数据泄露时的水印溯源。

2)针对现有水印方法影响数据分析可用性问题,本文引入信息增益率和基尼系数,计算属性重要性指数,选择重要性指数较低的属性嵌入水印,降低水印对数据分析可用性的影响,设置私密参数使数据接收者无法逆推水印,实现水印安全性和数据分析可用性的兼顾。

1 相关工作

近年来,数字水印在数据安全分发共享方面得到了持续的关注,水印对数据可用性的影响以及水印的安全是研究者关注的焦点。

文献[5]首次提出了数据库水印的概念,通过修改属性值LSB(Least Significant Bit)的方法来实现水印嵌入。数据库水印以水印嵌入是否改变原始数据为标准,可分为基于失真的水印和基于非失真的水印[6-7]。

文献[8]提出了基于差分扩展的技术水印,通过可逆的方式为数据库添加水印。文献[9]使用遗传算法对基于差分扩展的水印方法进行了优化。文献[10]使用萤火虫算法对基于差分扩展的水印方法进行了优化。文献[11]通过添加虚假元组实现水印嵌入,虚假元组以真实元组为依据通过采样生成。文献[12]根据二进制水印序列的LSB调整元组相对顺序实现水印嵌入。文献[13-14]针对医疗记录安全分发问题,提出了基于水印的解决方案。文献[15]将数据集划分为若干个子集,提出了基于数据子集的水印嵌入方法,实现数据外泄的溯源。

在提升水印安全性方面,数据库指纹[16-18]是数据库水印领域的重点研究方向之一,通过向多个原始数据库副本添加不同的水印信息形成若干不同的水印数据库并发送给多个第三方,在数据泄露时,从数据中提取出与第三方身份对应的水印,实现对泄露数据的第三方溯源与问责。文献[19]提出了将所嵌入水印变为Tardos编码的数据溯源方法,使用密钥和主键随机选择属性嵌入水印,但这种筛选方法缺少对数据分布特性的兼顾,嵌入水印后数据的可用性损失较大,同时也无法解决数据部分外泄时的溯源问题。文献[20]通过哈希运算选择待嵌入水印的属性和水印嵌入位置,提升水印抗擦除性,但由于水印只嵌入在部分数据记录中,且被嵌入水印的记录只嵌入了水印的一个比特位,部分数据记录外泄时,水印可能无法有效提取,造成溯源失败。针对数据部分外泄时的溯源问题,文献[21]提出了基于距离对数据分组的方法,计算记录与原点的欧氏距离并排序,将数据集均分为若干组,实现不依赖主键的分组,但水印嵌入后,造成属性值改变,进而导致分组结果与原始数据的分组结果不一致,水印可能无法成功提取,并且其向每条元组中嵌入的是子水印而非完整水印,当数据部分外泄时,从中提取的子水印可能无法组成完整水印而导致溯源失败。在电力系统内,已采用的基于伪行/伪列水印的数据溯源方法,存在水印容易被甄别擦除问题。文献[3]提出了基于小波的数字水印,文献[4]提出了基于混合变换域数字水印,支持电力行业数据安全,但它们同样无法有效维持添加水印后用电数据的分析可用性。

综上所述,现有的基于水印的数据溯源方法存在共享分发过程中数据分析可用性维持效果较弱,以及难以有效支撑发生部分数据外泄时的溯源问责问题,难以满足用电数据预测类数据挖掘应用。

2 问题描述及相关定义

2.1 问题描述

在用电数据挖掘建模业务应用场景下,需要将特定行业(地区)的用电数据作为样本分发共享给业务支撑部门或外协单位,然而这些获取授权的数据接收者在接收到用电数据后,存在有意或无意泄露数据的风险,为了规避用电数据非授权外泄风险,需要提升发生数据非授权外泄后的溯源问责能力,以便对数据非授权外泄行为进行事后问责。现有的数字水印方法存在部分数据泄露场景下水印遭破坏无法溯源的问题,同时,嵌入水印后的用电数据分析可用性维持效果较弱,无法支撑后续挖掘分析。

针对上述问题,本文设计一种基于数字水印的数据泄露溯源算法(Watermarking-based Records Traceability Algorithm, WRTA)。该方法利用信息增益率和基尼系数来设计属性重要性衡量指数,选择重要性指数较小的属性,对其小数部分进行水印嵌入,实现对数据分析可用性的维持,并将十进制数形式的水印划分为若干个子水印,分别嵌入每条元组的非重要属性,实现数据部分泄露时的溯源。

2.2 相关定义

以用电数据分发共享后用于电费是否逾期分析场景为例,用电数据基本表结构如下:D(企业编号,A1,A2,…,Am,P),其中P为类标号属性,对应待预测月份电费是否逾期,A1,…,Am为条件属性,对应连续若干个月的企业用电信息,诸如月用电量、历史逾期次数等,样例数据示意见表1,每行对应一家企业1—4月的用电量和上一年发生电费预期的次数,其中第1列的10185~10187为3家企业的编号,2列~5列为每家企业1—4月的用电量,第5列为每家企业上一年逾期次数,最后1列对应类标号属性,记录4月份各家企业是否发生了电费逾期。

表1 用电数据表样例

分发该类数据的目的是支撑基于用电数据的企业用电分析、电费逾期风险监管。

定义1 信息增益[22]。度量数据集D按属性Ai(1≤i≤m)划分后纯度的提升,假设数据集D以属性Ai进行划分,则属性Ai的信息增益为:

Gain(Ai,D)=Entropy(D)-Entropy(Ai,D)

其中,pi为数据集D中各个类分布状态的概率,Entropy(Ai,D)为D中某条数据记录基于其属性Ai的取值判断该记录所属类别需要的信息量。

定义2 信息增益率[23]。给定数据集D,在决策树分类中,信息增益率GainRatio(X,D)用于衡量条件属性X对划分数据集的重要程度为:

其中,Gain(X,D)表示利用属性X划分数据集的信息增益,Split_info(X)表示以X属性对数据集D进行划分后,数据集关于类标号属性分布的一致程度,属性X的值域为{x1,x2,…,xn},Ti为D中X属性取xi的数据记录构成的数据子集,|Ti|表示数据子集Ti包含的记录数目。

当属性X为连续属性时,采用二分法进行处理[23],使连续属性离散化。假设属性X有n个属性值,将属性值从小到大排序,并选择相邻属性值的平均值作为划分点t,借此将数据集划分为大于等于t和小于t的2个数据子集。一共可形成n-1个划分点,然后计算每个划分点下的信息增益率并选择最大值作为该连续属性的信息增益率。

定义3 基尼系数[24]。数据集D包含来自m个类别的M条记录,根据属性X将数据集划分为子集D1和D2,这2个数据子集包含的记录数分别为M1和M2,则属性X的基尼系数定义为:

其中,pj表示第j个样本记录属于目标类别的概率。

在本例中,数据集D包含来自2个类的记录,对应类标号属性P取“是”和“否”2类,即发生逾期和不发生逾期2种情况。

定义4 属性重要性指数。对数据集D中条件属性X,设置参数a、b,满足0

impt_index(X)=a×GainRatio(X,D)+b×Gini(X,D)

定义5 子水印集。给定水印W,用户指定欲划分的子水印数目t,用户将其切分为t个子水印W[i],形成子水印集Wsub:

3 WRTA水印算法

WRTA算法包括4个部分:1)选取非重要属性;2)维护水印表及水印预处理;3)将水印嵌入记录的非重要属性;4)水印提取及部分数据泄露溯源。

对给定待分发数据集,根据重要性指数对属性排序,选取若干个重要性指数较小的属性构成非重要属性集合,将十进制数形式的水印切分为若干个子水印,将子水印分别嵌入各个非重要属性的小数部分,以减少嵌入水印对数据分析可用性造成的影响。嵌入位置通过哈希函数和密钥进行选择。当数据接收者泄露全部或部分数据时,可从被泄露数据的记录中提取水印,追溯到非授权泄露该数据记录的数据接收者。

3.1 选取非重要属性

为了兼顾嵌入水印对数据分析可用性造成的影响,选择对分类可用性影响较弱的非重要属性进行水印嵌入。信息增益和基尼系数是分类挖掘中常用的评价属性关于分类任务相关性的方法,是设计基于信息增益率和基尼系数的属性重要性指数,可用来评估待分发数据中各个属性对维持数据分析可用性的重要程度。进而,根据重要性指数对属性排序,选择重要性较小的属性,进行水印嵌入。具体非重要属性筛选方法如算法1所示。

算法1 选取非重要属性方法

输入:数据集D、非重要属性数目t、系数a、系数b

输出:非重要属性集A

1.遍历数据集D,计算A1,…,Am的信息增益率和基尼系数

2.计算各个属性Ai(1≤i≤m)的重要性指数impt_index(Ai)

3.对m个属性的重要性指数排序

4.选取重要性指数最小的t值对应属性,加入非重要属性集A

5.返回非重要属性集A

首先,计算数据集D的各条件属性的信息增益率和基尼系数,并设置私密参数a、b的计算属性的重要性指数,选取重要性指数最小的t个属性作为待嵌入水印的属性集,由于计算过程中a、b参数只有数据分发共享者知道,故数据接收方无法逆推计算过程,也无法确定嵌入水印的属性。

3.2 水印索引表及水印预处理

建立水印信息与数据接收者的索引表,以便在数据溯源时根据提取出的水印确定泄露该数据的数据接收者,水印索引表模式为(数据持有者,水印)。

水印预处理的目的是为避免在水印嵌入过程中对数据质量造成较大影响,将水印划分为t个子水印,在嵌入过程中,将t个子水印嵌入t个非重要属性中,从而实现对数据可用性的保护。在具体划分过程中,将水印按顺序均分为长度一样的t个子水印,子水印长度len(Wsub[i])=len(W)/t,所有子水印组成子水印集,预处理过程见算法2。

算法2 水印预处理

输入:水印W、欲划分的子水印的个数t

输出:子水印集Wsub

1.计算欲划分的子水印长度sub_len=len(W)/t

2.对水印W按sub_len的长度切分为t个子水印并存至子水印集Wsub

3.返回子水印集Wsub

3.3 水印嵌入

基于非重要属性集合,将水印切分为若干子水印,依次嵌入各个非重要属性。嵌入过程,将水印嵌入非重要属性的小数位,以减小水印对数据可用性的影响;嵌入到小数部分的位置,由密钥、属性整数部分的取值以及子水印序号通过哈希计算生成,具体如下:

position=H(KEY‖H(integ‖i)) % len(deci)

其中,i为子水印的序号,‖表示连接符,len(deci)为属性值小数部分的长度。嵌入方法的过程见算法3。

算法3 水印嵌入算法

输入:原始数据集D、子水印集Wsub、密钥KEY

输出:水印数据集DW

1.遍历原始数据集D中的元组

2.遍历元组的非重要属性

3.将非重要属性数值切分为整数部分integ和小数部分deci

4.计算子水印在小数部分的嵌入位置position=H(KEY‖H(integ‖i)) % len(deci),i为非重要属性的序号

5.将子水印插入小数部分第position位,形成新的小数部分数值

6.将整数部分数值与新的小数部分数值连接形成嵌入子水印的属性值

7.返回嵌入水印数据集DW

3.4 水印提取及数据溯源

当数据安全管理人员发现疑似非授权外泄的用电数据集D′时,可以通过检测并提取其中的水印实现对非授权外泄数据行为进行溯源问责。

溯源方法是通过遍历D′的每条记录,根据密钥、记录主键和非重要属性的序号,计算水印在该条记录中某个非重要属性的嵌入位置,然后提取出子水印Wsub,并将所有子水印Wsub拼接成完整的水印W。对记录的非重要属性遍历,将水印W添加到水印集Wset中,Wset保存的是疑似泄露数据集D′中嵌入记录的所有水印,最后将Wset与水印表中的水印进行匹配,即可辨识出泄露D′的数据接收者。在提取子水印Wsub的步骤中,因为嵌入位置是由密钥KEY、整数部分integ和非重要属性序号i共同决定,而这3个变量在水印嵌入和提取过程中均保持不变,进而可知计算出的子水印提取位置和嵌入位置是一致的,所以即使原始数据中恰好包含与子水印相同的序列时,也不会产生误识别的问题。具体水印提取及数据溯源过程见算法4。

算法4 水印提取及数据溯源算法

输入:疑似泄露数据集D′

输出:水印集Wset

1.遍历疑似泄露数据集D′中的记录

2.对记录的非重要属性

3.将非重要属性值切分为整数部分integ和小数部分deci

4.计算子水印在小数部分的嵌入位置position=H(KEY‖H(integ‖i)) % len(deci),i为非重要属性的序号

5.提取小数部分deci的第position位至第position+len(Wsub)位,得到该属性值中嵌入的子水印

6.将提取出的子水印按序连接形成完整水印W

7.将完整水印W存至水印集Wset

8.返回水印集Wset

4 实 验

本章对WRTA方法对分类可用性维持的效果,以及水印安全性进行实验分析。实验数据采用江苏某市7000家企业用户2018—2019年连续20个月的用电数据作为测试数据,以最后一个月是否发生电费逾期为类标号属性(逾期为True,未逾期为False),对实验中企业每月的用电量进行了填补空缺值和数值归一化预处理。

将WRTA算法与基于属性约束的水印方法EMR[13]以及基于聚类的子水印添加方法RRWC[21]进行对比,验证添加水印后数据的分类效果。实验硬件环境为操作系统Win10,CPU2.50 GHz,内存8 GB。设计实验来验证算法对分类可用性的维持效果,以及数据接收者非授权泄露的溯源能力。

实验流程如下:1)设定密钥KEY=4326781,水印W=7854394328795438;2)设定参数a=b=0.5,并计算20个月用电属性的重要性指数;3)分别选取重要性指数最小的2、4、6、8、10个属性,并将水印W分解嵌入相关属性,生成水印数据集D′;4)在D和D′分别运行XGBOOST分类算法,采用标准F-measure指标计算D和D′分类结果相似度,F-measure值越接近1,表示添加水印对用电数据分析可用性的影响越小;5)在D中随机选取20%记录形成溯源准确性测试数据集,将W依次分为2、4、6、8、10份子水印,每次随机选取测试数据集中的一条记录,依次嵌入这2~10个子水印,进行5次实验,检验是否可以从测试数据集中准确识别唯一嵌入水印的数据记录,验证算法溯源准确性。对EMR算法和RRWC算法,根据样本数据集采样设置最优参数进行对比。

从图1可以看出,本文所提WRTA算法对加水印后数据集分类可用性的维持效果显著优于另外2种算法,其原因在于WRTA算法对影响数据分类的关键属性值的小数部分添加水印,而EMR算法通过粒子群优化设置满足属性约束条件的水印,通过直接修改属性值完成水印嵌入,存在对数值修改幅度较大,各个属性的局部修改也难以维持数据全局分布的不足,因此其对分类可用性维持弱于所提方法。EMR算法未采用子水印策略,因而不受嵌入水印的属性数目影响,实验中其F-measure值不变。RRWC算法虽然也采用划分子水印的策略,但其不关注嵌入子水印的属性对维持分类可用性的影响,故而添加水印后数据集的F-measure也相对较低。

图1 算法分类可用性维持效果对比

WRTA算法选取2~6个属性嵌入水印时,数据集有很高的分类可用性,随着嵌入水印属性数的增加,数据集的分类可用性略有下降,但即便选取10个属性嵌入水印,企业用电数据集的分类可用性维持率仍达到80%以上,结果表明WRTA算法能有效地维持企业用电数据集的分类可用性。

图2 算法溯源准确性实验结果

算法溯源准确性实验结果如图2所示,对1400条测试数据,运行算法4,提取每条记录相关属性的子水印,若某条记录提取的子水印连接后等于原嵌入的水印W,则可以识别出该条记录为随机选取的添加水印记录,溯源成功。5次实验均能准确识别测试数据集内嵌入水印的那条数据记录,所提取的子水印分别为:

2个子水印:78543943,28795438

4个子水印:7854,3943,2879,5438

6个子水印:785,439,432,879,543,800

8个子水印:78,54,39,43,28,79,54,38

10个子水印:78,54,39,43,28,79,54,38,00,00

上述子水印可以连接生成原水印W=7854394328795438,实验结果表明选取嵌入水印的属性数目不影响所提方法的溯源准确性。实验模拟了仅有一条数据泄露的极端场景下,所提方法可以有效溯源,表明所提方法能够支撑任意比例数据记录泄露情况的数据溯源。

5 结束语

针对目前水印方法存在难以兼顾用电数据分析可用性和安全性,以及部分数据泄露难以溯源的问题,本文提出了一种基于数字水印的用电数据泄露溯源算法,选取非重要属性嵌入水印,实现对数据分析可用性的维持,同时向每条记录嵌入完整水印,保证部分数据泄露时的可溯源性,有效兼顾了数据可用性和安全性。

猜你喜欢
可用性用电重要性
核电站DCS可用性测试应用研究
基于辐射传输模型的GOCI晨昏时段数据的可用性分析
“0”的重要性
安全用电知识多
论七分饱之重要性
机构知识库网站可用性评价指标的计量学分析
幼儿教育中阅读的重要性
对输配电及用电工程的自动化运行的几点思考
用电安全要注意
用电监察面临的问题及反窃电对策