时间:2024-05-04
冯瑞珏,李轩东,杨树丰,曾献煜
(华南理工大学广州学院电气工程学院,广东广州,510800)
随着智能电网的时一步推进,电力系统之间的通信越发交互,网络的开放性以及用户多样性,海量的数据面临着被越权访问。直接采用明文传输的方式容易被黑客攻击,有被窃听、篡改或伪造身份的威胁。如何提高信息保密的强度,控制敏感资源的访问权限,成为急需解决的问题。为了保障数据的安全,保证电力系统的正常运行,要求电力通讯具备安全性高的加密方式。而采用合适可靠的加密手段是关键[1-2]。针对数据的保密性、完整性和身份校验,常采用对称加密算法、非对称加密算和完整性。保密性保证数据即使被获取,仍然不能获得有效信息,而身份验证针对黑客身份的伪造,完整性则防止数据不被删除或篡改[3-5]。对于电力通信网络而言,加密手段的可靠、安全、高效缺一不可,本文从数据的完整性保护出发,对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)完整性的验证
利用MD5 可以对信息生成信息摘要,以防止其被随意篡改,保障信息完整一致。电力通信系统中,MD5 算法常跟非对称算法配合使用,对所需要保护的数据进行数字签名,相当于给数据配以唯一的“数字指纹”,任何数据的篡改都会导致它对应的数字签名的改动。如在网络上下载所需的软件常附带一串MD5 值,实质作用是对我们下载的软件进行MD5 校验,以确保所下载的软件和该网络上的软件相同。因此利用MD5 算法获得信息摘要的方式来校验数据的完整性被电力通信网络中的网页、数据库、论坛所应用。
(2)访问安全认证
电力通信系统的规模随着接入用户数量不断增大,其结构繁琐复杂,类型不一,来源分散,其方案设计具备地域性差异,这给电力通信网络的数据安全带来了极大的挑战。如何保证只有授权人员才能合法访问数据是当前的热点问题。为了保障电力系统的稳定运行,防止一般用户或黑客可能造成的越权操作和不当操作,必须具备一个可靠的信息认证系统。
MD5 算法广泛应用于各种操作系统上,系统先将用户的初始密码输出使用MD5 生成信息摘要保存。当用户访问某个电力网站时,系统将用户输入的密码经计算再次生成信息摘要,将该信息摘要与系统先前保存的信息摘要进行对比分析,如一致,则确定为本人操作,防止了非授权用户的错误进入,避免非法使用者对系统重要程序的越权操作。由于MD5 算法为不可逆算法,不设计密码传输或保存,避免了黑客对密码窃取的风险,还在一定程度上提高了破解密码的难度,极大地提高了电力通信网络的安全性。
在电力通信中文件和信息的传输是十分频繁却至关重要的,大到电力系统各组成之间的相互协调以保障发电供电的稳定,小到供电系统上每家每户的用电数据,这其中每一个消息文件的完整性都与整个电力系统的正常运行息息相关,某一个环节的出错都极有可能造成不同程度的电力事故。
MD5 算法利用较强的抗修改性,在对目标文件进行完整性检查校验时,能够快速准确地进行判断,因此可应用于数据完整性的有效保护。其原理是将整个消息或文件作为一个大文本,通过算法生成唯一的MD5 值,这个MD5 值就作为消息或文件的“数字指纹”,用来检验接收端所接收到的与发送端是否一致。由于MD5 算法的特性,即使是一点细微的修改,最后所得到的MD5 值都会和原值存在巨大差异,用户可以根据这个差异来判断消息文件的完整性,并且因为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 算法时效性之高,即使应用在电力通信上可行。
本文分析了MD5 的算法原理和应用场合,并从电力通信网络的特点出发,针对整个系统的安全性,对MD5 算法的时效性进行仿真验证。由结果可得,MD5 输出的均为128 位的信息摘要,对数据的运算时间效率高。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!