信息安全原理與技術(shù).ppt_第1頁
信息安全原理與技術(shù).ppt_第2頁
信息安全原理與技術(shù).ppt_第3頁
信息安全原理與技術(shù).ppt_第4頁
信息安全原理與技術(shù).ppt_第5頁
已閱讀5頁,還剩93頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,1,信息安全原理與技術(shù),郭亞軍 宋建華 李莉 清華大學(xué)出版社,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,2,第7章 網(wǎng)絡(luò)安全協(xié)議,主要知識(shí)點(diǎn): -簡單的安全認(rèn)證協(xié)議 - Kerberos協(xié)議 - SSL協(xié)議 - IPSec協(xié)議 - PGP,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,3,網(wǎng)絡(luò)安全協(xié)議,按照其完成的功能可以分為: (1)密鑰交換協(xié)議 :一般情況下是在參與協(xié)議的兩個(gè)或者多個(gè)實(shí)體之間建立共享的秘密,通常用于建立在一次通信中所使用的會(huì)話密鑰。 (2)認(rèn)證協(xié)議:認(rèn)證協(xié)議中包括實(shí)體認(rèn)證(身份認(rèn)證)協(xié)議、消息認(rèn)證協(xié)議、數(shù)據(jù)源認(rèn)證和數(shù)據(jù)目的認(rèn)證協(xié)議等,用來防止

2、假冒、篡改、否認(rèn)等攻擊。 (3)認(rèn)證和密鑰交換協(xié)議 :這類協(xié)議將認(rèn)證和密鑰交換協(xié)議結(jié)合在一起,是網(wǎng)絡(luò)通信中最普遍應(yīng)用的安全協(xié)議。該類協(xié)議首先對(duì)通信實(shí)體的身份進(jìn)行認(rèn)證,如果認(rèn)證成功,進(jìn)一步進(jìn)行密鑰交換,以建立通信中的工作密鑰,也叫密鑰確認(rèn)協(xié)議。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,4,網(wǎng)絡(luò)層的安全協(xié)議:IPSec 傳輸層的安全協(xié)議:SSL/TLS 應(yīng)用層的安全協(xié)議: SHTTP(Web安全協(xié)議) PGP(電子郵件安全協(xié)議) S/MIME(電子郵件安全協(xié)議) MOSS(電子郵件安全協(xié)議) PEM(電子郵件安全協(xié)議) SSH(遠(yuǎn)程登錄安全協(xié)議) Kerberos(網(wǎng)絡(luò)認(rèn)證協(xié)議)等。,常見的網(wǎng)絡(luò)安

3、全協(xié)議,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,5,7.1簡單的安全認(rèn)證協(xié)議,Needham-Schroeder 認(rèn)證協(xié)議 是最為著名的早期的認(rèn)證協(xié)議,許多廣泛使用的認(rèn)證協(xié)議都是以Needham-Schroeder協(xié)議為基礎(chǔ)而設(shè)計(jì)的。 Otway-Rees協(xié)議 Otway-Rees協(xié)議的主要功能是完成身份的雙向認(rèn)證,使用對(duì)稱密碼。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,6,7.1.1 Needham-Schroeder 認(rèn)證協(xié)議,Needham-Schroder協(xié)議的目的是使得通訊雙方能夠互相證實(shí)對(duì)方的身份并且為后續(xù)的加密通訊建立一個(gè)會(huì)話密鑰(session key)。 協(xié)議涉及三個(gè)主體:A

4、和B,以及A,B信賴的可信第三方,也叫認(rèn)證服務(wù)器(authentication server)S。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,7,Needham和Schroeder于1978年提出的基于共享密鑰體系的協(xié)議過程: 圖7.1 Needham-Schroeder認(rèn)證過程 其中,Kas是A與S之間的共享密鑰,Kbs是B與S之間的共享密鑰。Kab 是認(rèn)證服務(wù)器臨時(shí)生成的密鑰,用于A、B雙方認(rèn)證之后的加密通訊,稱為會(huì)話密鑰。Na和Nb分別是A和B生成的隨機(jī)量(nonce)。,(1) A S:A,B,Na (2)S A:Na, B,Kab,Kab, AKbsKas (3) A B:Kab,AK

5、bs (4) B A:NbKab (5) A B:Nb-1Kab,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,8,Needhaul-Scllroeder共享密鑰協(xié)議的漏洞 假定有攻擊者H記錄下A與B之間執(zhí)行Needham-Schroeder 共享密鑰協(xié)議的一輪消息,并且進(jìn)而破獲了其會(huì)話密鑰Kab (如經(jīng)過蠻力攻擊等),攻擊者可以在第3步冒充A利用舊的會(huì)話密鑰欺騙B。在這個(gè)攻擊中,攻擊者H首先向B發(fā)送一個(gè)他記錄的從A發(fā)出的舊消息,此消息用于向B表明是A在與B通訊并且Kab是會(huì)話密鑰。B無法知道這是不是一個(gè)A發(fā)送的正常通訊請(qǐng)求,也不記得他過去曾經(jīng)用過Kab作為會(huì)話密鑰。遵循協(xié)議,B將向A發(fā)送一個(gè)加密的

6、新隨機(jī)量作為挑戰(zhàn)。H截獲之,并用Kab 解密得到此隨機(jī)量,然后向B返回一個(gè)響應(yīng)消息,使得B相信他正在用會(huì)話密鑰 Kab與A通訊,而實(shí)際上A根本沒有參加這一輪協(xié)議的運(yùn)行。除非B記住所有以前使用的與A通信的會(huì)話密鑰,否則B無法判斷這是一個(gè)重放攻擊,攻擊者由此可以隨意冒充A與B進(jìn)行通訊了!,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,9,Denning協(xié)議使用時(shí)間戳修正了這個(gè)漏洞,改進(jìn)的協(xié)議如下: 其中T表示時(shí)間戳。T記錄了認(rèn)證服務(wù)器S發(fā)送消息(2)時(shí)的時(shí)間,A、B根據(jù)時(shí)間戳驗(yàn)證消息的“新鮮性”,從而避免了重放攻擊。,(1) A S:A,B (2) S A:B, Kab,T,Kab, A,TKbsKas

7、 (3) A B:Kab,A,TKbs (4) B A:NbKab (5) A B:Nb-1Kab,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,10,7.1.2 Otway-Rees協(xié)議,圖7.2 Otway-Rees認(rèn)證過程 標(biāo)號(hào)1表示A產(chǎn)生一消息,包括用和S共享的密鑰Kas加密的一個(gè)索引號(hào)R、A的名字、B的名字和一隨機(jī)數(shù)Ra。 標(biāo)號(hào)2表示B用A消息中的加密部分構(gòu)造一條新消息。包括用和S共享的密鑰Kbs加密的一個(gè)索引號(hào)R、A的名字、B的名字和一新隨機(jī)數(shù)Rb。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,11,標(biāo)號(hào)3表示S檢查兩個(gè)加密部分中的索引號(hào)R是否相同,如果相同,就認(rèn)為從B來的消息是有效的。S產(chǎn)

8、生一個(gè)會(huì)話密鑰Ks用Kb和Ka分別加密后傳送給B,每條消息都包含S接收到的隨機(jī)數(shù)。 標(biāo)號(hào)4表示B把用A的密鑰加密的消息連同索引號(hào)R一起傳給A。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,12,7.2 Kerberos協(xié)議,在一個(gè)開放的分布式網(wǎng)絡(luò)環(huán)境中,用戶通過工作站訪問服務(wù)器上提供的服務(wù)時(shí), 一方面,工作站無法可信地向網(wǎng)絡(luò)服務(wù)證實(shí)用戶的身份,可能存在著以下三種威脅: 用戶可能訪問某個(gè)特定工作站,并假裝成另一個(gè)用戶在操作工作站。 用戶可能會(huì)更改工作站的網(wǎng)絡(luò)地址,使從這個(gè)已更改的工作站上發(fā)出的請(qǐng)求看似來自偽裝的工作站。 用戶可能竊聽他人的報(bào)文交換過程,并使用重放攻擊來獲得對(duì)一個(gè)服務(wù)器的訪問權(quán)或中斷服

9、務(wù)器的運(yùn)行。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,13,另一方面,在開放的網(wǎng)絡(luò)環(huán)境中,客戶也必須防止來自服務(wù)端的欺騙。 以自動(dòng)取款機(jī)ATM為例,如果存在欺騙,那么客戶將泄漏自己的帳戶信息。 如何使用一個(gè)集中的認(rèn)證服務(wù)器,提供用戶對(duì)服務(wù)器的認(rèn)證以及服務(wù)器對(duì)用戶的認(rèn)證,這就是Kerberos要解決的問題。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,14,7.2.1 Kerberos概述,Kerberos是由美國麻省理工學(xué)院(MIT)提出的基于可信賴的第三方的認(rèn)證系統(tǒng),它是基于Needham-Schroeder協(xié)議設(shè)計(jì)的,采用對(duì)稱密碼體制。 Kerberos一詞源自希臘神話,在希臘神話故事中,Ke

10、rberos是一種長有三個(gè)頭的狗,還有一個(gè)蛇形尾巴,是地獄之門的守衛(wèi)者。現(xiàn)代取Kerberos這個(gè)名字意指要有三個(gè)“頭”來守衛(wèi)網(wǎng)絡(luò)之門,這“三頭”包括: -認(rèn)證(authentication) -清算(accounting) -審計(jì)(audit),2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,15,Kerberos協(xié)議中的一些概念,Principal(安全個(gè)體) 被鑒別的個(gè)體,有一個(gè)名字(name)和口令(password)。 KDC(Key distribution center,密鑰分配中心) 可信的第三方,即Kerberos服務(wù)器,提供ticket和臨時(shí)的會(huì)話密鑰。 Ticket(訪問許可證)

11、 是一個(gè)記錄憑證,客戶可以用它來向服務(wù)器證明自己的身份,其中包括客戶的標(biāo)識(shí)、會(huì)話密鑰、時(shí)間戳,以及其他一些信息。Ticket中的大多數(shù)信息都被加密,密鑰為服務(wù)器的密鑰。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,16,Authenticator(認(rèn)證符) 是另一個(gè)記錄憑證,其中包含一些最近產(chǎn)生的信息,產(chǎn)生這些信息需要用到客戶和服務(wù)器之間共享的會(huì)話密鑰。 Credentials(證書) 由一個(gè)ticket加上一個(gè)秘密的會(huì)話密鑰組成。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,17,7.2.2 Kerberos協(xié)議的工作過程,Kerberos基本思想 采用對(duì)稱密鑰體制對(duì)信息進(jìn)行加密,能正確對(duì)信息進(jìn)行解

12、密的用戶就是合法用戶。用戶在對(duì)應(yīng)用服務(wù)器進(jìn)行訪問之前,必須先從第三方(Kerberos 服務(wù)器)獲取該應(yīng)用服務(wù)器的訪問許可證(ticket)。 認(rèn)證服務(wù)器AS(Authentication Server) 許可證頒發(fā)服務(wù)器TGS(Ticket Granting Server),2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,18,7.2.2 Kerberos協(xié)議的工作過程,圖7.3 Kerberos的認(rèn)證過程,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,19,用戶想要獲取訪問某一應(yīng)用服務(wù)器的許可證時(shí),先以明文方式向認(rèn)證服務(wù)器AS發(fā)出請(qǐng)求,要求獲得訪問TGS的許可證。 AS以證書(credential)作為

13、響應(yīng),證書包括訪問TGS的許可證和用戶與TGS間的會(huì)話密鑰。會(huì)話密鑰以用戶的密鑰加密后傳輸。 用戶解密得到TGS的響應(yīng),然后利用TGS的許可證向TGS申請(qǐng)應(yīng)用服務(wù)器的許可證,該申請(qǐng)包括TGS的許可證和一個(gè)帶有時(shí)間戳的認(rèn)證符(authenticator)。認(rèn)證符以用戶與TGS間的會(huì)話密鑰加密。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,20,TGS從許可證中取出會(huì)話密鑰、解密認(rèn)證符,驗(yàn)證認(rèn)證符中時(shí)間戳的有效性,從而確定用戶的請(qǐng)求是否合法。TGS確認(rèn)用戶的合法性后,生成所要求的應(yīng)用服務(wù)器的許可證,許可證中含有新產(chǎn)生的用戶與應(yīng)用服務(wù)器之間的會(huì)話密鑰。TGS將應(yīng)用服務(wù)器的許可證和會(huì)話密鑰傳回到用戶。 用

14、戶向應(yīng)用服務(wù)器提交應(yīng)用服務(wù)器的許可證和用戶新產(chǎn)生的帶時(shí)間戳的認(rèn)證符(認(rèn)證符以用戶與應(yīng)用服務(wù)器之間的會(huì)話密鑰加密)。 應(yīng)用服務(wù)器從許可證中取出會(huì)話密鑰、解密認(rèn)證符,取出時(shí)間戳并檢驗(yàn)有效性。然后向用戶返回一個(gè)帶時(shí)間戳的認(rèn)證符,該認(rèn)證符以用戶與應(yīng)用服務(wù)器之間的會(huì)話密鑰進(jìn)行加密。據(jù)此,用戶可以驗(yàn)證應(yīng)用服務(wù)器的合法性。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,21,Kerberos的主要優(yōu)點(diǎn): 通過對(duì)實(shí)體和服務(wù)的統(tǒng)一管理實(shí)現(xiàn)單一注冊,也就是說用戶通過在網(wǎng)絡(luò)中的一個(gè)地方的一次登錄就可以使用網(wǎng)絡(luò)上他可以獲得的所有資源。 Kerberos存在的問題: Kerberos服務(wù)器的損壞將使得整個(gè)安全系統(tǒng)無法工作;

15、AS在傳輸用戶與TGS間的會(huì)話密鑰時(shí)是以用戶密鑰加密的,而用戶密鑰是由用戶口令生成的,因此可能受到口令猜測的攻擊; Kerberos使用了時(shí)間戳,因此存在時(shí)間同步問題; 要將Kerberos用于某一應(yīng)用系統(tǒng),則該系統(tǒng)的客戶端和服務(wù)器端軟件都要作一定的修改。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,22,7.3 SSL協(xié)議,SSL(安全套接字層,Secure Socket Layer)協(xié)議是網(wǎng)景(Netscape)公司提出的基于WEB應(yīng)用的安全協(xié)議,是一種用于傳輸層安全的協(xié)議。傳輸層安全協(xié)議的目的是為了保護(hù)傳輸層的安全,并在傳輸層上提供實(shí)現(xiàn)保密、認(rèn)證和完整性的方法。 SSL指定了一種在應(yīng)用程序協(xié)

16、議(例如http、telnet、NNTP、FTP)和TCP/IP之間提供數(shù)據(jù)安全性分層的機(jī)制。它為TCP/IP連接提供數(shù)據(jù)加密、服務(wù)器認(rèn)證、消息完整性以及可選的客戶機(jī)認(rèn)證。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,23,7.3.1 SSL協(xié)議概述,圖7.4 SSL的體系結(jié)構(gòu),2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,24,SSL中有兩個(gè)重要概念: SSL連接:連接是提供恰當(dāng)類型服務(wù)的傳輸。SSL連接是點(diǎn)對(duì)點(diǎn)的關(guān)系,每一個(gè)連接與一個(gè)會(huì)話相聯(lián)系。 SSL會(huì)話:SSL會(huì)話是客戶和服務(wù)器之間的關(guān)聯(lián),會(huì)話通過握手協(xié)議(在SSL協(xié)議的高層)來創(chuàng)建。會(huì)話定義了加密安全參數(shù)的一個(gè)集合,該集合可以被多個(gè)連接所共享

17、。會(huì)話可以用來避免為每個(gè)連接進(jìn)行昂貴的新安全參數(shù)的協(xié)商。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,25,7.3.2 SSL記錄協(xié)議,SSL從應(yīng)用層取得的數(shù)據(jù)需要重定格式(分片、可選的壓縮、應(yīng)用MAC、加密等)后才能傳給傳輸層進(jìn)行發(fā)送。同樣,當(dāng)SSL協(xié)議從傳輸層接收到數(shù)據(jù)后需要對(duì)其進(jìn)行解密等操作后才能交給上層的應(yīng)用層。這個(gè)工作是由SSL記錄協(xié)議完成的。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,26,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,27,SSL記錄協(xié)議中發(fā)送方執(zhí)行的操作步驟: 從上層接受傳輸?shù)膽?yīng)用報(bào)文; 分片:將數(shù)據(jù)分片成可管理的塊,每個(gè)上層報(bào)文被分成16KB或更小的數(shù)據(jù)塊; 進(jìn)行數(shù)據(jù)壓縮

18、(可選):壓縮是可選的,壓縮的前提是不能丟失信息,并且增加的內(nèi)容長度不能超過1024字節(jié),缺省的壓縮算法為空; 應(yīng)用MAC:加入信息認(rèn)證碼(MAC),這一步需要用到共享的密鑰; 加密:利用IDEA、DES、3DES或其他加密算法對(duì)壓縮報(bào)文和MAC碼進(jìn)行數(shù)據(jù)加密; 增加SSL首部:增加由內(nèi)容類型、主要版本、次要版本和壓縮長度組成的首部。 將結(jié)果傳輸?shù)较聦印?2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,28,SSL記錄協(xié)議中接收方接收數(shù)據(jù)的工作過程 從低層接受報(bào)文; 解密; 用事先商定的MAC碼校驗(yàn)數(shù)據(jù); 如果是壓縮的數(shù)據(jù),則解壓縮; 重裝配數(shù)據(jù); 傳輸信息到上層。,2020/9/6,Ch7-網(wǎng)絡(luò)安全

19、協(xié)議,29,7.3.3 SSL修改密文規(guī)約協(xié)議,SSL修改密文規(guī)約協(xié)議用來發(fā)送修改密文規(guī)約協(xié)議信息。任何時(shí)候客戶都能請(qǐng)求修改密碼參數(shù),比如握手密鑰交換。在修改密文規(guī)約的通告發(fā)出以后,客戶方就發(fā)出一個(gè)握手密鑰交換信息(如果可得到的話),鑒定認(rèn)證信息,服務(wù)器則在處理了密鑰交換信息之后發(fā)送一個(gè)修改密文規(guī)約信息。此后,新的雙方約定的密鑰就將一直使用到下次提出修改密鑰規(guī)約請(qǐng)求為止。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,30,7.3.4 SSL告警協(xié)議,SSL告警協(xié)議是用來將SSL有關(guān)的告警傳送給對(duì)方實(shí)體的。和其他使用SSL的情況一樣,告警報(bào)文按照當(dāng)前狀態(tài)說明被壓縮和加密。 SSL告警協(xié)議的每個(gè)報(bào)文由

20、兩個(gè)字節(jié)組成。第一個(gè)字節(jié)的值用來表明警告的的級(jí)別,第二個(gè)字節(jié)表示特定告警的代碼。如果在通信過程中某一方發(fā)現(xiàn)任何異常,就需要給對(duì)方發(fā)送一條警示消息通告。 警示消息有兩種:一種是 Fatal錯(cuò)誤,如傳遞數(shù)據(jù)過程中,發(fā)現(xiàn)錯(cuò)誤的MAC,雙方就需要立即中斷會(huì)話,同時(shí)消除自己緩沖區(qū)相應(yīng)的會(huì)話記錄;第二種是Warning消息,這種情況,通信雙方通常都只是記錄日志,而對(duì)通信過程不造成任何影響。,7.3.5 SSL握手協(xié)議,一個(gè)SSL會(huì)話工作在不同的狀態(tài),即會(huì)話狀態(tài)和連接狀態(tài)。,會(huì)話狀態(tài): 會(huì)話標(biāo)識(shí)符 對(duì)方的證書 壓縮方法 密文規(guī)約 主密鑰 可重新開始標(biāo)志,連接狀態(tài): 服務(wù)器和客戶隨機(jī)數(shù) 服務(wù)器寫MAC密鑰 客

21、戶寫MAC密鑰 服務(wù)器寫密鑰 客戶寫密鑰 初始化向量 序號(hào),SSL握手協(xié)議用于鑒別初始化和傳輸密鑰,它使得服務(wù)器和客戶能相互鑒別對(duì)方的身份,并保護(hù)在SSL記錄中發(fā)送的數(shù)據(jù)。因此在傳輸任何應(yīng)用數(shù)據(jù)前,都必須使用握手協(xié)議。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,33,圖7.7 SSL握手過程,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,34,SSL握手的詳細(xì)過程,第一步:客戶發(fā)出一個(gè)帶有客戶HELLO信息的連接請(qǐng)求。這信息包括: 想要使用的SSL版本號(hào)。 時(shí)間信息,以標(biāo)準(zhǔn)的UNIX32位格式標(biāo)識(shí)的現(xiàn)時(shí)和日期。 會(huì)話標(biāo)識(shí)(可選),如果沒有指定的話,則服務(wù)器便重用上一次的會(huì)話標(biāo)識(shí)或返回一個(gè)錯(cuò)誤信息 密文

22、組(客戶方所支持的各種加密算法選項(xiàng)清單。包括認(rèn)證碼、密鑰交換方法、加密和MAC算法)。 客戶方所支持的壓縮算法。 隨機(jī)數(shù)。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,35,SSL握手的詳細(xì)過程,第二步:服務(wù)器評(píng)估客戶方發(fā)來的HELLO信息中的各項(xiàng)參數(shù),并且返回一個(gè)服務(wù)器方的HELLO信息,其中含有服務(wù)器選來用于SSL會(huì)話的各項(xiàng)參數(shù)(版本號(hào)、時(shí)間信息、以標(biāo)準(zhǔn)的UNIX32位格式標(biāo)識(shí)的現(xiàn)時(shí)和日期、會(huì)話標(biāo)識(shí)、密文組、壓縮方法、隨機(jī)數(shù))。 在服務(wù)器HELLO信息之后,服務(wù)器發(fā)出如下信息:服務(wù)器證書,如果服務(wù)器需要被鑒別的話。服務(wù)器密鑰交換信息,如果得不到證書或證書僅僅用作簽名的話。證書請(qǐng)求,如果客戶要求

23、被鑒別的話。 最后,服務(wù)器發(fā)出一個(gè)服務(wù)器HELLO DONE信息,開始等待客戶的回音。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,36,SSL握手的詳細(xì)過程,第三步:客戶發(fā)送下列信息: 如果服務(wù)器發(fā)出了一個(gè)證書請(qǐng)求,那么客戶方必須發(fā)送一個(gè)證書或非證書信息。 如果服務(wù)器發(fā)送了一個(gè)服務(wù)器密鑰交換信息,那么客戶方就發(fā)送一個(gè)基于公鑰算法的由HELLO信息決定的密鑰交換信息。 如果客戶方已經(jīng)發(fā)送了一個(gè)證書,那么客戶方就需驗(yàn)證服務(wù)器方的證書并且發(fā)出一個(gè)證書驗(yàn)證信息指明結(jié)果。 然后,客戶方發(fā)出一個(gè)結(jié)束信息,指出協(xié)商過程已經(jīng)完成??蛻舴竭€發(fā)送一個(gè)修改密文規(guī)約信息來產(chǎn)生共享的常規(guī)密鑰。應(yīng)該注意這部分工作不是由握手

24、協(xié)議控制,是由修改密文規(guī)約協(xié)議管理的。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,37,SSL握手的詳細(xì)過程,第四步:服務(wù)器發(fā)出一個(gè)結(jié)束信息指出協(xié)商協(xié)商階段完成。然后服務(wù)器發(fā)出一個(gè)密文修改規(guī)約信息。 第五步:會(huì)話雙方分別產(chǎn)生一個(gè)加密密鑰,然后他們再根據(jù)這些密鑰導(dǎo)出會(huì)話主密鑰。握手協(xié)議改變狀態(tài)至連接狀態(tài)。所有從應(yīng)用層的來的數(shù)據(jù)傳輸作為特定信息傳輸給對(duì)方。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,38,7.3.6 TLS協(xié)議,傳輸層安全TLS(Transport Layer Security)協(xié)議是IETF正在定義一種新的協(xié)議。它建立在Netscape所提出的SSL3.0協(xié)議規(guī)范基礎(chǔ)上。 兩個(gè)互相不

25、知其代碼的應(yīng)用程序可用TLS來安全地通信。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,39,7.3.7 SSL協(xié)議應(yīng)用,一個(gè)使用WEB客戶機(jī)和服務(wù)器的范例 WEB客戶機(jī)通過連接到一個(gè)支持SSL的服務(wù)器,啟動(dòng)一次SSL會(huì)話。支持SSL的典型WEB服務(wù)器在一個(gè)與標(biāo)準(zhǔn)HTTP請(qǐng)求(默認(rèn)為端口80)不同的端口(默認(rèn)為443)上接受SSL連接請(qǐng)求。當(dāng)客戶機(jī)連接到這個(gè)端口上時(shí),它將啟動(dòng)一次建立SSL會(huì)話的握手。當(dāng)握手完成之后,通信內(nèi)容被加密,并且執(zhí)行消息完整性檢查,直到SSL會(huì)話過期。SSL創(chuàng)建一個(gè)會(huì)話,在此期間,握手必須只發(fā)生過一次。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,40,步驟1:SSL客戶機(jī)連接

26、到SSL服務(wù)器,并要求服務(wù)器驗(yàn)證它自身的身份。 步驟2:服務(wù)器通過發(fā)送它的數(shù)字證書證明其身份。這個(gè)交換還可以包括整個(gè)證書鏈,直到某個(gè)根證書權(quán)威機(jī)構(gòu)(CA)。通過檢查有效日期并確認(rèn)證書包含有可信任CA的數(shù)字簽名,來驗(yàn)證證書。 步驟3:服務(wù)器發(fā)出一個(gè)請(qǐng)求,對(duì)客戶端的證書進(jìn)行驗(yàn)證。但是,因?yàn)槿狈€體系結(jié)構(gòu),當(dāng)今的大多數(shù)服務(wù)器不進(jìn)行客戶端認(rèn)證。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,41,步驟4:協(xié)商用于加密的消息加密算法和用于完整性檢查的哈希函數(shù)。通常由客戶機(jī)提供它支持的所有算法列表,然后由服務(wù)器選擇最強(qiáng)健的加密算法。 步驟5:客戶機(jī)和服務(wù)器通過下列步驟生成會(huì)話密鑰:a.客戶機(jī)生成一個(gè)隨機(jī)數(shù),并

27、使用服務(wù)器的公鑰(從服務(wù)器的證書中獲得)對(duì)它加密,發(fā)送到服務(wù)器上。b.服務(wù)器用更加隨機(jī)的數(shù)據(jù)(從客戶機(jī)的密鑰可用時(shí)則使用客戶機(jī)密鑰;否則以明文方式發(fā)送數(shù)據(jù))響應(yīng)。c.使用哈希函數(shù),從隨機(jī)數(shù)據(jù)生成密鑰。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,42,SSL協(xié)議的優(yōu)點(diǎn) 機(jī)密性 即連接是私有的。在初始握手階段,雙方建立對(duì)稱密鑰后,信息即用該密鑰加密。 完整性 在信息中嵌入信息鑒別碼(MAC)來保證信息的完整性。其中使用了安全哈希函數(shù)(例如SHA和MD5)來進(jìn)行MAC計(jì)算。 鑒別 在握手階段,客戶鑒別服務(wù)器用不對(duì)稱密鑰或公開密鑰。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,43,SSL協(xié)議的不足 SSL

28、要求對(duì)每個(gè)數(shù)據(jù)進(jìn)行加密和解密操作,因而在帶來高性能的同時(shí),對(duì)系統(tǒng)也要求高資源開銷。 SSL協(xié)議主要是使用公開密鑰體制和X.509數(shù)字證書技術(shù)保護(hù)信息傳輸?shù)臋C(jī)密性和完整性,它不能保證信息的不可抵賴性,主要適用于點(diǎn)對(duì)點(diǎn)之間的信息傳輸,常用Web Server方式。 SSL為帶有安全功能的TCP/IP套接字應(yīng)用程序接口提供了一個(gè)替代的方法,理論上,在SSL之上可以安全方式運(yùn)行任何原有TCP/IP應(yīng)用程序而不需修改,但實(shí)際上,SSL目前還只是用在HTTP連接上。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,44,OpenSSL,官方網(wǎng)站為/ Eric A. You

29、ng和Tim J. Hudson這兩個(gè)加拿大人自1995年開始編寫后來具有巨大影響的OpenSSL軟件包,這是一個(gè)沒有太多限制的開放源代碼的軟件包。1998年,OpenSSL項(xiàng)目組接管了OpenSSL的開發(fā)工作,并推出了OpenSSL的0.9.1版,目前為止,OpenSSL的算法已經(jīng)非常完善,對(duì)SSL2.0、SSL3.0以及TLS1.0都支持。 OpenSSL采用C語言作為開發(fā)語言,這使得OpenSSL具有優(yōu)秀的跨平臺(tái)性能,這對(duì)于廣大技術(shù)人員來說是一件非常美妙的事情,可以在不同的平臺(tái)使用同樣熟悉的東西。OpenSSL支持Linux、Windows、BSD、Mac、VMS等平臺(tái),這使得OpenS

30、SL具有廣泛的適用性。 OpenSSL整個(gè)軟件包大概可以分成三個(gè)主要的功能部分:密碼算法庫,SSL協(xié)議庫,應(yīng)用程序。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,45,openssl-加密算法 作為一個(gè)基于密碼學(xué)的安全開發(fā)包,OpenSSL提供的功能相當(dāng)強(qiáng)大和全面,囊括了主要的密碼算法、常用的密鑰和證書封裝管理功能以及SSL協(xié)議,并提供了豐富的應(yīng)用程序供測試或其它目的使用。 1.對(duì)稱加密算法 OpenSSL一共提供了8種對(duì)稱加密算法,其中7種是分組加密算法,僅有的一種流加密算法是RC4。這7種分組加密算法分別是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持電子密碼本模

31、式(ECB)、加密分組鏈接模式(CBC)、加密反饋模式(CFB)和輸出反饋模式(OFB)四種常用的分組密碼加密模式。其中,AES使用的加密反饋模式(CFB)和輸出反饋模式(OFB)分組長度是128位,其它算法使用的則是64位。事實(shí)上,DES算法里面不僅僅是常用的DES算法,還支持三個(gè)密鑰和兩個(gè)密鑰3DES算法。 2.非對(duì)稱加密算法 OpenSSL一共實(shí)現(xiàn)了4種非對(duì)稱加密算法,包括DH算法、RSA算法、DSA算法和橢圓曲線算法(EC)。 DH算法一般用戶密鑰交換。RSA算法既可以用于密鑰交換,也可以用于數(shù)字簽名。DSA算法則一般只用于數(shù)字簽名。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,46,3.

32、信息摘要算法 OpenSSL實(shí)現(xiàn)了5種信息摘要算法,分別是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。SHA算法事實(shí)上包括了SHA和SHA1兩種信息摘要算法,此外,OpenSSL還實(shí)現(xiàn)了DSS標(biāo)準(zhǔn)中規(guī)定的兩種信息摘要算法DSS和DSS1。 4.密鑰和證書管理 密鑰和證書管理是PKI的一個(gè)重要組成部分,OpenSSL為之提供了豐富的功能,支持多種標(biāo)準(zhǔn)。 首先,OpenSSL實(shí)現(xiàn)了ASN.1的證書和密鑰相關(guān)標(biāo)準(zhǔn),提供了對(duì)證書、公鑰、私鑰、證書請(qǐng)求以及CRL等數(shù)據(jù)對(duì)象的DER、PEM和BASE64的編解碼功能。OpenSSL提供了產(chǎn)生各種公開密鑰對(duì)和對(duì)稱密鑰的方法、函數(shù)和應(yīng)用程序,同

33、時(shí)提供了對(duì)公鑰和私鑰的DER編解碼功能。并實(shí)現(xiàn)了私鑰的PKCS#12和PKCS#8的編解碼功能。OpenSSL在標(biāo)準(zhǔn)中提供了對(duì)私鑰的加密保護(hù)功能,使密鑰可以安全地進(jìn)行存儲(chǔ)和分發(fā)。 在此基礎(chǔ)上,OpenSSL實(shí)現(xiàn)了對(duì)證書的X.509標(biāo)準(zhǔn)編解碼、PKCS#12格式的編解碼以及PKCS#7的編解碼功能。并提供了一種文本數(shù)據(jù)庫,支持證書的管理功能,包括證書密鑰產(chǎn)生、請(qǐng)求產(chǎn)生、證書簽發(fā)、吊銷和驗(yàn)證等功能。OpenSSL提供的CA應(yīng)用程序就是一個(gè)小型的證書管理中心(CA),實(shí)現(xiàn)了證書簽發(fā)的整個(gè)流程和證書管理的大部分機(jī)制。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,47,5.SSL和TLS協(xié)議 OpenSSL

34、實(shí)現(xiàn)了SSL協(xié)議的SSLv2和SSLv3,支持了其中絕大部分算法協(xié)議。OpenSSL也實(shí)現(xiàn)了TLSv1.0,TLS是SSLv3的標(biāo)準(zhǔn)化版,雖然區(qū)別不大,但畢竟有很多細(xì)節(jié)不盡相同。 雖然已經(jīng)有眾多的軟件實(shí)現(xiàn)了OpenSSL的功能,但是OpenSSL里面實(shí)現(xiàn)的SSL協(xié)議能夠?qū)SL協(xié)議有一個(gè)更加清楚的認(rèn)識(shí),因?yàn)橹辽俅嬖趦牲c(diǎn):一是OpenSSL實(shí)現(xiàn)的SSL協(xié)議是開放源代碼的,可以追究SSL協(xié)議實(shí)現(xiàn)的每一個(gè)細(xì)節(jié);二是OpenSSL實(shí)現(xiàn)的SSL協(xié)議是純粹的SSL協(xié)議,沒有跟其它協(xié)議(如HTTP)協(xié)議結(jié)合在一起,澄清了SSL協(xié)議的本來面目。 6.應(yīng)用程序 OpenSSL的應(yīng)用程序已經(jīng)成為了OpenSSL重

35、要的一個(gè)組成部分。現(xiàn)在OpenSSL的應(yīng)用中,很多都是基于OpenSSL的應(yīng)用程序而不是其API的,如OpenCA,就是完全使用OpenSSL的應(yīng)用程序?qū)崿F(xiàn)的。OpenSSL的應(yīng)用程序是基于OpenSSL的密碼算法庫和SSL協(xié)議庫寫成的,所以也是一些非常好的OpenSSL的API使用范例。 OpenSSL的應(yīng)用程序提供了相對(duì)全面的功能,在相當(dāng)多的人看來,OpenSSL已經(jīng)為自己做好了一切,不需要再做更多的開發(fā)工作了,所以,他們也把這些應(yīng)用程序成為OpenSSL的指令。OpenSSL的應(yīng)用程序主要包括密鑰生成、證書管理、格式轉(zhuǎn)換、數(shù)據(jù)加密和簽名、SSL測試以及其它輔助配置功能。,2020/9/6

36、,Ch7-網(wǎng)絡(luò)安全協(xié)議,48,7.Engine機(jī)制 Engine機(jī)制的出現(xiàn)是在OpenSSL的0.9.6版的事情,開始的時(shí)候是將普通版本跟支持Engine的版本分開的,到了OpenSSL的0.9.7版,Engine機(jī)制集成到了OpenSSL的內(nèi)核中,成為了OpenSSL不可缺少的一部分。 Engine機(jī)制目的是為了使OpenSSL能夠透明地使用第三方提供的軟件加密庫或者硬件加密設(shè)備進(jìn)行加密。OpenSSL的Engine機(jī)制成功地達(dá)到了這個(gè)目的,這使得OpenSSL已經(jīng)不僅僅使一個(gè)加密庫,而是提供了一個(gè)通用地加密接口,能夠與絕大部分加密庫或者加密設(shè)備協(xié)調(diào)工作。當(dāng)然,要使特定加密庫或加密設(shè)備更Op

37、enSSL協(xié)調(diào)工作,需要寫少量的接口代碼,但是這樣的工作量并不大,雖然還是需要一點(diǎn)密碼學(xué)的知識(shí)。Engine機(jī)制的功能跟Windows提供的CSP功能目標(biāo)是基本相同的。目前,OpenSSL的0.9.7版本支持的內(nèi)嵌第三方加密設(shè)備有8種,包括:CryptoSwift、nCipher、Atalla、Nuron、UBSEC、Aep、SureWare以及IBM 4758 CCA的硬件加密設(shè)備?,F(xiàn)在還出現(xiàn)了支持PKCS#11接口的Engine接口,支持微軟CryptoAPI的接口也有人進(jìn)行開發(fā)。當(dāng)然,所有上述Engine接口支持不一定很全面,比如,可能支持其中一兩種公開密鑰算法。,2020/9/6,Ch

38、7-網(wǎng)絡(luò)安全協(xié)議,49,8.輔助功能 BIO機(jī)制是OpenSSL提供的一種高層IO接口,該接口封裝了幾乎所有類型的IO接口,如內(nèi)存訪問、文件訪問以及Socket等。這使得代碼的重用性大幅度提高,OpenSSL提供API的復(fù)雜性也降低了很多。 OpenSSL對(duì)于隨機(jī)數(shù)的生成和管理也提供了一整套的解決方法和支持API函數(shù)。隨機(jī)數(shù)的好壞是決定一個(gè)密鑰是否安全的重要前提。 OpenSSL還提供了其它的一些輔助功能,如從口令生成密鑰的API,證書簽發(fā)和管理中的配置文件機(jī)制等等。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,50,7.4 IPSec協(xié)議,由于協(xié)議IPv4最初設(shè)計(jì)時(shí)沒有過多地考慮安全性,缺乏對(duì)通

39、信雙方真實(shí)身份的驗(yàn)證能力,缺乏對(duì)網(wǎng)上傳輸?shù)臄?shù)據(jù)的完整性和機(jī)密性保護(hù),并且由于IP地址可軟件配置等靈活性以及基于源IP地址的認(rèn)證機(jī)制,使IP層存在著網(wǎng)絡(luò)業(yè)務(wù)流易被監(jiān)聽和捕獲、IP地址欺騙、信息泄漏和數(shù)據(jù)項(xiàng)被篡改等多種攻擊,而IP是很難抵抗這些攻擊的。 為了實(shí)現(xiàn)安全I(xiàn)P,因特網(wǎng)工程任務(wù)組IETF于1994年開始了一項(xiàng)IP安全工程,專門成立了IP安全協(xié)議工作組IPSEC,來制定和推動(dòng)一套稱為IPSec的IP安全協(xié)議標(biāo)準(zhǔn)。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,51,IPSec協(xié)議組,網(wǎng)絡(luò)認(rèn)證協(xié)議 Authentication Header(AH) 封裝安全載荷協(xié)議Encapsulating Sec

40、urity Payload(ESP) 密鑰管理協(xié)議Internet Key Exchange (IKE) 網(wǎng)絡(luò)認(rèn)證及加密算法,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,52,7.4.1 IPSec安全體系結(jié)構(gòu),圖7.8 IPSec安全體系結(jié)構(gòu),2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,53,ESP協(xié)議規(guī)定了為通信提供機(jī)密性和完整性保護(hù)的具體方案,包括ESP載荷的格式、語義、取值以及對(duì)進(jìn)入分組和外出分組的處理過程等。 DOIInterpretation of Domain,DOI規(guī)定了每個(gè)算法的參數(shù)要求和計(jì)算規(guī)則,如算法的密鑰長度要求、算法強(qiáng)度要求以及初始向量的計(jì)算規(guī)則等。 AH協(xié)議定義了認(rèn)證的應(yīng)用

41、方法,提供數(shù)據(jù)源認(rèn)證和完整性保證。 IKE協(xié)議是IPSec目前唯一的正式確定的密別交換協(xié)議,為AH和ESP提供密鑰交換支持,同時(shí)也支持其他機(jī)制,如密鑰協(xié)商。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,54,安全關(guān)聯(lián)(Security Association,SA),為了正確封裝及提取IPSec數(shù)據(jù)包,有必要采取一套專門的方案,將安全服務(wù)/密鑰與要保護(hù)的通信數(shù)據(jù)聯(lián)系到一起;同時(shí)要將遠(yuǎn)程通信實(shí)體與要交換密鑰的IPSec數(shù)據(jù)傳輸聯(lián)系到一起。換言之,要解決如何保護(hù)通信數(shù)據(jù)、保護(hù)什么樣的通信數(shù)據(jù)以及由誰來實(shí)行保護(hù)的問題。這樣的構(gòu)建方案稱為安全關(guān)聯(lián)(Security Association,SA)。,202

42、0/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,55,SA是單向的,要么對(duì)數(shù)據(jù)包進(jìn)行“進(jìn)入”保護(hù),要么進(jìn)行“外出”保護(hù)。也就是說,在一次通信中,IPSec 需要建立兩個(gè)SA,一個(gè)用于入站通信,另一個(gè)用于出站通信。 若某臺(tái)主機(jī),如文件服務(wù)器或遠(yuǎn)程訪問服務(wù)器,需要同時(shí)與多臺(tái)客戶機(jī)通信,則該服務(wù)器需要與每臺(tái)客戶機(jī)分別建立不同的SA。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,56,7.4.2 AH(Authentication Header)協(xié)議,AH協(xié)議規(guī)定了AH頭在AH實(shí)現(xiàn)中應(yīng)插入IP頭的位置、AH頭的語法格式、各字段的語義及取值方式,以及實(shí)施AH時(shí)進(jìn)入和外出分組的處理過程。AH機(jī)制涉及到密碼學(xué)中的核心組件鑒別

43、算法。 AH的功能 AH的兩種模式 AH的格式 認(rèn)證算法,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,57,AH的功能,AH協(xié)議為IP通信提供數(shù)據(jù)源認(rèn)證、數(shù)據(jù)完整性和反重播保證,它能保護(hù)通信免受篡改,但不能防止竊聽,適合用于傳輸非機(jī)密數(shù)據(jù)。 AH的工作原理是在每一個(gè)數(shù)據(jù)包上添加一個(gè)身份驗(yàn)證報(bào)頭。此報(bào)頭包含一個(gè)帶密鑰的hash散列(可以將其當(dāng)作數(shù)字簽名,只是它不使用證書),此hash散列在整個(gè)數(shù)據(jù)包中計(jì)算,因此對(duì)數(shù)據(jù)的任何更改將致使散列無效這樣就提供了完整性保護(hù)。 AH不能提供加密服務(wù),這就意味著分組將以明文的形式傳送。由于AH的速度比ESP稍微快一點(diǎn),因此僅當(dāng)需要確保分組的源和完整性而不考慮機(jī)密性

44、的時(shí)候,可以選擇使用AH。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,58,AH的兩種模式,傳輸模式:傳輸模式用于兩臺(tái)主機(jī)之間,只對(duì)上層協(xié)議數(shù)據(jù)(傳輸層數(shù)據(jù))和IP頭中的固定字段提供認(rèn)證,主要保護(hù)傳輸層協(xié)議頭,實(shí)現(xiàn)端到端的安全; 隧道模式:隧道模式對(duì)整個(gè)IP數(shù)據(jù)項(xiàng)提供認(rèn)證保護(hù),把需要保護(hù)的IP包封裝在新的IP包中,既可用于主機(jī)也可用于安全網(wǎng)關(guān),并且當(dāng)AH在安全網(wǎng)關(guān)上實(shí)現(xiàn)時(shí),必須采用隧道模式。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,59,AH的兩種模式,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,60,AH的格式,圖7.11 AH報(bào)頭格式,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,61,Next He

45、ader(下一個(gè)報(bào)頭,占8字節(jié)):識(shí)別下一個(gè)使用IP協(xié)議號(hào)的報(bào)頭,例如,Next Header值等于6時(shí),表示緊接其后的是TCP報(bào)頭。對(duì)于UDP,它的值將是17。 Length(長度,占8字節(jié)):AH報(bào)頭長度。 Security Parameters Index (SPI,安全參數(shù)索引,占32字節(jié)): 這是一個(gè)為數(shù)據(jù)報(bào)識(shí)別安全關(guān)聯(lián)的 32 位偽隨機(jī)值。其中,SPI 值0 被保留,用來表明“沒有安全關(guān)聯(lián)存在”。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,62,Sequence Number(序列號(hào),占32字節(jié)):這是一個(gè)無符號(hào)單調(diào)遞增的計(jì)數(shù)器,從1開始的32位單增序列號(hào),不允許重復(fù),唯一地標(biāo)識(shí)了每

46、一個(gè)發(fā)送數(shù)據(jù)包,為安全關(guān)聯(lián)提供反重播保護(hù)。接收端校驗(yàn)序列號(hào)為該字段值的數(shù)據(jù)包是否已經(jīng)被接收過,若是,則拒收該數(shù)據(jù)包。對(duì)于一個(gè)特定的SA,它實(shí)現(xiàn)反重傳服務(wù)。這些信息不被接收對(duì)等實(shí)體使用,但是發(fā)送方必須包含這些信息。當(dāng)建立一個(gè)SA時(shí),這個(gè)值被初始化為0。如果使用反重傳服務(wù)重傳,那么這個(gè)值決不允許重復(fù)。由于發(fā)送方并不知道接受方是否使用了反重傳功能,該字段中的值不能被重復(fù)的事實(shí)就要求終止SA,并且在傳送第23個(gè)分組之前建立一個(gè)新的SA。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,63,Authentication Data(AD,認(rèn)證數(shù)據(jù),可變長):包含完整性檢查和。接收端接收數(shù)據(jù)包后,首先執(zhí)行hash

47、計(jì)算,再與發(fā)送端所計(jì)算的該字段值比較,若兩者相等,表示數(shù)據(jù)完整,若在傳輸過程中數(shù)據(jù)遭修改,兩個(gè)計(jì)算結(jié)果不一致,則丟棄該數(shù)據(jù)包。通過這個(gè)值,通信雙方能實(shí)現(xiàn)對(duì)數(shù)據(jù)的完整性保護(hù)、分組級(jí)數(shù)據(jù)源鑒別以及通信的抗重放攻擊。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,64,認(rèn)證算法,用于計(jì)算完整性校驗(yàn)值(ICV)的認(rèn)證算法由SA指定,對(duì)于點(diǎn)到點(diǎn)通信,合適的認(rèn)證算法包括基于對(duì)稱密碼算法(如DES)或基于單向Hash函數(shù)(如MD5或SHA-1)的帶密鑰的消息認(rèn)證碼(MAC)。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,65,7.4.3 ESP(Encapsulating Security Payload)協(xié)議,ES

48、P涉及到密碼學(xué)中的核心組件加密和鑒別算法。 ESP的功能 ESP的兩種模式 ESP的格式 加密算法和認(rèn)證算法 ESP處理,ESP的功能 ESP為IP數(shù)據(jù)包提供完整性檢查、認(rèn)證和加密,可以看作是“超級(jí)AH”,因?yàn)樗峁C(jī)密性并可防止篡改。ESP服務(wù)依據(jù)建立的安全關(guān)聯(lián)(SA)是可選的。 一些限制: 完整性檢查和認(rèn)證一起進(jìn)行。 僅當(dāng)與完整性檢查和認(rèn)證一起時(shí),“重播(Replay)”保護(hù)才是可選的。 “重播”保護(hù)只能由接收方選擇。 ESP的加密服務(wù)是可選的,但如果啟用加密,則也就同時(shí)選擇了完整性檢查和認(rèn)證。因?yàn)槿绻麅H使用加密,入侵者就可能偽造包以發(fā)動(dòng)密碼分析攻擊。ESP可以單獨(dú)使用,也可以和AH結(jié)合使

49、用。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,67,ESP的兩種模式,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,68,ESP的格式 ESP協(xié)議包括ESP報(bào)頭、ESP報(bào)尾、ESP認(rèn)證報(bào)尾三個(gè)部分。,圖7.14 ESP報(bào)頭、報(bào)尾和認(rèn)證報(bào)尾,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,69,加密算法和認(rèn)證算法 ESP所采用的加密算法由SA指定。為了提高加密效率,ESP設(shè)計(jì)使用的是對(duì)稱密碼算法。由于IP包可能會(huì)失序到達(dá),因此每個(gè)IP包必須攜帶接收者進(jìn)行解密所要求的密碼同步數(shù)據(jù)(如初始化向量IV)。這個(gè)數(shù)據(jù)可以在有效負(fù)載字段中明確攜帶,也可以從包頭中推導(dǎo)出來。由于機(jī)密性是可選擇的,因此加密算法可以是“空”。

50、ESP中的認(rèn)證算法同AH的認(rèn)證算法一樣。由于認(rèn)證算法是可選的,因此認(rèn)證算法也可以是“空”。雖然加密和認(rèn)證算法都可為空,但二者不能同時(shí)為空。因?yàn)檫@樣做不僅毫無安全保證可言,而且也為系統(tǒng)帶來了無謂的負(fù)擔(dān)。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,70,ESP處理 ESP 的處理過程發(fā)生在發(fā)送時(shí)的IP分割之前以及接受時(shí)的IP重新組合之后。 發(fā)送時(shí)的處理 ESP頭定位:在傳輸模式下,ESP頭插在IP頭和上一層協(xié)議頭之間;在隧道模式下,ESP頭在整個(gè)源IP數(shù)據(jù)項(xiàng)之前。 查找:只有當(dāng)與此會(huì)話相關(guān)的有效的SA存在時(shí),才進(jìn)行ESP處理。 包加密:把數(shù)據(jù)封裝到ESP的有效負(fù)載字段,在傳輸模式下,只封裝上層協(xié)議數(shù)

51、據(jù);在隧道模式下、封裝整個(gè)原IP數(shù)據(jù)項(xiàng)。應(yīng)使用由SA指定的密鑰和加密算法對(duì)上述結(jié)果加密。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,71,接受時(shí)的處理過程 當(dāng)接收方收到一個(gè)IP數(shù)據(jù)項(xiàng)時(shí),先根據(jù)包中目的IP地址、安全協(xié)議ESP和SPI查找SA,若沒有用于此會(huì)話的SA存在,則接收者必須丟棄此包,并記入日志,否則就按SA中指定的算法進(jìn)行解密并重新構(gòu)造原IP數(shù)據(jù)項(xiàng)格式。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,72,7.4.4 IKE(Internet Key Exchange)協(xié)議,IKE主要完成兩個(gè)作用: 安全關(guān)聯(lián)的集中化管理,減少連接時(shí)間; 密鑰的生成和管理。 IKE協(xié)議是IPSec目前唯一的正式

52、確定的密鑰交換協(xié)議,它為AH和ESP提供密鑰交換支持,同時(shí)也支持其他機(jī)制,加密鑰協(xié)商。 IKE是由另外三種協(xié)議(ISAKMP、Oakley 和SKEME)混合而成的一種協(xié)議。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,73,PGPPretty Good Privacy(相當(dāng)好的保密)是由MIT的P.R.Zimmerrmann提出的,主要用于安全電子郵件,它可以對(duì)通過網(wǎng)絡(luò)進(jìn)行傳輸?shù)臄?shù)據(jù)創(chuàng)建和檢驗(yàn)數(shù)字簽名、加密、解密以及壓縮。,7.5 PGP,表7.1 PGP的功能,7.5.1鑒別,圖7.15 (a) PGP的操作過程只進(jìn)行鑒別,其中,圖7.15記號(hào)的含義為: Ks: 會(huì)話密鑰 EP: 公鑰加密 K

53、ra: 用戶A的私鑰 DP: 公鑰解密 KUa: 用戶A的公鑰 EC: 常規(guī)加密 H: 散列函數(shù) DC: 常規(guī)解密 |: 連接 Z: 用ZIP算法進(jìn)行數(shù)據(jù)壓縮 R64:用radix64轉(zhuǎn)換到ASCII格式 Z-1:解壓縮,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,76,PGP鑒別的過程 發(fā)送者產(chǎn)生消息M; 用SHA-1對(duì)M生成一個(gè)160位的散列碼H; H用發(fā)送者的私鑰加密,并與M連接; 接收者用發(fā)送者的公鑰解密并恢復(fù)散列碼H; 對(duì)消息M生成一個(gè)新的散列碼,與H比較。如果一致,則消息M被認(rèn)證,即報(bào)文作為已鑒別的報(bào)文而接受。(提供DSS/SHA-1可選替代方案和簽名與消息分離的支持。),2020/9

54、/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,77,7.5.2機(jī)密性,PGP提供的另一個(gè)基本服務(wù)是機(jī)密性,它是通過對(duì)將要傳輸?shù)膱?bào)文或者將要像文件一樣存儲(chǔ)在本地的報(bào)文進(jìn)行加密來保證的(如圖7.15(b)所示)。 圖7.15(b) PGP的操作過程只保證機(jī)密性,7.5.3鑒別與機(jī)密性,PGP可以同時(shí)提供機(jī)密性與鑒別。當(dāng)加密和認(rèn)證這兩種服務(wù)都需要時(shí),發(fā)送者先用自己的私鑰簽名,然后用會(huì)話密鑰加密,再用接收者的公鑰加密會(huì)話密鑰(如圖7.15(c)所示)。 圖7.15 (c) PGP的操作過程鑒別與機(jī)密性,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,79,7.5.4 壓縮,PGP對(duì)報(bào)文進(jìn)行壓縮,這有利于在電子郵件傳輸和文件存儲(chǔ)

55、時(shí)節(jié)省空間。但壓縮算法的放置位置比較重要,在默認(rèn)的情況下,放在簽名之后加密之前。這是因?yàn)椋?對(duì)沒有經(jīng)過壓縮的報(bào)文進(jìn)行簽名更好些。這樣,為了將來的驗(yàn)證就只需要存儲(chǔ)沒壓縮的報(bào)文和簽名。如果對(duì)壓縮文檔簽名,那么為了將來的驗(yàn)證就必須或者存儲(chǔ)壓縮過的報(bào)文、或者在需要驗(yàn)證時(shí)更新壓縮報(bào)文;,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,80,即使個(gè)人愿意在驗(yàn)證時(shí)動(dòng)態(tài)生成重新壓縮的報(bào)文,PGP的壓縮算法也存在問題。算法不是固定的,算法的不同實(shí)現(xiàn)在運(yùn)行速度和壓縮比上進(jìn)行不同的折衷,因此產(chǎn)生了不同的壓縮形式。但是,這些不同的壓縮算法是可以互操作的,因?yàn)槿魏伟姹镜乃惴ǘ伎梢哉_地解壓其他版本的輸出。如果在壓縮之后應(yīng)用散列

56、函數(shù)和簽名,將約束所有的PGP實(shí)現(xiàn)都使用同樣的壓縮算法。 在壓縮之后對(duì)報(bào)文加密可以加強(qiáng)加密的強(qiáng)度。因?yàn)閴嚎s過的報(bào)文比原始明文冗余更少,密碼分析更加困難。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,81,7.5.5 電子郵件的兼容性,當(dāng)使用PGP時(shí),至少傳輸報(bào)文的一部分需要被加密。因此,部分或全部的結(jié)果報(bào)文由任意的8bit二進(jìn)制流組成。但是,很多電子郵件系統(tǒng)只允許使用ASCII文本。為了滿足這一約束,PGP提供了將原始8位二進(jìn)制流轉(zhuǎn)換成可打印的ASCII字符的服務(wù)。 為實(shí)現(xiàn)這一目的采用的方案是Radix64轉(zhuǎn)換,每三個(gè)字節(jié)的二進(jìn)制數(shù)據(jù)為一組映射成四個(gè)ASCII字符。這種格式附加了CRC校驗(yàn)來檢測傳

57、輸錯(cuò)誤。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,82,7.5.6 分段與重組,電子郵件設(shè)施經(jīng)常受限于最大的報(bào)文長度,例如最大50kb的限制。任何長度超過這個(gè)數(shù)值的報(bào)文都必須劃分成更小的報(bào)文段,每個(gè)段單獨(dú)發(fā)送。 為了滿足這個(gè)約束,PGP自動(dòng)將太長的報(bào)文劃分成可以使用電子郵件發(fā)送的足夠小的報(bào)文段。分段是在所有其他的處理(包括Radix64轉(zhuǎn)換)完成之后才進(jìn)行的,因此會(huì)話密鑰部分和簽名部分只在第一個(gè)報(bào)文段的開始位置出現(xiàn)一次;在接收端,PGP將各段自動(dòng)重新裝配成完整的原來的分組。,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,83,7.5.7 PGP密鑰管理,PGP包含四種密鑰: 一次性會(huì)話密鑰 公開密鑰

58、 私有密鑰 基于口令短語的常規(guī)密鑰,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,84,深入研究內(nèi)容 網(wǎng)絡(luò)安全編程,網(wǎng)絡(luò)安全基礎(chǔ)編程技術(shù)主要包括6個(gè)方面: Socket編程 注冊表編程 文件系統(tǒng)編程 定時(shí)器編程 駐留程序編程 多線程編程,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,85,Socket編程,談網(wǎng)絡(luò)安全編程離開網(wǎng)絡(luò)編程就會(huì)大失其味,凡是基于網(wǎng)絡(luò)應(yīng)用的程序都離不開Socket。 Socket的意思是套接字,是計(jì)算機(jī)與計(jì)算機(jī)之間通信的接口。 使用Winsock提供的API函數(shù)是最基本的網(wǎng)絡(luò)編程技術(shù),程序proj3_11.cpp利用Socket獲得本機(jī)的IP地址和機(jī)器名。,2020/9/6,Ch7

59、-網(wǎng)絡(luò)安全協(xié)議,86,Socket編程,案例名稱:使用Socket得到IP地址 程序名稱:proj3_11.cpp #include #include void CheckIP(void) /CheckIP函數(shù),用于獲取本機(jī)IP地址 WORD wVersionRequested;/WORD類型變量,用于存放Winsock版本的值 WSADATA wsaData; char name255;/用于存放主機(jī)名 PHOSTENT hostinfo; wVersionRequested = MAKEWORD( 2, 0 ); /調(diào)用MAKEWORD()函數(shù)獲得Winsock的版本,用于加載Winsock庫 if ( WSAStartup( wVersionRequested, ,2020/9/6,Ch7-網(wǎng)絡(luò)安全協(xié)議,87,注冊表編程,注冊表的句柄可以由調(diào)用RegOpenKeyEx()和RegCreateKeyEx()函數(shù)得到的,通過函數(shù)RegQueryValueEx()可以查詢注冊表某一項(xiàng)的值 通過函數(shù)RegSetValueEx()可以設(shè)置注冊表某一項(xiàng)的值。RegCreateKeyEx()函

溫馨提示

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

評(píng)論

0/150

提交評(píng)論