郭軍強
(1.北京全路通信信號研究設計院集團有限公司,北京 100070;2.北京市高速鐵路運行控制系統工程技術研究中心,北京 100070)
ERTMS/ETCS列車控制系統中加密技術主要防護EN50159中列出的7種安全通信威脅中的損壞和偽裝威脅,保證鐵路運輸管理系統中的安全信號設備能與一個已授權的安全信號設備建立通信,并確保安全信號設備之間交互的所有信息的真實性和完整性。本文將對ERTMS/ETCS中相關協議中密鑰管理體系及算法進行歸納總結,以便研發人員系統掌握ERTMS/ETCS安全通信協議中密鑰相關內容。
ERTMS/ETCS關于密鑰管理體系的具體規定在Subset-038、Subset-114及Subset-137中詳細說明。本章節主要闡述ERTMS/ETCS密鑰管理的相關設備關系、密鑰管理體系內所有密鑰分級及各個層級的密鑰的作用及產生方法。
ERTMS/ETCS密鑰管理涉及的設備包括密鑰管理中心(即KMC)和所有使用密鑰管理中心管理密鑰的安全信號設備(即KMAC實體);每個安全信號設備僅能由一個KMC為其管理密鑰。KMC只管理車載和軌旁兩類安全信號設備的密鑰。
ERTMS/ETCS密鑰管理包括離線和在線兩種方式。在線密鑰管理在Subset-137接口規范中描述,值得注意的是Subset-137規定KMS設備間應采用基于公鑰基礎設施(PKI)或預共享密鑰(PSK)實現身份驗證的TLS傳輸協議保證密鑰的機密性、真實性與完整性。離線密鑰管理在Subset-038 和Subset-114中描述,兩個規范分別描述KMC-KMC接口及KMC-安全信號設備間接口。ERTMS/ETCS密鑰管理體系中涉及的設備及使用標準,如圖1所示。

圖1 ERTMS/ETCS密鑰管理體系示意Fig.1 Schematic diagram of ERTMS/ETCS key management system
Subset-038中定義的密鑰可劃分3個等級,如表1所示。

表 1 密鑰等級表Tab.1 Table for key levels
其中3級傳輸密鑰分為K-KMC和KTRANS兩 類。K-KMC密鑰 由K-KMC1和K-KMC2組成,K-KMC1負責保證KMC之間交互消息的真實性和完整性(使用Subset-037提供的CBC-MAC碼),K-KMC2負責加密(ECB模式的3DES算法)KMC之間交互的KMAC。KTRANS由KTRANS1和KTRANS2組成,KTRANS1負責KMC與安全信號設備之間交互消息的真實性和完整性(使用CBC-MAC碼),KTRANS2負責加密(ECB模式的3DES算法)KMC與安全信號設備之間交互的KMAC。
2級驗證密鑰應由KMC負責將其分配且安裝在安全信號設備中,在MASL安全連接建立過程中,驗證對等安全信號設備。
1級會話密鑰在對等實體驗證過程中由驗證密鑰生成,在連接建立和數據傳輸期間用于保護雙向通信的數據保護(使用CBC-MAC碼)。會話密鑰專屬于某一個特定的安全連接并且只能由具有同一個KMAC密鑰的安全信號設備雙方共享。
3個等級的密鑰是ERTMS/ETCS體系規范對密鑰描述的基礎。各種類型密鑰使用場景總結如圖2所示。
如上章所述,KMC-KMC、KMC-安全信號設備及安全信號設備-安全信號設備使用CBC-MAC碼保證數據正確且未經篡改,本節將詳細說明CBC-MAC算法。

圖2 密鑰使用場景Fig.2 Usage scenario of keys
2.1.1 CBC-MAC介紹
CBC-MAC算法是密碼學中最為廣泛使用的消息認證算法之一,同時它也是一個ANSI標準(ANSI X9.17)。字面上可分為CBC和MAC兩部分, Message Authentication Code(MAC) 為消息認證碼,通信實體雙方使用的一種驗證機制用于保證消息數據的真實性和完整性;Cipher Block Chaining(CBC)為密碼分組鏈接模式,在CBC模式中,每個明文塊(m1、m2…mx)先與前一個密文塊進行異或后,再使用E加密算法進行加密。CBC-MAC實際上就是對消息使用CBC模式進行加密,取密文的最后一塊作為認證碼,CBC-MAC基本原理如圖3所示。

圖3 CBC-MAC算法原理Fig.3 CBC-MAC algorism principle
2.1.2 DES算法
數據加密標準DES是應用最廣泛的數據加密算法,也是密碼史上第一個公開的加密算法。DES算法明文處理的經過了3個階段:首先64 bit的明文經過初始置換進行比特重排;然后經過16次的與密鑰相關的乘積變換;最后一次循環的結果64 bit經過逆初始置換IP-1產生64 bit的密文,如圖4所示。

圖4 DES算法處理過程Fig.4 Processing procedure of DES algorism
乘積變換是DES的核心,一共進行16次相同函數的作用,每輪作用都有置換和代換。圖5給出了一輪變換的內部結構。64位中間數據的左右兩部分作為獨立的32位數據,分別記為L和R。每輪變換的整個過程可以寫為下面公式:

F(Ri-1,Ki)函數首先將R(32 bit)用一個表定義的置換擴展為48 bit。這48 bit與Ki異或,再用一個代換函數作用產生32 bit的輸出,最后使用置換P進行作用后輸出,如圖6所示。
密鑰經過初始置換(置換選擇1)后,經過循環左移和置換(置換選擇2)分別得到子密鑰Ki用作每一輪的迭代。每輪的置換函數都一樣,但是由于密鑰的循環移位使得子密鑰互不相同。

圖5 乘積變換展開結構Fig.5 Deployable structure of product transformation

圖6 乘積變換內部算法Fig.6 Internal algorism of product transformation
3DES是DES加密算法的一種模式,它相當于是對每個數據塊應用3次DES加密算法。由于計算機運算能力的增強,原版DES密碼的密鑰長度變得容易被暴力破解;3DES即是設計用來提供一種相對簡單的方法,即通過增加DES的密鑰長度來避免類似的攻擊,而不是設計一種全新的塊密碼算法,3DES加密過程為:C= DES (DES-1(DES (X)))。
2.1.3 CBC-MAC算法
Subset-037規定了CBC-MAC算法。計算MAC使用的密鑰(設為k)為3段長度為64 bit的DES密碼,ERTMS/ETCS中密鑰k可為K-KMC1、KTRANS1或KSMAC。使用密鑰k計算任意數據串X的MAC功能函數CBC-MAC(k,X)應當采取如下定義步驟:
文件內容X=(X1,X2…Xq),每個分組64 bit;設E(Kn,Y)表示采用單DES算法加密,使用密鑰Kn(n∈{1,2,3})將數據塊Y加密成的密碼塊的過程。E-1(Kn,Y)是使用DES算法解密,⊕是異或操作。那么校驗碼Hq計算過程如下,最后的結果Hq即為文件X的校驗碼(MAC)。

Subset-037規定MASL層在安全連接建立及通信過程中,應使用KSMAC進行CBC-MAC算法獨立計算接收數據包的MAC數值,并與接收SaPDU中MAC字段進行一致性比較,從而實現MAC校驗功能。
注:消息m的MAC應當采取下述過程計算。
1)設置消息m的方向標記(‘0’代表發起者,‘1’代表響應者)。
2)在消息m前添加目標地址(DA):“DA|m”。
3)以字節的方式計算字符串“DA|m”的長度l(2 Byte)并將它添加在MAC計算字符串的前面,也就是:l|DA|m。
4)如果消息(l|DA|m)的長度不是64的倍數,那么按下面的規定填充并添加數據p,變成(l|DA|m|p)。
5)通過CBC-MAC功能和密鑰Ks計算字符串“l|DA|m|p”的MAC;
MAC(m)=CBC-MAC(Ks,l|DA|m|p),|表示串聯。
在DT SaPDU的情況下,消息m=’000’|M TI|DF|SaUD由指示一個DT SaPDU的消息類型指示符(MTI),方向標記(DF)和安全用戶數據SaUD組成。
在AU2 SaPDU的情況下,消息m=ETY|MTI|DF|SA|SaF|auth2由ETCS ID類型,指示AU2 SaPDU的消息類型標記(MTI),方向標記(DF),源地址(SA),安全特征(SaF)和相應的認證信息auth2=”Ra|Rb|B”組成。
在AU3 SaPDU的情況下,消息m=’000’|M TI|DF|auth3由指示AU3 SaPDU的消息類型標志符,方向標記(DF)和相應的認證消息auth3=Rb|Ra組成。
在AR SaPDU的情況下,消息m=’000’|M TI|DF由指示AR SaPDU的消息類型標記(MTI)和方向標記(DF)組成。
會話密鑰的生成方法如下。
在對等實體認證中,一個對話密鑰是由兩個通信實體使用它們共同的認證密鑰KMAC=(k1,k2,k3)產生的。一個192位的KSMAC密鑰將由密鑰生成程序生成。相應的DES對話密鑰的出處按照A與B之間的流向來規定。
隨機數Rx(x ∈{A,B})被分為左(RxL)和右(RxR)兩個32位的塊:
RA=RAL|RAR,RB=RBL|RBR,|表示串聯操作。
3個64位的密鑰ks1,ks2和ks3通過下面公式計算得出:


|表示串聯操作。
上述總結了ERTMS/ETCS安全通信協議中偽裝威脅防護相關內容,從事ERTMS/ETCS的KMC、車載設備、軌旁設備及安全通信協議開發可根據具體應用需要參考其相關算法及過程。