IPSec協議


IPSec協議:IPsec將IP數據包的內容先加密再傳輸,即便中途被截獲,由於缺乏解密數據包所必要的密鑰,攻擊者也無法獲取里面的內容。 

 

傳輸模式和隧道模式:IPsec對數據進行加密的方式有兩種:傳輸模式和隧道模式。傳輸模式只是對IP協議的數據部分(payload)進行了加密,而隧道模式則是對整個IP數據包進行加密,就好像整個IP數據包在一個安全的隧道里傳輸一樣 

 

ESP:Encapsulating Security Payloads,封裝安全載荷協議,IPsec所支持的兩類協議中的一種。該協議能夠在數據的傳輸過程中對數據進行完整性度量,來源認證以及加密,也可以防止回放攻擊。另一種協議是AH(Authentication
Headers)認證頭協議

SA:SecurityAssociations,安全關聯。SA是IPsec的重要概念,可以理解為被IPsec保護的某個連接的唯一標示。SA是單向的,即在一次安全的通信中,通信的兩個方向(發送和接收)各需要創建一個SA。一個SA會包含很多的信息,而所有的SA都被存放在一個數據庫中,稱為SAD。 

 

SD: Security Associations Database,安全關聯數據庫。每一個SA在SAD中都會有一個與之對應的條目
。一個SAD條目包含的內容有:順序號計數器,順序號溢出計數器,防回放窗口,SA有效期,AH協議中所使用的算法以及密鑰,ESP協議用於認證以及完整性度量的算法,ESP協議用於加密數據的算法以及密鑰,IPsec運行的模式以及兩個通信設備間的傳送數據包大小的最大上限。

通常一個SA可以由目的地址,IPsec所采用的協議(AH或ESP)和SPI來唯一確定。

SPI: Security Parameter Index,安全參數索引。用於將收到的IPsec數據包與其對應的SA
進行關聯。 

 

IPsec AH和ESP協議下報文封裝后的結構:(注意:省略了mac部分)

 

IPsec ESP報文(傳輸模式)

 

 

裝包過程:

1、在原IP報⽂文(包含IP、IP
Datagram三部分)的末尾添加尾部(ESP Trailer)信息,
! 尾部包含三部分。由所選加密算法可能是塊加密,那 么當最后⼀一塊⻓長度不夠時就需要進⾏行填充(padding),附上填充⻓長
度(Pad length)⽅方便解包時順利找出⽤用來填充的那⼀一段數據。⽽而Next header則⽤用來標明被加密的數據報⽂文的類型,例如TCP

2、將IP Datagram部分以及第1步得到的ESP
Trailer作為整體進⾏行加密,具體的加密算法與密鑰由SA給出。

3、在第2步得到的加密數據添加ESP
Header。ESP Header由兩部分組成:SPI和 序號(Sequence
number)。ESP Header位於IP之后。

4、將ESP Header和第2步得到的加密數據做⼀一個摘要,得到⼀一個完整性度量值(ESPMessage
Authentication Code),並添加到ESP報⽂文的尾部。這樣就得到了⼀一個完整的ESP數據報⽂文。 

 

 

拆包過程:

1、接收⽅方收到數據報⽂文后,對除IP和ESP
Message Authentication Code的部分計算摘要與ESP MAC進⾏行⽐比較,驗證數據的完整性。假如⽐比對不同,可以斷定所收到的報⽂文已經經過篡改了。
2、查看ESP Header,通過⾥里⾯面的SPI得到數據報⽂文所對應的SA;檢查序列號,保證數據不是回放攻擊。

3、根據SA所提供的加密算法與密鑰,解密被加密算法加密過的部分(IP
Datagram、ESPTrailer)。
4、根據ESP Trailer⾥里的填充⻓長度信息,可以找出填充字段的字段,刪去后就能得到完整地IP
Datagram 

 

 

IPsec ESP報文(隧道模式)


 

 

裝包過程:

 

1. 在原IP報文末尾添加尾部(ESP trailer)信息。如上圖所示,尾部包含三部分。由所選加密算法可能是塊加密,那么當最后一塊長度不夠時就需要進行填充(padding),附上填充長度(Pad
length)方便解包時順利找出用來填充的那一段數據。而Next header則用來標明被加密的數據報文的類型,例如TCP。 

2. 將原IP報文以及第1步得到的ESP尾部作為一個整體進行加密。具體的加密算法與密鑰由SA給出。

3. 為第2步得到的加密數據添加ESP頭部。如上圖所示,ESP頭由兩部分組成,SPI和序號(Sequence
number)。加密數據與ESP頭合稱為“enchilada”。 

4. 附加完整性度量結果(ICV,Integrity check
value)。對第三步得到的“enchilada”做摘要,得到一個完整性度量值,並附在ESP報文

的尾部。
5. 加上新的IP頭。新構造的IP頭附在ESP報文的前面組成一個新的IP報文。注意這個新的IP頭的目的地址跟源地址可以不一樣。協議類型為50,說明它里面裝的是一個IPsec報文。 

 

拆包過程:

 

1. 接收方收到數據報文后,發現協議類型是50,故知道這是一個IPsec包。首先查看ESP頭,通過里面的SPI決定數據報文所對應的SA。

2. 計算“enchilada”部分的摘要,與附在末尾的ICV做對比,如果一樣的話說明數據是完整的。否則可以斷定所收到的報文已經不是原來的報文了。

3.檢查Seq里的順序號,保證數據是“新鮮”的。

4.根據SA所提供的加密算法和密鑰,解密被加密過的數據,即“enchilada”。得到原IP報文與ESP尾部(trailer)。

5. 根據ESP尾部里的填充長度信息,我們可以找出填充字段的長度,刪去后就得到原來的IP報文。

6. 最后根據得到的原IP包的目的地址來進行轉發。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM