Rozpoznawanie pakietów IPsec

original version by: Nikos Drakos, CBLU, University of Leeds * revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan * with significant contributions from: Jens Lippmann, Marek Rouchal, Martin Wilck and others
Konrad Madej 25 listopada 2001

Spis rzeczy

Stosy protokołów

Encapsulating Security Payload (ESP)

Nagłówek ESP został zaprojektowany do zabezpieczania pakietów zarówno IPv4 jak i IPv6. Może on być stosowany samotnie lub w połączeniu z AH (Authentication Header). Usługi bezpieczeństwa jakie zapewnia ESP jak i AH mogą być stosowane pomiędzy dwomna hostami w Internecie, dwoma "bezpiecznymi" bramami (ang. gateway) albo pomiędzy hostem a bramą.

ESP może działać w dwóch trybach: tunelowania (ang. tunnel mode) oraz transportowania (ang. transport mode). W zależności od trybu pracy nagłowek ESP umieszczamy:

  • za nagłówkiem IP a przed nagłówkiem protokołu warstwy wyższej w trybie transportowym
  • przed tunelowanym nagłówkiem IP w trybie tunelowania

ESP dostarcza poufność danych, autentykację źródła danych, bezpołączeniową integralność i częściową poufność przepływu danych. Zbiór serwisów jakie będą używane zależy od opcji wybranych w momencie ustawiania bezpiecznego połączenia (ang. Security Association). Poufność danych może być wybrana niezależnie od wszystkich innych usług aczkolwiek używanie szyfrowania bez sprawdzania integralności i autentykacji może osłabić bezpieczeństwo na tyle, że nasze połączenie stanie się podatne na ataki co podważa używanie jedynie szyfrowania danych.

Należy dodać, że autentykacja źródła danych i bezpołączeniowa integralność danych są serwisami połączonymi i są opcjonalne w połączeniu z szyfrowaniem (poufnością). Usługa zabezpieczająca przed atakiem z powtórzonymi pakietami może być wybrana tylko wtedy gdy autentykacją źródła danych jest włączona, należy dodać że jest to usługa, która jest przeznaczona adresata pakietu (musi on sprawdzać numer sekwencyjny pakietu).

Poufność przepływu danych wymaga pracowania w trybie tunelowania i jest bardziej efektywna gdy jest zaimplementowana na ,,bezpiecznych bramach'' gdzie agregacja ruchu umożliwia ukrycie prawdziwych parametrów końców połączenia.

Format nagłówka ESP

Nagłówek protokółu (IPv4, IPv6 lub rozszerzenie IPv6) bezpośrednio poprzedzający nagłówek ESP musi zawierać wartość 50 w polu prtokołu dla IPv4 lub w polu następny nagłówek dla IPv6 lub nagłówka rozszerzeń.

Format nagłówka ESP:

 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ----
|               Security Parameters Index (SPI)                 | ^Auth.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cov-
|                      Sequence Number                          | |erage
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ----
|                    Payload Data* (variable)                   | |   ^
~                                                               ~ |   |
|                                                               | |Conf.
+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cov-
|               |     Padding (0-255 bytes)                     | |erage*
+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |   |
|                               |  Pad Length   | Next Header   | v   v
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ------
|                 Authentication Data (variable)                |
~                                                               ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

*
Jeżeli w polu Payload są załączone dane synchronizujące szyfrowanie np. wektory inicjalizacyjne (ang. IV - Initialization Vector) zwykle nie są one szyfrowane mimo że są często częścią szyfrogramu.

Znaczenia pól:

  • Security Parametrs Index (SPI)- jest dowolną 32-bitową wartością, która w połączeniu z adresem IP przeznaczenia i protokołem bezpieczeństwa (ESP) unikalnie identyfikuje Bezpieczne Połączenie (ang. Security Association) dla danego pakietu. Wartości SPI od 1 do 255 są zarezerwowane przez IANA (Internet Assigned Numbers Authority) do przyszłego użycia. Wartość SPI równa 0 jest zarezerwowana dla lokalnego użytku i nie może być przesyłana przez sieć. To pole jest obowiązkowe.
  • Sequence Number - jest 32-bitową liczbą bez znaku zawierającą monotonicznie zwiększającą się wartość licznika. Pole to jest obowiązkowe nawet gdy adresat nie włączył zabezpieczenia przed powtórzeniami pakietów dla danego połączenia (SA). Analiza tego pola leży po stronie adresata.
  • Payload Data - jest polem o zmiennej długości zawierjącym dane opisane przez pole Następny Nagłówek (ang. Next Header). Pole to jest obowiązkowe i jego długość jest całkowitą liczbą bajtów. Jeżeli algorytm użyty do szyfrowania danych wymaga danych synchronizacyjnych ( np. wektory inicjalizacyjne), to te dane mogą być przenoszone bezpośrednio w tym polu. Każdy algorytm, który wymaga takich danych musich wskazywać ich długość, strukture oraz położenie.
  • Padding - różne czynniki mogą spowodować, że to pole jest wymagane. W ogólności chodzi o dopełnienie do jakiejś wielkrotności bajtów, której wymaga dany algorytm. Pole to jest opcjonalne i może mieć długość od 0 do 255 bajtów.
  • Pad Length - wskazuje na długość pola Padding. Pole to jest obowiązkowe.
  • Next Header - jest 8-bitową wartością, która identyfikuje typ danych zawartych w pola Payload Data np. identyfikator protokółu wyższego poziomu. Pole to jest obowiązkowe.
  • Authentication Data - jest polem o zmiennej długości zawierającym wartość sprawdzająca integralność (ang. ICV - Integrity Check Value) liczoną z pakiety ESP wyłączjąc dane autentyfikacyjne. Długość tego pola jest zależna od wyboru metody autentykacji. Pole to jest opcjonalne i dołączne tylko wtedy gdy usługa autentykacji została wybrana w momencie tworzenia SA.

Położenie nagłówka ESP

ESP może być wykorzystany w dwóch trybach: tunelowania oraz transportowania. W trybie transportowania nagłówek ESP jest umieszczony za nagłówkiem IP i prze nagłówkiem protokołu warstwy wyższej (np. TCP, UDP) lub przed inny nagłówek IPsec, który został już umieszczony w pakiecie.

Poniższy diagram pokazuje umieszczanie nagłówka ESP w trybie transportowym dla typowego pakiety IPv4:

                 BEFORE APPLYING ESP
            ----------------------------
      IPv4  |orig IP hdr  |     |      |
            |(any options)| TCP | Data |
            ----------------------------

                 AFTER APPLYING ESP
            -------------------------------------------------
      IPv4  |orig IP hdr  | ESP |     |      |   ESP   | ESP|
            |(any options)| Hdr | TCP | Data | Trailer |Auth|
            -------------------------------------------------
                                |<----- encrypted ---->|
                          |<------ authenticated ----->|

Diagram dla pakietów IPv6:

                     BEFORE APPLYING ESP
            ---------------------------------------
      IPv6  |             | ext hdrs |     |      |
            | orig IP hdr |if present| TCP | Data |
            ---------------------------------------

                     AFTER APPLYING ESP
            ---------------------------------------------------------
      IPv6  | orig |hop-by-hop,dest*,|   |dest|   |    | ESP   | ESP|
            |IP hdr|routing,fragment.|ESP|opt*|TCP|Data|Trailer|Auth|
            ---------------------------------------------------------
                                         |<---- encrypted ---->|
                                     |<---- authenticated ---->|

                * = if present, could be before ESP, after ESP, or both

Należy dodać, że nagłówki ESP i AH mogą być łączone różnorako.

Tryb tunelowania może być wykorzystany zarówno przez hosty jak i bramy. Dla bram możliwe jest używanie tylko trybu tunelowania. W trybie tunelowania wewnętrzny nagłówek IP zawiera ostateczne adresy końcowe podczas gdy zewnętrzny nagłówek IP może zawierać różne adresy, przykładowo adresy bram bezpieczeństwa. W trybie tunelowania ESP chroni cały wewnętrzny pakiet włączając cały wewnętrzny nagłówek IP.

Poniższy diagram przedstawia położenie nagłówków dla trybu tunelowania ESP:

            -----------------------------------------------------------
      IPv4  | new IP hdr* |     | orig IP hdr*  |   |    | ESP   | ESP|
            |(any options)| ESP | (any options) |TCP|Data|Trailer|Auth|
            -----------------------------------------------------------
                                |<--------- encrypted ---------->|
                          |<----------- authenticated ---------->|

            ------------------------------------------------------------
      IPv6  | new* |new ext |   | orig*|orig ext |   |    | ESP   | ESP|
            |IP hdr| hdrs*  |ESP|IP hdr| hdrs *  |TCP|Data|Trailer|Auth|
            ------------------------------------------------------------
                                |<--------- encrypted ----------->|
                            |<---------- authenticated ---------->|

               * = if present, construction of outer IP hdr/extensions
                   and modification of inner IP hdr/extensions is
                   discussed below.

Authentication Header (AH)

Authentication Header jest używany do zapewnienia bezpołączeniowej integralności, autentykacji źródła danych dla datagramów IP oraz zabezpiecza przed atakiem z powtórzeniem pakietów. Podobnie jak w ESP ostatnia możliwość może być wybrana podczas tworzenia SA. AH dostarcza autentykację dla jak największej części pakietu IP jak i dla danych protokołu warstwy wyższej. Należy zauważyć, że niektóre pola nagłówka IP mogą się zmieniać podczas wędrówki pakietu i te pola nie mogą być chronione przez AH.

AH może być stosowane ,,samotnie'', w połączeniu z ESP lub w trybie ,,zagnieżdzonym'' przy użyciu tunelowania. ESP może być użyte do dostarczenia tych samych usług co AH. Podstawowa różnica jest w zakresie pokrycia chronionych danych. ESP nie chroni żadnych pól nagłówka IP (chyba że użyte w trybie tunelowania - wewnętrzny nagłówek IP).

Format nagłówka AH

Nagłówek protokołu IPv4, IPv6 lub rozszerzeń IPv6 bezpośrednio poprzedzający nagłówek AH musi zawierać wartość 51 w polu protokołu (IPv4) lub w polu następny nagłówek (IPv6 lub rozszerzenia IPv6).

Poniższy diagram przedstawia budowe nagłówka AH:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Next Header   |  Payload Len  |          RESERVED             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 Security Parameters Index (SPI)               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Sequence Number Field                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   +                Authentication Data (variable)                 |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Znaczenie odpowiednich pól w nagłówku:

  • Next Header - jest 8-bitowym polem, który identyfikuje protokół warstwy wyższej występujący za AH.
  • Payload Length - jest 8-bitowym polem, które mówi jaką długość w 32-bitowych słowach ma nagłówek AH pomniejszoną o ,,2''.
  • Reserved - 16-bitowe pole zarezerwowane do przyszłego użytku.
  • Security Parametrs Index (SPI) - jest 32-bitową wartością, która w połączeniu z adresem IP przeznaczenia oraz protokołem (AH) unikalnie identyfikuje bezpieczne połączenie (SA) dla danego datagramu. Analogicznie jak dla ESP numery od 1 do 255 sa zarezerwowana przez IANA a wartość 0 jest zarezerwowana do użytku lokalnego i nie może być przesyłana przez sieć.
  • Sequence Number - analogicznie jak w ESP.
  • Authentication Data - jest polem o zmiennej długości zawierającym wartość sprawdzająca integralność (ang. ICV - Integrity Check Value) dla tego pakietu. To pole musi być całkowitą wielokrotnością 32 bitów. To pole może zawierać dopełnienie, żeby zapewnić odpowiednią wielokrotność.

Położenie nagłówka AH

Podobnie jak w ESP, AH może być wykorzystane w dwóch trybach: transportowym oraz tunelowania.

W trybie transportowym nagłówek AH jest umieszczony po nagłówku IP a przed nagówkiem protokołu warstwy wyższej lub przed innym nagłówkiem IPsec, które został już umiszczony w pakiecie.

Poniższy diagram przedstawia położenie nagłówków dla typowego pakietu IPv4:

                  BEFORE APPLYING AH
            ----------------------------
      IPv4  |orig IP hdr  |     |      |
            |(any options)| TCP | Data |
            ----------------------------

                  AFTER APPLYING AH
            ---------------------------------
      IPv4  |orig IP hdr  |    |     |      |
            |(any options)| AH | TCP | Data |
            ---------------------------------
            |<------- authenticated ------->|
                 except for mutable fields

Poniższy diagram przedstawia położenie nagłówków dla typowego pakietu IPv6 w trybie transportowym:

                       BEFORE APPLYING AH
            ---------------------------------------
      IPv6  |             | ext hdrs |     |      |
            | orig IP hdr |if present| TCP | Data |
            ---------------------------------------

                      AFTER APPLYING AH
            ------------------------------------------------------------
      IPv6  |             |hop-by-hop, dest*, |    | dest |     |      |
            |orig IP hdr  |routing, fragment. | AH | opt* | TCP | Data |
            ------------------------------------------------------------
            |<---- authenticated except for mutable fields ----------->|

                 * = if present, could be before AH, after AH, or both

W trybie tunelowania wewnętrzny nagłówek IP zawiera ostateczny adresy źródłowy i przeznaczenia podczas gdy zewnętrzny nagłówek może zawierać różne adresy np. bram. AH w trybie tunelowania chroni cały wewnętrzny pakiet IP. Poniższy diagram przedstawia położenie nagłówków dla typowych pakietów IPv4 i IPv6:

          ------------------------------------------------
    IPv4  | new IP hdr  |    | orig IP hdr   |    |      |
          |(any options)| AH | (any options) |TCP | Data |
          ------------------------------------------------
          |<- authenticated except for mutable fields -->|
          |           in the new IP hdr                  |

          --------------------------------------------------------------
    IPv6  |           | ext hdrs |    |            | ext hdrs |   |    |
          |new IP hdr |if present| AH |orig IP hdr |if present|TCP|Data|
          --------------------------------------------------------------
          |<-- authenticated except for mutable fields in new IP hdr ->|

AH i ESP

IPsec dopuszcza łączenie AH i ESP. Poniższy diagram przedstawia możliwości położenia odpowiednich nagłówków w trybie transportowym i tunelowania:

                  Transport                  Tunnel
             -----------------          ---------------------
             1. [IP1][AH][upper]        4. [IP2][AH][IP1][upper]
             2. [IP1][ESP][upper]       5. [IP2][ESP][IP1][upper]
             3. [IP1][AH][ESP][upper]

Literatura

1
RFC 2402, ,,IP Authentication Header''

2
RFC 2406, ,,IP Encapsulating Security Payload (ESP)''

3
RFC 2401, ,,Security Architecture for the Internet Protocol''

About this document ...

Rozpoznawanie pakietów IPsec

This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.70)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html -split 0 -verbosity 0 -no_navigation -dir /home/konrad/public_html/elektron/mydocs/headers /home/konrad/buda/mgr/mydocs/headers.tex

The translation was initiated by on 2003-12-21


2003-12-21