IPSec 傳輸模式下 ESP 報文的裝包與拆包過程

裝包過程:

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


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


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


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


5.將原本的IP頭附在頭部,修改協議類型爲 50,裝包完成


拆包過程:

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

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

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

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

5.根據ESP尾部裏的填充長度信息,找出填充字段的長度,刪去後得到原來的IP報文。

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



原博客地址:http://www.cnblogs.com/2014-cjs/p/4068923.html

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