【正文】
身份認(rèn)證及其應(yīng)用 1 引言 2 身份認(rèn)證的方法 3 第三方認(rèn)證 4 5 數(shù)字證書 6 驗(yàn)證證書 7 CA系統(tǒng)結(jié)構(gòu) 1 引 言 從對計(jì)算機(jī)系統(tǒng)或網(wǎng)絡(luò)的一般訪問過程來看 , 身份認(rèn)證是用戶獲得訪問權(quán)限的第一步 。 如果用戶身份得不到系統(tǒng)的認(rèn)可 , 即授權(quán) , 他就無法進(jìn)入該系統(tǒng)并進(jìn)而訪問系統(tǒng)資源 。 從這個(gè)意義來講 , 身份認(rèn)證是安全防御的第一道防線 , 它是防止非授權(quán)用戶或進(jìn)程進(jìn)入計(jì)算機(jī)系統(tǒng)的有效安全保障措施 。 身份認(rèn)證即身份識別與驗(yàn)證 (Identification and Authentication,簡稱 Iamp。A),是計(jì)算機(jī)安全的重要組成部分,它是大多數(shù)訪問控制的基礎(chǔ),也是建立用戶審計(jì)能力的基礎(chǔ)。訪問控制通常要求計(jì)算機(jī)系統(tǒng)能夠識別和區(qū)分用戶,而且通常是基于最小特權(quán)原理 (Least Privilege Theorem)(系統(tǒng)中的每個(gè)主體執(zhí)行授權(quán)任務(wù)時(shí),僅被授予完成任務(wù)所必需的最小訪問權(quán)限 )。用戶審計(jì)要求計(jì)算機(jī)系統(tǒng)上的各種活動與特定的個(gè)人相關(guān)聯(lián),以便系統(tǒng)識別出各用戶。 2 身份認(rèn)證的方法 識別是用戶向系統(tǒng)提供聲明身份的方法;驗(yàn)證則是建立這種聲明有效性的手段。計(jì)算機(jī)系統(tǒng)識別用戶依賴的是系統(tǒng)接收到的驗(yàn)證數(shù)據(jù)。這樣驗(yàn)證就面臨著這些考驗(yàn):收集驗(yàn)證數(shù)據(jù)問題、安全地傳輸數(shù)據(jù)問題以及怎樣知道使用計(jì)算機(jī)系統(tǒng)的用戶就是當(dāng)初驗(yàn)證通過的用戶問題。目前用來驗(yàn)證用戶身份的方法有: ● 用戶知道什么 (Something the User Knows)(秘密 , 如口令 、 個(gè)人身份號碼 (PIN)、 密鑰等 ) ● 用戶擁有什么 (Something the User Possesses)(令牌 , 如ATM卡或智能卡等 ) ● 用戶是誰 (Something the User is)(生物特征 , 如聲音識別 、 手寫識別或指紋識別等 ) 基于用戶知道什么的身份認(rèn)證 最普通的身份認(rèn)證形式是用戶標(biāo)識 (ID)和口令(Password)的組合,如圖 1所示。這種技術(shù)僅僅依賴于用戶知道什么的事實(shí)。通常采用的是基于知識的傳統(tǒng)口令技術(shù),但也有其它技術(shù),如密鑰。 ① 用戶輸入名字和口令② 客戶發(fā)送名字和口令W e b 服務(wù)器③ 服務(wù)器使用口令來認(rèn)證用戶身份④ 服務(wù)器對已經(jīng)認(rèn)證用戶進(jìn)行授權(quán)圖 1 基于用戶名和口令的身份認(rèn)證 通常 , 口令系統(tǒng)的運(yùn)作需要用戶輸入用戶標(biāo)識和口令 (或 PIN碼 )。 系統(tǒng)對輸入的口令與此前為該用戶標(biāo)識存儲的口令進(jìn)行比較 。 如果匹配 , 該用戶就可得到授權(quán)并獲得訪問權(quán) 。 口令的優(yōu)點(diǎn):口令作為安全措施已經(jīng)很長時(shí)間并成功地為計(jì)算機(jī)系統(tǒng)提供了安全保護(hù) 。 它已經(jīng)集成到很多操作系統(tǒng)中 , 用戶和系統(tǒng)管理員對它非常熟悉 。 在可控環(huán)境下管理適當(dāng)?shù)脑?, 口令系統(tǒng)可提供有效的安全保護(hù) 。 口令存在的問題:口令系統(tǒng)的安全依賴于口令的保密性 , 而用戶為了方便記憶而在設(shè)置口令時(shí)常使用姓名拼音 、 生日 、 電話號碼等 , 這樣口令就會很容易地被猜出 。 另外只要用戶訪問一個(gè)新的服務(wù)器 , 都必須提供新口令 。 基于用戶擁有什么的身份認(rèn)證 盡管某些身份認(rèn)證技術(shù)是完全基于用戶擁有什么 ,但是它在一定程度上還是和基于用戶知道什么的技術(shù)結(jié)合在一起的 , 這種結(jié)合比單一地采用一種技術(shù)的安全性大大提高了 (見圖 2)。 通常 , 基于用戶擁有什么的身份認(rèn)證技術(shù)使用的是令牌 , 這里介紹兩種令牌:記憶令牌和智能卡 。 ① 用戶輸入私鑰口令Web 服務(wù)器③ 客戶發(fā)送證書和身份證明④ 服務(wù)器利用證書和身份證明驗(yàn)證用戶身份② 客戶獲得私鑰并用它產(chǎn)生身份證明( 數(shù)字簽名)⑤ 服務(wù)器對已經(jīng)驗(yàn)證用戶進(jìn)行訪問授權(quán)圖 2 基于數(shù)字證書的身份認(rèn)證 記憶令牌只存儲信息 , 不對信息進(jìn)行處理 , 令牌上信息的讀取和寫入是用專門的讀 /寫設(shè)備來完成的 。 記憶令牌的最通用形式是磁卡 (就像信用卡背面一樣有一條磁條 )。 通常 , 用于計(jì)算機(jī)認(rèn)證的記憶令牌是 ATM卡 ,它是采用用戶擁有什么 (卡 )和用戶知道什么 (身份識別碼 )的組合 。 記憶令牌的優(yōu)點(diǎn)在于:當(dāng)它和身份識別碼一起使用時(shí)比單獨(dú)使用口令的機(jī)制更安全 , 因?yàn)楣粽吆茈y獲得這樣的令牌以進(jìn)入計(jì)算機(jī)系統(tǒng) 。 但是它也面臨一些問題:需要專門的讀取器;令牌的丟失問題等等 。 智能卡通過在令牌中采用集成電路以增加其功能 。同樣智能卡還需要用戶提供身份識別碼或口令等基于用戶知道的知識的認(rèn)證手段 。 智能卡一般因其采用的物理特性 、 接口 、 協(xié)議的不同而不同 。 根據(jù)物理特性不同 , 智能卡分為信用卡型智能卡 (內(nèi)嵌微處理器 )和類似計(jì)算器 、 鑰匙 、 便攜式物體的智能卡 。 對于接口來說 , 一般有人工接口和電子接口兩種 , 人工接口多采用顯示器或鍵盤式 , 而電子接口多采用專門的讀寫器 。智能卡所采用的認(rèn)證協(xié)議有靜態(tài)的口令交換協(xié)議 、 動態(tài)口令生成協(xié)議 、 提問 —應(yīng)答式協(xié)議等 。 基于用戶是誰的身份認(rèn)證 這種機(jī)制采用的是生物特征識別技術(shù) , 它采用的是用戶獨(dú)特的生理特征來認(rèn)證用戶的身份 。 這些生理特征包括生理屬性 (如指紋 、 視網(wǎng)膜識別等 )和行為屬性(如聲音識別 、 手寫簽名識別等 )。 這些技術(shù)已經(jīng)應(yīng)用到了計(jì)算機(jī)的登錄程序中 。 雖然這種技術(shù)比前兩種認(rèn)證技術(shù)有著更好的安全性 ,但是這種技術(shù)還不是很成熟 , 而且實(shí)際使用過程中的穩(wěn)定性不是很好 , 并且費(fèi)用很高 , 有待于進(jìn)一步的研究和開發(fā) , 以便能廣泛地應(yīng)用于身份認(rèn)證中 。 3 第三方認(rèn)證 所謂第三方認(rèn)證就是在相互不認(rèn)識的實(shí)體之間提供安全通信。最早實(shí)現(xiàn)第三方認(rèn)證的是 Kerberos認(rèn)證系統(tǒng),它的誕生為分布式系統(tǒng)的 Iamp。A提供了一種第三方認(rèn)證機(jī)制。另一個(gè)第三方認(rèn)證系統(tǒng)是基于 書的。 Kerberos的缺點(diǎn)是它在實(shí)體之間的 Iamp。A僅依靠密鑰技術(shù),或?qū)ΨQ密碼系統(tǒng)。近年來, Kerberos的擴(kuò)充也支持了 。 (International Standards Organization, ISO)開發(fā)的許多標(biāo)準(zhǔn)中的一部分,其目標(biāo)就是要解決分布式計(jì)算的安全問題。 ,或者非對稱密碼系統(tǒng)的,它克服了 Kerberos存在的問題。 Kerberos概述 Kerberos是為 TCP/IP網(wǎng)絡(luò)設(shè)計(jì)的可信第三方認(rèn)證協(xié)議 。 網(wǎng)絡(luò)上的 Kerberos服務(wù)器起著可信仲裁者的作用 。Kerberos可提供安全的網(wǎng)絡(luò)鑒別 , 允許個(gè)人訪問網(wǎng)絡(luò)中不同的機(jī)器 。 Kerberos基于對稱密碼學(xué) (采用的是 DES,但也可用其它算法替代 ), 它與網(wǎng)絡(luò)上的每個(gè)實(shí)體分別共享一個(gè)不同的秘密密鑰 , 是否知道該秘密密鑰便是身份的證明 。 Kerberos最初是在麻省理工學(xué)院 (MIT)為 Athena項(xiàng)目而開發(fā)的, Kerberos模型是基于 Needham和 Schroeder[1]提議的可信第三方協(xié)議。 Kerberos的設(shè)計(jì)目標(biāo) [2]就是提供一種安全、可靠、透明、可伸縮的認(rèn)證服務(wù)。在Kerberos模型中,主要包括以下幾個(gè)部分:客戶機(jī)、服務(wù)器、認(rèn)證服務(wù)器 (Authentication Server)和票據(jù)授予服務(wù)器 (TicketGranting Server)。其組成如圖 3所示。 域認(rèn)證和資源訪問A ut he nt i c a t i o nSe r v i c e ( A S)T i c ke tG r a nt i ngSe r v i c e( T G S)①請求一張 T G S票據(jù)② 返回 T G T給客戶③ 發(fā)送 T G T , 請求應(yīng)用服務(wù)器的票據(jù)④ 返回應(yīng)用服務(wù)器票據(jù)K e r be r os客戶端⑤ 給應(yīng)用服務(wù)器發(fā)送會話票據(jù)⑥ ( 可選) 發(fā)送身份確認(rèn)消息給客戶應(yīng) 用 服務(wù) 器密 鑰 分發(fā) 中 心( K D C )圖 3 Kerberos組成 Kerberos有一個(gè)所有客戶和自己安全通信所需的秘密密鑰數(shù)據(jù)庫 (KDC),也就是說, Kerberos知道每個(gè)人的秘密密鑰,故而它能產(chǎn)生消息,向每個(gè)實(shí)體證實(shí)另一個(gè)實(shí)體的身份。 Kerberos還能產(chǎn)生會話密鑰,只供一個(gè)客戶機(jī)和一個(gè)服務(wù)器 (或兩個(gè)客戶機(jī)之間 )使用,會話密鑰用來加密雙方的通信消息,通信完畢,會話密鑰即被銷毀。 Kerberos使用 DES加密 。 Kerberos第 4版提供非標(biāo)準(zhǔn)的鑒別模型 , 該模型的弱點(diǎn)是它無法檢測密文的某些改變 。 Kerberos第 5版使用 CBC模式 。 Kerberos V4認(rèn)證消息對話 Kerberos身份認(rèn)證進(jìn)程的處理過程 。 (1) 在客戶登錄到本地工作站以后 , 客戶向認(rèn)證服務(wù)器 (AS)發(fā)送一個(gè)服務(wù)請求 , 請求獲得指定應(yīng)用服務(wù)器的 “ 憑證 ” (Credentials)(如圖 4所示的消息 ① ), 所獲憑證可直接用于應(yīng)用服務(wù)器或票據(jù)授予服務(wù)器 (TGS)。 C ? AS : IDc || IDtgs || TS1 該消息包含客戶 ID以及票據(jù)授予服務(wù)器的 ID和時(shí)間戳。 (2) 認(rèn)證服務(wù)器 (AS)以憑證作為響應(yīng),并用客戶的密鑰加密 (如圖 4所示的消息② )憑證。憑證由下面幾部分組成:票據(jù)授予服務(wù)器“票據(jù)” (Ticket);臨時(shí)加密密鑰 Kc,tgs(稱為會話密鑰 )。 AS ? C : EKc[Kc,tgs||IDtgs||TS2||Lifetime2||Tickettgs] Tickettgs= EKtgs[Kc,tgs||IDv||ADc||IDtgs||TS2||Lifetime2] 其中 , 票據(jù) Tickettgs用 AS和 TGS之間的共享密鑰EKtgs加密 , 從而確??蛻艉推渌鼘κ譄o法修改其內(nèi)容 。為了防止對手以后再次使用票據(jù)來欺騙 TGS, 票據(jù)還包含了時(shí)間戳以及生命周期 (票據(jù)的合法時(shí)間段 )。 EKc是指用客戶同 AS共享的口令來加密該憑證 , 確保只有正確的客戶才能恢復(fù)憑證 。 Lifetime2是該憑證的生命周期 。 (3) 擁有了票據(jù)和會話密鑰 , 客戶 C就做好了向 TGS服務(wù)器靠近的準(zhǔn)備 。 客戶向 TGS服務(wù)器發(fā)送消息請求獲得訪問某個(gè)特定應(yīng)用服務(wù)器的票據(jù) Ticketv(如圖 4所示的消息 ③ )。 客戶 登錄用戶名口令長期對稱密鑰( L T S K )緩存① A S _R E QEU ( L T S K )( A ut he nt i c at o r ) ,U s e r n a m e② A S _R E PEKDC( T G T ) ,EU( S K )③ T G S _R E QEKDC( T G T ) ,ES KA ut he n t i ca t or ) ,A pp S r v④ T G S _R E PEA p p S r v( T i c ket ) ,ES K ( C K )( S KC A)A ut he nt i c a t i o nSe r v i c e ( A S)T i c ke tG r a nt i ngSe r v i c e( T G S)( K D C )\ \ A pp S e r v⑤ A P _R E QEA p p S r v( T i c ket ) ,ES KC( A ut he nt i c at o r)⑥ A P _R E PES K C A( t i m e s t a m p + 1)圖示:L T S K : 長期對稱密鑰 S K : 會話密鑰 E : 加密 C : 客戶 K : KDC A : A pp S r v圖 4 Kerberos認(rèn)證消息交換過程 C ? TGS: IDv||Tickettgs||Authenticatorc Authenticatorc= EKc,tgs[IDc||ADc||TS3] Tickettgs= EKtgs[Kc,tgs||IDv||ADc||IDtgs||TS2||Lifetime2] 該消息包含了身份驗(yàn)證器 (Authenticatorc),它包括了 C用戶的 ID和地址以及時(shí)間戳。與票據(jù)不同的是