.net平台下基于xml文档格式的RC5加解密算法研究与实现
2012-08-06刘城霞
刘城霞
1 北京信息科技大学计算机学院 北京 100101
2 北京邮电大学计算机学院 北京 100876
0 前言
随着通信的飞速发展,信息安全也越来越显得重要。计算机密码体制的基本思想就是将要保护的信息变成伪装信息,只有合法的接收者才能从中得到真实的信息。密码体制有对称密钥体制和非对称密钥体制之分,RC5加密算法为对称密钥体制,对RC5的应用研究也非常广泛,比如在通信中、在无线传感器中等都有相关的应用和研究。本文所重点研究的是在.NET环境下使用RC5加密算法对某标准XML格式文档进行文档级、段落级、句级的加解密操作,并保证加、解密后文档仍保持原格式及内容。
1 RC5算法介绍
1.1 RC5 加密解密的理论过程
(1) 创建密钥组,RC5算法加密时使用了2r+2个密钥相关的32位字。这里r表示加密的轮数。首先将密钥字节拷贝到32位字的数组L中,然后利用线性同余发生器模2初始化数组S,最后将L与S混合。
(2)加密处理,创建完密钥组后对明文的加密,加密时首先将明文分组划分为两个32位字:A和B,其中操作符<<<表示循环左移,加运算是模2w的加法。加密伪代码如下:
其中初始的A、B分别为要加密的两个比特数为w的数据,最终的A、B分别为加密好的两个比特数为w的数据。输出的密文是在寄存器A和B中的内容。
(3) 解密处理,把密文分组划分为两个字:A和B,这里符合>>>是循环右移,减运算也是模2w的减法。
其中初始A、B中的数据就是已经加密了的比特数为w的数据,最终的A、B中的数据为解密后的比特数为w的数据。
1.2 RC5的安全性分析
对于加解密算法来说,安全性是它最重要的一个性能之一,本文中使用的RC5算法的安全性依赖于旋转操作和多种运算的混合使用。要想攻击RC5,可以去攻击原始的密钥也可以攻击其扩展的密钥组S。以差分分析为例,当轮数r很小时,差分分析可以恢复扩展密钥表的每一个比特。但当r=9时,攻击RC5-32所需的选择明文对是245(与16轮DES相同),而当r=12时,需要262个明文对。因此,当轮数很大时,差分分析所需要的明文个数就不大现实了。在论文“对RC5加密算法的差分分析”中,对RC5加密算法进行了差分分析,并得出了结论, 12轮加密足以抗击对RC5的差分分析。当然人们也在RC5的基础上不断改进,比如RC6,R3C等,对它们的性能也有新的分析。
2 系统功能模块设计
按照RC5算法的理论,在设计系统加解密功能时,将分成四个模块进行:密钥成生,加密,解密和密钥扩展。密钥生成模块生成符合要求长度(从128-512不等)的一个初始密钥,此密钥可由随机函数生成。加密模块由两部分组成,一部分用于32位分组长度的加密,另一部分用于64位分组的长度的加密。解密模块类似与加密模块,也对应32位分组长度的解密和64位分组的长度的解密两个部分。密钥扩展模块是将初始密钥通过一系列的混合以及运算转换成能直接用于加解密的子密钥数组,是算法安全性保证的重要元素(如图1)。
图1 系统功能模块图
系统中是针对XML格式文档进行的加解密,因此除了加解密外还要完成XML文档的解析和组织。节点解析模块使用DOM技术,对给定的节点进行解析,提取出相关的信息,并将这些信息交与加解密模块进行相应的处理。节点组织模块将密文和密钥信息按照W3C中关于XML文档节点加密标准进行格式化的组织,产生一个可识别的,规范化的XML加密节点。
另外,由于加解密模块和解析模块的输入输出的数据类型不一致,需要一个数据转换的模块来完成数据转换功能,保证模块之间数据传输正常。
3 系统实现
3.1 RC5基本算法实现
下面介绍RC5加解密算法的具体实现,其中密钥生成比较简单,主要介绍密钥扩展模块,加密模块。
(1) 密钥扩展
以生成一个作用于32位加密解密过程需要的子密钥组为例,该密钥扩展函数可供不同加密轮数的32位加解密过程使用,其中的输入参数r为需要加密的轮数。
密钥扩展函数的作用在于将初始的密钥进行转换,将其变成适用于RC5加密或者解密过程中所需要的类型的大小,即产生RC5算法加解密时使用了2r+2个密钥相关的32位字。
(2) 加密过程
以32位分组加密的过程为例,按照RC5算法理论来进行实现的伪代码。其中A,B为两个明文分组,各两个字符,S为扩展的子密钥数组,r为操作的轮数。
解密过程是加密过程的逆过程,这里不再赘述。
3.2 节点解析与组织
关于XML节点的操作,采用DOM技术来完成。创建节点的伪代码如下:
由于XML中对于密钥和密文的显示,需要采取base64格式,因此需要再次把字符串转换成base64格式,上述方法中关于此的代码为:
4 结果展示
最终一个可供其他系统的调用的完成RC5加解密功能的系统完成了。为了测试其功能,用C#实现了其演示系统。在明文输入框的下方有两个区域,左边为演示程序的功能选择部分,右边的区域显示的是加密过程所选择的各种参数的数值。在输入明文后可以转换为Unicode,然后进行参数的选择。选择完参数以后,将用户所选择的参数显示在参数选择区域。如图2所示。
图2 主界面参数选择后的显示
点击加密后,密文显示在密文内容处。如需要验证解密功能,则点击解密,解密后结果显示在解密内容处。如图3所示。
图3 加解密结果图
通过对系统的测试,系统能够正确对标准格式的XML文档进行RC5的加解密操作。
5 总结
通过对RC5算法的研究和XML文档加解密标准的研究,系统完成了将XML格式文档进行RC5加解密的基本工作。系统将加解密过程生成了DLL文件格式,这增加了它的可移植性,方便了其他系统直接调用。此外,对XML文档的加密标准遵循W3C国际标准,这增强了系统的通用性和国际性。
[1] 杨波.现代密码学[M].北京:清华大学出版社.2003.
[2] 陈飞,徐荣聪.RC5 循环覆盖链算法及其在通信保密中的应用[J].福州大学学报(自然科学版).2004.
[3] 关学忠,孙胜勇,郭小勇,刘传家,杨静.RC5 加密算法在智能无线传感器中的应用[J].现代电子技术.2008.
[4] 刘胜利,王育民.对rc5加密算法的差分分析[J].信息安全与通信保密.1998.
[5] 姜浩.从RC5到RC6[J].信息安全与通信保密.2006.
[6] 何文才,牛晓蕾,刘培鹤,杜鹏,张媛媛.密码算法RC5 和RC6的分析和比较.网络安全技术与应用.2007.
[7] 张娅莉,黄德成.RC5到RC6的演化设计[J].荆门职业技术学院学报.2007.
[8] World Wide Web Consortium (W3C). XML 文档国际加解密标准.http://www.w3.org/Ecryption/.