基于水印与属性筛选的用电数据泄露溯源方法
2022-04-07邹云峰
单 超,邹云峰
(国网江苏省电力有限公司营销服务中心,江苏 南京 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种情况。