SIP安全框架之認(rèn)證NTLM和Kerberosbyzhengyu.ppt_第1頁
SIP安全框架之認(rèn)證NTLM和Kerberosbyzhengyu.ppt_第2頁
SIP安全框架之認(rèn)證NTLM和Kerberosbyzhengyu.ppt_第3頁
SIP安全框架之認(rèn)證NTLM和Kerberosbyzhengyu.ppt_第4頁
SIP安全框架之認(rèn)證NTLM和Kerberosbyzhengyu.ppt_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、SIP安全框架認(rèn)證,鄭 昀 2005-05 應(yīng)用開發(fā)事業(yè)部 神州泰岳 ,Agenda,SIP安全框架包含六個方面 認(rèn)證(Authentication) 授權(quán)(Authorization) 機(jī)密性(Confidentiality) 完整性(Integrality) 隱私性(Privacy) 不可否認(rèn)(Non-repudiation),SIP安全 認(rèn)證,接近于RFC2617 的認(rèn)證框架 HTTP Authentication Basic and Digest Access Authentication,兩種認(rèn)證情形: Registrar,Redirector: 對客戶端的INVITE包回應(yīng)以401

2、 Unathorized; 客戶端再次INVITE請求將附帶Authentication頭域 Proxy: 對客戶端的INVITE包回應(yīng)以 407 Proxy-Authentication Required; 客戶端再次INVITE請求將附帶Proxy-Authentication頭域,SIP安全 認(rèn)證,MS LCS Server支持兩種認(rèn)證方式: Kerberos NTLM 可以配置LCS中某一個Pool 的“Authentication Scheme”; 然后重啟LCS Service以啟用,SIP安全 認(rèn)證 NTLM,最初的LM: “LAN Manager Challenge/Respo

3、nse ”驗證機(jī)制 簡稱LM,易被破解。兩個最顯著的弱點(diǎn)是: 1:明文密碼在計算響應(yīng)前被轉(zhuǎn)換為了大寫字母; 2:如果明文口令最多7字節(jié),則第二部分LM Hash總是AA D3 B4 35 B5 14 04 EE,發(fā)送了一個8字節(jié)挑戰(zhàn)0001020304050607,客戶端使用源自明文口令的LM Hash,再由此計算出三個DES Key,分別對8字節(jié)挑戰(zhàn)進(jìn)行加密。LM Hash的計算辦法:1:密碼轉(zhuǎn)換為大寫字母;2:密碼被補(bǔ)零或者截斷到14個字節(jié);3:這個字符串被分為兩個7字節(jié)數(shù)值;4:從這兩個數(shù)值分別計算出兩個DES key;5:這兩個Key去加密魔術(shù)字符串“KGS!#$%” ,得到兩個8字節(jié)

4、的字符串;6:兩個字符串合為一個16字節(jié)的“LM Hash”。最終獲得一個24字節(jié)響應(yīng)“CA1200723C41D577AB18C764C6DEF34FA61BFA0671EA5FC8”,發(fā)送給服務(wù)器。這就是所謂響應(yīng)(分成三組,總共24字節(jié))。,如果響應(yīng)與服務(wù)器的計算結(jié)果匹配,服務(wù)器認(rèn)為客戶機(jī)擁有正確的明文口令,客戶端請求連接,SIP安全 認(rèn)證 NTLM,NTLMv2: “Windows NT LAN Manager Challenge/Response Version 2” , 簡稱NTLMv2,增加了使用NTLM Hash加密挑戰(zhàn)信息的步驟。密碼作為了一個private key,只有擁有該

5、密鑰的人才能產(chǎn)生一個特定的散列值。,發(fā)送了一個8字節(jié)挑戰(zhàn)0 x0123456789abcdef,1:客戶端計算出一個由明文口令經(jīng)過MD4算法加密的16字節(jié)結(jié)果NTLM password Hash。2:大寫的用戶名拼上大寫的域名或服務(wù)器名得到一個Unicode字符串,NTLM Hash作為key,經(jīng)過HMAC-MD5算法加密得到NTLMv2 Hash;3:用NTLMv2 Hash 作為key,把8字節(jié)挑戰(zhàn)信息(連接上blob值)經(jīng)過HMAC-MD5加密得到16字節(jié)數(shù)值。4:此16字節(jié)數(shù)值連接上blob值后,作為NTLM Response。發(fā)送給服務(wù)器。,服務(wù)器端從SAM中取出Password H

6、ash,經(jīng)過相同計算,如果響應(yīng)與計算結(jié)果匹配,服務(wù)器認(rèn)為客戶機(jī)擁有正確的明文密碼散列值,客戶端請求連接,SIP安全 認(rèn)證 NTLM,SIP中的NTLMv2認(rèn)證交互演示,SIP/2.0 401 Unauthorized WWW-Authenticate: NTLM realm=SIP Communications Service, targetname= CSeq: 1 REGISTER,REGISTER sip: SIP/2.0 CSeq: 2 REGISTER Authorization: NTLM qop=auth, realm=SIP Communications Service, ta

7、rgetname=, gssapi-data=“ 注意: gssapi-data是空的,SIP/2.0 401 UnauthorizedWWW-Authenticate: NTLM opaque=8CE21B68, gssapi-data=TlRMTVNTUAACAAAAAAAAADgAAADzgpjif4njfAJY.“, targetname=, realm=SIP Communications Service CSeq: 2 REGISTER服務(wù)器發(fā)送一個挑戰(zhàn),REGISTER sip: SIP/2.0 CSeq: 1 REGISTER,REGISTER sip: SIP/2.0 CSe

8、q: 3 REGISTER Authorization: NTLM qop=auth, opaque=“8CE21B68”, realm=SIP Communications Service, targetname=, gssapi-data=“TlRMTVNTUAADAAAAGAAYAG4AAAAYABg .“客戶端計算出響應(yīng),SIP/2.0 200 OK Authentication-Info: NTLM rspauth=01000000000000000296F864AAD9BD5F, srand=A10D3F20, snum=1, opaque=8CE21B68, qop=auth,

9、targetname=, realm=SIP Communications Service CSeq: 3 REGISTER 服務(wù)器確認(rèn),SIP安全 認(rèn)證 NTLM,What is GSSAPI? GSSAPI,“Generic Security Service Application Programming Interface ”,由RFC 1508和1509定義。,SIP安全 認(rèn)證 NTLM,GSSAPI的MS實現(xiàn)版本: “Microsoft Security Support Provider Interface” 簡稱SSPI。 SSPI的接口分為三類: 1:Credential-man

10、agement interfaces ,提供對憑證的訪問: AcquireCredentialsHandle 獲取引用憑證的句柄 FreeCredentialsHandle 銷毀憑證句柄以及其他資源 2:Context-management interfaces ,提供方法創(chuàng)建或使用安全上下文: InitializeSecurityContext 通過生成一個opaque message (security token) 初始化安全上下文 DeleteSecurityContext 銷毀安全上下文以及其他資源 3:Message-support interfaces :MakeSignatur

11、e -基于消息和安全上下文,生成一個安全簽名,Windows中用SSPI實現(xiàn)的NTLM,SIP安全 認(rèn)證 NTLM,SIP安全 認(rèn)證 NTLM,我們描述一下收到服務(wù)器端發(fā)送的gssapi-data后, 客戶端的開發(fā)流程:,從服務(wù)器端的SIP響應(yīng)包中解析出以下四個數(shù)值: 1:realm 2: targetname 3: opaque 4: gssapi-data,targetname,MultiByteToWideChar,targetname Unicode字符串,gssapi-data,Base64:b64ToBinary,gssapi-data二進(jìn)制數(shù)據(jù)流,調(diào)用InitSecurityIn

12、terface得到一個指向SSPI dispatch table的指針m_pFuncs;調(diào)用SSPI的QuerySecurityPackageInfo接口方法得到安全包信息,SIP安全 認(rèn)證 NTLM,續(xù):,將gssapi-data二進(jìn)制流填充入SecBufferDesc緩沖區(qū)中,調(diào)用SSPI的DeleteSecurityContext來銷毀本地和安全上下文有關(guān)的數(shù)據(jù)結(jié)構(gòu),調(diào)用SSPI的InitializeSecurityContext接口方法,將上面填充好的SecBufferDesc緩沖區(qū)作為第7個參數(shù),InitializeSecurityContext接口方法的第10個參數(shù)是一個輸出參數(shù),

13、類型為SecBufferDesc,就是要發(fā)送回服務(wù)器的Challenge Response,SIP安全 認(rèn)證 NTLM,opaque的含義:provider-specific authentication tokens 這是一個不透明的(不讓外人知道其意義)數(shù)據(jù)字符串,在挑戰(zhàn)中發(fā)送給用戶。在響應(yīng)中,客戶端會將這個數(shù)據(jù)字符串發(fā)送回給服務(wù)器。這使得服務(wù)器可以是無狀態(tài)的。如果需要在挑戰(zhàn)和響應(yīng)之間維護(hù)一些狀態(tài),可以用這個參數(shù)傳送狀態(tài)給客戶端,此后當(dāng)響應(yīng)回來時,再讀這個狀態(tài)。,SIP安全 認(rèn)證 NTLM,realm的含義: 與標(biāo)準(zhǔn)URL(相對于被訪問服務(wù)器root)聯(lián)合使用的realm值用來定義保護(hù)區(qū)域

14、。 realm使得服務(wù)器上的被保護(hù)資源被放在特殊的保護(hù)分區(qū)內(nèi),這些區(qū)域都有各自的授權(quán)方案和(或)授權(quán)數(shù)據(jù)庫。 relm值是個字符串,通常由原始服務(wù)器來分配 realm參數(shù)是強(qiáng)制的,在所有的挑戰(zhàn)中都必須有。 在SIP實際應(yīng)用中,它通常設(shè)置為SIP代理服務(wù)器所負(fù)責(zé)的域名。realm字串必須是全局唯一的。這個realm字串必須包含一個主機(jī)名或者域名,遵循RFC3261 3.2.1節(jié)或者RFC261717的推薦。,SIP安全 認(rèn)證 Kerberos,What is Kerberos?,冥王的三個頭的看門狗?!,Kerberos version 5 By MIT RFC 1510 ,The Kerber

15、os Network Authentication Service (V5) Kerberos提供了在開放型網(wǎng)絡(luò)中進(jìn)行身份認(rèn)證的方法,認(rèn)證實體可以是用戶或用戶服務(wù)。這種認(rèn)證不依賴宿主機(jī)的操作系統(tǒng)或主機(jī)的IP地址,不需要保證網(wǎng)絡(luò)上所有主機(jī)的物理安全性,并且假定數(shù)據(jù)包在傳輸中可被隨機(jī)竊取篡改。,SIP安全 認(rèn)證 Kerberos,Windows Kerberos,1:輸入密碼之后,發(fā)送憑證,2:根據(jù)用戶輸入的域名,查找域控制器,3:為user A申請票據(jù),4:驗證user A,5:通過KDC的用戶密碼認(rèn)證,返回TGT,6:使用TGT 為userA申請服務(wù)票據(jù),7:發(fā)布一個服務(wù)票據(jù),TGT(Tick

16、et Granting Ticket)。用戶證明自己身份的Ticket,TGT,票據(jù),票據(jù),8:攜帶服務(wù)票據(jù)訪問其他服務(wù),SIP安全 認(rèn)證 Kerberos,KDC的含義:Key Distribution Center,密鑰發(fā)放中心,通常將AS和TGS統(tǒng)稱為KDC,有時也把AS 單獨(dú)稱為KDC。 認(rèn)證服務(wù)器, AS Authentication Server ,為用戶分發(fā)TGT(Ticket Granting Ticket)的服務(wù)器。 票據(jù)授權(quán)服務(wù)器, TGS Ticket Granting Server ,為用戶分發(fā)到最終目的Ticket的服務(wù)器,用戶使用這個Ticket向自己要求提供服務(wù)的

17、服務(wù)器證明自己的身份。,SIP安全 認(rèn)證 Kerberos,Ticket的含義:一個Ticket是一個用于安全的傳遞用戶身份所需要的信息的集合。 它不僅包含該用戶的身份,而且包含其它一些相關(guān)的信息。 一般來說,它主要包括客戶方Principal,目的服務(wù)方Principal,客戶方IP地址,時間戳(分發(fā)該Ticket的時間),該Ticket的生存期,以及會話密鑰等內(nèi)容。它的格式亦用ASN.1來準(zhǔn)確定義。,SIP安全 認(rèn)證 Kerberos,TGT的含義:TGT(Ticket Granting Ticket)。用戶向TGS(Ticket Granting Server)證明自己身份的Ticket

18、。 User A發(fā)起的TGT 請求中包含了發(fā)出請求客戶的使用者名稱,但是不包括密碼(共享的秘密)。 AS發(fā)布的TGT 包含一個純文件部分和一個密碼文件(加密的)部分。為了加密 TGT 的密碼部分,AS 使用了由使用者的密碼產(chǎn)生的加密密鑰。因此,只有知道密碼的使用者才能解開加密的部分。TGT 的加密部分還包含一個加密密鑰,稱為 對話密鑰。,SIP安全 認(rèn)證 Kerberos,服務(wù)票據(jù)和TGT: 獲得初始票據(jù)(TGT)的主要目的是在以后用它得到一個或者多個服務(wù)票據(jù)。這就是為什么初始票據(jù)被稱為 票據(jù)授予票據(jù)(TGT)。 服務(wù)票據(jù)是用于client與特定服務(wù)器之間的安全通信的一種手段。 TGT卻并不是針對任何特定的服務(wù)器的。因此,TGT 邏輯上等于一個開放連接,它的一端是client ,而另一端是未知的。當(dāng)對一個 TGT 產(chǎn)生一個服務(wù)票據(jù)時,另一端也就確定了。同一個 TGT 可以用于獲得任意數(shù)量的服務(wù)票據(jù)。,SIP安全 認(rèn)證 Kerberos,Credential的含義:Ticket和與它相聯(lián)系的會話密鑰合在一起稱為Credential。 之所以有這個概念是因為它們是

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論