基于SASL框架下身份認證機制的研究
鄭之華
(福建省湄洲灣職業(yè)技術(shù)學(xué)院自動化工程系,福建 莆田 351254)
摘要:在LDAP V3中身份認證過程是包含在綁定操作過程中的,綁定操作的功能是允許驗證信息在客戶端和服務(wù)端之間交換的,LDAP V3主要支持3種認證方式:匿名認證、基本認證、基于SASL認證。目前SASL定義的安全機制主要有:Anonymous、CRAM-MD5、DIGEST-MD5、External、Kerberos v4與v5等。在這里我們針對CRAM-MD5、DIGEST-MD5、External這三種安全機制進行分析和比較它們的各自優(yōu)缺點。通過分析和比較為實際身份認證系統(tǒng)提供一個參考。
關(guān)鍵詞:SASL; CRAM-MD5; DIGEST-MD5; Extrernal
收稿日期:2014-11-11
作者簡介:鄭之華(1978-),女, 福建仙游人, 講師, 碩士,主要從事通信與信息系統(tǒng)方面的研究。
中圖分類號:TN918.91文獻標志碼:A
0引言
SASL(SimpleAuthenticanon and SecurityLayer)簡單認證和安全層,由RFC2222文件定義,是面向網(wǎng)絡(luò)協(xié)議提供輔助身份認證的一個通用框架,具有靈活一致的特點。它最初是為了對IMAP協(xié)議(Internet Mail Access Protocol 交互式郵件存取協(xié)議)提供強認證支持而設(shè)計的,隨之便發(fā)展為一種實現(xiàn)不同協(xié)議和認證系統(tǒng)間的交互的更為通用的框架[1]。不同的機制在實現(xiàn)過程中,其實現(xiàn)方式有所不同,目前SASL定義的安全機制主要有:Anonymous、CRAM-MD5、DIGEST-MD5、External、Kerberos v4與v5等。圖1說明了它們間的關(guān)系。
圖1 SASL機制
1基于SASL框架下三種安全機制的比較
在這里我們針對CRAM-MD5、DIGEST-MD5、External這三種安全機制進行分析和比較它們的各自優(yōu)缺點。
圖2 CRAM-MD5機制的認證過程
1.1CRAM-MD5機制
CRAM的英文全稱為:Challenge-Response Authentication Mechanism即中文的質(zhì)詢-響應(yīng)鑒別機制,該機制在SASL中的名稱為“CRAM-MD5”,由RFC2195文件定義[2]。
CRAM-MD5機制的認證過程如圖2所示。
首先,服務(wù)器端向客戶端發(fā)出質(zhì)詢報文。質(zhì)詢報文主要包含一個由隨機數(shù)字、時間戳和服務(wù)器主機名組成的字符串,該非編碼字符串在語法上必須符合RFC 822文件在RFC 1939(Post Office Protocol-Version 3 郵局協(xié)議版本3)文件中關(guān)于時間戳對應(yīng)于RFC 822定義的“msg-id”所描述的規(guī)定格式(如:
摘要其次,客戶端收到質(zhì)詢報文后記錄下該數(shù)據(jù),并對質(zhì)詢報文經(jīng)計算生成,然后用一個包含用戶名,一個間隔和“摘要”的報文予以響應(yīng),摘要文本由KEYED-MD5算法計算出來,摘要中含有密鑰且為客戶端和服務(wù)器端雙方共享的密鑰,該共享的密鑰僅為客戶端和服務(wù)器端通訊雙方所知。
摘要最后,服務(wù)器接收到這個客戶機響應(yīng)后,檢驗其中的。如果摘要正確,服務(wù)器應(yīng)該確認該客戶端已通過認證,并作出適當(dāng)?shù)捻憫?yīng)。否則,向客戶機發(fā)送一個鑒別失敗的消息。
KEYED-MD5計算公式為[3]:
H(K XOR opad,H(K XOR ipad,text));
公式參數(shù)說明如下:
1)H是一個將數(shù)據(jù)塊用一個基本的迭代壓縮函數(shù)來加密的散列函數(shù);
2)K為密鑰,密鑰的長度可以是任意長度的,推薦的最小密鑰長度為64個字長(即512位);
3)XOR為異或操作;
4)ipad和opad分別為兩個事先定義的值,“i”、“o”標志內(nèi)部與外部,ipad=字節(jié)0x36重復(fù)64次,opad=字節(jié)0x5c重復(fù)64次;
5)text為質(zhì)詢報文的內(nèi)容。
計算步驟為:
1) 在密鑰K后面添加多個0來創(chuàng)建一個字長為B的字符串。(例如,如果K的字長是20字節(jié),B=64字節(jié),則K后會加入44個字節(jié)的0x00);
2) 將上一步生成的B字長的字符串與ipad做異或運算;
3) 將質(zhì)詢報文text填充至第二步計算出來的字符串中;
4) 將第三步產(chǎn)生的字符串用H散列函數(shù)進行運算;
5) 將第一步生成的B字長字符串與opad做異或運算;
6) 再將第四步運算的結(jié)果填充至第五步運算結(jié)果中;
7) 用H作用于第六步生成的數(shù)據(jù)流,輸出最終結(jié)果。
KEYED-MD5算法預(yù)先計算好共享密鑰的中間值(K XOR opad)、(K XOR ipad),并將這些中間結(jié)果存儲在服務(wù)器上,等到有需要驗證時候用來生成H散列函數(shù)的初始值。
1.2DIGEST-MD5機制
DIGEST-MD5機制英文全稱為:Using Digest Authentication as a SASL Mechanism(使用摘要身份驗證作為SASL機制)由RFC2831文件定義。DIGEST-MD5機制的認證過程共有三步如圖3所示。
圖3 DIGEST-MD5機制的認證過程
首先,服務(wù)器端向客戶端發(fā)送一個經(jīng)過復(fù)雜計算長度不超過2048字節(jié)的質(zhì)詢報文;
其次,客戶端收到服務(wù)器端發(fā)來的質(zhì)詢報文后,回復(fù)一個經(jīng)過復(fù)雜計算長度不超過4096字節(jié)的響應(yīng)報文;
最后,服務(wù)器端對收到的響應(yīng)值進行驗證,驗證通過后向客戶端發(fā)送一個驗證通過的報文,該報文的計算方法與第二步中的response參數(shù)值的計算方法相同。
質(zhì)詢報文計算公式如下[4]:
digest-challenge=1#(realm | nonce | qop-options | stale | maxbuf | charset | algorithm | cipher-opts | auth-param)
響應(yīng)報文計算公式如下:
digest-response=1#(username | realm | nonce | cnonce | nonce-count | qop | digest-uri | response | maxbuf | charset | cipher | authzid | auth-param)
我們重點研究第二步驟和第三步驟的參數(shù)值計算方法,第二步響應(yīng)報文和第三步驗證通過報文的respons參數(shù)值具體計算公式如下:
response-value= HEX( KD ( HEX(H(A1)),
{ nonce-value, ":" nc-value, ":",
cnonce-value, ":", qop-value, ":", HEX(H(A2)) }))
默認的A1的值為:
A1 = { H( { username-value, ":", realm-value, ":", passwd } ),
":", nonce-value, ":", cnonce-value }
當(dāng)客戶端響應(yīng)報文中的authzid值有指定,那么A1的值為:
A1 = { H( { username-value, ":", realm-value, ":", passwd } ),
":", nonce-value, ":", cnonce-value, ":", authzid-value }
默認的A2的值為:
A2= { "AUTHENTICATE:", digest-uri-value }
當(dāng)客戶端響應(yīng)報文中的qop值為“auth-int”或“auth-conf”,那么A2的值為:
A2={"AUTHENTICATE:",digest-uri-value,":00000000000000000000000000000000"}
上述的response參數(shù)值計算公式中運算符號及函數(shù)說明如表1所示。
表1 運算符號及函數(shù)說明
從上述公式我們可以看出客戶端的響應(yīng)報文與服務(wù)器端的驗證通過報文的response參數(shù)值為一個128位的MD5散列值,即32個16進制數(shù)。計算過程如下:
首先response參數(shù)值分別計算A1、A2的參數(shù)值,然后分別對A1、A2的值進行MD5處理后,再將所得到的MD5散列數(shù)變換為32個16進制數(shù),其中A1值中含有用戶名及用戶密碼等信息;
接著將 "nonce-value", ":" ,"nc-value", ":"," cnonce-value", ":", "qop-value", ":"與A2計算后的值串聯(lián)起來形成一串字符串,再將A1計算后的值與之前得到的字符串串聯(lián)起來形成新的字符串,將得到的字符串與":"s字符串串聯(lián)成新的字符串后再進行MD5處理;
最后將得到的16個字節(jié)的MD5散列數(shù)變換為32個16進制數(shù)。
response參數(shù)值在計算過程中含有用戶名及用戶密碼,用來表明用戶為合法的用戶,若第二步驟與第三步驟的response參數(shù)值一樣,則說明用戶身份驗證成功。
1.3External機制
在SASL中和外部驗證機制有關(guān)的機制名稱為“External”,它的認證過程如圖4所示。
圖4 外部機制身份認證過程
1) 客戶端向服務(wù)器端發(fā)出一個含有用戶授權(quán)身份(采用UTF-8編碼)的初始響應(yīng);
2) 服務(wù)器端使用SASL外部的鑒別機制,對客戶端做授權(quán)身份的鑒別;
3) 外部機制驗證完畢,返回鑒別信息給服務(wù)器端;
4)如果服務(wù)器端鑒別出客戶端確實具有該授權(quán)身份,則返回給客戶端一個指示鑒別成功的報文,否則,返回給客戶端一個鑒別失敗的報文。
能夠提供這種外部的鑒別機制的系統(tǒng)有IPSec(Internet Protocol Security網(wǎng)際協(xié)議安全套件)、TLS。在客戶端協(xié)商使用外部驗證機制之前,客戶端發(fā)送空的字符串作為授權(quán)身份,那么授權(quán)身份從存在于外部授權(quán)系統(tǒng)中的授權(quán)證書中獲取。
2比較與總結(jié)
對于CRAM-MD機制我們需要注意的是KEYED-MD5算法預(yù)先計算好共享密鑰的中間值(K XOR opad、K XOR ipad)同樣需要保密,若存放中間值的服務(wù)器本身不夠安全,同樣保護不了共享密鑰,共享密鑰必須隨機選取(或使用強大的基于隨機種子的偽隨機生成方法),為了對付函數(shù)和密鑰所存在的潛在缺陷并降低泄漏密鑰帶來的危害,我們還需要周期性的更新共享密鑰,采用CRAM-MD5機制可以防止回放攻擊,不過它易受到主動攻擊(Active attack)。
對于External機制,其本身不提供任何安全保護,它容易受到客戶機假冒、服務(wù)器假冒攻擊,主動攻擊和竊聽攻擊,我們僅僅在外部驗證機制的安全性能有足夠的強度時使用它[1],另外使用外部驗證機制的時候,對于外部的授權(quán)證書我們還需要一筆不小的額外投入。
DIGEST-MD5機制在CRAM-MD5機制的基礎(chǔ)上發(fā)展而來的,不僅提供了身份驗證,還支持在身份驗證成功后,通過談判建立安全層來執(zhí)行完整性和機密性保護。完整性和機密性保護的密鑰都是基于前面所述的H(A1)產(chǎn)生的。雖然DIGEST-MD5機制相對于第三方認證系統(tǒng)(例如Kerberos或公共密鑰系統(tǒng))來說不是一種強的身份認證機制。但它可被用來取代那些在安全性方面較弱的明文口令機制。與CRAM-MD5相比,DIGEST-MD5提供了對一定數(shù)量的攻擊提供重要的保護如:重放攻擊、在線字典攻擊、脫機字典攻擊、中間人攻擊、選擇明文攻擊、防止假冒服務(wù)器的欺騙等。在政務(wù)內(nèi)網(wǎng)內(nèi),與互聯(lián)網(wǎng)網(wǎng)絡(luò)完全物理隔離,網(wǎng)絡(luò)相對安全下,不增加投資,我們可考慮選擇采用基于SASL框架下的DIGEST-MD5機制來進行身份認證。
參考文獻:
[1]J.Myers. Simple Authentication and Security Layer (SASL)[EB]. RFC2222,1997,10.
[2]J. Klensin,R. Catoe,P. Krumviede. IMAP/POP AUTHorize Extension for Simple Challenge/Response[EB]. RFC2195,1997,9.
[3]H. Krawczyk,M. Bellare,R. Canetti. HMAC: Keyed-Hashing for Message Authentication[EB]. RFC2104,1997,2.
[4]P. Leach,C. Newman. Using Digest Authentication as a SASL Mechanism[EB]. RFC2831,2000,5.
責(zé)任編輯:吳旭云
Research of Identity Authentication Mechanism Based on SASL Framework
ZHENG Zhihua
(College of Automation Engineering, Meizhouwan Vocational and Technical College, Putian 351254, China)
Abstract:Identity authentication process in LDAP V3 is contained in the binding operation process, which allows the verification information to exchange between the client end and the service end. LDAP V3 mainly supports three kinds of authentication methods: anonymous authentication, basic authentication and SASL-based authentication. At present, the security mechanism of SASL mainly includes Anonymous, CRAM-MD5, DIGEST-MD5, External, Kerberos v 4 and v 5. This paper, focusing on CRAM-MD5, DIGEST-MD5 and External, analyzes and compares their advantages and disadvantages, attempting to provide a reference for the actual identity authentication system.
Keywords:SASL; CRAM-MD5; DIGEST-MD5; External