張 鑫,彭亞雄
(貴州大學(xué)電子信息學(xué)院,貴州貴陽(yáng)550025)
TLS中加密算法的安全性分析*
張 鑫,彭亞雄
(貴州大學(xué)電子信息學(xué)院,貴州貴陽(yáng)550025)
闡述了TLS協(xié)議的握手過(guò)程中服務(wù)器端與客戶端之間的交互,對(duì)其中關(guān)鍵的RC4加密技術(shù)即密鑰調(diào)度算法(KSA)、偽隨機(jī)書生成算法(PRGA)等進(jìn)行分析,著重就目前的加密過(guò)程中偽隨機(jī)書生成算法(PRGA)存在的安全性問(wèn)題進(jìn)行分析。在猜測(cè)賦值分析方法基礎(chǔ)上分析了PRGA初始狀態(tài)已知值數(shù)量及分布規(guī)律與RC4破解的復(fù)雜度的相關(guān)性。特定情況下,該方法能有效的破譯RC4。
安全傳輸層 協(xié)議加密算法 偽隨機(jī)書生成算法 初始狀態(tài)復(fù)雜度
TLS(Transport Layer Security,傳輸層安全)是繼承Netscape公司于1994年研發(fā)的SSL(Secure Sockets Layer,安全套接層),為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議。TLS采用證書認(rèn)證、協(xié)商加密算法、數(shù)據(jù)加密、加密密鑰交換等技術(shù)為高層協(xié)議提供數(shù)據(jù)封裝、壓縮、加密來(lái)保障數(shù)據(jù)在Internet上安全傳輸。協(xié)議主要提供用戶和服務(wù)器認(rèn)證,確保數(shù)據(jù)正確發(fā)送到客戶端和服務(wù)器端;數(shù)據(jù)加密防止數(shù)據(jù)被竊取;數(shù)據(jù)完整性維護(hù),確保數(shù)據(jù)在傳輸過(guò)程中不被篡改。
目前,TLS協(xié)議已于現(xiàn)在網(wǎng)絡(luò)商務(wù)中得到廣泛應(yīng)用,但其中的RC4加密算法安全性還有待進(jìn)一步提高,筆者將對(duì)此相關(guān)問(wèn)題進(jìn)行分析。
該協(xié)議分為兩層:記錄協(xié)議(Record Protocol)和之上的握手協(xié)議(Handshake Protocol)、更改密碼規(guī)格協(xié)議(Change Cipher Spec Protocol)和警告協(xié)議(Alert Protocol)[1],如圖1所示。
圖1 TLS在TCP/IP議棧中的位置Fig.1 Location of the TLS in TCP/IP stacks
協(xié)議握手有3個(gè)目的:
1)客戶端與服務(wù)器需要就一組用于保護(hù)數(shù)據(jù)的算法達(dá)成一致。
2)它們需要確立一組由那些算法所使用的加密密鑰[2]。
3)握手還可以選擇對(duì)客戶端進(jìn)行認(rèn)證。
協(xié)議握手過(guò)程:
a)客戶端發(fā)送ClientHello消息到服務(wù)器,它將包含所有加密算法列表和一個(gè)密鑰產(chǎn)生過(guò)程需要的隨機(jī)數(shù)。
b)服務(wù)器根據(jù)以上消息選擇一個(gè)加密算法,向客戶端發(fā)送服務(wù)器證書及密鑰產(chǎn)生所需的隨機(jī)數(shù)。
c)客戶端對(duì)服務(wù)器證書驗(yàn)證,獲取公鑰,然后隨機(jī)生成pre_master_secret隨機(jī)字符串,使用公鑰加密發(fā)給服務(wù)器。
d)客戶端與服務(wù)器端根據(jù)pre_master_secret和隨機(jī)數(shù)值產(chǎn)生master_secret。
e)客戶端與服務(wù)器端相互校驗(yàn)MAC值。
Change Cipher Spec Protocol通知對(duì)端進(jìn)入對(duì)稱加密模式,而Alter Protocol則用來(lái)向通訊的另一方發(fā)出警告消息。
記錄協(xié)議將高層子協(xié)議收到的數(shù)據(jù)分段、壓縮、認(rèn)證和加密再傳到下層協(xié)議。
2.1 RC4算法概述
網(wǎng)絡(luò)上大約50%的TLS流量都是用RC4進(jìn)行加密的,然而RC4的加密不安全性早在2001年的《“A practical attack on RC4”》這篇論文中提及。經(jīng)過(guò)不斷改進(jìn),目前仍有漏洞被發(fā)現(xiàn)。
2.2 RC4算法具體描述
RC4算法由密鑰調(diào)度算法(KSA,Key Scheduling Algorithm)和偽隨機(jī)生成算法(PRGA,Pseudo Random Number Generation Algorithm)[3]兩部分組成,KSA算法用來(lái)初始化數(shù)組S序列,keylength定義了[1,256]的key的字節(jié)長(zhǎng)度。首先,數(shù)組S被初始化,隨后由PRGA算法進(jìn)行256為周期的循環(huán)列舉,每次處理過(guò)程都聯(lián)合key字節(jié)進(jìn)行。KSA算法偽代碼如下:
在PRGA算法過(guò)程中,每次循環(huán)i加1,并將i指向的S值加到j(luò)上,然后交換S[i]和S[j],最后輸出S[i]與S[j]之和(取256的模)對(duì)應(yīng)的S值。至多經(jīng)過(guò)256次,S每個(gè)位置的值都被交換一次。PRGA算法偽代碼如下:
完整RC4加密流程如圖2所示,其中IV(Initialization Vector)初始化向量,CRC(Cyclic Redundancy Check)循環(huán)冗余檢驗(yàn),ICV(Integrity Check Value)完整性校驗(yàn)值,PRNG代表Pseudo Random Number Generator。
圖2 RC4加密流程Fig.2 Encryption process of RC4
2.3 PRGA過(guò)程的安全分析
根據(jù)Knudsen等人的思想[4],針對(duì)PRGA過(guò)程的攻擊方法建立在能獲得足夠的PRGA輸出值的基礎(chǔ)上,來(lái)計(jì)算PRGA的初始狀態(tài),如此將不需要密鑰就可以繼續(xù)產(chǎn)生輸出,RC4就可以成功破解。攻擊者可以通過(guò)對(duì)未知狀態(tài)的賦值,然后將輸出與已知輸出值及其他信息相校驗(yàn)判斷,若矛盾,則說(shuō)明賦值錯(cuò)誤,如此循環(huán)可獲得正確狀態(tài)值。
通過(guò)以上方案,可以得到計(jì)算方法。設(shè)4個(gè)可能的未知變量:jt,S[it],S[jt]和S-1[Zt],S-1[Zt]表示輸出Zt對(duì)應(yīng)的內(nèi)部狀態(tài)S的位置,則有
對(duì)于任何可能未知的變量,只要知道其中3個(gè)就能求出第4個(gè):
使用at表示t時(shí)的內(nèi)部狀態(tài)中被賦過(guò)的值的總量,a表示初始內(nèi)部狀態(tài)中已被賦值的總量。算法過(guò)程如下:
Step 1:判斷St-1[it]是否己賦值:
1)若已賦值,跳至step 2。
2)否則,將2n-at個(gè)未出現(xiàn)的值逐一賦給St-1[it],更新at,然后跳至step 2。
Step 2:檢查Zt是否等于at中某個(gè)值,即是否在內(nèi)部狀態(tài)已知值之中:
1)若等于,可由計(jì)算得出St[jt]。并且不出現(xiàn)矛盾,將t+1,跳至step 1。
2)若不等,跳至step 3。
Step 3:檢查St-1[jt]是否己賦值:
若未賦值,逐一對(duì)St-1[jt]賦值,更新at。然后檢查是否有矛盾出現(xiàn)。若無(wú)矛盾,將t-1,跳至step 1。
每步的復(fù)雜度公式如下:
根據(jù)以上公式可計(jì)算出各種情形的初始內(nèi)部復(fù)雜度,并且是在隨機(jī)狀態(tài)(a個(gè)已知的值隨機(jī)分布)下的平均復(fù)雜度,典型的n=8的情況見(jiàn)表4。由表1,當(dāng)n<5時(shí),這種方法十分有效。當(dāng)n≥5時(shí),就會(huì)十分困難,這就需要已知狀態(tài)值呈連續(xù)或某種相關(guān),才能降低復(fù)雜度[5]。(表中左側(cè)數(shù)值代表已知狀態(tài)數(shù)k,右側(cè)指數(shù)則代表相應(yīng)的復(fù)雜度c。)
表1 當(dāng)n=4是隨機(jī)狀態(tài)的復(fù)雜度Table 1 Complexity of the random states whennequals 4
表2 當(dāng)n=5是隨機(jī)狀態(tài)的復(fù)雜度Table 2 Complexity of the random states whennequals 5
表3 當(dāng)n=6是隨機(jī)狀態(tài)的復(fù)雜度Table 3 Complexity of the random states whennequals 6
表4 當(dāng)n=8時(shí)隨機(jī)狀態(tài)的復(fù)雜度Table 4 Complexity of the random states whennequals 8
當(dāng)n=4的情況,所有內(nèi)部狀態(tài)只有16個(gè)值,則可能的內(nèi)部狀態(tài)就有16!即244個(gè),在幾分鐘內(nèi)就能算出其內(nèi)部初始狀態(tài),并且只需16或17個(gè)輸出字,此時(shí)該方法非常有效。但是,根據(jù)表2、表3、表4,當(dāng)n≥5時(shí),可知復(fù)雜度明顯高了許多,就當(dāng)前計(jì)算機(jī)的計(jì)算能力想攻破RC4算法顯得很吃力。設(shè)k表示內(nèi)部狀態(tài)中連續(xù)數(shù)值的數(shù)目,此時(shí)理論的復(fù)雜度與實(shí)驗(yàn)得復(fù)雜度結(jié)果如表5。
表5 理論的復(fù)雜度與實(shí)驗(yàn)復(fù)雜度比較Table 5 Comparison ofcomplexity between calculated and experiments
PRGA初始狀態(tài)取值狀態(tài)對(duì)RC4算法的安全性有決定性意義,然而對(duì)PRGA過(guò)程的破解又與已知值數(shù)量相關(guān)。本文猜測(cè)賦值分析方法的基礎(chǔ)上,分析了初始值分布隨機(jī)狀態(tài)下相關(guān)的復(fù)雜度問(wèn)題,對(duì)于一般情況復(fù)雜度已經(jīng)相當(dāng)復(fù)雜。同時(shí)給出了在此方法下當(dāng)初始值連續(xù)時(shí)的復(fù)雜度,其值約等于,更精確有效的算法還有待進(jìn)一步分析研究和改進(jìn)。
[1] 鄧曉軍,陳懷義.基于SSL/TLS的安全應(yīng)用中獨(dú)立端口和磋商升級(jí)的研究[J].計(jì)算機(jī)工程與科學(xué),2006 (04):23-25.
DENG Xiao-jun,CHENG Huai-yi.Research of the Secure Application in Independent Ports and Consult Upgrade Based on SSL/TLS[J].Computer Engnieering& App-lication,2006(4):23-25.
[2] 趙偉,曹云飛.RC4的密鑰碰撞[J].通信技術(shù),2013, 46(12):74-76.
ZHAO Wei,CAO Fei-yun.Key Collisions of RC4[J]. Communications Technology,2013,46(12):74-76.
[3] MANTIN I,SHAMIR A.A Practical Attack on Broadcast RC4[C]//Proc.of the 8th International Workshop on Fast Software Encryption.[s.l.]:Springer-Verlag, 2002:157-159.
[4] KNUDSEN L R,MEIER W,PRENEEL B,et al.Analysis Methods for(Alleged)RC4[C]//Asiac;rypt'98. Berlin:Springer-Velag,1998:327-341.
[5] ITSIK Mantin,ADI Shamir.A Practical Attack on Broadcast RC4[C]//Proc.of the 8th International Workshop on Fast Software Encryption.[s.l.]:Springer-Verlag, 2002:87-104.
ZHANG Xin(1990-),male,graduate student,majoring in signal detection.
彭亞雄(1963—),男,副教授,主要研究方向?yàn)榫W(wǎng)絡(luò)安全。
PENG Ya-xiong(1963-),male,associate professor,majoring in network security.
Analysis on the Security of Encryption Algorithm in TLS
ZHANG Xin1,PENG Ya-xiong
(College of Electron and Information,Guizhou University,Guiyang Guizhou 550025,China)
This article expounds the interaction of between the client and server in the handshake of TLS protocol,then analyzes the key encryption technologies of RC4,including KSA,RPGA,and the current security issues in PRGA process.Based on the value-analysis method,the of between the quantity of the known PRGA initial states,the location and the complexity of RC4 crack is analyzed.In some particular conditions,this method can decode RC4 effectively.
TLS;encryption decryption algorithm;PRGA;initial state;complexity
TP393
A
1002-0802(2014)09-1071-04
10.3969/j.issn.1002-0802.2014.09.019
張 鑫(1990—),男,碩士研究生,主要研究方向?yàn)樾盘?hào)檢測(cè);
2014-05-21;
2014-07-31 Received date:2014-05-21;Revised date:2014-07-31