1.本发明涉及数据管理技术领域,具体涉及一种电网调度日志管理方法与系统。
背景技术:2.电网调度日志是反映电网设备运行和管理工作的原始记录,是电网调度与监管的主要凭借依据,其中含有大量的保密信息,必须得到妥善安全的保管,避免攻击者进行有针对性的修改、删除和伪造日志中的相关记录,隐藏其攻击行为。目前电网调度日志通常采用传统的中心化存储方式,存在易损坏、易丢失、易篡改等诸多安全性问题,而且需要较高的维护成本,给日志的检索、查询、分析等应用带来了较大的难度。
技术实现要素:3.本发明的目的在于提出一种电网调度日志管理方法与系统,解决电网调度日志传统存储方法面临的易丢失、易损坏、易篡改的安全性问题,降低日志的检索、查询与分析成本。
4.为实现上述目的,本发明提出一种电网调度日志管理方法,所述方法包括:
5.对于任一电网调度日志,均包括电网调度日志存储步骤和电网调度日志查询步骤;
6.其中,所述电网调度日志存储步骤,包括:
7.获取电网调度日志的用户信息,根据所述用户信息生成唯一的用户id和用户密钥;
8.使用sha256哈希算法提取所述电网调度日志的数字摘要,并根据所述电网调度日志的用户设置的加密策略,使用cp-abe算法对所述电网调度日志进行加密获得日志密文,将所述日志密文上传至ipfs,并接收所述ipfs返回的哈希地址;
9.将所述数字摘要、哈希地址、所述用户id、所述日志关键词、所述用户信息和所述日志更新时间一并通过智能合约上传至区块链进行日志存储;
10.其中,所述电网调度日志查询步骤,包括:
11.获取用户输入的用户id,并根据所述用户id,通过智能合约遍历区块链中的数据并返回检索结果;所述检索结果包含所述哈希地址;当检索不到电网调度日志时,所述检索包含表示未检索到日志的预设指示语;
12.将所述检索结果中的哈希地址发送至ipfs,并接收ipfs根据该哈希地址返回的日志密文;
13.使用所述用户密钥对该日志密文进行解密获得日志明文;
14.使用sha256哈希算法提取该日志明文的数字摘要;
15.将该日志明文的数字摘要与所述电网调度日志的数字摘要进行比对,若一致,则查询到正确的日志,若不一致,则未查询到正确的日志。
16.优选地,其中,所述电网调度日志存储步骤,包括:
17.获取日志关键词和日志更新时间;
18.将所述数字摘要、哈希地址、所述用户id、所述日志关键词、所述用户信息和所述日志更新时间一并通过智能合约上传至区块链。
19.其中,所述电网调度日志查询步骤,包括:
20.获取用户输入的用户id或日志关键词,并根据所述用户id或日志关键词,通过智能合约遍历区块链中的数据并返回检索结果。
21.优选地,对于任一电网调度日志,均包括变更查询权限步骤;
22.其中,所述变更查询权限步骤,包括:
23.根据用户输入信息调整cp-abe算法中的属性加密策略,变更日志访问权限,防止不合规用户查阅日志。
24.优选地,所述用户为所述电网调度日志的日志拥有者或日志使用者;所述日志拥有者包括各级调度机构的值班调度员以及各厂站监控中心的数据负责人,所述日志使用者包括各级调度机构的调度审核员、安全审计员。
25.优选地,所述电网调度日志包括各级值班调度员记录的管辖范围内电网调度全过程记录、各厂站监控中心的数据负责人采集的结构化设备状态日志,所述电网调度全过程记录包括综合操作命令票、逐项操作命令票、调度操作书面命令票的扫描版图片文件。
26.优选地,所述方法包括:
27.使用开源的nosql数据库作为区块链状态数据库存储用户上传的用户数据结构体,以支持使用日志关键词进行模糊查询操作;
28.所述用户数据结构体包括用户id、ipfs数据哈希地址、日志数字摘要、日志关键词、用户信息和日志更新时间六个字段,其中,所述用户id为key值,所述ipfs数据哈希地址、日志数字摘要、日志关键词、用户信息和日志更新时间均为value值。
29.所述智能合约采用的链代码结构体包括invoke、isappendok、isuserlognull、addnewlog、isupdateok、updatelog、querylogbyid、querylogbykeyword;所述invoke用于接受处理客户端请求,所述isappendok用于检测日志能否被添加,所述isuserlognull用于检测当前用户日志是否为空,所述addnewlog用于添加当前用户的首份日志,所述isupdateok用于检测日志能否被更新,所述updatelog用于更新日志,所述querylogbyid用于通过用户id查询日志,所述querylogbykeyword用于通过关键词查询日志。
30.优选地,所述通过智能合约遍历区块链中的数据,包括:
31.步骤101:调用invoke,接受来自用户的操作请求,包括上传与查询操作。
32.步骤102:若用户请求上传操作,则调用isappendok,根据当前用户id查询其用户信息,判断其能否进行日志上传操作,对于非电网调度机构人员应返回false,提示其没有上传权限并结束上传操作,否则返回true,调用isuserlognull判断当前用户是否上传过历史日志,为true则表明用户未上传过日志,调用addnewlog将对应的六个字段打包为所述用户数据结构体存储至区块链中,为false则表明用户此前已上传过日志,调用isupdateok判断用户是否具有更新权限,当电网调度机构人员发生调岗或离职情况时,应返回false拒绝其更新日志,否则调用updatelog,取出链中数据,并将新的信息转换为所述用户数据结构体写入区块链中;
33.步骤103,若用户请求查询操作,则根据用户的输入自动选择查询模式,当输入为
用户id时调用querylogbyid,使用该用户id作为key值查询nosql数据库并返回电网调度日志的哈希地址;当输入为日志关键词时调用querylogbykeyword,遍历区块中所有数据,如果和关键词相匹配,则返回电网调度日志的哈希地址。
34.本发明还提出一种电网调度日志管理系统,用于实现上述的电网调度日志管理方法,包括电网调度日志存储模块和电网调度日志查询模块;
35.其中,所述电网调度日志存储模块,包括:
36.日志获取单元,用于获取电网调度日志的用户信息,根据所述用户信息生成唯一的用户id和用户密钥;
37.日志处理单元,用于使用sha256哈希算法提取所述电网调度日志的数字摘要,并根据所述电网调度日志的用户设置的加密策略,使用cp-abe算法对所述电网调度日志进行加密获得日志密文,将所述日志密文上传至ipfs,并接收所述ipfs返回的哈希地址;
38.日志上传单元,用于将所述数字摘要、哈希地址、所述用户id、所述日志关键词、所述用户信息和所述日志更新时间一并通过智能合约上传至区块链进行日志存储;
39.其中,所述电网调度日志查询模块,包括:
40.检索单元,用于获取用户输入的用户id,并根据所述用户id,通过智能合约遍历区块链中的数据并返回检索结果;所述检索结果包含所述哈希地址;当检索不到电网调度日志时,所述检索包含表示未检索到日志的预设指示语;
41.密文获取单元,用于将所述检索结果中的哈希地址发送至ipfs,并接收ipfs根据该哈希地址返回的日志密文;
42.解密单元,用于使用所述用户密钥对该日志密文进行解密获得日志明文;
43.摘要提取单元,用于使用sha256哈希算法提取该日志明文的数字摘要;
44.对比单元,用于将该日志明文的数字摘要与所述电网调度日志的数字摘要进行比对,若一致,则查询到正确的日志,若不一致,则未查询到正确的日志。
45.优选地,所述日志上传单元,具体用于:
46.获取日志关键词和日志更新时间;将所述数字摘要、哈希地址、所述用户id、所述日志关键词、所述用户信息和所述日志更新时间一并通过智能合约上传至区块链进行日志存储;
47.所述检索单元,具体用于:
48.获取用户输入的用户id或日志关键词,并根据所述用户id或日志关键词,通过智能合约遍历区块链中的数据并返回检索结果。
49.上述的一种电网调度日志管理方法至少具有以下有益效果:
50.(1)综合利用区块链与星际文件系统实现电网调度日志的去中心化存储与检索,避免了中心化数据库服务器和纸质档案因遭受自然或人为的破坏攻击而导致的数据丢失、损坏和篡改问题,降低了区块链上的数据存储成本,使用开源的nosql数据库作为区块链状态数据库存储数据以实现日志关键词模糊查询,降低了日志的追溯、调阅和维护成本,实现电网调度安全问责场景中的快速追责。
51.(2)提出sha256算法和cp-abe算法联合加密设计,通过cp-abe实现加密日志的细粒度访问控制,即日志拥有者对数据具有完全控制权。与非对称加密相比,只需设定访问策略并执行一次加密,就能使符合策略的用户查阅日志,无需关注接收者的身份信息。与对称
加密相比,可避免密钥传输过程中的密钥泄露问题。通过sha256算法实现完整性校验,其优势在于算法输出的256位数值已具备足够低的冲突碰撞概率;针对图片形式的调度令,修改其中任一像素点都会引起输出值的大幅改变。在电网调度的日志管理场景中,既能保证日志传输存储过程中的安全性,又能保证日志使用过程中的便利性。
52.(3)提出智能合约链代码的结构与调用流程设计,满足电网调度场景的使用需求,既能实现基本的上传与查询操作,也能保障一定的操作合法性。在上传日志时检查用户身份属性,避免了非电网调度机构人员的非法添加操作,例如上传虚假、伪造的调度日志,当调度机构人员发生轮岗、离职等情况时,能够及时禁止其更新日志权限。智能合约通过系统自动执行,无需人为参与,保证公正性的同时节约时间、降低成本,其调用历史也会被记录到区块链交易信息中,从而对调用的过程和结果实现可追溯、可审计。
53.本发明的其它特征和优点将在随后的说明书中阐述。
附图说明
54.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
55.图1为本发明实施例中一种电网调度日志管理方法的流程简化图。
56.图2为本发明实施例中电网调度日志存储步骤的流程图。
57.图3为本发明实施例中电网调度日志存储步骤的具体流程图。
58.图4为本发明实施例中电网调度日志查询步骤的流程图。
59.图5为本发明实施例中电网调度日志存储步骤的具体流程图。
60.图6为本发明实施例中通过智能合约遍历区块链中的数据的具体流程图。
61.图7为本发明实施例中一种电网调度日志管理系统的结构图。
具体实施方式
62.以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。另外,为了更好的说明本发明,在下文的具体实施例中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本发明同样可以实施。在一些实例中,对于本领域技术人员熟知的手段未作详细描述,以便于凸显本发明的主旨。
63.本发明一实施例提出一种电网调度日志管理方法,其基于区块链与星际文件系统ipfs实现,参阅图1,包括用户、联合加密、智能合约、ipfs和区块链五部分,其中联合加密部分负责计算数字摘要与日志的加解密,智能合约部分负责处理用户对区块链网络的不同操作请求,ipfs负责存储日志密文,区块链负责存储日志信息,所述方法包括:
64.对于任一电网调度日志,均包括电网调度日志存储步骤和电网调度日志查询步骤;
65.其中,参阅图2~3,所述电网调度日志存储步骤,包括:
66.步骤s11、获取电网调度日志的用户信息,根据所述用户信息生成唯一的用户id和用户密钥;
67.具体而言,所述用户信息包括姓名、工号、所属机构、所属部门、职位等信息;
68.步骤s12、使用sha256哈希算法提取所述电网调度日志的数字摘要,并根据所述电网调度日志的用户设置的加密策略,使用cp-abe算法对所述电网调度日志进行加密获得日志密文,将所述日志密文上传至ipfs,并接收所述ipfs返回的哈希地址;
69.具体而言,步骤s12为电网调度日志的联合加密,对于日志拥有者所负责的电网调度日志,使用sha256哈希算法提取数字摘要,同时根据拥有者创建的加密策略使用cp-abe算法加密日志以获取密文,并将密文上传至ipfs,ipfs返回给拥有者一个哈希地址,其中所述cp-abe算法加密过程包括:执行encrypt(pk,y,m)算法加密明文,并构建属性树,生成加密后日志cty。解密日志时会执行decrypt(pk,skx,cty)算法,根据日志使用者的密钥skx解密密文cty,若密钥满足访问策略,则该用户能解密密文得到日志数据;
70.其中,为了弥补区块链中数据存储量较小的问题,本实施例使用具有同样分布式特性的ipfs集群来存储大文件,文件存储在ipfs后,会返回一个数据量非常小的地址哈希地址,将此哈希地址与日志的其他信息存储在区块链中,不仅能提高方法效率,保证数据完整性,而且能够降低方法成本。所述日志数字摘要:将日志文件进行sha256哈希算法加密得到的数字摘要可用于文件的真实性和完整性校验,并且摘要长度固定,降低区块链的存储成本;
71.步骤s13、将所述数字摘要、哈希地址、所述用户id、所述日志关键词、所述用户信息和所述日志更新时间一并通过智能合约上传至区块链进行日志存储。
72.其中,参阅图4~5,所述电网调度日志查询步骤,包括:
73.步骤s21、获取用户输入的用户id,并根据所述用户id,通过智能合约遍历区块链中的数据并返回检索结果;所述检索结果包含所述哈希地址;当检索不到电网调度日志时,所述检索包含表示未检索到日志的预设指示语;
74.步骤s22、将所述检索结果中的哈希地址发送至ipfs,并接收ipfs根据该哈希地址返回的日志密文;
75.步骤s23、使用所述用户密钥对该日志密文进行解密获得日志明文;
76.步骤s24、使用sha256哈希算法提取该日志明文的数字摘要;
77.步骤s25、将该日志明文的数字摘要与所述电网调度日志的数字摘要进行比对,若一致,则查询到正确的日志,若不一致,则未查询到正确的日志。
78.具体而言,本实施例结合了区块链与ipfs的使用,提出利用属性加密技术(abe)和哈希散列技术(sha256)联合加密的思想,并设计了满足电网调度场景使用需求的智能合约链码结构与调用过程,实现对调度日志的去中心化分布式存储和细粒度访问控制。日志拥有者具有本人日志数据的控制权,在本实施例中拥有者能够构建加密访问策略,只有具有符合此策略规定属性的日志使用者才能用密钥解密数据,这比传统的abe方案更加灵活,并且可以通过数字摘要校验文件的真实性和完整性。
79.进一步地,其中,所述步骤s13,具体包括:
80.获取日志关键词和日志更新时间;并将所述数字摘要、哈希地址、所述用户id、所述日志关键词、所述用户信息和所述日志更新时间一并通过智能合约上传至区块链。
81.其中,所述步骤s21,具体包括:
82.获取用户输入的用户id或日志关键词,并根据所述用户id或日志关键词,通过智
能合约遍历区块链中的数据并返回检索结果。
83.具体而言,用户根据id号或者日志关键词进行检索,通过智能合约遍历区块链中的数据并返回检索结果,使用者根据结果中的哈希地址到ipfs中获取日志密文,并使用日志密钥对日志密文进行解密以获取日志明文,对日志明文可进行sha256散列,即提取日志明文摘要,将结果值与区块链返回结果中的数字摘要进行比对,一致则说明日志真实可靠;
84.其中,所述日志关键词包括:日志文件的相关描述信息,例如电站名称、日期时间、部门名称、身份类别等,本实施例根据输入的value值,遍历区块链中的数据,查找匹配的区块。
85.其中,所述日志拥有者将日志拥有者信息上传到区块链中,若日志被窃取,可根据区块中存储的信息进行追溯确权。
86.其中,所述日志更新时间能确定日志上传的最新时间,使用者在检索数据时,可选择不同时期的日志进行分析调查。
87.进一步地,对于任一电网调度日志,均包括变更查询权限步骤;
88.其中,所述变更查询权限步骤,包括:
89.步骤s31、根据用户输入信息调整cp-abe算法中的属性加密策略,变更日志访问权限,防止不合规用户查阅日志。
90.进一步地,所述用户为所述电网调度日志的日志拥有者或日志使用者;所述日志拥有者包括各级调度机构的值班调度员以及各厂站监控中心的数据负责人,所述日志使用者包括各级调度机构的调度审核员、安全审计员。
91.具体而言,在本实施例中,根据用户个人信息生成一个id,在区块链存储中用该id作为状态数据库中的关键字key值,其他信息作为value值存储,用户可根据id在区块中查询数据,获得对应用户id的存储信息。需要注意的是,在生成用户id时需保证唯一,若两个用户共用同一id,则始终会有一用户存储信息时发生错误。所述用户密钥:在本实施例中,根据用户属性生成对应密钥,若用户属性有所更新,需重新进行密钥获取步骤。
92.进一步地,所述电网调度日志包括各级值班调度员记录的管辖范围内电网调度全过程记录、各厂站监控中心的数据负责人采集的结构化设备状态日志,所述电网调度全过程记录包括综合操作命令票、逐项操作命令票、调度操作书面命令票的扫描版图片文件。
93.进一步地,所述方法包括:
94.使用开源的nosql数据库作为区块链状态数据库存储用户上传的用户数据结构体,以支持使用日志关键词进行模糊查询操作;
95.所述用户数据结构体包括用户id、ipfs数据哈希地址、日志数字摘要、日志关键词、用户信息和日志更新时间六个字段,其中,所述用户id为key值,所述ipfs数据哈希地址、日志数字摘要、日志关键词、用户信息和日志更新时间均为value值。
96.所述智能合约采用的链代码结构体包括invoke、isappendok、isuserlognull、addnewlog、isupdateok、updatelog、querylogbyid、querylogbykeyword;所述invoke用于接受处理客户端请求,所述isappendok用于检测日志能否被添加,所述isuserlognull用于检测当前用户日志是否为空,所述addnewlog用于添加当前用户的首份日志,所述isupdateok用于检测日志能否被更新,所述updatelog用于更新日志,所述querylogbyid用于通过用户id查询日志,所述querylogbykeyword用于通过关键词查询日志。
97.进一步地,参阅图6,所述通过智能合约遍历区块链中的数据,包括:
98.步骤101:调用invoke,接受来自用户的操作请求,包括上传与查询操作。
99.步骤102:若用户请求上传操作,则调用isappendok,根据当前用户id查询其用户信息,判断其能否进行日志上传操作,对于非电网调度机构人员应返回false,提示其没有上传权限并结束上传操作,否则返回true,调用isuserlognull判断当前用户是否上传过历史日志,为true则表明用户未上传过日志,调用addnewlog将对应的六个字段打包为所述用户数据结构体存储至区块链中,为false则表明用户此前已上传过日志,调用isupdateok判断用户是否具有更新权限,当电网调度机构人员发生调岗或离职情况时,应返回false拒绝其更新日志,否则调用updatelog,取出链中数据,并将新的信息转换为所述用户数据结构体写入区块链中;
100.步骤103,若用户请求查询操作,则根据用户的输入自动选择查询模式,当输入为用户id时调用querylogbyid,使用该用户id作为key值查询nosql数据库并返回电网调度日志的哈希地址;当输入为日志关键词时调用querylogbykeyword,遍历区块中所有数据,如果和关键词相匹配,则返回电网调度日志的哈希地址。
101.本发明另一实施例还提出一种电网调度日志管理系统,用于实现上述实施例所述的电网调度日志管理方法,参阅图7,包括电网调度日志存储模块1和电网调度日志查询模块2;
102.其中,所述电网调度日志存储模块1,包括:
103.日志获取单元11,用于获取电网调度日志的用户信息,根据所述用户信息生成唯一的用户id和用户密钥;
104.日志处理单元12,用于使用sha256哈希算法提取所述电网调度日志的数字摘要,并根据所述电网调度日志的用户设置的加密策略,使用cp-abe算法对所述电网调度日志进行加密获得日志密文,将所述日志密文上传至ipfs,并接收所述ipfs返回的哈希地址;
105.日志上传单元13,用于将所述数字摘要、哈希地址、所述用户id、所述日志关键词、所述用户信息和所述日志更新时间一并通过智能合约上传至区块链进行日志存储;
106.其中,所述电网调度日志查询模块2,包括:
107.检索单元21,用于获取用户输入的用户id,并根据所述用户id,通过智能合约遍历区块链中的数据并返回检索结果;所述检索结果包含所述哈希地址;当检索不到电网调度日志时,所述检索包含表示未检索到日志的预设指示语;
108.密文获取单元22,用于将所述检索结果中的哈希地址发送至ipfs,并接收ipfs根据该哈希地址返回的日志密文;
109.解密单元23,用于使用所述用户密钥对该日志密文进行解密获得日志明文;
110.摘要提取单元24,用于使用sha256哈希算法提取该日志明文的数字摘要;
111.对比单元25,用于将该日志明文的数字摘要与所述电网调度日志的数字摘要进行比对,若一致,则查询到正确的日志,若不一致,则未查询到正确的日志。
112.进一步地,所述日志上传单元13,具体用于:
113.获取日志关键词和日志更新时间;将所述数字摘要、哈希地址、所述用户id、所述日志关键词、所述用户信息和所述日志更新时间一并通过智能合约上传至区块链进行日志存储;
114.所述检索单元21,具体用于:
115.获取用户输入的用户id或日志关键词,并根据所述用户id或日志关键词,通过智能合约遍历区块链中的数据并返回检索结果。
116.通过上述实施例的描述可知,本发明的各实施例具有以下优点:
117.(1)综合利用区块链与星际文件系统实现电网调度日志的去中心化存储与检索,避免了中心化数据库服务器和纸质档案因遭受自然或人为的破坏攻击而导致的数据丢失、损坏和篡改问题,降低了区块链上的数据存储成本,使用开源的nosql数据库作为区块链状态数据库存储数据以实现日志关键词模糊查询,降低了日志的追溯、调阅和维护成本,实现电网调度安全问责场景中的快速追责。
118.(2)提出sha256算法和cp-abe算法联合加密设计,通过cp-abe实现加密日志的细粒度访问控制,即日志拥有者对数据具有完全控制权。与非对称加密相比,只需设定访问策略并执行一次加密,就能使符合策略的用户查阅日志,无需关注接收者的身份信息。与对称加密相比,可避免密钥传输过程中的密钥泄露问题。通过sha256算法实现完整性校验,其优势在于算法输出的256位数值已具备足够低的冲突碰撞概率;针对图片形式的调度令,修改其中任一像素点都会引起输出值的大幅改变。在电网调度的日志管理场景中,既能保证日志传输存储过程中的安全性,又能保证日志使用过程中的便利性。
119.(3)提出智能合约链代码的结构与调用流程设计,满足电网调度场景的使用需求,既能实现基本的上传与查询操作,也能保障一定的操作合法性。在上传日志时检查用户身份属性,避免了非电网调度机构人员的非法添加操作,例如上传虚假、伪造的调度日志,当调度机构人员发生轮岗、离职等情况时,能够及时禁止其更新日志权限。智能合约通过系统自动执行,无需人为参与,保证公正性的同时节约时间、降低成本,其调用历史也会被记录到区块链交易信息中,从而对调用的过程和结果实现可追溯、可审计。
120.以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。