基於openswan klips的IPsec實現分析(三)安全協議

基於openswan klips的IPsec實現分析(三)安全協議
參考rfc2402,rfc2406
轉載請註明出處:http://blog.csdn.net/rosetta

博客格式顯示有問題,只能將就了。

   AH(Authentication Header)認證頭和ESP(Encapsulating Security Payload)封裝安全載荷是IPsec主要安全協議,當然IKE也是IPec安全協議,只不過 IKE用於祕鑰協商建立IKE SA和IPsec SA,而AH和ESP用於數據傳輸時對隧道內數據的保護。
AH用於認證和校驗;ESP主要用於加密、認證和檢驗,是IPsec最常用的安全協議。IPsec封裝有兩種模式:傳輸模式和隧道模式,傳輸模式主要用於主機到主機通信,隧道模式用於網絡到網絡間通信,傳輸模式不常用。ESP使用到的加密算法爲對稱加密算法,比如:AES,3DES等;校驗算法爲哈希算法,比如:MD5,SHA1等。
一、AH格式
協議頭(IPv4、IPv6、或者擴展)緊靠AH頭之前,協議號51。
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   下一個頭    |    載荷長度   |            保留               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        安全參數索引(SPI)                    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         序列號字段                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                       認證數據(變長的)                      |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
下一個頭(Next Header)
   8位字段,其指定了認證頭後面的下一個載荷的類型。其值可參考rfc2408 3.1節

載荷長度(Payload Length)
8位字段,其長度以4字節爲單位。

保留(Reserved)
   16比特字段保留給將來使用。它必須(MUST)被設置成“零”。

安全參數索引(Security Parameters Index (SPI))
   SPI是一個任意的32比特值,它與目的IP地址和安全協議(ESP)結合,就唯一
   地標識了這個數據報的安全關聯。

序列號(Sequence Number)
   爲無符號的32比特字段,包含一個單調遞增的計數器值(序列號)。

認證數據(Authentication Data)
   這是一個變長的字段,其包含這個報文的完整性校驗值(Integrity Check
   Value (ICV))。這個字段的長度必須是32比特的整數倍。

二、AH數據封裝格式
傳輸模式中,AH插在IP頭之後,且在一個上層協議之前,例如TCP、UDP、ICMP
   等。或者在其它任何已經插入的IPsec頭之前
              應用AH之前
            ----------------------------
      IPv4  |    原IP頭   |     |      |
            | (所有選項)| TCP | Data |
            ----------------------------

                  應用AH之後
            ---------------------------------
      IPv4  |    原IP頭   |    |     |      |
            | (所有選項)| AH | TCP | Data |
            ---------------------------------
            |<--------- 認證範圍 ---------->|
                      除了可變的字段
		 AH IPV4傳輸模式

在IPv6環境中,AH被看作是一個端到端的載荷,出現在逐跳(hop-by-hop)、路由(routing)和分片擴展頭(fragmentation extension headers)之後。目的選項擴展頭(destination options extension header)既可以出現在AH頭之前,也可以在AH頭之後。下面的圖表說明了一個IPv6報文的AH傳輸模式佈局。
                 應用AH之前
            ---------------------------------------
      IPv6  |             |  擴展頭  |     |      |
            |    原IP頭   |(如果存在)| TCP | Data |
            ---------------------------------------

                      應用AH之後
            ------------------------------------------------------------
      IPv6  |             |  逐跳、目的選項*、|    | 目的 |     |      |
            |    原IP頭   |  路由、分片。     | AH | 選項*| TCP | Data |
            ------------------------------------------------------------
            |<------------ 認證範圍,除了可變的字段 ------------------>|

                 * = 表示如果存在,可以在AH之前,AH之後,或者前後都出現。
                         AH IPV6傳輸模式

隧道模式AH可以在主機或者安全網關上採用。當AH在一個安全網關上實現時必須採用隧道模式。隧道模式中,“內部”IP頭攜帶最終的源和目的地址,而“外部”IP頭可能包含不同的IP地址,例如安全網關地址。隧道模式中,AH保護整個內部IP報文,包括整個內部IP頭。相對於外部IP頭,隧道模式中AH的位置與傳輸模式中AH的位置相同。下面的圖表說   明瞭IPv4和IPv6報文的AH隧道模式的佈局。
          ------------------------------------------------
    IPv4  |   新IP頭*   |    |    原IP頭*    |    |      |
          | (所有選項)  | AH |  (所有選項)   |TCP | Data |
          ------------------------------------------------
          |<--- 新IP頭中的認證範圍,除了可變的字段 ----->|
                      AH IPV4隧道模式

          --------------------------------------------------------------
    IPv6  |           |  擴展頭* |    |            |  擴展頭* |   |    |
          |  新IP頭*  |(如果存在)| AH |   原IP頭*  |(如果存在)|TCP|Data|
          --------------------------------------------------------------
          |<---------- 新IP頭中的認證範圍,除了可變的字段 ------------>|

                           AH IPV6隧道模式
三、ESP格式
	ESP頭緊緊跟在協議頭(IPv4,IPv6,或者擴展)之後,協議號50。
	0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ----
|               安全參數索引              (SPI)                 | ^Auth.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cov-
|                      序列號                                   | |erage  
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ----
|                    有效載荷數據* (可變的)                     | |   ^   
~                                                               ~ |   |
|                                                               | |Conf.
+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cov-
|               |     填充    (0-255 bytes)                     | |erage*
+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |   |
|                               |  填充長度     | 下一個頭      | v   v 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ------
|                 驗證數據  (可變的) 可選的	                  |   
~                                                               ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  *如果加密同步數據,例如初始化向量(IV),包含在有效載荷字段中,通常它本
身並不加密,雖然常常把它作爲密文的一部分。

四、ESP數據封裝格式
	其封裝格式和AH類似。
	傳送模式中,ESP插在IP頭之後,上層協議之前,例如TCP,UCP,ICMP等,或者在任何已經插入的IPsec頭之前。IPv4中,下面數據報圖示了IPv4分組中ESP傳送模式位置。
           		  ESP應用前
            ----------------------------
      IPv4  |原始IP頭     |     |      |
            |(所有選項)   | TCP | 數據 |
            ----------------------------

                 ESP應用後
            -------------------------------------------------
      IPv4  |原始IP頭     | ESP |     |      |   ESP   | ESP|
            |(所有選項   )| 頭部| TCP | 數據 |  尾部   |驗證|
            -------------------------------------------------
                                |<----- 已加密    ---->|
                          |<------      已驗證   ----->|
                    ESP IPV4傳輸模式

下面數據報圖示了IPv6分組中ESP傳送模式位置。 
                     ESP應用前
            ---------------------------------------
      IPv6  |            | 如果有   |     |      |
            | 原始IP頭   |擴展頭    | TCP | 數據 |
            ---------------------------------------

                     ESP應用後
            ---------------------------------------------------------
      IPv6  | 原始 |逐跳,     目的* |   |目的 |   |    | ESP   | ESP|
            |IP 頭 |路由,分片       |ESP|選項*|TCP|數據|尾部   |驗證|
            ---------------------------------------------------------
                                         |<---- 已加密     ---->|
                                     |<---- 已驗證         ---->|
                         ESP IPV6傳輸模式
下面數據報圖示了IPv4和IPv6分組中ESP隧道模式的位置。
            -----------------------------------------------------------
      IPv4  | 新IP頭*     |     | 原始IP頭 *    |   |    | ESP   | ESP|
            |(所有選項)   | ESP | (所有選項)    |TCP|數據|尾部   |驗證|
            -----------------------------------------------------------
                                |<--------- 已加密    ---------->|
                          |<----------- 已驗證        ---------->|
                         ESP IPV4隧道模式
            ------------------------------------------------------------
      IPv6  | 新 * |新 擴展 |   | 原始*|原始擴展 |   |    | ESP   | ESP|
            |IP 頭 | 頭  *  |ESP|IP 頭 | 頭   *  |TCP|數據|尾部   |驗證|
            ------------------------------------------------------------
                                |<--------- 已加密    ----------->|
                            |<---------- 已驗證        ---------->|
                           ESP IPV6隧道模式



 AH IPV4傳輸模式

在IPv6環境中,AH被看作是一個端到端的載荷,出現在逐跳(hop-by-hop)、路由(routing)和分片擴展頭(fragmentation extension headers)之後。目的選項擴展頭(destination options extension header)既可以出現在AH頭之前,也可以在AH頭之後。下面的圖表說明了一個IPv6報文的AH傳輸模式佈局。
                 應用AH之前
            ---------------------------------------
      IPv6  |             |  擴展頭  |     |      |
            |    原IP頭   |(如果存在)| TCP | Data |
            ---------------------------------------

                      應用AH之後
            ------------------------------------------------------------
      IPv6  |             |  逐跳、目的選項*、|    | 目的 |     |      |
            |    原IP頭   |  路由、分片。     | AH | 選項*| TCP | Data |
            ------------------------------------------------------------
            |<------------ 認證範圍,除了可變的字段 ------------------>|

                 * = 表示如果存在,可以在AH之前,AH之後,或者前後都出現。
                         AH IPV6傳輸模式

隧道模式AH可以在主機或者安全網關上採用。當AH在一個安全網關上實現時必須採用隧道模式。隧道模式中,“內部”IP頭攜帶最終的源和目的地址,而“外部”IP頭可能包含不同的IP地址,例如安全網關地址。隧道模式中,AH保護整個內部IP報文,包括整個內部IP頭。相對於外部IP頭,隧道模式中AH的位置與傳輸模式中AH的位置相同。下面的圖表說   明瞭IPv4和IPv6報文的AH隧道模式的佈局。
          ------------------------------------------------
    IPv4  |   新IP頭*   |    |    原IP頭*    |    |      |
          | (所有選項)  | AH |  (所有選項)   |TCP | Data |
          ------------------------------------------------
          |<--- 新IP頭中的認證範圍,除了可變的字段 ----->|
                      AH IPV4隧道模式

          --------------------------------------------------------------
    IPv6  |           |  擴展頭* |    |            |  擴展頭* |   |    |
          |  新IP頭*  |(如果存在)| AH |   原IP頭*  |(如果存在)|TCP|Data|
          --------------------------------------------------------------
          |<---------- 新IP頭中的認證範圍,除了可變的字段 ------------>|

                           AH IPV6隧道模式
三、ESP格式
	ESP頭緊緊跟在協議頭(IPv4,IPv6,或者擴展)之後,協議號50。
	0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ----
|               安全參數索引              (SPI)                 | ^Auth.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cov-
|                      序列號                                   | |erage  
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ----
|                    有效載荷數據* (可變的)                     | |   ^   
~                                                               ~ |   |
|                                                               | |Conf.
+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cov-
|               |     填充    (0-255 bytes)                     | |erage*
+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |   |
|                               |  填充長度     | 下一個頭      | v   v 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ------
|                 驗證數據  (可變的) 可選的	                  |   
~                                                               ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  *如果加密同步數據,例如初始化向量(IV),包含在有效載荷字段中,通常它本
身並不加密,雖然常常把它作爲密文的一部分。

四、ESP數據封裝格式
	其封裝格式和AH類似。
	傳送模式中,ESP插在IP頭之後,上層協議之前,例如TCP,UCP,ICMP等,或者在任何已經插入的IPsec頭之前。IPv4中,下面數據報圖示了IPv4分組中ESP傳送模式位置。
           		  ESP應用前
            ----------------------------
      IPv4  |原始IP頭     |     |      |
            |(所有選項)   | TCP | 數據 |
            ----------------------------

                 ESP應用後
            -------------------------------------------------
      IPv4  |原始IP頭     | ESP |     |      |   ESP   | ESP|
            |(所有選項   )| 頭部| TCP | 數據 |  尾部   |驗證|
            -------------------------------------------------
                                |<----- 已加密    ---->|
                          |<------      已驗證   ----->|
                    ESP IPV4傳輸模式

下面數據報圖示了IPv6分組中ESP傳送模式位置。 
                     ESP應用前
            ---------------------------------------
      IPv6  |            | 如果有   |     |      |
            | 原始IP頭   |擴展頭    | TCP | 數據 |
            ---------------------------------------

                     ESP應用後
            ---------------------------------------------------------
      IPv6  | 原始 |逐跳,     目的* |   |目的 |   |    | ESP   | ESP|
            |IP 頭 |路由,分片       |ESP|選項*|TCP|數據|尾部   |驗證|
            ---------------------------------------------------------
                                         |<---- 已加密     ---->|
                                     |<---- 已驗證         ---->|
                         ESP IPV6傳輸模式
下面數據報圖示了IPv4和IPv6分組中ESP隧道模式的位置。
            -----------------------------------------------------------
      IPv4  | 新IP頭*     |     | 原始IP頭 *    |   |    | ESP   | ESP|
            |(所有選項)   | ESP | (所有選項)    |TCP|數據|尾部   |驗證|
            -----------------------------------------------------------
                                |<--------- 已加密    ---------->|
                          |<----------- 已驗證        ---------->|
                         ESP IPV4隧道模式
            ------------------------------------------------------------
      IPv6  | 新 * |新 擴展 |   | 原始*|原始擴展 |   |    | ESP   | ESP|
            |IP 頭 | 頭  *  |ESP|IP 頭 | 頭   *  |TCP|數據|尾部   |驗證|
            ------------------------------------------------------------
                                |<--------- 已加密    ----------->|
                            |<---------- 已驗證        ---------->|
                           ESP IPV6隧道模式



 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章