Rijndael算法在CBTC安全通信协议中的应用
2015-11-24罗雅允陈永刚张彩珍
罗雅允,陈永刚,张彩珍
(1.兰州交通大学自动化与电气工程学院,兰州 730070;2.兰州交通大学电子与信息工程学院,兰州 730070)
Rijndael算法在CBTC安全通信协议中的应用
罗雅允1,陈永刚1,张彩珍2
(1.兰州交通大学自动化与电气工程学院,兰州 730070;2.兰州交通大学电子与信息工程学院,兰州 730070)
为解决基于IEEE 802.11协议的CBTC(Communication Based Train Control,基于通信的列车运行控制)无线数据通信子系统中存在的不安全因素,应引入安全通信协议,采用加密技术进行防护。鉴于降低成本及易实现性等方面的考虑,设计中选用Rijndael加密算法,并用VC++对该算法进行软件编程。最后,借助Socket通信机制模拟数据加解密通信过程,验证了设计的正确性。测试结果表明,该软件算法设计正确,安全性好,易实现,可运用到CBTC安全通信协议中,确保列控信息的安全传输。
Rijndael算法;CBTC系统;安全通信协议;Socket通信;VC++
基于IEEE 802.11协议的CBTC系统是城市轨道交通当前的研究热点[1--3],它将无线局域网(WLAN)技术运用到列车运行控制系统中。但由于该无线通信系统属于开放传输系统,其信道开放,信息传输时容易受未知因素干扰和入侵者攻击。而CBTC系统是安全苛求系统,传输的数据为直接关系到列车安全运行的安全相关数据。因此,寻找一种有效的安全防护措施,对列控信息进行保护显得尤为重要。
鉴于安全的数据通信在CBTC系统中的基础性地位,欧洲电工标准化委员会专为此设立了标准EN 50159[4]。依据该标准,国外一些组织与知名公司已经各自设计了安全通信协议,用于保障安全相关数据的可靠传输[5-6]。如欧洲铁路运输管理系统协会制定的EURORADIO 接口规范、ALSTOM 公司开发的FSFB/2安全协议、德国PROFIBUS用户组织制定的PROFIsafe安全通信协议、CSEE Transport公司针对封闭传输系统设计的CSEE Transport安全通信协议等。
我国陈黎洁、单振宇等人也做了相关的研究[7-8],另外2010年12月30日,北京地铁亦庄线的成功运营,标志着我国CBTC系统国产化的实现[9]。
就密码体制方面,加密技术可分为对称加密、非对称加密以及混合加密3种体制,鉴于列控信息传输实时性的要求,CBTC系统中一般采用实现速度比较快的对称加密技术。目前流行的对称加密技术主要有:数据加密标准(DES)、三重DES (3-DES)以及高级加密标准(AES)。相关的研究有文献[10]在分析了欧洲Euroradio安全通信机制的基础上,采用3-DES算法的加密系统,并用FPGA对其进行硬件实现。文献[11]在对数据加密算法研究现状及发展趋势进行分析的基础上,分别探讨了 AES 算法的VC++和DSP 实现。
由于DES使用的56bit密钥太短,其后的3-DES又只是在一定程度上解决了密钥的长度问题,却增加了信息传输时延,因此,选用AES加密标准,它使用的是Rijndael加密算法,它比3-DES快,且至少和3-DES一样安全,而且易于软件实现[12-13]。
1 CBTC安全通信协议
CBTC安全通信协议是在原有的TCP/IP四层体系结构基础上增加的安全层中实现的,它实质上是由应用层定义的传输协议,用于对下层的不可靠传输系统提供安全保障。协议具体层次结构如图1所示。其功能主要是针对数据传输过程中可能出现的报文错误(如报文重复、丢失、乱序、延时、插入、伪装、损坏等)进行防护。
图1 CBTC安全通信协议所在层次结构
防护措施与报文错误的对应关系如表1所示,每项防护措施分别针对报文传输错误中的一种或几种进行防护。
表1 防护措施与报文错误对应关系
对于通信协议中应采取的防护措施,专门针对加密技术模块进行研究,选用Rijndael加密算法对安全相关数据进行加密处理。
2 Rijndael算法原理
Rijndael算法是分组密码的一种,采用代换置换网络的结构,将明文分组与密钥结合后,经过轮变换,进行混乱与扩散变为密文。算法运算中的基本单位为字节(8 bit),明文和密文各由128 bit的分组组成,密钥由128、192 bit或256 bit的序列组成,加解密轮数分别为10、12轮和14轮[14]。如图2所示为分组长度128 bit,密钥长度256 bit,加密轮数14轮的Rijndael算法结构图,主要由密钥扩展和轮变换两部分构成。
图2 Rijndael算法结构
密钥扩展部分,将256 bit的输入密钥按字节划分为k0到k31,组成一个4行8列的数组,将第j列记为W[j]。扩展密钥的前8列直接由输入密钥构成,其余列由以下公式扩展得到
其中:
temp=SubByte[RotByte(Wj-1)]⊕Rcon[n];
Rcon[n]为轮常数,可由表2查得。
表2 轮常数
W[4m]到W[4m+3]为第m轮的轮密钥,轮密钥的具体选取方法如表3所示。第1轮取扩展密钥的前N个字,第2轮取接下来的N个字,依此类推,得到R轮的所有轮密钥。
表3 轮密钥选取
轮变换部分,除最后一轮省略了列混合变换之外,其余13轮都由如下S-盒、行位移、列混合和密钥加这4种变换构成。
S-盒:起混淆和非线性变换作用;
行位移:对各行按不同的偏移量进行循环移位;
列混合:用有限域GF(28)上的算术特性进行代换;
密钥加:将每一轮密钥和中间状态进行逐位异或。
3 Rijndael算法实现
根据上述Rijndael算法原理,设计的加解密算法程序流程,如图3所示。分加密和解密两部分。
图3 加解密算法程序流程
依据此程序流程图用VC++实现的加解密程序代码段如下。
(1) 加密模块
由函数 Encrypt() 完成,主要包括初始密钥加、R-1轮变换以及第R轮变换3部分。
Encrypt(word16 a[4][N],word16 w[4][N*(M+1)])
{ int p;
KeyExpand(w); //密钥扩展
AddRoundKey(a,w,0);
for (p=1;p { SubByte(a);//S-盒变换 ShiftRow(a);//行位移变换 MixColumn(a);//列混合变换 AddRoundKey(a,w,p);//密钥加变换} //第R轮轮变换 SubByte(a); ShiftRow(a); AddRoundKey(a,w,R); return 0;} (2)解密模块 由函数Decrypt()完成,主要包括初始密钥加、R-1轮变换以及第R轮变换3部分。 Decrypt(word16a[4][N],word16 w[4][N*(M+1)]) { int q; KeyExpand(w); //密钥扩展 //第R轮轮变换 AddRoundKey(a,w,R);//密钥加变换 InvShiftRow(a); //逆行位移变换 InvSubByte(a);//逆S-盒变换 for (q=R-1;q>0;q--)//1到R-1轮轮变换 { AddRoundKey(a,w,q);//密钥加变换 InvMixColumn(a);//逆列混合变换 InvShiftRow(a); //逆行位移变换 InvSubByte(a); //逆S-盒变换} AddRoundKey(a,w,0); return 0;} 为验证程序设计的正确性,借助面向连接的Socket通信机制,通过将其与Rijndael加密算法相结合的方式,在同一台计算机上模拟实现了车地之间的加解密数据通信过程。Socket通信流程如图4所示,分连接请求接收端和发送端两个方面进行实现。 图4 数据通信过程 程序运行测试结果如下。如图5所示,为连接请求接收端(receiver),在程序运行时先启动,进入监听状态。当接收到发送端连接请求信息后建立连接,界面显示Please Input Data,准备发送数据。此时输入明文数据00112233445566778899AABBCCDDEEFF,经128bit密钥000102030405060708090A0B0C0D0E0F加密处理后,变为密文69C4E0D86A7B0430D8CDB78 070B4C55A并发送。 图5 连接请求接收端(receiver) 图6为连接请求发送端sender,在发送完连接请求信息后,等待连接建立。在连接成功建立后,接收到receiver发送的密文数据69C4E0D86A7B0430D8 CDB78070B4C55A,通过用接收到的密钥解密进而得到原始数据00112233445566778899AABBCCDDEEFF。由于通信过程是双向的,sender也可以向receiver发送数据,发送的明文数据为00112233445566778899 AABBCCDDEEFF,但经256bit密钥0001020304050607 08090A0B0C0D0E0F101112131415161718191A1B1C1 D1E1F处理后,变为密文8EA2B7CA516745BFEAFC 49904B496089并发送。receiver接收到该密文数据后,同样用该256bit密钥解密,恢复明文数据。 图6 连接请求发送端(sender) 通信结束后,只要有一方发送断开连接信息“q”,通信过程均可结束。如图7所示,receiver在接收到sender发送的连接请求信息后,直接发送断开连接信息“q”,则连接断开,双方通信结束。 图7 断开连接过程 如上,分别用128 bit和256 bit密钥对数据进行加解密处理,测试结果表明本文用VC++对Rijidael算法进行的软件设计正确,能够正确实现数据传输过程中的加解密操作。 在分析基于IEEE 802.11协议的CBTC无线数据通信子系统中存在的不安全因素的基础上,提出使用安全通信协议、引入加密技术的重要性。通过分析前人研究成果及经验总结,采用安全性好、加密速度快的Rijndael算法,并用VC++对该算法进行了软件编程设计。最后,借助socket通信机制验证了该软件算法设计的正确性。测试结果表明,该程序设计正确,安全性好,并且由于是由软件实现的,避免了使用硬件芯片时的复杂电路设计,具有易实现、可移植性强、成本低、易于升级等优点,可将其运用到CBTC安全通信协议中确保行车安全。深入理解 CBTC 系统应用需求,并完善安全通信协议设计,将是下一步的研究方向。 [1] 魏赟,鲁怀伟,何朝晖.基于802.11协议的CBTC系统数据通信子系统的探讨[J].铁道学报,2013,35(4):51-56. [2] 杜成.城市轨道交通CBTC系统2.4 GHz无线传输技术的应用研究[J].铁道标准设计,2013(3):129-133. [3] 葛新宇,党建武.基于CAN总线的CBTC仿真测试系统数据结构设计[J].铁道标准设计,2013(5):106-110. [4] CENELEC. EN 50159-2 Railway Applications-Safety related communication in open transmiss-ion systems[S],2001. [5] Miguel Sepulcre, Javier Gozalvez. Contextual and Applications-Aware Communications Protocol Design for Vehicle-to-Vehicle Communications[J]. Wireless Personal Communications, 2013,70(4):1505-1524. [6] Bin Hu, Hamid Gharavi. A Joint Vehicle-Vehicle/Vehicle-Roadside Communication Protocol for Highway Traffic Safety[J]. International Journal of Vehicular Technology,2011, 2011:1-10. [7] Chen Lijie, Shan Zhenyu, Tao Tang. Performance analysis and verification of safety communication protocol in train control system[J]. Computer Standards and Interfaces, 2011,33(5):505-518. [8] Lijie Chen, Tao Tang, Xianqiong Zhao,et al. Verification of the safety communication protocol in train control system using colored Petri net[J]. Reliability Engineering & System Safety,2012,100:8-18. [9] 郑建宁.国产 CBTC系统在北京地铁亦庄线的应用研究[J].铁道勘测与设计,2010(4):98-101. [10]常少卿,任芳.基于FPGA的3DES加密系统的设计与实现[J].现代电子技术,2011,34(18):114-116. [11]代大勇.AES 算法及其DSP实现[D].哈尔滨:哈尔滨工业大学,2008. [12]郑东,李祥学,黄征.密码学——密码算法与协议[M].北京:电子工业出版社,2009:52-63. [13]Maria Franekova, Marek Vyrostko.Safety evaluation of cryptography module within safety related control system for railway application[J]. Advances in Electrical and Electronic Engineering, 2011,9(2):103-108. [14]M A Kabir, K A Sayeed, M A Matin, et al. Triple Layered Encryption Algorithm for IEEE 802.11 WLANs in E-Government Services[J]. International Journal of Computer Network and Information Security, 2013,5(11):36-41. Application of Rijndael Algorithm in CBTC safety Communication Protocol LUO Ya-yun, CHEN Yong-gang, ZHANG Cai-zhen (School of Automation and Electrical Engineering, Lanzhou Jiaotong University, Lanzhou 730070, China) In order to avoid the unsafe factors in CBTC (Communication Based Train Control) wireless data communication subsystem of urban rail transit, safety communication protocol and its encryption technology should be used. In view of the low cost and easy implementation, Rijndael algorithm is chosen, and VC++is used to complete the software programming. Finally, in order to validate the correctness of the design, socket communication mechanism is employed to simulate the encryption-decryption data communication process. The test results prove that this algorithm is correctly designed, safe, easy for implementation and applicable in CBTC safety communication protocol to ensure safe transmission of train control information. Rijndael algorithm; Communication Based Train Control system; Safety communication protocol; Socket communication; VC++ 2014-05-29; 2014-06-16 国家自然科学基金地区项目(61164101);甘肃省高校基础科研基金(620027) 罗雅允(1987—),女,硕士研究生,E-mail:1056267995@qq.com。 1004-2954(2015)03-0114-04 U285.8 A 10.13238/j.issn.1004-2954.2015.03.0274 Socket通信测试
5 结语