APP下载

水电站监测数据加解密算法设计与实现

2021-09-24李张昆刘利君高浩志

水利规划与设计 2021年10期
关键词:加解密明文加密算法

李张昆,刘利君,高浩志

(中国电建集团昆明勘测设计研究院有限公司,云南 昆明 650033)

随着IT技术的发展,越来越多的传统行业开始向信息化方向转型。在水电行业中,水电工程立项、建设、运维等阶段均不同程度地引入了来自不同厂商的各种信息化系统,力图通过信息化手段对水电站进行科学有效地管理运营。然而,由于流域各电站之间系统相对独立,各类系统(例如基于以太网的水电站闸门自动化控制系统[1]等),每天产生的关于水电、机组运行等各类海量数据无法互通共享,不能有效支撑流域电站节能增效的各类决策。

伴随着大数据技术的发展,采用大数据手段对大量纷繁复杂的数据进行系统性挖掘、分析,并结合相应业务模型,为电站后期运营决策提供有效依据已成为必然选择。比如梯级水电站,其调度决策系统中存在很多非结构化和半结构化[2]的数据,其中涉及很多有关水电站调度决策相关的敏感性数据。面对这类数据,在水电站各阶段信息系统开发应用过程中,需要时刻保持敏感数据的高度隐秘性,保障系统的信息安全性。然而,在数据采集治理共享过程中,一旦出现水电敏感数据泄露、信息被恶意篡改的情况,将导致数据失去有效性而使得水电站调度决策失误,进而造成巨大的社会、经济损失。因此如何确保对于敏感信息的数据隐秘性和安全性在水电站信息系统建设过程中显得尤为重要。

为了保障数据信息的保密性和安全性,需要对数据按照既定规则进行重新编码,以隐藏数据信息,即使数据泄露,也难以准确获取加密前的真实数据信息,从而实现数据安全有效的共享传递。

1 总体设计

现如今水电站伴随着各类信息系统的建设,每天产生的关于水电、机组运行等监测数据,体量越来越大,数据种类越来越多,水电监测数据时效性要求越来越高,因此在对水电站监测数据进行加密解密操作时,需要遵循以下原则:

(1)通用性,保证加解密系统能够满足对多种数据类型,任意数据进行有效加密、解密操作。

(2)保密性,确保数据加密后的密文不容易被破解,切实保障数据的安全性。

(3)准确性,对加密后的数据,能够精准有效的解密,保证数据的正确性。

(4)快速性,能够短时间完成数据的加密解密工作,保证数据时效性。

为了实现水电站信息体统体系上下游通信无需持有相同密钥也能完成加密数据传输识别,拟采用非均匀加密算法DES完成相关数据的加密工作。通过对某电站变形监测传感器监测数据进行实践发现,采用单纯的DES算法进行加密,产生的64位二进制数据密文,或多或少会出现乱码以及不可见字符,这极大地阻碍了数据的保存与传递,极易造成数据解密后的紊乱错位,进而将导致数据失去有效性而使得水电站调度决策失误,造成巨大的社会、经济损失。为了避免此类问题的发生,需要防止加密后乱码和不可见字符的出现,为此本文引入Base64编解码算法,对数据明文进行预处理,以杜绝乱码和不可见字符的出现。通过Base64编解码算法与DES加解密算法交叉融合,完成水电数据中数据的加密解密工作,充分保障数据的安全性、完整性以及可靠性。该加密解密系统的工作流程如图1所示。

图1 加密解密流程

在数据明文加密过程中,首先通过Base64编码算法对待加密数据明文进行第一次Base64编码操作,将明文中特殊字符转为常规字符,然后对明文一次编码结果进行DES加密操作,得到中间密文,再在中间密文的基础上,对中间密文进行第二次Base64编码操作,得到最终密文。通过首尾两次Base64编码操作,彻底排除DES加密结果中的乱码或不可见字符,极大地提高了数据的规范性和完整性。

对于密文的解密过程,即加密过程的逆向操作。首先采用Base64解码算法对密文进行第一次Base64解码操作,得到一次解码密文,然后对该一次解码密文进行DES解密操作,得到中间明文,再在中间明文的基础上,对中间明文进行第二次Base64解码操作,即可得到原始的数据明文。解密流程通过与加密流程完全对称的逆向操作,保障了解密后明文的正确性。

本文采用Base64编解码算法与DES加解密算法交叉融合,本文利用对称加密算法速度快、加密强度高的特点,结合Base64编解码算法的应用广泛性,完全可以覆盖水电行业各种类型数据的加解密工作,并有效保证数据的安全性、准确性、快速性。

2 算法简介

2.1 Base64编解码算法原理

Base64编码是基于64个字符A-Z,a-z,0-9,+,/的编码方式[3],是一种任意二进制到文本字符串的编码方法。Base64编解码原理如图2所示,编码是将明文按3个字节为一组,把3个字节的数据放入一个24位的缓冲区中,然后从缓冲区最高位开始连续截取6位二进制数据[4],每6位作为一组;然后分别在每组6位二进制数的最高两位添加两个0构成一个新的字节,最终形成4个新字节;最后把4个新字节分别作为索引,查询Base64编码表,找到对应字符作为编码后的密文。对于明文不足3字节的,以字节0补位,编码后使用“=”作为编码密文。Base64解码则是将密文按4个字节为一组,对照Base64编码表找到每个字节对应字符的索引值,分别取每个索引值的低6位依次放入一个24位的缓冲区;然后从缓冲区的最高位开始取8位二进制作为一组构成一个新的字节,直至24位二进制全部取完,最终得到3个字节,即对应明文。

图2 Base64编解码原理

2.2 DES加解密算法原理

DES加密算法是一种数据分组的加密算法,它将数据明文二进制按照64位为一组分成不同的数据块,然后使用Feistel结构,对数据块进行了初始置换、密钥置换、扩展置换、S盒替代、P置换以及逆置换等一系列操作,经过多次迭代后得到最终的加密密文[5]。其中DES加解密所需的密钥生成流程如图3所示,原始64位密钥通过PC- 1变换得到56位密钥,将其高28位作为C[0],低28位作为D[0],并循环左移得到C[1],D[1],然后对新组成的56位二进制数据进行PC- 2变换即可得到48位子密钥K[1],以此类推,得到16个48位子密钥。

图3 密钥生成流程

其中,对于每个64位二进制数据块的加密过程详细步骤如图4所示[6],首先对64位明文进行初始IP置换,将置换得到的64位二进制的左边32位作为L[0],右边32位作为R[0],以此作为输入,按照如下算法进行16轮迭代变换:

Li=Ri-1

Ri=Li-1⊕f(Ri-1,Ki)

其中,f(Ri-1,Ki)=P(S(E(Ri-1)⊕Ki)),1≤i≤16。

图4 DES加密流程

f函数的详细流程如图5所示。E为扩展变换,将32位Ri-1映射为48位数据,将这48位数据与对应48位子密钥进行异或操作,得到的结果按6位一组分为8组,对每一组数据进行S盒替换,得到8组4位二进制,对新生成的32位数据进行P置换,将结果与Li-1进行异或得到Ri。

图5 f变换

如此迭代,得到R16L16,将该64位二进制数据进行逆置换IP- 1操作,得到64位二进制明文数据块对应的加密密文。

3 算法实现与应用

3.1 算法实现

结合Base64编解码算法和DES加解密算法的特点以及场景应用的相关约束性,该混合加密算法采用Base64-DES-Base64交叉融合模式,加密前期,鉴于DES加解密算法输入是64位二进制,合计8字节,而Base64编解码算法将3字节编码为4字节,故对明文按照6字节一组进行分组(不足6字节,以“”代替),然后针对每组数据依次按照加密流程执行,混合加密算法实现流程如图6所示。

图6 混合加密算法实现

由图6可知,整个加密过程分为3个阶段。第一,将6字节明文进行Base64编码得到8字节数据;第二,将8字节(64位)Base64编码串进行DES加密得到8字节DES加密串;第三,针对DES加密串进行二次Base64编码,得到分组密文;最后按照既定索引顺序,依次将各组密文组合封装,即可得到最终的密文。

在对称加密算法中,数据加密和解密均采用同一个密钥,因此加解密算法的安全性从一定程度上依赖于所持有密钥的安全性[7]。为了提高加解密算法密钥的安全性及可靠性,本文采用分组混合随机的方法生成DES加密解密过程中的原始64位密钥,原始密钥的生成流程如图7所示。

图7 原始密钥生成流程

其中,密钥基元即4位二进制数,由系统生成16个在0~15之间的随机数,然后再以当前时间为种子,生成16个0~15之间的不重复随机数作为密钥基元对应的安置索引号,最后将16个4位二进制密钥基元按照索引号的位置摆放组合,得到最终的64位原始密钥。

3.2 算法应用分析

利用项目所用计算机(软硬件配置如下:CPU Intel(R) Xeon(R) W-2125 4.00GHz,内存16GB,硬盘1TB,操作系统为Windows 7 64位旗舰版,编程语言C++,IDE开发环境为Microsoft Visual Studio 2010)对该算法的相关指标,包括保密性、可靠性、执行效率等进行了测试验证。

3.2.1保密性及可靠性分析

保密性体现在加密算法的明文敏感性和密钥敏感性。明文敏感性和密钥敏感性是一个加密算法好坏的重要判断标准[8- 9]。分组混合加密算法的明文敏感性依赖于变化明文所在分组的位置,即明文一旦有变化,则包含该变化明文的分段对应加密后的密文将会随之而做出改变。采用简单的文本文件对该分组混合加密算法的明文敏感性进行测试验证[10],结果见表1。当明文有细微的差别,整体加密密文也会随之改变。使用对应密钥进行解密操作后,可以无差错还原明文。

表1 明文敏感性

该分组混合加密算法的密钥敏感性,主要取决于DES算法,其中对于64位密钥,密钥的第8、16、24、32、40、48、56、64位是奇偶校验位,不参与实际加密。只要其他比特位发生变更,即会引起密文的变化。密钥敏感性验证结果见表2。

表2 密钥敏感性

由表2可以看出,对同样的明文采用不同的密钥进行加密,最终得到的密文也是不一样的。

3.2.2执行效率分析

执行效率通常简单地体现在整个算法执行所耗费的时间周期上。采用单线程方式利用该算法对不同数据量的数据进行多次加解密,分别统计加密、解密所用平均时间,见表3。

表3 时间性能

由表3可以看出,当数据量较小时,整体时间性能表现尚可。当数据量较大时,加解密速度会相对减慢。就整体效率而言,满足项目需求。以上仅对项目所用计算机,因为同一算法所耗费的时间周期在不同机器上,会因硬件配置效能不同而有所区别。

3.2.3综合分析

目前该算法均采用串行方式,对数据量较大的数据进行加解密时,可能存在时间性能瓶颈问题。未来随着水电工程对数据安全性、隐秘性、实时性等要求的提高,还需要从以下几方面对整个加解密系统进行深入研究优化:①加解密算法流程,本文提出的分组混合加解密算法,整体逻辑相对来说比较简单。后期可以考虑增加整个流程结构的复杂度,以增加加解密的效果,但可能会付出一定效率成本,需要综合考虑,取一个平衡点。②加密算法,本文综合考虑实了应用需求及实现的成本采用DES算法作为核心加解密算法,满足了当前实际应用需求。但后期随着要求的提升,在设计和应用中可考虑引进更加先进的加解密算法体系。③密钥,本文通过分组混合随机的方法生成DES加解密所需的64位原始密钥,后期在计算机配置允许的条件下,可以考虑增加密钥的随机性及加入干扰因素,以提高密钥的敏感性。④加密可考虑并行方式,在对数据进行分治之后,采用多线程分片操作,通过合理设置线程的调度策略,以提升加解密算法的整体执行效率。

4 结语

本文采用分而治之的思想,基于针对流域水电站监测过程中各类信息系统产生的敏感性数据所存在的安全及隐私保护等问题,基于Base64编解码算法和DES加解密算法,集合分而治之的思想,研究了一种分组混合加密算法,通过把复杂的水电监测数据进行分解治理加密,实现复杂数据的快速加解密。通过某水电站大数据集成平台实际应用试验表明,该算法能够有效解决水电监测数据敏感信息的隐秘性问题,具有较好的保密性、准确性,能够满足水电站监测数据加解密需求。

猜你喜欢

加解密明文加密算法
DES加密算法的实现
基于整数矩阵乘法的图像加密算法
奇怪的处罚
PDF中隐私数据的保护方法
电子取证中常见数据加解密理论与方法研究
奇怪的处罚
基于小波变换和混沌映射的图像加密算法
奇怪的处罚
网络数据传输的加解密系统研究
AES加密算法的实现及应用