◆張玉濤 朱玉娜
加解密技術(shù)
基于網(wǎng)絡(luò)報文流量的協(xié)議密文分析方法
◆張玉濤1朱玉娜2
(1.解放軍91286部隊 山東 266003;2.解放軍91033部隊 山東 266035)
應(yīng)用層各種載荷特征對密碼協(xié)議安全性進行分析至關(guān)重要?,F(xiàn)有方法僅考慮報文載荷中的明文信息,無法有效利用密文數(shù)據(jù)信息特征。本文基于密文長度特征和報文載荷內(nèi)容相關(guān)特征對協(xié)議密文所使用的加密體制進行分析識別,為密文數(shù)據(jù)信息的有效利用提供了新的解決思路。
密碼協(xié)議;網(wǎng)絡(luò)報文流量;協(xié)議分析;密文分析
隨著密碼技術(shù)的廣泛應(yīng)用,密碼協(xié)議被大量應(yīng)用在互聯(lián)網(wǎng)各種核心、關(guān)鍵應(yīng)用中,與密碼協(xié)議相關(guān)的各種數(shù)據(jù)在網(wǎng)絡(luò)流量中比重日益增加,對密碼協(xié)議的流量分析已成為當前網(wǎng)絡(luò)安全技術(shù)中的研究關(guān)鍵技術(shù)之一。密碼協(xié)議運行過程中,頻繁使用數(shù)據(jù)加密、數(shù)字簽名、公鑰證書、校驗和驗證等各種密碼技術(shù)對關(guān)鍵信息進行加密和保護,可用明文信息較少,僅依靠有限的明文信息難以滿足安全應(yīng)用的需求,因此必須充分發(fā)掘和利用協(xié)議報文中包含的密文數(shù)據(jù)特征。
目前,網(wǎng)絡(luò)協(xié)議分析技術(shù)主要包括兩種思路:基于網(wǎng)絡(luò)報文流量信息的分析方法和基于目標主機程序執(zhí)行軌跡的分析方法?;诰W(wǎng)絡(luò)報文流量信息的分析方法主要通過捕獲網(wǎng)絡(luò)通信流量數(shù)據(jù),基于流量端口、載荷中的明文數(shù)據(jù)、數(shù)據(jù)包的統(tǒng)計特征等實施分析。如圖1所示,基于著名的網(wǎng)絡(luò)協(xié)議分析工具Wireshark對SSL協(xié)議encrypted handshake message消息進行解析,Wireshark僅能夠識別出該消息內(nèi)容為密文,但對加密消息任何其余特征無法進行進一步分析和利用。借助特定二進制分析平臺,基于目標主機上協(xié)議相關(guān)的應(yīng)用程序運行狀態(tài)特征是網(wǎng)絡(luò)協(xié)議分析的另一種思路。該類方法[1-2]雖然可以處理加密報文,但是需要在目標主機上獲取執(zhí)行協(xié)議的應(yīng)用程序信息,并部署特定監(jiān)測工具,進而才能實現(xiàn)對特定程序運行過程信息的獲取。因此,該類方法技術(shù)實現(xiàn)復(fù)雜,應(yīng)用局限性較大,無法真正滿足網(wǎng)絡(luò)環(huán)境中對數(shù)據(jù)報文監(jiān)測需求。
圖1(a)wireshark采集SSL協(xié)議encrypted handshake message報文
圖1(b) wireshark解析的協(xié)議格式
針對上述問題,基于前期對協(xié)議密文域識別的研究[3-4],本文對采用不同加密體制加密的密文進行分析,依靠網(wǎng)絡(luò)數(shù)據(jù)流量信息進一步識別協(xié)議密文特征。
為了敘述方便,本部分對文中涉及的相關(guān)概念進行定義并說明。
(1)密碼協(xié)議協(xié)商階段與傳輸階段
密碼協(xié)議主要目標為實現(xiàn)通信主體的身份認證、為后續(xù)的通信過程分配保密的會話密鑰本文將協(xié)議實現(xiàn)身份認證、密鑰分配的過程稱為協(xié)議協(xié)商階段,后續(xù)通信過程稱為協(xié)議協(xié)商階段。本文主要關(guān)注密碼協(xié)議協(xié)商階段。
從表2內(nèi)風(fēng)路溫差異常情況來看,電機內(nèi)風(fēng)路的熱量沒有通過冷卻器帶走。分析存在有兩種可能:一是翅片表面油污等垃圾集結(jié)嚴重,影響熱交換;二是換熱面積不夠,造成熱量帶不出,僅帶出5 K左右的熱量。
(2)本協(xié)議與二進制協(xié)議
協(xié)議根據(jù)其數(shù)據(jù)的傳輸形式可分為文本協(xié)議和二進制協(xié)議。文本協(xié)議傳輸?shù)臄?shù)據(jù)通常是可以打印的ASCⅡ字符;二進制協(xié)議傳輸?shù)臄?shù)據(jù)是原始的字節(jié)流,而不是可讀文本。
(3)已知規(guī)范協(xié)議與未知規(guī)范協(xié)議
本文將語法、語義、交互步驟已知的協(xié)議稱為已知規(guī)范協(xié)議。目前網(wǎng)絡(luò)中存在很多私有協(xié)議,協(xié)議細節(jié)未公開,語法、語義、交互步驟缺少公開的描述文檔,本文將這類協(xié)議稱為未知規(guī)范協(xié)議。
(4)加密體制分類
按照加密密鑰和解密密鑰的相關(guān)性特點,加密體制通??煞譃閷ΨQ加密體制和非對稱加密體制。按照加密后的信息能否被還原,加密體制可分為可逆加密體制和不可逆加密體制。
為便于描述,本文將哈希也作為一類加密體制,哈希函數(shù)得到的散列值也稱為密文,將加密體制分為對稱加密體制、非對稱加密體制、哈希體制三類,其中對稱加密體制又分為序列密碼加密體制和分組密碼加密體制。這三類體制都可以應(yīng)用于數(shù)據(jù)加密、身份認證和數(shù)據(jù)安全傳輸。
對大量不同類型密碼算法加密的密文進行統(tǒng)計分析,結(jié)果表明密文長度特征和報文載荷內(nèi)容相關(guān)特征是區(qū)分不同加密體制的重要要素。
(1)由于經(jīng)哈希函數(shù)處理后的密文散列值長度為確定固定值,基于該特征可以判定密文是否為哈希值,具體存在兩種情況:
①實現(xiàn)協(xié)議的網(wǎng)絡(luò)應(yīng)用軟件大部分都明確指定協(xié)議所采用的密碼算法,在該種情況下,協(xié)議中通過哈希得到的密文報文長度應(yīng)當始終為固定值。例如,MD5為128bit,SHA為160bit,SHA2/SHA256為256bit。在捕獲到某協(xié)議大量同一位置消息的密文報文后,由于協(xié)議交互規(guī)范是確定的,因此同一協(xié)議相同位置消息密文始終遵循協(xié)議規(guī)范并采用同一類型加密體制。因此,如果密文長度始終為確定值(例如,始終為128bit),則該加密體制類型可判定為哈希體制。
②很多典型密碼協(xié)議在執(zhí)行過程中需協(xié)商所使用的密碼算法,例如SSL協(xié)議、SSH協(xié)議,該種情況下,由于協(xié)議規(guī)范是確定的,因此協(xié)議消息密文采用何種加密體制加密是確定的。同一協(xié)議相同位置消息密文一定采用同一類型加密體制。具體的一次協(xié)議會話則通過協(xié)商確定采用的具體密碼算法類型(例如MD5、SHA)。目前常用的哈希函數(shù)對應(yīng)的散列值長度取值集合為{128bit、160bit、256bit}。如果協(xié)議中采用某一類加密體制加密后密文長度取值始終屬于{128bit、160bit、256bit}集合,則該密文采用的加密體制在很大概率上可判定為哈希體制。
(2)對稱加密體制包含分組密碼和序列密碼兩種方式。協(xié)議分組密碼通常采用CBC加密模式,該加密模式不容易主動攻擊,安全性好,適合傳輸長度長的報文,是SSL、IPSEC等重要協(xié)議的標準模式。在CBC加密模式下,密文長度一定是塊(block)大小的倍數(shù)。當前,分組密碼塊大小大都為64bit(AES例外,為128bit),因此分組密碼密文長度應(yīng)當為64bit的倍數(shù)。分組密碼ECB模式同樣為64bit的倍數(shù),CFB模式和OFB模式下分組密碼密文則為8bit的倍數(shù),可能不為64bit整除。而序列密碼則是以一個元素(一個字節(jié)或一個比特)作為基本的處理單元,以字節(jié)為處理單元的序列密碼密文長度(如RC4)為8bit的倍數(shù),以比特為處理單元的序列密碼密文則可能不為8bit整除。非對稱加密密文和Hash密文也為8bit的倍數(shù)。因此如果密文不為8bit的倍數(shù),則可認定為序列密碼方式,密文為對稱加密體制類型密文。
(3)在協(xié)議協(xié)商階段,由于協(xié)議具有特定的規(guī)范,協(xié)議相同位置消息報文長度分布在一定取值范圍內(nèi)。對稱加密密文長度和明文相關(guān),受協(xié)議規(guī)范限制密文長度不可能太長。而對公鑰加密而言,即使對較短數(shù)據(jù)進行加密,得到的密文長度相對較長。如常用的RSA公鑰加密和RSA數(shù)字簽名機制,為保證信息傳輸?shù)陌踩?,密鑰長度一般不小于1024bit。SET協(xié)議中要求CA采用2048bit長的RSA密鑰,其他實體采用1024bit長的密鑰。google于2013年8月1日起開始采用2048bitRSA密鑰加密和驗證服務(wù)。而RSA密文長度與密鑰長度相同,因此即使對短數(shù)據(jù)進行加密,密文長度也較長。在協(xié)議數(shù)據(jù)傳輸階段,當傳輸數(shù)據(jù)小于等于最大傳輸單元MTU時,數(shù)據(jù)報文長度為傳輸數(shù)據(jù)長度,長度變化較大;當傳輸數(shù)據(jù)大于MTU時,在IP層根據(jù)MTU對數(shù)據(jù)進行分片,經(jīng)統(tǒng)計,協(xié)議傳輸階段報文大部分為固定值,小部分長度變化較大。由此依據(jù)長度變化范圍可以判斷該數(shù)據(jù)報文是處于協(xié)議協(xié)商階段或傳輸階段,隨后,在對協(xié)議協(xié)商階段密文進行分析時,如果密文長度較長(大于等于1024bit),則密文很大概率上采用了非對稱加密體制;而在密文長度不長時,則無法僅依靠長度特征區(qū)分對稱加密體制和非對稱加密體制。
協(xié)議在協(xié)商自己所采用的密碼套件時,一般采用明文形式,如SSL協(xié)議、SSH協(xié)議等。因此,可以通過檢測報文內(nèi)容確定密文所采用的加密體制類型。
(1)對已知規(guī)范協(xié)議而言,通過協(xié)議規(guī)范及報文中的密碼套件信息可以確定密文所使用的加密體制。例如,
其中“00 05”為SSL協(xié)議Server Hello報文的密碼套件信息,由SSL規(guī)范可知協(xié)議采用的密碼套件信息為TLS_RSA_WITH_RC4_128_SHA(0x0005),即協(xié)議采用的密碼算法為RSA密碼算法、RC4密碼算法、SHA算法。由上分析可知,RSA密文長度通常為1024bit或者2048bit;RC4密文屬于序列密碼密文,密文長度為8bit的倍數(shù),不一定為64bit倍數(shù);SHA散列值長度為160bit。對密文進行解析時,結(jié)合密文長度即可確定密文采用的加密體制類型。例如,對圖1的密文消息而言,密文長度為36byte=288bit,不是RSA密文和SHA散列值,因此可判定為對稱加密密文。更進一步,SSL要求使用分組密碼加密時采用CBC模式,CBC模式下密文為64bit的倍數(shù),而288bit不為64bit整除,因此該密文可進一步識別為序列密碼算法——RC4對稱加密算法,為對稱加密體制密文。
(2)對未知規(guī)范協(xié)議而言,文本協(xié)議為可打印字符,可以得到協(xié)議所采用的密碼算法,例如:假定SSH規(guī)范未知,由于SSH屬于文本協(xié)議,從SSH的Client:key exchange init消息中(如圖2所示)可以看出,客戶端采用了DH算法、對稱加密算法(AES/3DES)、哈希算法(MD5/SHA1)。結(jié)合密文長度特征可進一步確定密文采用的加密體制類型。當未知規(guī)范協(xié)議為二進制協(xié)議時,則無法挖掘其中的密碼套件信息。
圖2 wireshark采集的SSH協(xié)議:Client:key exchange init報文
由上可知,對采集的同一協(xié)議大量報文中的密文長度進行分析,可以識別哈希和部分密文的加密體制類型。當報文載荷包含密碼套件信息時,也可以進一步確定密文采用的加密體制。但是如果從協(xié)議報文載荷無法檢測任何密碼算法相關(guān)信息,對單個密文則無法識別加密體制類型。
該方法流程如圖3所示,描述如下。
圖3 協(xié)議密文識別
Step 1:如果協(xié)議報文的明文載荷提供了密碼算法信息,則結(jié)合該算法密文長度進一步確定該密文對應(yīng)的加密體制類型。否則,結(jié)合密文長度信息進一步進行判定。
Step 2:如果密文長度屬于{128bit、160bit、256bit},確定是否為哈希函數(shù)。由于大部分協(xié)議的實現(xiàn)程序已經(jīng)明確協(xié)議所使用的密碼算法,因此哈希值長度確定。如果密文始終為128bit(或者始終為160bit、始終為256bit),則密文很大概率上采用了哈希體制;如果協(xié)議在協(xié)商過程中確定密碼算法,同樣根據(jù)一段時間內(nèi)協(xié)議報文長度確定哈希體制,如果報文長度始終屬于{128bit、160bit、256bit},則報文在很大概率上采用了哈希體制。
Step 3:如果密文長度不屬于{128bit、160bit、256bit},進一步進行判定。本文主要關(guān)注協(xié)議協(xié)商階段,根據(jù)數(shù)據(jù)包長度變化可以確定協(xié)議協(xié)商階段和傳輸階段。如果該協(xié)議密文載荷信息屬于協(xié)商階段報文,且長度較長時(大于1024bit),則能夠以更高的識別率確定該密文采用了非對稱加密體制。
Step 4:如果密文長度不為8bit的倍數(shù),則密文很大概率采用序列密碼,判定密文為對稱加密密文。
Step 5:其他情況,密文加密體制無法判斷。
本文對大量不同類型密碼算法加密的密文進行統(tǒng)計分析,基于密文長度信息和協(xié)議載荷內(nèi)容相關(guān)信息識別哈希函數(shù)和部分加密算法,為密文數(shù)據(jù)信息的有效利用提供了新的解決思路。
[1]WANG Zhi,JIANG Xu-xian,CUI Wei-dong,et al. ReFormat:automatic reverse engineering of encrypted messages[C]// Proc of European Symposium on Research in Computer Security.2009:200-215.
[2]CABALLERO J,Song D.Automatic protocol reverse-engineering: message format extraction and field semantics inference[C]. Computer Network,vol.57(2),page(s):451-474,F(xiàn)ebrurary 2013.
[3]朱玉娜,韓繼紅,袁霖,等. SPFPA:一種面向未知安全協(xié)議的格式解析方法[J]. 計算機研究與發(fā)展,2015,52(10):2200-2211.
[4]朱玉娜,韓繼紅,袁霖,等.基于熵估計的安全協(xié)議密文域識別方法[J].電子與信息學(xué)報,2016,38(8):1865-1871.