一种基于零知识证明的能源消费数据处理方法转让专利

申请号 : CN202110954361.X

文献号 : CN113407981B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 戴铁潮陈建黄建平张旭东毛冬冯珺梅峰潘司晨刘瀚琳沈桂竹

申请人 : 国网浙江省电力有限公司信息通信分公司国网浙江省电力有限公司

摘要 :

本发明提出了一种基于零知识证明的能源消费数据处理方法,包括:基于预设频率获取耗能企业的原始能源消费数据;基于哈希算法计算原始能源消费数据的散列值,将所述散列值作为第一证明问题;根据能源大数据中心的业务需求确定不可逆函数,基于不可逆加密算法得到原始能源消费数据的第二证明问题;验证原始能源消费数据是否完整,若验证通过,分别计算第一证明问题和第二证明问题的零知识证明,若零知识证明均满足能源大数据中心规定的验证条件,则将第二证明问题存储到能源大数据中心。本发明在不泄露耗能企业的原始能源消费数据的同时,采集到真实的能源消费数据的相关信息,并能够直接被能源大数据中心用于后续的分析业务。

权利要求 :

1.一种基于零知识证明的能源消费数据处理方法,其特征在于包括:S100:基于预设频率获取耗能企业的原始能源消费数据;

S200:基于哈希算法计算原始能源消费数据的散列值,将所述散列值作为第一证明问题;

S300:根据能源大数据中心的业务需求确定不可逆函数,不可逆函数的输出结果为根据原始能源消费数据计算的能够满足业务需求的数据,由不可逆函数、S200中的哈希算法以及随机定义的拼接规则构成不可逆加密算法,基于所述不可逆加密算法得到原始能源消费数据的第二证明问题;

S400:根据第一证明问题和第二证明问题的重复部分验证原始能源消费数据是否完整,若验证通过则执行S500,否则拒绝进行零知识证明;

S500:基于傅里叶逆变换将第一证明问题和第二证明问题转换为多项式向量,结合能源大数据中心生成的随机数,分别计算第一证明问题和第二证明问题的零知识证明,将零知识证明和第二证明问题发送给能源大数据中心;

S600:若零知识证明均满足能源大数据中心规定的验证条件,则将第二证明问题存储到能源大数据中心,否则判定原始能源消费数据未通过真实性验证,拒绝将第二证明问题存储到能源大数据中心;

所述S300包括:

获取预先存储在能源大数据中心的函数库,所述函数库中包含若干个自定义的不可逆函数,根据能源大数据中心的业务需求在函数库中选取一个不可逆函数;

随机确定第一证明问题与原始能源消费数据的拼接顺序规则,结合选取的不可逆函数、S200中的哈希算法共同组成不可逆加密算法;

将原始能源消费数据输入S200中的哈希算法,得到第一字符串,将原始能源消费数据输入不可逆函数,得到第二字符串;

按照不可逆加密算法中的拼接顺序规则将第一字符串与第二字符串进行拼接,得到第二证明问题。

2.根据权利要求1所述一种基于零知识证明的能源消费数据处理方法,其特征在于,所述S100包括:

确定耗能企业中水、电、气计量仪表的数据端口,获取数据端口的量纲参数;

基于预设频率向所述数据端口发送数据采集请求,获取水、电、气计量仪表的计量数据,根据量纲参数对计量数据进行量纲统一处理,将处理后的计量数据作为原始能源消费数据。

3.根据权利要求1所述的一种基于零知识证明的能源消费数据处理方法,其特征在于,所述S200中的哈希算法为SHA‑256算法。

4.根据权利要求1所述的一种基于零知识证明的能源消费数据处理方法,其特征在于,所述S400包括:

将第一证明问题和第二证明问题进行比对,若经过比对得到的重复部分与第一证明问题一致,则原始能源消费数据的完整性通过校验。

5.根据权利要求1所述的一种基于零知识证明的能源消费数据处理方法,其特征在于,所述S500包括:

基于zkSNARKs零知识协议,将第一证明问题和第二证明问题分别转化为若干个二元赋值式;

将二元赋值式中的变量组合为向量u,根据二元赋值式和向量u分别将第一证明问题和第二证明问题转化为R1CS实例 ,其中N为第一证明问题或第二证明问题的变量个数,M为二元赋值式的个数,a、b、c分别为R1CS实例中的向量序列,使;

将R1CS实例转化为QAP实例 ,其中A、B、C依次为R1CS实例中的向量序列的傅里叶逆变换;

获取能源大数据中心生成的随机数 ,其中t为随机选取的采样点,计算中间向量 、 与 ,计算过程如下:;

其中, 为预设可信域D中的元素,j为的元素标号,j的取值范围为0至M‑2之间的正整数, 表示t采样点下向量A的第一个元素, 表示t采样点下向量B的第一个元素, 表示t采样点下向量C的第一个元素, 表示t采样点下向量A的第i+1个元素, 表示t采样点下向量B的第i+1个元素, 表示t采样点下向量C的第i+1个元素,i的取值范围为1至N‑1之间的正整数;

计算 以及 ,计算过程如下:;

其中, 为 的第j项系数, , 、 、 分别为t采样点下的向量A、B、C, 表示向量u的第i个元素, 表示中间向量 的第i个元素, 表示中间向量 的第j个元素,r、s为耗能企业作为证明方选取的随机数;

根据计算结果组成向量 作为零知识证明。

6.根据权利要求5所述的一种基于零知识证明的能源消费数据处理方法,其特征在于,所述向量u的第一个元素恒为1。

7.根据权利要求5所述的一种基于零知识证明的能源消费数据处理方法,其特征在于,所述S600包括:

确定双线性配对映射 为映射e的输入变量, 为映射e的输出变量;根据能源大数据中心接收到的零知识证明 验证是否正确,若正确则判定第一证明问题和第二证明问题通过真实性验证。

说明书 :

一种基于零知识证明的能源消费数据处理方法

技术领域

[0001] 本发明属于数据隐私保护技术领域,尤其涉及一种基于零知识证明的能源消费数据处理方法。

背景技术

[0002] 现阶段,耗能企业能源消费数据的采集与分析过程中缺少了必要的验证流程,并且以明文的方式收集各耗能企业的能源消费数据,上述过程不仅存在耗能企业数据隐私泄
露的风险,还存在从耗能企业传输至能源大数据中心的数据真实性有待商榷的问题,影响
了能源大数据中心对耗能企业能源消费的宏观分析结果。因此,零知识证明逐渐被运用到
验证能源消费数据的应用场景下。零知识证明是一种能够保护隐私的密码学算法,能够在
不向验证者提供任何隐私信息的情况下,使验证者相信某个论断是正确的。
[0003] 在能源消费领域,现有的零知识证明通常是用于验证能源交易的真实性,证明者通过向验证者发送的证明信息通常是由哈希算法计算的哈希值,零知识证明通过便确认交
易成立。由于能源大数据中心需要根据耗能企业的能源消费数据进行一系列能源消费情况
的分析,而哈希值是无法直接用于上述分析业务的,即使通过了现有的零知识证明机制,能
源大数据中心仍然需要获取耗能企业的原始能源消费数据来进行后续的分析业务,也就无
法真正实现不透露耗能企业隐私的要求,因此现有的零知识证明无法直接应用到能源消费
数据真实性的验证。

发明内容

[0004] 为了解决现有技术中存在的缺点和不足,本发明提出了一种基于零知识证明的能源消费数据处理方法,包括:
[0005] S100:基于预设频率获取耗能企业的原始能源消费数据;
[0006] S200:基于哈希算法计算原始能源消费数据的散列值,将所述散列值作为第一证明问题;
[0007] S300:根据能源大数据中心的业务需求确定不可逆函数,不可逆函数的输出结果为根据原始能源消费数据计算的能够满足业务需求的数据,由不可逆函数、S200中的哈希
算法以及随机定义的拼接规则构成不可逆加密算法,基于所述不可逆加密算法得到原始能
源消费数据的第二证明问题;
[0008] S400:根据第一证明问题和第二证明问题的重复部分验证原始能源消费数据是否完整,若验证通过则执行S500,否则拒绝进行零知识证明;
[0009] S500:基于傅里叶逆变换将第一证明问题和第二证明问题转换为多项式向量,结合能源大数据中心生成的随机数,分别计算第一证明问题和第二证明问题的零知识证明,
将零知识证明和第二证明问题发送给能源大数据中心;
[0010] S600:若零知识证明均满足能源大数据中心规定的验证条件,则将第二证明问题存储到能源大数据中心,否则判定原始能源消费数据未通过真实性验证,拒绝将第二证明
问题存储到能源大数据中心。
[0011] 可选的,所述S100包括:
[0012] 确定耗能企业中水、电、气计量仪表的数据端口,获取数据端口的量纲参数;
[0013] 基于预设频率向所述数据端口发送数据采集请求,获取水、电、气计量仪表的计量数据,根据量纲参数对计量数据进行量纲统一处理,将处理后的计量数据作为原始能源消
费数据。
[0014] 可选的,所述S200中的哈希算法为SHA‑256算法。
[0015] 可选的,所述S300包括:
[0016] 获取预先存储在能源大数据中心的函数库,所述函数库中包含若干个自定义的不可逆函数,根据能源大数据中心的业务需求在函数库中选取一个不可逆函数;
[0017] 随机确定第一证明问题与原始能源消费数据的拼接顺序规则,结合选取的不可逆函数、S200中的哈希算法共同组成不可逆加密算法;
[0018] 将原始能源消费数据输入S200中的哈希算法,得到第一字符串,将原始能源消费数据输入不可逆函数,得到第二字符串;
[0019] 按照不可逆加密算法中的拼接顺序规则将第一字符串与第二字符串进行拼接,得到第二证明问题。
[0020] 可选的,所述S400包括:
[0021] 将第一证明问题和第二证明问题进行比对,若经过比对得到的重复部分与第一证明问题一致,则原始能源消费数据的完整性通过校验。
[0022] 可选的,所述S500包括:
[0023] 基于zkSNARKs零知识协议,将第一证明问题和第二证明问题分别转化为若干个二元赋值式;
[0024] 将二元赋值式中的变量组合为向量u,根据二元赋值式和向量u分别将第一证明问题和第二证明问题转化为R1CS实例 ,其中N为第一证明问题或第二证明问
题的变量个数,M为二元赋值式的个数,a、b、c分别为R1CS实例中的向量序列,使
 ;
[0025] 将R1CS实例转化为QAP实例  ,其中A、B、C依次为R1CS实例中的向量序列的傅里叶逆变换;
[0026] 获取能源大数据中心生成的随机数t、 、、 、 、 、 、 、 ,其中t为随机选取的采样点,计算中间向量 、 与 ,计算过程如下:
[0027] ;
[0028] 其中, , 、…、 为预设可信域D中的元素,j为的元素标号,j的取值范围为0至M‑2之间的正整数, 表示t采样点下向量A的第一个元
素, 表示t采样点下向量B的第一个元素, 表示t采样点下向量C的第一个元素,
表示t采样点下向量A的第 个元素, 表示t采样点下向量B的第 个元素,
表示t采样点下向量C的第 个元素,i的取值范围为1至N‑1之间的正整数;
[0029] 计算 、 、 以及 ,计算过程如下:
[0030] ;
[0031] 其中, 为 的第j项系数, , 表示向量u的第i个元素, 表示中间向量 的第i个元素, 表示中间向量 的第j个元素,r、s
为耗能企业作为证明方选取的随机数;
[0032] 根据计算结果组成向量 作为零知识证明。
[0033] 可选的,所述向量u的第一个元素恒为1。
[0034] 可选的,所述S600包括:
[0035] 确定双线性配对映射 , 、 为映射e的输入变量, 为映射e的输出变量;
[0036] 根据能源大数据中心接收到的零知识证明 验证是否正确,若正确则判定第一证明问
题和第二证明问题通过真实性验证。
[0037] 本发明提供的技术方案带来的有益效果是:
[0038] (1)在zkSNARKs零知识协议的基础上,作为验证者的能源大数据中心能够根据自身业务需要生成不可逆加密算法并发送给耗能企业,在不泄露耗能企业的原始能源消费数
据的同时,使能源大数据中心采集到真实的能源消费数据的相关信息,同时耗能企业通过
不可逆加密算法生成的证明问题能够直接被能源大数据中心用于后续的分析业务,解决了
通过传统的零知识证明无法满足能源分析需求的问题。
[0039] (2)作为证明者的耗能企业分别根据两种不同的加密方法生成两个证明问题,其中利用哈希算法得到的证明问题能够验证原始能源消费数据的完整性,利用自定义的不可
逆加密算法得到的证明问题能够验证原始能源消费数据的真实性,结合了零知识证明的特
点,能够在不泄露耗能企业隐私数据的情况下,检验传输至能源大数据中心的数据是否被
篡改,提高了数据的真实性。

附图说明

[0040] 为了更清楚地说明本发明的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普
通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0041] 图1为本发明一实施例提出的一种基于零知识证明的能源消费数据处理方法的流程示意图;
[0042] 图2为耗能企业向能源大数据中心发送零知识证明的流程示意图。

具体实施方式

[0043] 为使本发明的结构和优点更加清楚,下面将结合附图对本发明的结构作进一步地描述。
[0044] 实施例一
[0045] 如图1所示,本实施例提出了一种基于零知识证明的能源消费数据处理方法,包括:
[0046] S100:基于预设频率获取耗能企业的原始能源消费数据;
[0047] S200:基于哈希算法计算原始能源消费数据的散列值,将所述散列值作为第一证明问题;
[0048] S300:根据能源大数据中心的业务需求确定不可逆函数,不可逆函数的输出结果为根据原始能源消费数据计算的能够满足业务需求的数据,由不可逆函数、S200中的哈希
算法以及随机定义的拼接规则构成不可逆加密算法,基于所述不可逆加密算法得到原始能
源消费数据的第二证明问题;
[0049] S400:根据第一证明问题和第二证明问题的重复部分验证原始能源消费数据是否完整,若验证通过则执行S500,否则拒绝进行零知识证明;
[0050] S500:基于傅里叶逆变换将第一证明问题和第二证明问题转换为多项式向量,结合能源大数据中心生成的随机数,分别计算第一证明问题和第二证明问题的零知识证明,
将零知识证明和第二证明问题发送给能源大数据中心;
[0051] S600:若零知识证明均满足能源大数据中心规定的验证条件,则将第二证明问题存储到能源大数据中心,否则判定原始能源消费数据未通过真实性验证,拒绝将第二证明
问题存储到能源大数据中心。
[0052] 现阶段,能源公司常常需要获取各耗能企业的能源消费数据以分析能源消耗情况,并针对能耗情况及时调整能源营销计划以及能源定价策略,本实施例中能源消费数据
主要包括各个耗能企业的水、电、气以及其他新能源的实时消耗数据以及购买上述能源的
实时费用。本实施例为了实现上述目的,建立能源大数据中心并在各家耗能企业内部安装
仪表进行能源消费监控,首先确定耗能企业中水、电、气计量仪表的数据端口,获取数据端
口的量纲参数,再基于预设频率向所述数据端口发送数据采集请求,本实施例中按照十五
分钟每次的频率进行水、电、气计量仪表的计量数据的采集,根据量纲参数对计量数据进行
量纲统一处理,具体为获取预先建立的对应不同量纲的量纲转换模型,将计量数据输入量
纲转换模型,使同类能源消费数据具有相同的量纲,便于能源大数据中心后续对能源消费
情况进行统一分析,将处理后的计量数据作为原始能源消费数据。
[0053] 常规的处理方法是直接将原始能源消费数据传输至能源大数据中心进行分析和处理。然而该过程存在两个主要的问题,首先通过明文的方式传输耗能企业的能源消费数
据的过程存在隐私泄露的风险,其次从耗能企业传输至能源大数据中心的数据真实性有待
进一步商榷。以上问题的存在,一定程度上阻碍了能源大数据中心的服务质量,进而影响了
政企之间的数据共享与深度融合。因此,本实施例采用零知识证明解决上述问题。零知识证
明是一种能够保护隐私的密码学算法,能够在不向验证者提供任何隐私信息的情况下,使
验证者相信某个论断是正确的。
[0054] 本实施例在常规零知识证明算法的基础上,分别生成两个证明问题进行零知识证明,其证明流程如图2所示,能耗生成模块和能耗加密模块均部署在耗能企业内部的服务器
中,能耗验证模块部署在能源大数据中心上,能耗生成模块能够汇集耗能企业中各个仪表
采集到的计量数据,能耗加密模块将原始能源消费数据X加密处理为第一证明问题和第二
证明问题,并生成一个证明方法"π" 发送给能耗验证模块,其中,采用哈希算法对X进行数
据加密得到第一证明问题Y=Hash(X),本实施例中哈希算法为SHA‑256算法,位于能源大数
据中心的能耗验证模块将自定义的不可逆加密函数F发送给能耗加密模块,能耗加密模块
对X进行数据加密得到第二证明问题Z=F(X),其中Z能够用于能源大数据中心进行后续处
理。
[0055] 本实施例中下面针对不可逆加密函数F的生成过程进行具体阐述:
[0056] 获取预先存储在能源大数据中心的函数库,所述函数库中包含若干个自定义的不可逆函数,根据能源大数据中心的业务需求在函数库中选取一个不可逆函数。例如,能源大
数据中心具有预测能源费用的应用业务,其包括一个用于预测未来某一段时间耗能企业能
源消费情况的预测模型,需要获取耗能企业在某一时段内各类能源的消费总费用作为预测
模型的训练数据,基于此业务需求,选取一个不可逆函数,能源大数据中心将该不可逆函数
发送给耗能企业,耗能企业即可将原始能源消费数据输入不可逆函数,输出结果为各类能
源对应的原始能源消费数据的消费总费用。由此可见,不可逆函数的主要作用为将能源大
数据对数据的需求发送给耗能企业,相当于将能源大数据中心对原始能源消费数据的部分
处理操作转移到耗能企业内部进行,由耗能企业对原始能源消费数据进行一定的预处理后
直接将满足业务需求的数据处理结果发送给能源大数据中心,这样能源大数据中心即可在
不获取耗能企业的原始能源消费数据X的前提下获得其在后续应用中需要的数据,进而使
能源大数据中心能够根据这些数据进行能源营销策略的规划。
[0057] 为了提高第一证明问题的不可逆性,本实施例还会随机确定第一证明问题与原始能源消费数据的拼接顺序规则,结合选取的不可逆函数、S200中的哈希算法共同组成不可
逆加密算法。能源大数据中心将不可逆加密算法发送给耗能企业,耗能企业将原始能源消
费数据输入不可逆加密算法进行计算的过程如下:
[0058] 将原始能源消费数据输入S200中的哈希算法,得到第一字符串,将原始能源消费数据输入不可逆函数,得到第二字符串;
[0059] 按照不可逆加密算法中的拼接顺序规则将第一字符串与第二字符串进行拼接,得到第二证明问题。本实施例中所述拼接顺序规则包括第一字符串和第二字符串整体进行拼
接的前后顺序,以及将第一字符串在预设字符位置进行分割后与第二字符串拼接的前后顺
序。例如,第一字符串为“3a6fed5fc11392b3ee9f81caf017b48640d7458766a8eb0382899a6
05b41f2b9”,第二字符串为“50000”,第一字符串为一个长度为64的十六进制字符串,拼接
顺序规则规定在第8个字符串的位置分割,得到第一字符串的两个子字符串“3a6fed5f”和
“c11392b3ee9f81caf017b48640d7458766a8eb0382899a605b41f2b9”,并规定分割后的两个
子字符串分别拼接在第二字符串的首尾,拼接后的字符串即为最终生成的第二证明问题,
即Z=F(X)=3a6fed5f5000011392b3ee9f81caf017b48640d7458766a8eb0382899a605b41f2
b9。
[0060] 在本实施例中,不可逆加密函数中之所以还包括了S200中使用的哈希算法,是为了确保用于分别生成第一证明问题和第二证明问题的原始能源消费数据一致,实现对原始
能源消费数据的完整性校验,避免因输入的原始能源消费数据不完整导致后续能源大数据
中心获取的数据不准确的问题。能源大数据中心将第一证明问题和第二证明问题进行比
对,若经过比对得到的重复部分与第一证明问题不一致,则未通过完整性校验,能源大数据
中心拒绝接收第一证明问题和第二证明问题,不再进行后续的零知识证明步骤。若经过比
对得到的重复部分与第一证明问题一致,即两次哈希值相同,说明第一证明问题Y=Hash(X)
和第二证明问题Z=F(X)中的X是一致的,原始能源消费数据的完整性通过校验。
[0061] 在本实施例中,不可逆加密函数中之所以还规定了拼接顺序规则,是为了提高第二证明问题在由耗能企业发送至能源大数据中心过程中的数据安全性,避免第三方恶意窃
取相关信息。
[0062] 通过完整性校验后,图2所示能耗验证模块中的基于Groth版本的 zkSNARKs零知识证明协议对第一证明问题和第二证明问题分别进行零知识证明。zkSNARKs是“Zero‑
Knowledge Succinct Non‑Interactive Argument of Knowledge”的简称,指一种非交互
式的、可以证明某人拥有某些信息的证明结构。本实施例中具体零知识证明过程包括:
[0063] 基于zkSNARKs零知识协议,将第一证明问题和第二证明问题分别转化为若干个二元赋值式,所述二元赋值式即将Y=Hash(X)和Z=F(X)分别转化为仅有二元变量且仅具有加、
减、乘、除等基本运算组成的单步骤;
[0064] 将二元赋值式中的变量组合为向量u,为了能够表达二元赋值式中的常数,所述向量u的第一个元素恒为1,根据二元赋值式和向量u分别将第一证明问题和第二证明问题转
化为R1CS实例 ,其中N为第一证明问题或第二证明问题的变量个数,M为二
元赋值式的个数,a、b、c分别为R1CS实例中的向量序列,使 ;
[0065] 将R1CS实例转化为QAP实例 ,其中A、B、C依次为R1CS实例中的向量序列的傅里叶逆变换,本领域技术人员应当连接如何将R1CS实例转化为QAP实例,此处不
再赘述;
[0066] 获取能源大数据中心生成的随机数t、 、、 、 、 、 、 、 ,其中t为随机选取的采样点,计算中间向量 、 与 ,计算过程如下:
[0067] ;
[0068] 其中, , 、…、  为预设可信域D中的元素,j为的元素标号,j的取值范围为0至M‑2之间的正整数, 表示t采样点下向量A的第一个元
素, 表示t采样点下向量B的第一个元素, 表示t采样点下向量C的第一个元素,
表示t采样点下向量A的第 个元素, 表示t采样点下向量B的第 个元素,
表示t采样点下向量C的第 个元素,i的取值范围为1至N‑1之间的正整数;
[0069] 计算 、 、 以及 ,计算过程如下:
[0070] ;
[0071] 其中, 为 的第j项系数, , 表示向量u的第i个元素, 表示中间向量 的第i个元素, 表示中间向量 的第j个元素,r、s
为耗能企业作为证明方选取的随机数;
[0072] 根据计算结果组成向量 作为零知识证明。
[0073] 最后,由能源大数据中心根据根据接收到的零知识证明 验证 是否正确,其中,e为双线性配对映射,
可表示为 , 、 为映射e的输入变量, 为映射e的输出变量,本实施
例中映射e由能源大数据中心自行确定。若正确则判定第一证明问题和第二证明问题通过
真实性验证。由此可见,若第一证明问题和第二证明问题均证明成功,则能源大数据中心作
为验证者认证耗能企业具有真实的原始能源消费数据,同时存储Z=f(X)进行后续的能耗综
合运算;若第一证明问题和第二证明问题中任一项证明失败,则能源大数据中心作为验证
者认为耗能企业的原始能源消费数据不具有真实性,拒绝存储Z=f(X),并发出警报。
[0074] 因此通过上述过程生成的不可逆加密函数能够实现对原始能源消费数据的特殊加密,在保证零知识证明有效性的基础上,使其加密过的原始能源消费数据能够用于进一
步的能耗计算,能源大数据中心在后续能够直接利用Z进行能源消费分析等应用业务。
[0075] 上述实施例中的各个序号仅仅为了描述,不代表各部件的组装或使用过程中的先后顺序。
[0076] 以上所述仅为本发明的实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。