第7章 網絡安全
文章目錄
- 第7章 網絡安全
- 7.1 網絡安全問題概述
- 7.1.1 計算機網絡面臨的安全性威脅
- 7.1.2 安全的計算機網絡
- 7.1.3 數據加密模型
- 7.2 兩類密碼體制
- 7.2.1 對稱密鑰密碼體制
- 7.2.2 公鑰密碼體制
- 7.3 鑒別
- 7.3.1 報文鑒別
- 7.3.2 實體鑒別
- 7.4 密鑰分配
- 7.4.1 對稱密鑰的分配
- 7.4.2 公鑰的分配
- 7.5 互聯網使用的安全協議
- 7.5.1 網絡層安全協議
- 7.5.2 運輸層安全協議
- 7.5.3 應用層安全協議
- 7.6 系統安全:防火墻與入侵檢測
- 7.6.1 防火墻(firewall)
- 7.6.2 入侵檢測系統
- 7.7 一些未來的發展方向
7.1 網絡安全問題概述
7.1.1 計算機網絡面臨的安全性威脅
計算機網絡的通信面臨兩大類威脅:
被動攻擊 / 截獲 / 流量分析(traffic analysis)
:是指攻擊者從網絡上竊聽他人的通信內容。攻擊者只是觀察和分析某一個協議數據單元PDU而不干擾信息流。主動攻擊
:篡改/更改報文流
: 攻擊者故意篡改網絡上傳送的報文。這里也包括徹底中斷傳送的報文,甚至是把完全偽造的報文傳送給接收方。惡意程序(rogue program)
:計算機病毒(computer virus)
,一種會“傳染”其他程序的程序,“傳染”是通過修改其他程序來把自身或自己的變種復制進去而完成的。計算機蠕蟲(computer worm)
,一種通過網絡的通信功能將自身從一個節點發送到另一個節點并自動啟動運行的程序。
通過網絡從一個電腦 “爬” 到另一個電腦,一到了新電腦,它就會 自動啟動 ,然后繼續尋找下一臺電腦去感染。特洛伊木馬(Trojan horse)
,一種程序,它執行的功能并非所聲稱的功能而是某種惡意功能。不會自己復制,它靠 偽裝和誘騙 讓你主動去安裝它。例如:下載了一個 “免費電影播放器”,結果發現它根本不能播電影,反而讓電腦變得很卡邏輯炸彈(logic bomb)
,一種當運行環境滿足某種特定條件時執行其他特殊功能的程序。如一個編輯程序,平時運行得很好,但當系統時間為13日又為星期五時,它會刪去系統中所有的文件,這種程序就是一種邏輯炸彈。后門入侵(backdoor knocking)
,是指利用系統實現中的漏洞通過網絡入侵系統。流氓軟件
,一種未經用戶允許就在用戶計算機上安裝運行并損害用戶利益的軟件,其典型特征是:強制安裝、難以卸載、瀏覽器劫持、廣告彈出、惡意收集用戶信息、惡意卸載、惡意捆綁等。
拒絕服務DoS(Denial of Service)
,指攻擊者向互聯網上的某個服務器不停地發送大量分組,使該服務器無法提供正常服務,甚至完全癱瘓。若從互聯網上的成百上千個網站集中攻擊一個網站,則稱為分布式拒絕服務DDoS(Distributed Denial of Service)
。有時也把這種攻擊稱為網絡帶寬攻擊
或連通性攻擊
。交換機中毒
:攻擊者向某個以太網交換機發送大量的偽造源 MAC 地址的幀。以太網交換機收到這樣的幀,就把這個假的源MAC地址寫入交換表中(因為交換表中沒有這個地址)。由于這種偽造的地址數量太大,因此很快就把交換表填滿了,導致以太網交換機無法正常工作。
計算機網絡通信安全的目標
- 防止析出報文內容和流量分析。
- 防止惡意程序。
- 檢測更改報文流和拒絕服務。
7.1.2 安全的計算機網絡
一個安全的計算機網絡應設法達到以下四個目標:
機密性
只有信息的發送方和接收方才能懂得所發送信息的內容,而信息的截獲者則看不懂所截獲的信息。通常可簡稱為保密。需要使用各種密碼技術。端點鑒別
安全的計算機網絡必須能夠鑒別信息的發送方和接收方的真實身份。信息的完整性
必須確認所收到的信息都是完整的,也就是信息的內容沒有被人篡改過。信息的完整性與端點鑒別往往是不可分割的。在談到“鑒別”時,有時是同時包含了端點鑒別和報文的完整性。也就是說,既鑒別發送方的身份,又鑒別報文的完整性。運行的安全性
確保計算機系統運行的安全性。訪問控制(access control)
: 對訪問網絡的權限加以控制,并規定每個用戶的訪問權限。
7.1.3 數據加密模型
一般的數據加密模型
加密和解密用的密鑰K(key)
是一串秘密的字符串(即比特串)。
密鑰通常由密鑰中心提供,需要事先約定好。
密碼編碼學(cryptography)
是密碼體制的設計學,而密碼分析學(cryptanalysis)
則是在未知密鑰的情況下從密文推演出明文或密鑰的技術。密碼編碼學與密碼分析學合起來即為密碼學(cryptology)
。
7.2 兩類密碼體制
7.2.1 對稱密鑰密碼體制
對稱密鑰密碼體制:
加密密鑰與解密密鑰都使用相同密鑰的密碼體制
數據加密標準DES: 是一種分組密碼,屬于對稱密鑰密碼體制。由IBM公司研制出。
- 核心思想:DES 的機密性僅取決于對密鑰的保密,而算法是公開的。
- 步驟:
- 在加密前,先對整個的明文進行分組。每一個組為64位長的二進制數據。
- 然后對每一個64位二進制數據進行加密處理,產生一組64位密文數據。
- 最后將各組密文串接起來,即得出整個的密文。
- 使用的密鑰占有64位(實際密鑰長度為56位,外加8位用于奇偶校驗)。
三重DES(Triple DES 或記為 3DES): 把一個64位明文用一個密鑰加密,再用另一個密鑰解密,然后再使用第一個密鑰加密
Y = D E S K 1 ( D E S K 2 ? 1 ( D E S K 1 ( X ) ) ) Y = DES_{K1}(DES^{-1}_{K2}(DES_{K1}(X))) Y=DESK1?(DESK2?1?(DESK1?(X)))
X是明文,Y是密文,K1和K2分別是第一個和第二個密鑰,DESk1(·)表示用密鑰 K1 進行 DES 加密,而 DES-1k2(·)表示用密鑰 K2 進行 DES 解密。
高級加密標準AES(Advanced Encryption Standard)
Rijndael 算法: AES是一種分組密碼,分組長度為128位。AES有三種加密標準,其密鑰分別為128位、192位和256位。
7.2.2 公鑰密碼體制
公鑰密碼體制: 使用不同的加密密鑰與解密密鑰。
-
核心思想:
加密密鑰PK(Public Key,即公鑰)
是向公眾公開的,而解密密鑰SK(Secret Key,即私鑰或密鑰)
則是需要保密的。加密算法E
和解密算法D
也都是公開的。 -
加密和解密過程有如下特點:
-
密鑰對
產生器產生出接收者B的一對密鑰: 加密密鑰PKB,和解密密鑰SKB。發送者A所用的加密密鑰
PKB,就是接收者B的公鑰
,它向公眾公開。而B所用的解密密鑰
SKB就是接收者B的私鑰
,對其他人都保密。 -
公鑰可用來加密,但卻不能用來解密,先后對X進行D運算和E運算或進行E運算和D運算,結果都是一樣的。
-
發送者A用B的公鑰PKB通過E運算對明文X加密,得出密文,發送給B。
Y = E P K B ( X ) Y = E_{PK_B}(X) Y=EPKB??(X) -
B用自己的私鑰SKB通過D運算進行解密,恢復出明文
D S K B ( Y ) = D S K B ( E P K B ( X ) ) = X D_{SK_B}(Y) = D_{SK_B}(E_{PK_B}(X)) = X DSKB??(Y)=DSKB??(EPKB??(X))=X
-
公開密鑰與對稱密鑰在使用通信信道方面有很大的不同:
在使用
對稱密鑰
時,由于雙方使用同樣的密鑰,因此在通信信道上可以進行一對一的雙向保密通信
,每一方既可用此密鑰加密明文,并發送給對方,也可接收密文,用同一密鑰對密文解密。這種保密通信僅限于持有此密鑰的雙方(如再有第三方就不保密了)。在使用
公鑰密碼體制
時,在通信信道上可以是多對一的單向保密通信
。可以有很多人同時持有B的公鑰,并各自用此公鑰對自己的報文加密后發送給B。只有B才能夠用其私鑰對收到的多個密文一一進行解密。
7.3 鑒別
鑒別的內容:
- 一是要
鑒別發信者
,即驗證通信的對方的確是自己所要通信的對象,而不是其他的冒充者。這就是實體鑒別。實體可以是發信的人,也可以是一個進程(客戶或服務器)。因此這也常稱為端點鑒別。 - 二是要
鑒別報文的完整性
,即對方所傳送的報文沒有被他人篡改過。
授權涉及的問題是: 所進行的過程是否被允許(如是否可以對某文件進行讀或寫)。
7.3.1 報文鑒別
數字簽名(原理)
-
數字簽名
-
原理:A 用其私鑰 SKA 對報文X進行 D運算得到的密文傳送給B。B為了核實名,用A的公鑰進行E運算,還原出明文X。
-
目的:并非是為了保密,而是為了進行簽名和核實簽名,即確認此明文的確是A發送的。【
數字簽名僅對報文進行了簽名,對報文本身卻未保密。
】 -
沒有其他人能夠持有A的私鑰 SKA,發送者事后不能抵賴對報文的簽名——不可否認。。
-
-
可保證機密性的數字簽名:
-
在理論上是正確的,但很難用于現實生活中
-
原理:
- 用A的私鑰對明文X進行簽名,再用B的公鑰對此簽名進行加密 => 密文;
- 用B的私鑰對此密文進行解密,再用A的公鑰對解密后的內容進行核實簽名 => 明文
-
密碼散列函數
散列函數
: 又稱為雜湊函數,或哈希函數密碼散列函數H(X)
:- 特點:
- 散列函數的輸出 H(X)又稱為散列值 / 散列。散列函數的輸入報文X的長度不受限制,但計算出的結果 H(X)的長度則應是較短的和固定的。相同的輸入必定得出相同的輸出
- 散列函數的輸入和輸出的關系是多對一的,必然會出現不同輸入卻產生相同輸出的碰撞現象。精心挑選的密碼散列函數應當非常不易發生碰撞,即應具有很好的抗碰撞性。
- 若給出散列值H(X),則無人能找出輸入報文X。也就是說,散列函數是一種單向函數(one-way function),即逆向變換是不可能的
- 散列函數輸出的每一個比特,都與輸入的每一個比特有關:哪怕僅改動輸入的一個比特,輸出也會相差極大。
- MD5
- MD就是Message Digest 的縮寫,意思是報文摘要
- MD5 算法的大致過程如下:
- 先把任意長的報文按模 264計算其余數(64位),追加在報文的后面。
- 在報文和余數之間填充1~512位,使得填充后的總長度是512的整數倍。填充的首位是1,后面都是0。
- 把追加和填充后的報文分割為許多512位的數據塊,每個512位的報文數據再分成4個128位的數據塊依次送到不同的散列函數進行4輪計算。每一輪又都按32位的小數據塊進行復雜的運算。一直到最后計算出MD5報文摘要代碼。
- MD5被SHA所取代
- SHA-1
- 安全散列算法 SHA(Secure Hash Algorithm)
- 算法:
- 和 MD5 相似,但其散列值的長度為160位(比MD5的128位多了25%)。
- 現在SHA-1已被另外的兩個版本 SHA-2 和 SHA-3 所替代。
- 特點:
報文鑒別碼 / 數字簽名 / 數字指紋
報文鑒別碼MAC(Message Authentication Code)
:A把雙方共享的密鑰K(K就是一串不太長的字符串)拼接到報文X后,進行散列運算。散列運算得出的結果為固定長度的H(X+K)即為MAC。
-
原理 - 雙方共享的密鑰K:
-
發送端
:- A把雙方共享的密鑰K(K就是一串不太長的字符串)拼接到報文X后,進行散列運算得到MAC,
- A把MAC拼接在報文X后面,得到擴展的報文發送給B。【共享密鑰K并沒有出現在網上傳送的擴展的報文中。】
-
接收端
:- B收到擴展的報文后,把報文鑒別碼MAC與報文X進行分離。
- B再用同樣的密鑰K與報文X拼接,進行散列運算,把得出的結果 H(X+K)與分離出的報文鑒別碼 MAC進行比較。
相等,就可確認收到的報文X的確是A發送的。
-
-
原理 - 采用公鑰系統:
發送端
- A對報文X進行散列運算,得出固定長度的散列H(X)。
- 用自己的私鑰對 H(X)進行D運算(也可以說成是用私鑰進行加密),得出已簽名的但非固定長度的報文鑒別碼MAC。
- A 把MAC拼接在報文X后面,構成擴展的報文發送給 B。
接收端
- B收到擴展的報文后,先進行報文分離。
- 分離后,B對報文X進行散列函數運算,
- 同時用A的公鑰對分離出的已簽名的報文鑒別碼MAC進行E運算(也可以說成是用公鑰進行解密)。
最后對這兩個運算結果H(X)進行比較。如相等,就說明一切正確。
7.3.2 實體鑒別
實體鑒別和報文鑒別區別:
- 報文鑒別是對每一個收到的報文都要鑒別報文的發送者,
- 實體鑒別是在系統接入的全部持續時間內對和自己通信的對方實體只需驗證一次。
簡單實體鑒別過程
- 步驟:
- A向B發送報文,包含自己的身份(A)和口令,并用雙方共享的對稱密鑰KAB加密。
- B收到報文后,用KAB解密,確認A的身份。
- 問題:
重放攻擊(Replay Attack)
:入侵者C截獲A的加密報文并直接發送給B,冒充A。IP欺騙
:C還可能截獲A的IP地址,把A的IP地址冒充為自己的IP地址。
使用不重數解決重放攻擊
不重數(Nonce)
:一個不重復使用的大隨機數,用于區分新請求和重放請求。- 優點:每次會話使用不同的不重數,防止C重放攻擊。
?
公鑰密碼體制中的實體鑒別
可以對不重數進行簽名鑒別
。
-
步驟:
- B用自己的私鑰對不重數RA簽名,并發送給A。
- A用B的公鑰核實簽名,確認通信對方是B。
- A用自己的私鑰對不重數RB簽名,發送給B。
- B用A的公鑰核實簽名,確認A的身份。
-
問題:
公鑰欺騙
:C可能冒充A的公鑰,欺騙B。中間人攻擊(Man-in-the-Middle Attack)
—— A和B以為在進行保密通信,但C已截獲并解密數據。
7.4 密鑰分配
密鑰管理
包括:密鑰的產生、分配、注入、驗證和使用。本節只討論密鑰的分配。
現采用網內分配方式
,即對密鑰自動分配。
7.4.1 對稱密鑰的分配
密鑰分配中心KDC(Key Distribution Center)分配密鑰
對稱密鑰分配協議 - Kerberos V5
Kerberos使用比 DES更加安全的高級加密標準 AES 進行加密
Kerberos要求所有使用Kerberos的主機必須在時鐘上進行“松散的”同步。【所謂“松散的”同步是要求所有主機的時鐘誤差不能太大
7.4.2 公鑰的分配
數字證書
- 定義:數字證書(Digital Certificate)是對公鑰與其對應實體(人或機器)進行綁定的證明,也稱公鑰證書。
- 作用:
- 確保公鑰的真實性。
- 證明公鑰與實體的對應關系。
- 簽發機構:認證中心 CA(Certification Authority),由政府或知名公司建立,具有公信力。
數字證書的構成
- 主要內容:
- 公鑰及其擁有者的標識信息(如姓名、地址、電子郵件、IP地址等)。
- CA的數字簽名:CA對證書進行散列運算,再用CA的私鑰對散列值簽名。
- 已簽名的數字證書的產生過程
- 認證中心CA把B的未簽名的證書進行散列函數運算,
- 再用CA的私鑰對散列值進行D運算(也就是對散列值進行簽名)。這樣就得到了CA的數字簽名。
- 把CA的數字簽名和未簽名的B的證書放在一起,就最后構成了已簽名的B的數字證書
- 特點:
- 公開、不需要加密。
- 無法偽造,可通過CA的公鑰驗證真偽。
數字證書的驗證過程
- 使用CA的公鑰對證書中CA的簽名進行解密,得到一個數值。
- 對證書內容(除去CA簽名的部分)進行散列運算,得到另一個數值。
- 比較兩個數值,若一致,證書為真。
X.509 標準規定了一個數字證書必須包括以下這些重要字段:
- X.509的版本
- 數字證書名稱及序列號
- 本數字證書所使用的簽名算法
- 數字證書簽發者的唯一標識符
- 數字證書的有效期(有效期開始到結束的日期范圍)
- 主體名(或主題名,公鑰和數字證書擁有者的唯一標識符)
- 公鑰(數字證書擁有者的公鑰和使用算法的標識符,對應的私鑰由證書擁有者保存)
多級認證系統
- 樹狀結構:
根CA(Root CA)
:最高級別的認證中心,公鑰公開,無條件信任。中間CA(Intermediate CA)
:由根CA簽發證書,負責為用戶簽發證書。用戶
:證書鏈的末端。
- 信任鏈與證書鏈:
信任鏈
:從根CA到用戶的鏈接,表示認證路徑上的所有CA均可信。證書鏈
:通過證書中的簽發者信息,逐級驗證證書的真實性。
- 證書鏈驗證舉例:
- 根CA簽發中間CA證書,用根CA的私鑰簽名。
- 中間CA簽發用戶證書,用中間CA的私鑰簽名。
- 用戶使用中間CA的公鑰驗證證書。
證書撤銷
- 原因:私鑰被盜或遺失。
- 處理措施:
- 用戶及時報告上級CA。
- CA發布 證書撤銷名單(CRL),并用CA的私鑰簽名,定期更新。
7.5 互聯網使用的安全協議
7.5.1 網絡層安全協議
IPsec 協議族(IP security)
定義:不是單一的協議,而是包含了一個通用框架和若干加密算法的協議族。IPsec支持IPv4和IPv6
組成:
-
IP安全數據報格式的兩個協議
:鑒別首部 AH
(Authentication Header)協議封裝安全有效載荷 ESP
(Encapsulation Security Payload)協議。
AH 協議提供源點鑒別和數據完整性,但不能保密。
ESP協議提供源點鑒別、數據完整性和保密。
AH協議的功能都已包含在ESP協議中,因此使用ESP協議就可以不使用 AH 協議。
IP安全數據報
:使用 ESP 或 AH 協議的 IP 數據報稱為 IP 安全數據報(或IPsec 數據報)“安全數據報”
:數據報的數據部分是經過加密的,并能夠被鑒別的。通常把數據報的數據部分稱為數據報的有效載荷(payload)。IP安全數據報工作方式:
運輸方式(transport mode)
。在整個運輸層報文段
的前后分別添加若干控制信息,再加上IP 首部,構成IP 安全數據報。隧道方式(tunnel mode)
。在原始的IP 數據報
的前后分別添加若干控制信息,再加上新的IP 首部,構成IP 安全數據報。
-
有關
加密算法的三個協議
。 -
互聯網密鑰交換 IKE
(Internet Key Exchange)協議 —— 為IP安全數據報創建安全關聯SA。
安全關聯SA (Security Association)
定義:在源實體和目的實體之間必須創建一條網絡層的邏輯連接——單向連接。
SA 的狀態信息應包括的項目
:
- 一個32位的連接標識符,稱為
安全參數索引SPI(Security Parameter Index)
。 - 安全關聯 SA 的源點和終點的 IP 地址(路由器 R1 和 R2 的 IP 地址 / 路由器 R1 和 H2 的 IP 地址)。
- 所使用的加密類型(例如,DES或AES)。
- 加密的密鑰。
- 完整性檢查的類型(例如,使用報文摘要 MDS或SHA-1的報文鑒別碼 MAC)。
- 鑒別使用的密鑰。
IP 安全數據報的格式
“原始的IP 首部”:
是用**主機 H1 和 主機H2**的IP 地址分別作為源地址和目的地址,
IP 安全數據報的“新的 IP 首部”:
- 是使用 路由器 R1和 路由器R2 的 IP 地址分別作為IP安全數據報的源地址和目的地址
- 或者是使用 路由器R1 和 主機H2 的IP地址分別作為IP安全數據報的源地址和目的地址。
IPsec 的其他構件
安全關聯數據庫SAD(Security Association Database)
:所有需要運行IPsec 的站點都必須有 SAD。
- 當主機要發送 IP安全數據報時,就要在SAD中查找相應的SA,以便獲得必要的信息,來對該IP安全數據報實施安全保護。
- 當主機要接收IP安全數據報時,也要在SAD中查找相應的SA,以便獲得信息來檢查該分組的安全性。
安全策略數據庫 SPD(Security Policy Database)
:SPD 指明什么樣的數據報需要進行 IPsec 處理。
SPD 指出應當做什么(使用IP安全數據報還是不使用),而 SAD 則指出,如果需要使用IP安全數據報,應當怎樣做(使用哪一個SA)。
互聯網密鑰交換IKE
:創建SAD,需要使用自動生成的機制,即使用互聯網密鑰交換IKE(Internet Key Exchange)協議。IKE 的用途就是為IP 安全數據報創建安全關聯SA。IKEv2是新的版本。
IKEv2 以另外三個協議為基礎:
Oakley
–是個密鑰生成協議。安全密鑰交換機制 SKEME(Secure Key Exchange MEchanism)
– 是用于密鑰交換的協議。它利用公鑰加密來實現密鑰交換協議中的實體鑒別。互聯網安全關聯和密鑰管理協議 ISAKMP (Internet Secure Association and Key Management Protocol)
– 用于實現IKE中定義的密鑰交換,使IKE的交換能夠以標準化、格式化的報文創建安全關聯 SA。
7.5.2 運輸層安全協議
曾經廣泛使用的運輸層安全協議有兩個,即:(1)安全套接字層 SSL
(Secure Socket Layer)。(2)運輸層安全 TLS
(Transport Layer Security)。
協議 SSL 2.0/3.0均已被廢棄不用了,但經常把“SSL/TLS”視為TLS的同義詞。因為協議TLS 本來就源于SSL(但并不兼容),而現在舊協議 SSL 被更新為新協議 TLS。
特點:
- 作用在端系統
應用層
和運輸層
之間
,在TCP之上建立起一個安全通道,為通過 TCP 傳輸的應用層數據提供安全保障。 - 應用層使用協議TLS最多的就是HTTP,但并非僅限于HTTP。因為協議TLS是對TCP加密,因此任何在 TCP之上運行的應用程序都可以使用協議TLS。
- 當不需要運輸層安全協議時,HTTP 就直接使用 TCP連接,這時協議 TLS 不起作用。
提供安全服務的 HTTP 協議
在 http 后面加上的s代表security,表明是使用 HTTPS
TCP的HTTPS端口號是443,而不是HTTP 使用的端口號80
TLS鑒別功能:
-
TLS 的雙向鑒別 vs 單向鑒別
- 雙向鑒別:客戶端(瀏覽器)和服務器相互驗證身份(需雙方持有證書,如企業內網)。
- 單向鑒別:僅客戶端驗證服務器身份(普遍用于互聯網,如 HTTPS)。
- 目標:確保瀏覽器訪問的服務器是安全和可信的(例如防止釣魚網站)。
-
單向鑒別的兩個前提
- 服務器需證明自身可信:持有有效的 CA 頒發的證書。
- 客戶端需具備驗證能力:操作系統或瀏覽器內置可信 CA 的根證書。
-
關鍵流程詳解
-
服務器證書的信任鏈
- 服務器 B 的證書由 CA 頒發,形式可能是:
- 直接由根 CA 簽發(如
B.crt
←RootCA.crt
)。 - 由中間 CA 簽發(如
B.crt
←IntermediateCA.crt
←RootCA.crt
)。
- 直接由根 CA 簽發(如
- 證書驗證邏輯:
- 瀏覽器驗證服務器證書的簽名鏈,直到找到信任的根證書。
- 服務器 B 的證書由 CA 頒發,形式可能是:
-
CA 根證書的存儲與管理
- 預置根證書:操作系統(如 Windows、macOS)或瀏覽器(如 Chrome、Firefox)內置主流 CA(如 DigiCert、Let’s Encrypt)的根證書。
- 根證書包含:
- CA 的公鑰(
PK_CA
)。 - CA 的自簽名(用
SK_CA
私鑰簽名,防篡改)。
- CA 的公鑰(
- 根證書包含:
- 自動驗證:瀏覽器通過根證書的公鑰逐級驗證服務器證書的簽名。
- 預置根證書:操作系統(如 Windows、macOS)或瀏覽器(如 Chrome、Firefox)內置主流 CA(如 DigiCert、Let’s Encrypt)的根證書。
實際驗證步驟(以訪問
https://example.com
為例)- Step 1:服務器 B 發送證書
example.com.crt
給瀏覽器 A。 - Step 2:瀏覽器檢查證書的簽發者(如
IntermediateCA
)。 - Step 3:瀏覽器在操作系統的根證書庫中找到對應的根 CA 證書(如
RootCA.crt
)。 - Step 4:
- 瀏覽器先檢查“網站的證書”是不是由“中間CA”簽發的:
- 用
IntermediateCA
的公鑰(PK_ICA)解密example.com.crt
的簽名,如果能解開,說明證書確實是IntermediateCA
發的。
- 用
- 瀏覽器再檢查“中間CA”的證書是不是由“根CA”簽發的:
- 用
RootCA
的公鑰(PK_CA)解密IntermediateCA.crt
的簽名,如果能解開,說明IntermediateCA
是合法的。
- 用
- 瀏覽器先檢查“網站的證書”是不是由“中間CA”簽發的:
- Step 5:若所有簽名驗證通過,且證書未過期/未吊銷,則判定服務器可信。
瀏覽器信任鏈驗證過程: +-------------------+ +-----------------------------+ +---------------------------------------------------------+ | Root CA Cert | ←-----| Intermediate CA | ←-----| Server B Cert | | (預置在系統中) | | Cert | | (example.com) - example.com.crt | | PK_CA + 自簽名 | | PK_ICA + RootCA簽 | | 網站的公鑰--PK_B + 證書的簽發者--ICA簽 | +-------------------+ +-----------------------------+ +-----------------------------------------------------------+
-
TLS 建立安全會話的工作原理
在客戶與服務器雙方已經建立了TCP連接后,就可開始執行協議TLS。主要有兩個階段,即握手階段
和會話階段
-
握手階段 - 使用握手協議
目的:
- 驗證服務器是安全可信的
- 生成在會話階段所需的共享密鑰
步驟:
-
協商加密算法
- ① 客戶A向服務器B發送自己選定的加密算法(包括密鑰交換算法)。
- ② 服務器 B從中確認自己所支持的算法,同時把自己的CA 數字證書發送給 A。
最新的 TLS 1.3 版本把陳舊的很多種算法統統取消,只留下幾種最安全的算法。
客戶猜測服務器可能愿意使用什么加密算法,把自己選定的加密算法直接發送給服務器,讓服務器來確認。縮短“協商”時間
在 TLS 1.3 中使用了更加安全的
橢圓曲線密碼 ECC(Elliptic Curve Cryptography)
與AES。 -
服務器鑒別
- ③客戶A用數字證書中CA的公鑰對數字證書進行驗證鑒別。
-
生成主密鑰
- ④客戶 A按照雙方確定的密鑰交換算法生成主密鑰 MS(Master Secret)。
- ⑤客戶 A 用 B的公鑰 PKB對主密鑰 MS 加密,得出加密的主密鑰 PKB(MS),發送給服務器B。
-
⑥ 服務器B用自己的私鑰把主密鑰解密出來: SKB(PKB(MS))= MS。客戶 A 和服務器 B都有了為數據傳輸的共同的主密鑰 MS。
-
⑦+⑧:主密鑰被分割成4個不同的密鑰——生成會話密鑰。
在這以后,每一方都擁有這樣4個密鑰(這些都是對稱密鑰,即加密和解密用的是同一個密鑰):
- 客戶A發送數據時使用的會話密鑰KA
- 客戶A發送數據時使用的MAC密鑰MA
- 服務器B發送數據時使用的會話密鑰KB
- 服務器B發送數據時使用的MAC密鑰MB
-
會話階段 - 使用記錄協議
客戶或服務器在發送數據時,都把長的數據劃分為較小的數據塊,叫作
記錄(record)
。然后對每一個記錄進行鑒別運算和加密運算。AEAD(Authenticated Encryption with Associated Data,帶關聯數據的鑒別加密):
客戶A:
-
當客戶A向服務器B發送一個明文記錄時,客戶A先把
MAC密鑰
MA和該記錄當前的序號
一起拼接在明文記錄之后
,然后進行散列運算
,得出MAC
。MAC = 散列運算(明文 + MA + 序號)
TLS的記錄協議對每一個記錄按發送順序賦予序號,把每一方發送的第個記錄作為0號記錄。發送下一個記錄時序號就加1,但序號最大值不得超過264-1,且不允許序號繞回。 -
再把
得出的 MAC
和明文記錄
拼接
起來,用會話密鑰
KA進行加密
,發送給服務器B。KA(明文 + MAC)服務器B:
-
B使用
同樣的會話密鑰
KA進行解密
,然后分離出明文記錄和 MAC。 -
B再把
同樣的MAC 密鑰
MA 和該記錄應有的序號
一起拼接在明文記錄之后
,進行散列運算
,看得出的結果與前面得出的 MAC值是否一致,以鑒別收到的明文記錄的完整性(內容和順序均無誤)。
客戶A所發送的加密的記錄的前面,還必須添加三個不加密的字段:
類型 Content Type:指明所傳送的記錄出握手階段的報文,還是應用程序傳送的報文,或最后要關閉 TLS 連接的報文
版本 Protocol Version :TLS版本
長度 Length:2 字節,16 位——明確告訴接收方當前 TLS 記錄的實際數據載荷(Payload)有多長。
--------------------------以上不加密,以下加密--------------------------
明文記錄 Payload(數據載荷):加密
報文鑒別碼 MAC:加密
-
握手階段,需要補充一些措施
-
在客戶A向服務器B
發送加密算法時,
還要向服務器 B
發送客戶的不重數。服務器B從中確認自己所支持的算法,同時把自己的
CA數字證書和服務器的不重數
發送給客戶A。一個僅使用一次的不重數,其目的是為了防止“重放攻擊”
-
生成預主密鑰
:- 客戶A驗證了服務器B的數字證書后,生成為下一步生成主密鑰使用的預主密鑰PMS(Pre-Master Secret),并用B的公鑰PKB 對預主密鑰PMS 加密,把加密的預主密鑰 PKB(PMS)發送給服務器 B。
- 服務器B用其私鑰 SKB進行解密,得出預主密鑰 PMS。客戶A和服務器B都擁有了為后面的數據傳輸使用的共同的預主密鑰PMS。
-
生成主密鑰
:- 客戶A和服務器B各自使用同樣的(已商定的)算法,使用
預主密鑰PMS
以及客戶的不重數
和服務器的不重數
,生成主密鑰MS
。然后再將其劃分為4個密鑰
。
- 客戶A和服務器B各自使用同樣的(已商定的)算法,使用
-
客戶A向服務器B發送的全部握手階段報文的MAC ? 服務器B向客戶A發送的全部握手階段報文的MAC
全部握手階段報文的MAC:
在A向B發送加密的預主密鑰之前的握手信息是沒有加密的明文,因此可能受到入侵者的篡改
客戶
和服務器
各自獨立 把【處于握手階段的
】【客戶發送加密的預主密鑰給服務器之前的
】【所有
】報文,拼接計算出來一個散列值MAC , 然后進行比較,相同則沒有受到入侵者的篡改,否則A或B就可以立即中止當前的連接。
TLS的截斷攻擊(truncation attack)
截斷攻擊: 在A和B正在進行會話時,入侵者突然發送 TCP 的 FIN 報文段來關閉 TCP 連接。
TLS的解決辦法:在關閉 TLS 連接之前,A或B應當先發送關閉 TLS 的記錄(close_notify
)
版本 | 行為要求 | 安全風險 | 最佳實踐建議 |
---|---|---|---|
TLS 1.2 | 必須雙向發送 | 若跳過 close_notify ,可能被中間人截斷數據包 | 嚴格雙向關閉(先發 close_notify ,再關 TCP) |
TLS 1.3 | 允許單方關閉 | 因密鑰獨立和1-RTT優化,截斷風險降低但仍存在 | 高安全場景建議雙向關閉(兼容性更強) |
7.5.3 應用層安全協議
1. 電子郵件安全的特殊性
- 無會話連接:郵件發送是單向、異步的,無持續會話建立(對比IPSec/SSL的雙向會話)。
- 隱私風險:郵件經多跳路由器中轉,任意中間節點可讀取明文(隱私性依賴加密協議)。
2.電子郵件安全協議 PGP (Pretty Good Privacy)
工作流程:
-
發件人A:
-
用
A的私鑰
SKA對明文郵件X
進行簽名
。把簽名拼接在明文郵件X后面
。 -
利用
隨機數
生成一次性密鑰K
(共享的對稱密鑰)。 -
用A生成的
一次性密鑰K
對已簽名的郵件加密
。 -
用
B的公鑰
PKB對A生成的一次性密鑰K進行加密
-
把
已加密的一次性密鑰
和已加密的簽名郵件
,拼接
在一起發送
給B。
-
-
收件人B:
- 把已加密的一次性密鑰和已加密的簽名報文分離開。
- 用
B私鑰
SKB解出一次性密鑰K
(這是對稱密鑰,加密和解密都需要各使用一次)。 - 用導出的
一次性密鑰K
對加密的簽名郵件
進行解密
,分離出明文郵件X和A的數字簽名。 - 用B手中的
A的公鑰
PKA對A的數字簽名
進行解密
。然后即可接著驗證郵件的完整性。
A有三個密鑰:自己的私鑰SKA,B的公鑰 PKB和自己生成的一次性密鑰K。
B有兩個密鑰:自己的私鑰SKB和A的公鑰 PKA。
7.6 系統安全:防火墻與入侵檢測
7.6.1 防火墻(firewall)
防火墻(firewall) 作為一種訪問控制技術,通過嚴格控制進出網絡邊界的分組,禁止任何不必要的通信,從而減少潛在入侵的發生,盡可能降低這類安全威脅所帶來的安全風險。
- 本質:一種特殊編程的路由器/硬件/軟件,
部署在網絡邊界
(如內部網絡與互聯網之間)。 - 核心功能:通過**
訪問控制策略
**(ACL)嚴格過濾進出網絡的數據包,阻止非授權通信。 - 設計原則:
- 默認拒絕(Deny-by-default):僅允許顯式定義的流量通過。
- 最小權限原則:只開放必要的端口和服務。
- 防火墻的信任模型
可信網絡(Trusted Network)
:防火墻內部的網絡(如企業內網),默認受保護。不可信網絡(Untrusted Network)
:防火墻外部的網絡(如互聯網),默認不可信。
-
防火墻技術一般分為以下兩類:
-
分組過濾路由器(Packet Filtering Router
)-
工作原理
-
基于網絡層(IP地址)和傳輸層(端口、協議類型)首部信息過濾數據包。
-
規則示例:
- 攔截端口 23(TELNET) 的==入分組== → 禁止外部登錄。
- 攔截端口 119(USENET 新聞) 的==出分組== → 限制內部訪問互聯網。
-
分類
- 無狀態分組過濾:獨立處理每個分組,不考慮連接狀態。
- 有狀態分組過濾:跟蹤連接狀態(如TCP會話),動態允許響應流量(如臨時端口響應)。
-
-
優缺點
- 優點:簡單高效,對用戶透明。
- 缺點:無法過濾應用層內容(如HTTP請求內容)。不支持基于用戶身份的高級控制。
- 優點:簡單高效,對用戶透明。
-
-
應用網關(Application Gateway / Proxy Server)
-
工作原理
- 在應用層中繼報文,深度檢查應用數據(如HTTP頭、郵件內容)。
- 流程:
- 客戶端向應用網關發送請求。
- 網關拆解報文并驗證合法性(如用戶ID、關鍵詞過濾)。
- 合法則轉發至服務器,否則丟棄。
-
特點
- 專用性:每種應用需獨立網關(如HTTP代理、SMTP代理)。
- 高開銷:應用層解析和處理導致性能負擔。
- 非透明:需客戶端配置網關地址。
-
-
7.6.2 入侵檢測系統
入侵檢測系統IDS(Intrusion Detection System) 系統防御的第二道防線,監測并報警潛在入侵行為。
作用:防火墻無法完全阻止入侵,IDS(入侵檢測系統)用于在入侵發生但未造成重大危害前檢測并響應。
工作原理:對網絡分組進行深度檢查,發現可疑行為時告警或阻斷(通常不自動阻斷,因誤報率高)。
檢測場景:網絡映射、端口掃描、DoS 攻擊、蠕蟲和病毒、系統漏洞攻擊等
入侵檢測方法分類:一般可以分為基于特征的入侵檢測
和基于異常的入侵檢測
兩種
基于特征的IDS
維護一個所有已知攻擊標志性特征的數據庫。當發現有與某種攻擊特征匹配的分組或分組序列時,則認為可能檢測到某種入侵行為。這些特征和規則通常由網絡安全專家生成,機構的網絡管理員定制并將其加入到數據庫中。基于異常的IDS
通過觀察正常運行的網絡流量,學習正常流量的統計特性和規律,當檢測到網絡中流量的某種統計規律不符合正常情況時,則認為可能發生了入侵行為。
IDS的局限性
漏報(False Negative)
- 未檢測到真實攻擊,導致安全假象。
- 改進方式:調低檢測閾值,但會增加誤報。
誤報(False Positive)
- 將正常流量誤判為攻擊,產生大量無效警報,可能使管理員忽視真實威脅。
IDS(入侵檢測系統)和 防火墻(Firewall)的主要對比對比
對比項 | 入侵檢測系統 (IDS) | 防火墻 (Firewall) |
---|---|---|
主要功能 | ? 檢測攻擊行為(如惡意流量、漏洞利用) ? 被動告警,不直接阻止流量 | ? 阻止未經授權的訪問 ? 主動過濾(允許/拒絕流量) |
工作方式 | 監控 & 分析(基于協議分析、簽名檢測、異常行為) | 訪問控制(基于規則:IP、端口、協議) |
部署位置 | 💡 旁路部署(鏡像端口或網絡 TAP) 💡 不干擾網絡流量 | 💡 串接部署(網關、網絡邊界) 💡 直接影響流量 |
響應方式 | 🚨 告警(日志、郵件、SIEM 集成) | ? 直接攔截(丟棄/拒絕數據包) |
防御層次 | 第二道防線(檢測已進入網絡的攻擊) | 第一道防線(防止未授權訪問) |
檢測能力 | 基于簽名 + 異常檢測(如 0-day 攻擊檢測) | 基于靜態規則(僅阻止已知威脅) |
延遲影響 | ? 無延遲(旁路模式) | ? 可能增加延遲(需實時過濾) |
適用場景 | 高級威脅檢測(APT、內部攻擊) | 邊界防護(DDoS、端口掃描、未經授權訪問) |
聯動 | 🔄 可發送告警給防火墻(如自動封鎖 IP) | 🏗? 依賴 IDS 提供高級威脅情報 |
7.7 一些未來的發展方向
- 橢圓曲線密碼ECC
- 移動安全(Mobile Security) 移動通信帶來的廣泛應用(如移動支付,Mobile Payment)
- 量子密碼(Quantum Cryptography)
- 商密九號算法SM9
參考教材:
計算機網絡(第8版) (謝希仁) (Z-Library).pdf