Network Security

IPsec ESP

행복한하루 2011. 3. 8. 02:24
이번 글은 IPsec 에서 Traffic 을 처리하는데 쓰이는 프로토콜인 ESP(Encapsulating Security Payload) 에 대해서 설명드리도록 하겠습니다.

ESP(Encapsulating Security Payload)는 기밀성, 원본 데이터의 인증, 무결성과 같은 보안 서비스를 지원하기 위하여 설계된 프로토콜로 IP 데이터그램 안에 들어갑니다.

IPSec에서 실제 데이터 전송과 관련된 프로토콜로 AH(Authentication Header)ESP(Encapsulating Security Payload)가 있는데, 실제 가장 많이 쓰이는 프로토콜이 ESP(Encapsulating Security Payload) 입니다.

AH(Authentication Header)의 경우에는 인증 기능만 제공하는 데 반해 ESP(Encapsulating Security Payload)의 경우는 데이터 암호화 기능도 제공하기 때문에 보안 면에서 더욱 우수합니다. 그래서 AH 보다는 ESP 가 더 많이 쓰이고 있습니다.

IP 데이터 그램 안에 ESP(Encapsulating Security Payload)가 들어갈 경우 ESP(Encapsulating Security Payload) 뒤의 데이터는 암호화 되고, 수신측에는 IKE(Internet Key Exchage)로 미리 교환한 Key 값을 이용하여 데이터를 복호화 하는 기능을 수행하게 됩니다.

그럼 실제 ESP가 어떻게 생겼고, 동작은 어떻게 하는지를 알아 보기로 하겠습니다.

The ESP Header


ESP Header는 위와 같은 형태로 되어 있습니다.

(ESP Header는 IP Header뒤에 따라 오고 IP Header의 Protocol field가 50 이면 뒤에 ESP Header가 따라온다는 것을 의미합니다.)

순서대로 살펴보면, ESP Header에서 제일 먼저 보이는 것이 SPI (Security Parameter Index)인데, SPI는 어떤 패킷이 들어 왔을 때 이 패킷을 처리하기 위한 SA (Security Association)정보를 찾을 때 Index로 이용되는 값입니다. (이 SPI값은 IKE exchange 동안에 destination으로 부터 받게 됩니다.)

그 다음에 보이는 것이 Sequence number인데 이 값은 anti replay 공격을 막기 위하여 사용됩니다. 

실제로 ESP에 의해서 보호되는 부분은 Payload data 부분인데 여기에는 암호화된 데이터가 위치하게 됩니다. 만약 어떤 암호화 알고리즘이 복호화를 위해 IV (initialization vector) 값을 필요로 한다면 이 값도 payload data 안에 위치하게 되고 이 값은 암호화 되지 않습니다. (예를 들어 DES-CBC 알고리즘의 경우 payload data의 처음 8 octet이 IV 값으로 사용됩니다.) 

Next header값은 ESP뒤에 어떤 것이 위치하는 지를 알려주는 것으로, 예를 들어 4이면 IP-in-IP 또는 6이면 TCP와 같이 뒤에 위치한 것이 무엇인지를 알려주는 역할을 합니다.

마지막으로 Authentication data는 Data Integrity Check한 결과 값을 가지고 있는 것으로 수신자가 이 값을 가지고 Integrity Check 을 수행하게 됩니다.

ESP modes
 
ESP mode는 크게 Transport modeTunnel mode 이렇게 두 가지로 나뉘는데, 이 두가지 방식의 차이는 아래 그림을 보면 좀 더 쉽게 이해가 될 것입니다.


먼저  위 그림은 Transport mode 입니다.

ESP Transport 의 경우 IP header뒤에 들어가는 구조로 위와 같은 형태를 띄고 있습니다. 앞서 보았던 ESP Header에서 payload data에 해당하는 부분이 빗 금친 부분인데, 이 빗 금친 부분이 실제 암호화 된 부분이고 ESP header 에서 Authentication data에 해당하는 것이 ESP auth 부분입니다.

즉, ESP Transport mode의 경우 TCP 헤더와 그 뒷 단의 Data에 대한 Security 을 보장해 주는 역할을 하게 됩니다. 그리고 Authentication의 경우는 ESP header부터 Data까지를 보장해 주는 역할을 합니다.

일반적인 Data 암호화에 쓰이는 방식인데 IP header가 암호화가 되지 않기 때문에 Header 정보에 대한 보안을 할 수 없다는 단점이 있습니다. 그래서 실제 ESP Mode 에서는 IP header까지 암호화 되는 tunnel mode을 많이 사용하고 있는데,  ESP tunnel mode의 경우 Layer 3 VPN 에서 많이 선호하는 방식입니다.
 

위 그림이 ESP tunnel mode 입니다.

Tunnel mode는 위 그림과 같이 새로운 IP header가 붙습니다. 그리고 ESP header뒤의 original IP header부터 Data 까지는 암호화 되어 전송되게 됩니다. 이 구조에서는 Original IP header도 암호화 부분에 포함되기 때문에 Transport 모드에 비해 좀 더 안전하다는 장점이 있습니다. 

ESP Processing

이제 실제 ESP가 어떻게 동작되는지를 알아보도록 하겠습니다.

기본적으로 SPDB(Security Policy Data Base) lookup 이라던가 SADB(Security Association Data Base) lookup 이라던가 하는 단계들이 존재 하지만 여기서는 어떤 Packet이 ESP로 처리된다고 결정되었다는 가정 하에 실제 ESP가 어떤 동작을 통하여 Inbound/Outbound 처리를 하는지를 알아보기로 하겠습니다.

 - Outbound Processing

1. Security Association Lookup : 이미 Policy가 결정되었다는 가정 하에 동작하기 때문에 IPSec Processing이 필요한 Packet은 어떤 SA (Security Association)와 연관이 있게 되고, 이 단계에서는 그 SA정보를 찾는 과정을 거치게 됩니다.    

2. Packet Encryption : 첫번째 단계에서 찾은 SA정보를 이용하여 실제 Packet을 암호화 하는 과정입니다. 여기서는 Transport mode일 때와 Tunnel mode일 때로 나뉘는데, Transport mode일 때는 상위 Layer에 대해서만 암호화를 진행하지만 tunnel mode일 경우는 원래의 IP 헤더를 포함하여 암호화를 진행합니다. 이 과정에서 암호 동기화 데이터가 필요하면 IV을 값을 ESP payload data의 앞 부분에 넣어주게 되고, 만약 ESP 인증도 선택이 되었다면 먼저 암호화를 한 후에 이 패킷을 가지고 인증 데이터를 만들어 넣어 주게 됩니다.  

3. Sequence Number Generation : SA가 설립될 때에 Sequence Number값은 0으로 셋팅된다. 그리고 패킷이 하나씩 나갈 때 마다 1씩 증가합니다. 그래서 처음 ESP 패킷은 1이 되고, 만약 anti-replay옵션이 선택되었다면 이 값은 반복되지 않습니다. 만약 값이 계속 늘어나서 반복되기 바로 전까지 가면 SA를 다시 설립해야 합니다. 하지만 anti-replay옵션이 선택되지 않았다면 그냥 계속 증가시키면서 Max 값이 되면 다시 0 부터 시작하게 됩니다. 

4. Integrity Check Value Calculation : 만약 Authentication이 선택되었다면, 송신자는 Authentication data부분을 뺀 ESP 패킷(SPI, Sequence Number, Payload Data, Padding, Pad Length, Next Header)의 ICV값을 계산합니다. 

5. Fragmentation : Fragmentation은 IPSec에서 ESP Processing이 끝난 후에 일어납니다. Transport mode의 경우 Fragmented 된 IP에 대하여 ESP Processing이 되는 것이 아니라 전체 IP Data에 대하여 ESP Processing이 진행된 후 그리고 나서 Fragmentation이 진행됩니다.
(Tunnel mode의 경우에는 IP Packet에 대하여 ESP Processing이 적용되는데, 이 때의 IP 패킷은 Fragmented 된 IP 패킷일 수도 있습니다.) 

- Inbound Processing

1. Reassembly : 이 과정은 ESP Processing이 일어나기 전에 수행 되는데, Reassembly가 끝난 후 이 것을 가지고 ESP Processing을 수행하게 됩니다.

2. Security Association Lookup : 어떤 ESP 패킷을 복호화 하기 위해서는 패킷과 관련된 SA가 필요합니다. 이 SA을 찾기 위하여 수신단은 ESP Header안에 있는 SPI 값을 이용하여 SA을 찾게 됩니다. 이렇게 해서 찾은 SA는 Sequence number을 Check 해야 하는지 Authentication을 Check해야 하는 지와 같은 여러가지 정보들을 담고 있습니다. 

3. Sequence Number Verification :  수신단은 송신단과 마찬가지로 SA가 설립이 되면 Sequence number을 0로 셋팅하고 들어오는 패킷의 Sequence number을 감시합니다. 이 때 중복된 Sequence Number을 가진 패킷이 들어오면 버리게 되는데 윈도우 사이즈를 이용하여 그 안에 들어 왔는지 아닌지를 체크 하여 결정할 수 있습니다. 

4. Integrity Check Value Verification : Authentication이 선택되어 있으면 IPSec 은 복호화 전에 먼저 ICV값을 체크 하게 되는데, 여기서 값이 틀리면 패킷을 버리고 확인된 패킷만이 복호화 단계로 넘어가게 됩니다.

5. Packet Decryption : 위의 모든 과정이 끝나게 되면 패킷을 복호화 합니다. Transport mode일 경우는 패킷 복호화후 원래의 IP header와 상위 Layer의 Data를 조합하여 IP 패킷을 재조립하고 Tunnel mode의 경우는 tunnel IP header 와 ESP Payload 안쪽에 있던 IP header + data 부분을 이용하여 IP 패킷을 재조립 하게 됩니다. 

이상으로 IPsec ESP 에 대해서 알아 봤습니다.
 


'Network Security' 카테고리의 다른 글

IPsec AH  (1) 2011.04.12
Network Security  (0) 2011.01.13
IPsec Action Type  (0) 2011.01.11
ISAKMP Exchange Type  (0) 2010.12.29
ISAKMP payload  (0) 2010.12.17