構建兩端點間的安全通信
阿新 • • 發佈:2018-06-30
全部 地址 成了 標準化 只需要 散列 基礎 獲取數據 郵件 網絡最根本的作用是數據傳輸通信,與現實中的通信一樣,網絡通信也不得不面對安全性問
題,尤其是網絡安全問題日益突出的今天。下面以兩個端點為例介紹相關概念:
文,也無法獲取報文的真正內容。 報文完整性:接收方接收的報文與發送方發送的報文內容一致,沒有被惡意或意外篡改。 端點鑒別:發送方與接收方都可以證實在通信過程中,它們確實是自己所聲稱的身份。 運行安全性:在面對各個潛在的網絡攻擊時,系統具有預測、抵禦這些攻擊的能力。 二字,我們通常將報文的最初形式稱為明文,而
通過加密算法加密明文報文,生成的加密報文稱為密文,該密文對於其他入侵者來說是無意
義的。在現代的眾多密碼系統中,加密技術本身是標準化的、公開發行的,任何人包括竊聽
者在內都可以獲取數據加密的方法。因此,我們需要一些秘密信息阻止竊聽者解密數據,這
些秘密信息就是秘鑰。 在上圖中,發送方使用秘鑰A 和明文作為加密算法的輸入,生成的密文作為輸出,接收方使
用秘鑰B 和密文作為解密算法的輸入,生成的明文作為輸出。當秘鑰A與秘鑰B相同且都是秘
密的,稱為對稱秘鑰系統;當秘鑰A與秘鑰B中一個是公開的,另一個是只有接收方或發送方
知道,稱為公開秘鑰系統。 根據對稱加密的工作方式,今天的對稱加密技術可以分為兩種寬泛的類型:流密碼、塊密碼
將k比特塊的明文映射為k比特的密文。塊密碼的每個塊越大,則該密碼就越安全。k 比特塊
密碼可能映射數量為 2^k。但對於較大的 k值,發送方與接收方之間就需要維護一張很大的
映射表,並且如果雙方需要更改秘鑰,就不得不重新生成該表,這幾乎不能實現。因此,塊
密碼通常使用函數模擬隨機排列表。 還存在一個問題,當傳輸長報文時,我們需要將報文切割成 k比特的塊獨立加密,但如果多
個明文塊相同,那麽它們的密文塊也將相同,這將使得入侵者可能破解密文。為了解決這個
問題,我們在密文中加入某些隨機性,使得相同明文塊產生不同的密文。Linux 中密碼存儲
也采用了相同的思想,為了避免由於相同明文密碼的密文形式相同而使得一些用戶密碼被猜
出,在計算用戶密碼的密文時會在明文秘密中加入隨機值salt
目前流行的塊密碼:DES(數據加密標準)、AES(高級加密標準)
方能否在沒有預先商定的共享秘鑰的條件下進行加密通信呢?Diffie-Hellman秘鑰交換解決
了這個問題,開創了如今的公開秘鑰系統的發展之路。而公開秘鑰系統的良好特性使得它不
僅可以用於加密,還可以用於鑒別和數字簽名。 流行的公鑰加密算法:Diffie-Hellman、RSA
公鑰,另一個是只有接收方知道的私鑰。發送方可以使用接收方的公鑰加密數據發送給接收
方,而此密文只能用接收方的私鑰解密。同時使用接收方私鑰加密的報文也可以用接收方的
公鑰解密。
給接收方,那麽應該如何鑒別發送方的身份呢?這就需要用數字簽名將發送方和報文綁定。
長度的字符串 Y。任意兩個不同的輸入報文所得到的輸出散列都不相同。即散列函數生成一
個屬於數據的"指紋"(報文摘要)。 著名的散列算法:MD5、SHA-1 在使用密碼散列函數提供完整性時,接收方與發送方之間還需要一個鑒別秘鑰,鑒別秘鑰由
接收方與發送方共享,但對於其他人是秘密的。發送方在發送數據時,將報文m與鑒別秘鑰k
一起作為密碼散列函數的輸入,而密碼散列函數的輸出稱為報文鑒別碼 MAC,發送方將報文
鑒別碼M 加在報文上,生成擴展報文,並發送給接收方。接收方使用共享的鑒別秘鑰與接收
的報文m 一起計算出報文鑒別碼,並將其與接收到的報文鑒別碼M 比較,如果兩者相等,則
確定報文未被修改,且是由發送方發送的。
數字簽名必須由某種與簽名者相關且私密的東西生成。上述的私鑰正好滿足這點,當我們使
用發送方的私鑰加密某個報文,如果接收方使用發送方的公鑰解密後得到的明文與初始明文
相同則可以判斷該報文是發送方發送的。因此,數字簽名還可以提供完整性,使得接收方在
驗證該報文未被篡改的同時驗證該報文的源。 使用加密進行數據簽名的缺點是加密、解密需要的開銷過大,因此,更有效的方法是將散列
函數引入數字簽名,發送方對報文的散列簽名,而不是對報文本身簽名。
實體綁定通常是由認證中心CA完成的,CA的職責就是使識別和發行證書合法化。CA必須具有
一定公信力。
2.在CA驗證了某實體的真實身份後,CA就會生成一個把其身份與實體公鑰綁定起來的證書,
證書包含這個公鑰和公鑰所有者全局唯一的身份標識信息。 公鑰認證的應用:IPsec、SSL
別是在報文和數據交換的基礎上,作為鑒別協議ap的一部分獨立完成。 ap1.0:發送方發送一個報文給接收方,聲稱它就是發送方。明顯缺陷是,因為其他人也可以
向接收方發送報文說它是發送方。 ap2.0:當發送方有一個眾所周知的IP地址時,接收方可以通過比較接收報文的源地址是否與
發送方眾所周知的IP地址相同來鑒別。但這也不安全,因為我們知道可以在IP數據報中填入
我們希望的任意IP地址。 ap3.0:在發送方與接收方之間共享一個秘密口令,用於身份鑒別。看起來這種方式十分安全,
但它的缺陷是如果發送方端口被竊聽,那麽該口令就不在秘密。 ap3.1:為了避免口令被入侵者獲取,我們最先想到的應該是將口令加密,這樣就可以防止入
侵者獲取口令。但此時並不能解決鑒別問題,因為入侵者可以利用回放攻擊,入侵者只需要
竊聽發送方的通信,記錄下該口令的加密版本,並向接收方發送該口令的加密版本,即可假
裝它就是真正的發送者。 ap4.0:不重數和對稱秘鑰機制的使用形成了ap4.0,ap3.1面對的問題是無法判斷發送者的活
躍狀態,在ap4.0中接收方發送給發送方一個不重數(在一個協議生存期中只使用一次的數),
發送方用它與接收方之間共享的對稱秘鑰來加密這個數,然後將加密的結果發送給接收方來
證明它的身份。 以上所述都站在滿足兩個端點之間的安全通信的部分特性的角度,下面將以安全電子郵件為
例,講述如何利用上述方法滿足兩個端點之間的安全通信的全部特性:
報文作為一個新的報文。
2.隨機選用一個會話秘鑰加密這個新的報文,並將得到的結果與使用接收方公鑰加密這個會
話秘鑰所得的結果作為發送給接方的最終的報文。
2.公開秘鑰加密效率低下
題,尤其是網絡安全問題日益突出的今天。下面以兩個端點為例介紹相關概念:
兩個端點之間的安全通信具有哪些特性:
機密性:報文內容僅有發送方和接收方可以理解,使得即使竊聽者獲取了兩端點間傳輸的報文,也無法獲取報文的真正內容。 報文完整性:接收方接收的報文與發送方發送的報文內容一致,沒有被惡意或意外篡改。 端點鑒別:發送方與接收方都可以證實在通信過程中,它們確實是自己所聲稱的身份。 運行安全性:在面對各個潛在的網絡攻擊時,系統具有預測、抵禦這些攻擊的能力。
如何使得兩個端點間的通信滿足上述特性?
在看到機密性時,最先被想到的應該是加密通過加密算法加密明文報文,生成的加密報文稱為密文,該密文對於其他入侵者來說是無意
義的。在現代的眾多密碼系統中,加密技術本身是標準化的、公開發行的,任何人包括竊聽
者在內都可以獲取數據加密的方法。因此,我們需要一些秘密信息阻止竊聽者解密數據,這
些秘密信息就是秘鑰。 在上圖中,發送方使用秘鑰A 和明文作為加密算法的輸入,生成的密文作為輸出,接收方使
用秘鑰B 和密文作為解密算法的輸入,生成的明文作為輸出。當秘鑰A與秘鑰B相同且都是秘
密的,稱為對稱秘鑰系統;當秘鑰A與秘鑰B中一個是公開的,另一個是只有接收方或發送方
知道,稱為公開秘鑰系統。 根據對稱加密的工作方式,今天的對稱加密技術可以分為兩種寬泛的類型:流密碼、塊密碼
塊密碼:
在塊密碼中將要加密的報文處理為k比特的塊,每個塊被獨立加密。塊密碼采取一對一映射,將k比特塊的明文映射為k比特的密文。塊密碼的每個塊越大,則該密碼就越安全。k 比特塊
密碼可能映射數量為 2^k。但對於較大的 k值,發送方與接收方之間就需要維護一張很大的
映射表,並且如果雙方需要更改秘鑰,就不得不重新生成該表,這幾乎不能實現。因此,塊
密碼通常使用函數模擬隨機排列表。 還存在一個問題,當傳輸長報文時,我們需要將報文切割成 k比特的塊獨立加密,但如果多
個明文塊相同,那麽它們的密文塊也將相同,這將使得入侵者可能破解密文。為了解決這個
問題,我們在密文中加入某些隨機性,使得相同明文塊產生不同的密文。Linux 中密碼存儲
也采用了相同的思想,為了避免由於相同明文密碼的密文形式相同而使得一些用戶密碼被猜
出,在計算用戶密碼的密文時會在明文秘密中加入隨機值salt
根據入侵者所擁有的信息區分三種不同的入侵形式:
唯密文攻擊:入侵者只能截取密文而不知道明文的內容 已知明文攻擊:入侵者知道部分明文與密文的匹配 選擇明文攻擊:入侵者能夠選擇某一明文並取得該明文的密文形式 對稱加密要求發送方和接收方擁有相同的秘鑰,但在網絡中兩個端點可能相隔千裏,通信雙方能否在沒有預先商定的共享秘鑰的條件下進行加密通信呢?Diffie-Hellman秘鑰交換解決
了這個問題,開創了如今的公開秘鑰系統的發展之路。而公開秘鑰系統的良好特性使得它不
僅可以用於加密,還可以用於鑒別和數字簽名。 流行的公鑰加密算法:Diffie-Hellman、RSA
公開秘鑰密碼的概念:
在發送方與接收方之間不存在共享秘鑰的情況下,接收方具有兩個秘鑰,一個是眾所周知的公鑰,另一個是只有接收方知道的私鑰。發送方可以使用接收方的公鑰加密數據發送給接收
方,而此密文只能用接收方的私鑰解密。同時使用接收方私鑰加密的報文也可以用接收方的
公鑰解密。
公開秘鑰密碼面對的問題:
由於接收方的公鑰是眾所周知的,除了發送方外其他入侵者也可以使用此公鑰加密信息發送給接收方,那麽應該如何鑒別發送方的身份呢?這就需要用數字簽名將發送方和報文綁定。
密碼散列函數:
密碼散列函數通常用於提供報文完整性。散列函數給任意輸入 X計算出一個稱為散列的固定長度的字符串 Y。任意兩個不同的輸入報文所得到的輸出散列都不相同。即散列函數生成一
個屬於數據的"指紋"(報文摘要)。 著名的散列算法:MD5、SHA-1 在使用密碼散列函數提供完整性時,接收方與發送方之間還需要一個鑒別秘鑰,鑒別秘鑰由
接收方與發送方共享,但對於其他人是秘密的。發送方在發送數據時,將報文m與鑒別秘鑰k
一起作為密碼散列函數的輸入,而密碼散列函數的輸出稱為報文鑒別碼 MAC,發送方將報文
鑒別碼M 加在報文上,生成擴展報文,並發送給接收方。接收方使用共享的鑒別秘鑰與接收
的報文m 一起計算出報文鑒別碼,並將其與接收到的報文鑒別碼M 比較,如果兩者相等,則
確定報文未被修改,且是由發送方發送的。
數字簽名:
數字簽名就是在數字領域實現證明身份的一種密碼技術,數字簽名可鑒別、不可偽造。因此數字簽名必須由某種與簽名者相關且私密的東西生成。上述的私鑰正好滿足這點,當我們使
用發送方的私鑰加密某個報文,如果接收方使用發送方的公鑰解密後得到的明文與初始明文
相同則可以判斷該報文是發送方發送的。因此,數字簽名還可以提供完整性,使得接收方在
驗證該報文未被篡改的同時驗證該報文的源。 使用加密進行數據簽名的缺點是加密、解密需要的開銷過大,因此,更有效的方法是將散列
函數引入數字簽名,發送方對報文的散列簽名,而不是對報文本身簽名。
公鑰認證:
數字簽名的一個重要應用是公鑰認證,即證實一個公鑰屬於某個特定的實體。將公鑰與特定實體綁定通常是由認證中心CA完成的,CA的職責就是使識別和發行證書合法化。CA必須具有
一定公信力。
CA的作用:
1.CA證實一個實體的真實身份,這個實體可以是一個發送方、一臺路由器等2.在CA驗證了某實體的真實身份後,CA就會生成一個把其身份與實體公鑰綁定起來的證書,
證書包含這個公鑰和公鑰所有者全局唯一的身份標識信息。 公鑰認證的應用:IPsec、SSL
端點鑒別:
端點鑒別就是一個實體經過計算機網絡向另一個實體證實其身份的過程。而網絡中的端點鑒別是在報文和數據交換的基礎上,作為鑒別協議ap的一部分獨立完成。 ap1.0:發送方發送一個報文給接收方,聲稱它就是發送方。明顯缺陷是,因為其他人也可以
向接收方發送報文說它是發送方。 ap2.0:當發送方有一個眾所周知的IP地址時,接收方可以通過比較接收報文的源地址是否與
發送方眾所周知的IP地址相同來鑒別。但這也不安全,因為我們知道可以在IP數據報中填入
我們希望的任意IP地址。 ap3.0:在發送方與接收方之間共享一個秘密口令,用於身份鑒別。看起來這種方式十分安全,
但它的缺陷是如果發送方端口被竊聽,那麽該口令就不在秘密。 ap3.1:為了避免口令被入侵者獲取,我們最先想到的應該是將口令加密,這樣就可以防止入
侵者獲取口令。但此時並不能解決鑒別問題,因為入侵者可以利用回放攻擊,入侵者只需要
竊聽發送方的通信,記錄下該口令的加密版本,並向接收方發送該口令的加密版本,即可假
裝它就是真正的發送者。 ap4.0:不重數和對稱秘鑰機制的使用形成了ap4.0,ap3.1面對的問題是無法判斷發送者的活
躍狀態,在ap4.0中接收方發送給發送方一個不重數(在一個協議生存期中只使用一次的數),
發送方用它與接收方之間共享的對稱秘鑰來加密這個數,然後將加密的結果發送給接收方來
證明它的身份。 以上所述都站在滿足兩個端點之間的安全通信的部分特性的角度,下面將以安全電子郵件為
例,講述如何利用上述方法滿足兩個端點之間的安全通信的全部特性:
安全通信報文的生成過程:
1.計算將被發送報文的報文摘要,並使用發送方的私鑰加密此摘要,將加密後的結果與初始報文作為一個新的報文。
2.隨機選用一個會話秘鑰加密這個新的報文,並將得到的結果與使用接收方公鑰加密這個會
話秘鑰所得的結果作為發送給接方的最終的報文。
為什麽使用會話秘鑰加密報文?
1.對稱秘鑰分發困難2.公開秘鑰加密效率低下
構建兩端點間的安全通信