当前位置:首页 期刊杂志

MD5算法在电力通信中的应用

时间:2024-08-31

冯瑞珏,李轩东,杨树丰,曾献煜

(华南理工大学广州学院电气工程学院,广东广州,510800)

0 引言

随着智能电网的时一步推进,电力系统之间的通信越发交互,网络的开放性以及用户多样性,海量的数据面临着被越权访问。直接采用明文传输的方式容易被黑客攻击,有被窃听、篡改或伪造身份的威胁。如何提高信息保密的强度,控制敏感资源的访问权限,成为急需解决的问题。为了保障数据的安全,保证电力系统的正常运行,要求电力通讯具备安全性高的加密方式。而采用合适可靠的加密手段是关键[1-2]。针对数据的保密性、完整性和身份校验,常采用对称加密算法、非对称加密算和完整性。保密性保证数据即使被获取,仍然不能获得有效信息,而身份验证针对黑客身份的伪造,完整性则防止数据不被删除或篡改[3-5]。对于电力通信网络而言,加密手段的可靠、安全、高效缺一不可,本文从数据的完整性保护出发,对MD5密码技术在电力通信网络中的应用进行研究,并对该算法在应用方面的可靠性、安全性和时效性进行验证分析。

1 MD5算法介绍

■1.1 MD5算法原理

MD5(Message-Digest algorithm 5)算法属于哈希算法的一种,是一种不可逆算法,即无法通过算法得出的密文解密出原文。其作用是允许在使用数字签名软件签名私钥之前将信息“压缩”为信息摘要。MD5算法的原理可以简单地理解为将预输入的信息进行分组,每组长度为512bit,并将每一组都按32bit的形式分成16个子分组,进行一系列的处理之后,算法将输出一个由四组32bit子分组所组合成的128bit散列值。具体步骤如下:

(1)填充

进行MD5算法加密的第一步首先是对原信息进行填充,这样做的目的是使其长度满足一个必要条件,使得对512求余的结果等于448。填充的方法是在消息的末尾先填充一个1和n个0。

(2)记录信息长度

用64bit来存储填充前信息长度。这64bit加在第一步结果的后面,这样信息长度就变为N*512+448+64=(N+1)*512位。

(3)装入标准的幻数

标准的幻数是(A=(01234567)16,B=(89ABCDEF)16,C=(FEDCBA98)16,D=(76543210)16)。如果在程序中定义应该是(A=0X67452301L,B=0XEFCDAB89L,C=0X98BADCFEL,D=0X10325476L)。

(4)四轮循环运算

循环的次数是分组的个数(N+1)。

■1.2 MD5算法用途

(1)完整性的验证

利用MD5可以对信息生成信息摘要,以防止其被随意篡改,保障信息完整一致。电力通信系统中,MD5算法常跟非对称算法配合使用,对所需要保护的数据进行数字签名,相当于给数据配以唯一的“数字指纹”,任何数据的篡改都会导致它对应的数字签名的改动。如在网络上下载所需的软件常附带一串MD5值,实质作用是对我们下载的软件进行MD5校验,以确保所下载的软件和该网络上的软件相同。因此利用MD5算法获得信息摘要的方式来校验数据的完整性被电力通信网络中的网页、数据库、论坛所应用。

(2)访问安全认证

电力通信系统的规模随着接入用户数量不断增大,其结构繁琐复杂,类型不一,来源分散,其方案设计具备地域性差异,这给电力通信网络的数据安全带来了极大的挑战。如何保证只有授权人员才能合法访问数据是当前的热点问题。为了保障电力系统的稳定运行,防止一般用户或黑客可能造成的越权操作和不当操作,必须具备一个可靠的信息认证系统。

MD5算法广泛应用于各种操作系统上,系统先将用户的初始密码输出使用MD5生成信息摘要保存。当用户访问某个电力网站时,系统将用户输入的密码经计算再次生成信息摘要,将该信息摘要与系统先前保存的信息摘要进行对比分析,如一致,则确定为本人操作,防止了非授权用户的错误进入,避免非法使用者对系统重要程序的越权操作。由于MD5算法为不可逆算法,不设计密码传输或保存,避免了黑客对密码窃取的风险,还在一定程度上提高了破解密码的难度,极大地提高了电力通信网络的安全性。

2 MD5加密算法在电力通信中的应用及算例分析

■2.1 MD5算法在电力通信中保护完整性的应用

在电力通信中文件和信息的传输是十分频繁却至关重要的,大到电力系统各组成之间的相互协调以保障发电供电的稳定,小到供电系统上每家每户的用电数据,这其中每一个消息文件的完整性都与整个电力系统的正常运行息息相关,某一个环节的出错都极有可能造成不同程度的电力事故。

MD5算法利用较强的抗修改性,在对目标文件进行完整性检查校验时,能够快速准确地进行判断,因此可应用于数据完整性的有效保护。其原理是将整个消息或文件作为一个大文本,通过算法生成唯一的MD5值,这个MD5值就作为消息或文件的“数字指纹”,用来检验接收端所接收到的与发送端是否一致。由于MD5算法的特性,即使是一点细微的修改,最后所得到的MD5值都会和原值存在巨大差异,用户可以根据这个差异来判断消息文件的完整性,并且因为MD5的长度短,差异性大,整个验证过程也是十分简单迅速的。

■2.2 MD5性能测试分析

为了验证MD5的性能,利用计算机对其性能进行测试分析。将算例通过MD5加密计算,经多组结果对比、分析,从而验证算法的可靠性、安全性及时效性。

本文使用C++语言实现MD5算法。

硬件环境:Intel Core i7-6700HQ计算机。

软件环境:Microsoft Visual Studio Community 2017,Version:4.7.02556。

将MD5算法程序以C++语言编写进Microsoft Visual Studio Community 2017软件中,运行该MD5算法加密程序。本文所进行的算法验证实验均在该程序上进行,它的作用是能将任意长度文本数据加密为16进制的32位MD5值,并附带了运算计时功能。程序界面如图1所示。

图1 MD5算法加密程序

2.2.1 MD5算法可靠性检验

算法的可靠性是其能否在实际中应用最重要的依据,是整个系统能否稳定运行的决定性因素。在电力系统中每一个组成环节都需要准确度极高的运行参数,算法的不可靠所导致的数据错误,极有可能使某个环节的运行轻载或过载,进而影响到整个电力系统的平衡。

为了验证MD5算法的可靠性,设置4个不同的初始消息作为算例,将这4个算例逐一进行五次MD5运算,通过各个算例所得出MD5值是否都是唯一值及是否符合MD5值的形式判断其可靠性。将每个算例输入进程序“明文”框内,点击“MD5加密”执行计算,“密文”框内将生成对应的MD5值,每个算例重复得到结果如表1所示。

表1 MD5算法的可靠性验证

以上算例的输出MD5值均为16进制形式,32位的单向散列值,且通过每一个算例的5次结果对比可以看出输出的结果稳定、均为一个唯一值。综合上述仿真结果,验证了MD5算法具有可靠性。

2.2.2 MD5算法安全性检验

算法的安全性是衡量该算法加密性能好坏的标准,算法安全性高使得被加密文件具有更高的保密性。安全性较高的加密系统还能防止非专业人员的越权操作和错误操作,影响电力设备的稳定运行。要证明MD5算法的安全性,就要从它的抗修改性和强抗碰撞性进行验证。因此下面设置一条算例“obsfg-5179GAZ2066”,将该算例依次进行增位、缺失、篡改、大小写转换的操作,使用程序计算原算例和修改后算例的MD5值,把每次修改得出的结果与原值的结果进行对比,通过对比出的差异分析MD5算法的安全性。对比结果如表2所示。

表2 算法的安全性验证

由仿真结果可以看出,虽然只是修改其中的一位,或是大小写的转换,但所得出的MD5值却是完全不同的。这些细微改变而导致结果的巨大差异验证了MD5算法具有极高的安全性。

■2.2.3 MD5算法时效性检验

运算时间是算法是否实用一个重要指标。高效的运算速度使在固定的时间内能处理更多的数据量。假如一个加密算法的速度慢到需要几小时甚至几天的时间来完成,将完全不能满足电力系统通信这样信息量多、文件大的需求,同时影响用户的体验。为验证MD5算法的时效性,设置两组不同长度的算例作为对照,每组算例均运算20次,将运算所用时间取平均值,通过对比分析算法的时效性。以下为两组算例的初始值,其中A组都为16bit字符串,B组都为64bit字符串。两组算例运算所用的时间如表3所示。

表3 MD5算法的时效性检验

从表格给出的结果可以看出MD5算法的运算速度较快快,运算上述算例所需时间均为微秒级别,并且通过对比可以看出16bit字符串与64bit字符串运算所用平均时间相差甚微,几乎可以归于系统误差,因此说明了MD5算法时效性之高,即使应用在电力通信上可行。

3 结论

本文分析了MD5的算法原理和应用场合,并从电力通信网络的特点出发,针对整个系统的安全性,对MD5算法的时效性进行仿真验证。由结果可得,MD5输出的均为128位的信息摘要,对数据的运算时间效率高。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!