一种检测电网数据云存储完整性的方法与流程

文档序号:16630741发布日期:2019-01-16 06:32阅读:168来源:国知局

本发明涉及一种基于密码学的数据检测算法,特别是一种电网数据云存储完整性的检测算法。



背景技术:

我国目前在大力发展智能电网,电力网络的信息化、智能化得到快速发展。一大批智能设备,例如智能电站、智能变压器、智能电表以及智能的监测系统、维修系统,得到广泛应用。随着电力网络智能化快速发展,电力网络的数据种类和规模得到快速增长。另一方面,云存储技术在互联网领域得到快速发展,它通过集群应用、网络技术或分布式文件系统等功能,将集群内的物理存储资源无缝整合为统一的存储系统。云存储技术为电力网络中的大数据存储提供了解决途径。目前,电力网络的数据主要来源包括电能购买系统、耗电信息采集系统、负荷控制系统、电能质量检测等系统。这些大数据是区域负荷预测和负荷特性分析的重要基础,进而也是对负荷调整和控制的基础。例如电力系统中负荷的波动变化,将会改变电网的工作频率和电压等级。当云存储的电力网络大数据受到恶意篡改,破坏了数据完整性,将会导致电力网络的紊乱,甚至造成巨大的经济损失。

目前许多学者对电力网络大数据的保护方法进行了研究,并取得了许多研究成果,例如通过保护一组测量值来防范攻击;采用贪婪算法来选择量测的一个子集,通过增加检测的量测值的数据,识别注入的虚假数据;运用支持向量机svm的方法进行异常检测等。各类方法均存在一些不足,例如造成一定程度上的量测值冗余,只适用于检测和防范传统的虚假数据注入,难以适应大规模数据,无法保证电力网络的安全与稳定运行。



技术实现要素:

本发明的目的在于针对目前技术存在的弊端,提供一种检测电网数据云存储完整性的方法,以确保电力网络的安全与稳定运行。其具体技术方案如下:

第一步,初始化,用户生成公私钥对,即在ca系统中申请证书,获得一对签名的公私钥(ssk,spk),然后建立用户私钥sk为(ssk,k),公钥为(spk,v),其中k为一个随机数,v=gk,g为一个gdh群的生成因子;云存储服务器端同样建立自己的公私钥对(pcloud,scloud);

第二步,数据预处理,即用户对诸如智能仪表采集的电网大数据进行预处理,设数据文件f的名称为n,将数据文件f分成n个片段,得到:f=||f1||f2||f3…||fn,再选一个随机数u,并用自己的私钥对n||n||u逐个签名,得到:

sigssk(n||n||u),

然后将其与签名内容联合形成标签:

tag=n||n||usigssk(n||n||u),

然后对每个子文件fi,计算签名θi:

其中:(i=1,2,3,...n),

h(fi)是fi的哈希值,

从而获得数据签名集合:

φ={θi|i=1,2,3,...n},

然后用户将数据标签tag提交给可信的第三方ttp,将f、φ、tag发送至云存储服务器;

第三步,数据验证,用户向可信第三方ttp发出标签请求,ttp收到请求后,将数字标签tag发回用户,用户用自己的公钥spk验证数据标签tag合法后,得到n||n||u,然后从集合(1,2,3,…n)中随机选择一个子集:

r={r1,r2,r3...rc},即子集合中包含c个元素,然后为r中的每个元素rj(j=1,2,3…c)选择一个随机数wj,用户向云存储器发送验证消息:

msg={(rj,wj),其中1≤i≤c};

第四步,证据生成,云存储服务器收到验证消息msg后,对文件f中相应位置的第ri块fi及其签名值θi进行计算,公式为:

然后云存储服务器将证据:

proof={μ,θ,{h(fi)}其中i1≤i≤ic,sigssk(h(n||n||u))}发送给用户;

第五步,证据验证,用户在收到证据后,用户用自己的公钥v对下面的等式进行验证:

如果等式成立,则数据完整未受到破坏,否则,可视为数据受到破坏,应停止使用该数据。

通过本方法,可以有效减少计算冗余,提高判断效率,有效阻止虚假数据的注入,从而确保电力系统数据安全,为电力系统安全运行提供了保障。

具体实施方式

下面结合实施例对本发明作进一步说明:

一种检测电网数据云存储完整性的方法,主要包含初始化、数据预处理、数据验证、证据生成、证据验证五个步骤。

第一步,初始化,用户生成公私钥对,即在ca系统中申请证书,获得一对签名的公私钥(ssk,spk),然后建立用户私钥sk为(ssk,k),公钥为(spk,v),其中k为一个随机数,v=gk,g为一个gdh群的生成因子;云存储服务器端同样建立自己的公私钥对(pcloud,scloud);

第二步,数据预处理,即用户对诸如智能仪表采集的电网大数据进行预处理,设数据文件f的名称为n,将数据文件f分成n个片段,得到:f=||f1||f2||f3…||fn,再选一个随机数u,并用自己的私钥对n||n||u逐个签名,得到:

sigssk(n||n||u),

然后将其与签名内容联合形成标签:

tag=n||n||usigssk(n||n||u),

然后对每个子文件fi,计算签名θi:

其中:(i=1,2,3,...n),

h(fi)是fi的哈希值,

从而获得数据签名集合:

φ={θi|i=1,2,3,...n},

然后用户将数据标签tag提交给可信的第三方ttp,将f、φ、tag发送至云存储服务器;

第三步,数据验证,用户向可信第三方ttp发出标签请求,ttp收到请求后,将数字标签tag发回用户,用户用自己的公钥spk验证数据标签tag合法后,得到n||n||u,然后从集合(1,2,3,…n)中随机选择一个子集:

r={r1,r2,r3...rc},即子集合中包含c个元素,然后为r中的每个元素rj(j=1,2,3…c)选择一个随机数wj,用户向云存储器发送验证消息:

msg={(rj,wj),其中1≤i≤c};

第四步,证据生成,云存储服务器收到验证消息msg后,对文件f中相应位置的第rj块fi及其签名值θi进行计算,公式为:

然后云存储服务器将证据:

proof={μ,θ,{h(fi)}其中i1≤i≤ic,sigssk(h(n||n||u))}发送给用户;

第五步,证据验证,用户在收到证据后,用户用自己的公钥v对下面的等式进行验证:

如果等式成立,则数据完整未受到破坏,否则,可视为数据受到破坏,应停止使用该数据。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1