計算機網絡基礎 網絡安全 夜車星繁的博客

前面好幾章都還沒有學,對這一章節的興趣比前幾節強烈,於是提前學習,做了些筆記作爲博客。每當在寫博客前的這些無足輕重不痛不癢的話時,我都在經受思緒潮水的洗禮。寫出來也就是些乾枯的文字。人的思想會隨着每天的日落而改變。。。

bugku的習題最近沒做幾道,,也該好好做做了。

網絡安全的學習筆記:

 

網絡安全

 

對稱加密與非對稱加密:

所謂對稱加密,就是加密密鑰與解密密鑰是相同的密碼體制,這種加密系統又稱爲對稱密鑰系統

對稱加密模型如下圖所示:

 

用戶A向B發送明文X,但通過加密算法E運算後,就得到密文Y。

Y=EK(X)

圖中所示的加密和解密用的密鑰K是一串祕密的字符串(或比特串)。在傳送過程中可能出現密文的截獲和篡改。

B利用解密算法D運算和解密密鑰K,解出明文X。解密算法是加密算法的逆運算。在進行解密運算時如果不使用事先約定好的密鑰就無法解出明文。

Dk(Y)=DK(EK(X))= X

 

數據加密標準 DES 屬於對稱密鑰密碼體制,DES是一種分組密碼。在加密前先對整個明文進行分組。每一個組長爲 64 位。

然後對每一個 64 位 二進制數據進行加密處理,產生一組 64 位密文數據。

最後將各組密文串接起來,即得出整個的密文。使用的密鑰爲 64 位(實際密鑰長度爲 56 位,有 8 位用於奇偶校驗)。 

DES 的保密性僅取決於對密鑰的保密,而算法是公開的。儘管人們在破譯 DES 方面取得了許多進展,但至今仍未能找到比窮舉搜索密鑰更有效的方法。

DES 是世界上第一個公認的實用密碼算法標準,它曾對密碼學的發展做出了重大貢獻。

DES之後出現了IDEA(International Data Encryption Algorithm),使用128爲密鑰,因而更不容易被攻破。

 

非對稱加密就是使用不同的加密密鑰與解密密鑰,又稱爲公鑰密碼體制

現有最著名的公鑰密碼體制是RSA 體制,它基於數論中大數分解問題的體制,由美國三位科學家 Rivest, Shamir 和 Adleman 於 1976 年提出並在 1978 年正式發表的。

在公鑰密碼體制中,加密密鑰(即公鑰) PK 是公開信息,而解密密鑰(即私鑰或祕鑰) SK 是需要保密的。

加密算法 E 和解密算法 D 也都是公開的。

雖然祕鑰 SK 是由公鑰 PK 決定的,但卻不能根據 PK計算出 SK。

 

公鑰加密模型如下:

 

發送者 A 用 B 的公鑰 PKB對明文 X 加密(E 運算)後,在接收者 B 用自己的私鑰 SKB 解密(D 運算),即可恢復出明文:

 

解密密鑰是接收者專用的祕鑰,對其他人都保密。加密密鑰是公開的,但不能用它來解密,即

 

加密和解密的運算可以對調,即

 

在計算機上可容易地產生成對的 PK 和 SK。從已知的 PK 實際上不可能推導出 SK,即從 PK 到 SK 是“計算上不可能的”。加密和解密算法都是公開的。

在公鑰密碼體制中,似乎只要每個用戶都具有其他用戶的公鑰,就可實現安全通信,其實不然,設想用戶A要欺騙用戶B,A可以向B發送一份僞造的是C發送的報文,B如何知道這個公鑰不是C的呢?

這就需要有一個值得信賴的機構——即認證中心CA (Certification Authority),來將公鑰與其對應的實體(人或機器)進行綁定(binding)。

認證中心一般由政府出資建立。每個實體都有CA發來的證書(certificate),裏面有公鑰及其擁有者的標識信息。此證書被 CA 進行了數字簽名。任何用戶都可從可信的地方獲得認證中心 CA 的公鑰,此公鑰用來驗證某個公鑰是否爲某個實體所擁有。有的大公司也提供認證中心服務。

 

數字簽名

數字簽名必須保證以下三點:

(1) 報文鑑別——接收者能夠覈實發送者對報文的簽名;

(2) 報文的完整性——發送者事後不能抵賴對報文的簽名;

(3) 不可否認——接收者不能僞造對報文的簽名。

現在已有多種實現各種數字簽名的方法。但採用公鑰算法更容易實現。 

 

爲了進行簽名,A用其私鑰SKA對報文X進行D運算。D運算本來叫做解密運算,雖然還沒有對X進行加密,但實際上沒關係,因爲D運算只是爲了得到某種不可讀的密文。A把經過D運算得到的密文傳送給B。B爲了覈實簽名,用A的公鑰進行E運算,還原出明文X。請注意,任何人用A的公鑰PKA進行E運算後都可以得出A發送的明文。可見,上圖中D運算和E運算不是爲了解密和加密,而是爲了進行簽名和核實簽名。

下面分析一下爲什麼數字簽名具有上述的三點功能:

因爲除 A 外沒有別人能具有 A 的私鑰,所以除 A 外沒有別人能產生這個密文。因此 B 相信報文 X 是 A 簽名發送的。

若 A 要抵賴曾發送報文給 B,B 可將明文和對應的密文出示給第三者。第三者很容易用 A 的公鑰去證實 A 確實發送 X 給 B。

反之,若 B 將 X 僞造成 X’,則 B 不能在第三者前出示對應的密文。這樣就證明了 B 僞造了報文。 

但是上述過程僅對報文進行了簽名,卻沒有加密。因爲截獲了密文並知道發送者身份的任何人,通過查閱手冊即可獲得發送者的公鑰,因爲能知道報文的內容。採用下圖所示的方法,就可同時實現祕密通信和數字簽名:

 

 

報文鑑別

許多報文並不需要加密但卻需要數字簽名,以便讓報文的接收者能夠鑑別報文的真僞。然而對很長的報文進行數字簽名會使計算機增加很大的負擔(需要進行很長時間的運算。當我們傳送不需要加密的報文時,應當使接收者能用很簡單的方法鑑別報文的真僞。

報文摘要MD(Message Digest)是進行報文鑑別的簡單方法。

 

A 將報文 X 經過報文摘要算法運算後得出很短的報文摘要 H。然後然後用自己的私鑰對 H 進行 D 運算,即進行數字簽名。得出已簽名的報文摘要 D(H)後,並將其追加在報文 X 後面發送給 B。

B 收到報文後首先把已簽名的D(H) 和報文 X 分離。然後再做兩件事:

(1)用A的公鑰對 D(H) 進行E運算,得出報文摘要 H 。

(2)對報文 X 進行報文摘要運算,看是否能夠得出同樣的報文摘要 H。如一樣,就能以極高的概率斷定收到的報文是 A 產生的。否則就不是。

 

僅對短得多的定長報文摘要 H 進行數字簽名要比對整個長報文進行數字簽名要簡單得多,所耗費的計算資源也小得多。

但對鑑別報文 X 來說,效果是一樣的。也就是說,報文 X 和已簽名的報文摘要 D(H) 合在一起是不可僞造的,是可檢驗的和不可否認的。

報文摘要算法就是一種散列函數。這種散列函數也叫做密碼編碼的檢驗和。報文摘要算法是防止報文被人惡意篡改。

可以很容易地計算出一個長報文 X 的報文摘要 H,但要想從報文摘要 H 反過來找到原始的報文 X,則實際上是不可能的。

若想找到任意兩個報文,使得它們具有相同的報文摘要,那麼實際上也是不可能的。

MD5(Message-Digest Algorithm 5)已獲得了廣泛的應用。它對任意長的報文進行運算,然後得出128位的MD5報文摘要代碼。

另一種標準叫做安全散列算法SHA(Secure HashAlgorithm),它和MD5相似,但碼長爲160位。SHA比MD5更安全,但計算起來也比MD5要慢些。

 

安全套接層SSL

SSL(Secure Socket Layer)爲Netscape所研發,用以保障在Internet上數據傳輸之安全,利用數據加密技術,可確保數據在網絡上之傳輸過程中不會被截取及竊聽。

SSL協議位於TCP/IP協議與各種應用層協議之間,爲數據通訊提供安全支持。SSL可對萬維網客戶與服務器之間傳送的數據進行加密和鑑別,它在雙方的聯絡階段(也就是握手階段)對將要使用的加密算法(如DES或RSA等)和雙方共享的回話密鑰進行協商,完成客戶與服務器之間的鑑別。在聯絡階段完成之後,所有傳送的數據都使用在聯絡階段商定的會話密鑰。

SSL不僅被所有常用的瀏覽器和萬維網服務器所支持,而且也是運輸層安全協議TLS(Transport Layer Security)的基礎。

 在發送方,SSL接受應用層的數據(如HTTP或IMAP報文),對數據進行加密,然後把加了密的數據送往TCP套接字。在接收方,SSL從TCP套接字讀取數據,解密後把數據交給應用層。

SSL提供一下三種服務:

(1)認證用戶和服務器,確保數據發送到正確的客戶機和服務器;

(2)加密數據以防止數據中途被竊取;

(3)維護數據的完整性,確保數據在傳輸過程中不被改變。

SSL工作原理的示意圖如下:

 

 

SSH

SSH Secure Shell 的縮寫,SSH爲建立在應用層和傳輸層基礎上的安全協議。SSH 是目前較可靠,專爲遠程登錄會話和其他網絡服務提供安全性的協議。利用 SSH 協議可以有效防止遠程管理過程中的信息泄露問題。

傳統的網絡服務程序,如:ftp、pop和telnet在本質上都是不安全的,因爲它們在網絡上用明文傳送口令和數據,別有用心的人非常容易就可以截獲這些口令和數據。而且,這些服務程序的安全驗證方式也是有其弱點的,就是很容易受到“中間人”(man-in-the-middle)這種方式的攻擊。所謂“中間人”的攻擊方式, 就是“中間人”冒充真正的服務器接收你傳給服務器的數據,然後再冒充你把數據傳給真正的服務器。服務器和你之間的數據傳送被“中間人”一轉手做了手腳之後,就會出現很嚴重的問題。通過使用SSH,可以把所有傳輸的數據進行加密,這樣“中間人”這種攻擊方式就不可能實現了,而且也能夠防止DNS欺騙和IP欺騙。使用SSH,還有一個額外的好處就是傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。SSH有很多功能,它既可以代替Telnet,又可以爲FTP、POP、甚至爲PPP提供一個安全的“通道”。

 

從客戶端來看,SSH提供兩種級別的安全驗證。

第一種級別(基於口令的安全驗證

只要你知道自己帳號和口令,就可以登錄到遠程主機。所有傳輸的數據都會被加密,但是不能保證你正在連接的服務器就是你想連接的服務器。可能會有別的服務器在冒充真正的服務器,也就是受到“中間人”這種方式的攻擊。

 

第二種級別(基於密匙的安全驗證

需要依靠密匙,也就是你必須爲自己創建一對密匙,並把公用密匙放在需要訪問的服務器上。如果你要連接到SSH服務器上,客戶端軟件就會向服務器發出請求,請求用你的密匙進行安全驗證。服務器收到請求之後,先在該服務器上你的主目錄下尋找你的公用密匙,然後把它和你發送過來的公用密匙進行比較。如果兩個密匙一致,服務器就用公用密匙加密“質詢”(challenge)並把它發送給客戶端軟件。客戶端軟件收到“質詢”之後就可以用你的私人密匙解密再把它發送給服務器。

用這種方式,你必須知道自己密匙的口令。但是,與第一種級別相比,第二種級別不需要在網絡上傳送口令。

第二種級別不僅加密所有傳送的數據,而且“中間人”這種攻擊方式也是不可能的(因爲他沒有你的私人密匙)。但是整個登錄的過程可能需要10秒。

 

SSL與SSH雖然只有一個字母的差別,但是兩者不是一個範疇,如果硬要將兩者作比較,SSH和SSL的關係可以這麼理解, SSH是用SSL協議構建的一個類似telnet的應用,即:SSH = TELNET + SSL。

 

防火牆

防火牆是由軟件、硬件構成的系統,是一種特殊編程的路由器,用來在兩個網絡之間實施接入控制策略。接入控制策略是由使用防火牆的單位自行制訂的,爲的是可以最適合本單位的需要。

防火牆內的網絡稱爲“可信的網絡”(trustednetwork),而將外部的因特網稱爲“不可信的網絡”(untrusted network)。防火牆可用來解決內聯網和外聯網的安全問題

 

 

防火牆的功能有兩個:阻止允許

“阻止”就是阻止某種類型的通信量通過防火牆(從外部網絡到內部網絡,或反過來)。

“允許”的功能與“阻止”恰好相反。

防火牆必須能夠識別通信量的各種類型。不過在大多數情況下防火牆的主要功能是“阻止”。

 

防火牆技術一般分爲兩類:

(1) 網絡級防火牆——用來防止整個網絡出現外來非法的入侵。屬於這類的有分組過濾和授權服務器。前者檢查所有流入本網絡的信息,然後拒絕不符合事先制訂好的一套準則的數據,而後者則是檢查用戶的登錄是否合法。

(2)應用級防火牆——從應用程序來進行接入控制。通常使用應用網關或代理服務器來區分各種應用。例如,可以只允許通過訪問萬維網的應用,而阻止 FTP 應用的通過。

 

分組過濾是靠查找系統管理員所設置的表格來實現的。表格列出了可接受的、或必須進行阻攔的目的站和源站,以及其他的一些通過防火牆的規則。

我們知道,TCP的端口號指出了在TCP上面的應用層服務。例如,端口號23是TELNET,端口號119是USENET,等等。如果在因特網進入防火牆的分組過濾路由器中所有目的端口號爲23的分組都進行阻攔,那麼所有外單位用戶就不能使用TELNET登錄到本單位的主機。同理,如果某公司不願意其僱員在上班時間花費大量的時間去看因特網的USENET新聞,就可將目的端口號爲119的分組阻攔住,使其無法發送到因特網。

阻攔向外發送的分組很複雜,因爲有時它們不使用標準的端口號。例如FTP常常是動態地分配端口號。阻攔UDP更困難,因爲事先不容易知道UDP想做什麼。許多分組過濾路由器乾脆將所有的UDP全部阻攔。

應用網關是從應用層的角度來檢查每一個分組。例如,一個郵件網關在檢查每一個郵件時,要根據郵件的首部或豹紋的大小,甚至報文內容(例如,有沒有某些像“導彈”、“核彈頭”等敏感詞彙)來確定該郵件能否通過防火牆。

 

 

發佈了55 篇原創文章 · 獲贊 39 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章