본문 바로가기

Info

Info - IPSec

1. IPSEC 개요

 

IPSec은 Internet Protocol Security의 약어로서 network 통신중 network layer에서의 보안을 위한 표준이다. IPSec은 인터넷 상에서 VPN(Virtual Private Network)을 구현하는데 사용될 수 있도록 IETF (Internet Engineering Task Force)에서 개발된 protocol set이다. 이는 네트워크상의 IP layer에서의 보안에 중점을 두었으며, 사설 및 공중망을 사용하는 TCP/IP 통신을 보다 안전하게 유지하기 위한 end-to-end encryption과 authentication을 제공한다. 따라서 PGP와 같은 application에 대해서는 고려하지 않는다. 
다음은 IPSec을 구성하는 RFC이다.

 


IPSec의 주요 장점

Transparency  :  IPSec은 network layer에서 동작하므로, 사용 application과는 무관하게 동작한다. HTTP에서만 동작하는 SSL과는 다르게, IPSec은 FTP, HTTP, SMTP등 모든 TCP/IP 프로그램에 대한 연결에 대하여 security를 보장한다. 또한 SSL, S/MIME등과 같은 상위 layer의 보안 프로토콜과 연계하여 사용가능하다.

Network Topology 의존성이 없다   media에 따르지 않는 TCP/IP 프로토콜을 사용하므로 Ethernet, TokenRing, PPP등 모든 network topology에 사용할 수 있다.

- 표준화  :  L2TP, L2F등으로 구현될 수 있는 PPTP같은 tunneling protocol과는 다르게, L2FIPSec은 표준화된 tunneling, authentication, encryption 방법을 사용한다.

- Multiprotocol  :  IPSec은 tunneling mode를 사용할 경우 여러 프로토콜과도 동작할 수 있다. IPX, Appletalk의 경우 오랫동안 ip tunneling을 사용할 수 있으므로 IPSec 또한 적용가능하다.

2. IPSec operation mode

 

IPSec은 2가지의 operation mode - transport mode, tunnel mode-를 제공한다. transport mode의 경우 IP payload만 encrypt되며, 원래의 IP Header는 그대로 둔다. 이러한 경우 초기 패킷에 대하여 최소의 byte만 추가된다는 장점이 있다.

초기 IP Header는 보전되므로, public network 상의 모든 장비가 해당 패킷의 최종 destination을 알 수 있다.  이를 사용하여 QoS와 같이 IP Header에 기초한 추가 processing을 가능하게 한다. 또한 clear 한 상태의 IP Header로 인해 attacker가 트래픽 분석을 수행할수 있다. IP Sec transport mode를 사용하기 위해서는 각 endpoint가 IPSec을 이해할 수 있어야 한다.

 

tunnel mode의 경우 모든 초기의 IP datagram이 encrypt되며, 새로운 IP Packet의 header가 만들어진다. 이러한 경우 라우터와 같은 네트워크 장비가 IPSec Proxy로 동작할 수 있다. 즉 source의 라우터가 IPSec tunnel을 통해서 패킷을 encrypt하여 forward하며, destination의 라우터가 초기 IP 패킷을 decrypt해서 최종 목적지로 forward할 수 있다. host는 IP Security를 사용한다고 하여 어떠한 변경작업도 일어나지 않는다. 전체 패킷을 encrypt하므로 attacker는 tunnel의 end point만 알 수 있으며, 실질적인 source와 destination은 노출되지 않으므로 분석하기가 어렵다.

 

 Tunnel mode
 

Transport mode
 

 
 

3. IPSec Components

 

IPSec은 논리적으로 IP Layer의 상위이나 ICMP와 유사하게 3.5 layer에서 동작한다고 볼 수 있다. 다음 그림은 각 component들에 대한 IPSec Architecture를 보여준다.

 


IPSec은 2개의 protocol - AH, ESP -로 구성된다. AH(Authentication Header)는 authentication과 data integrity를 위해 동작하며, ESP(Encapsulation Security Payload)는 confidentiality를 위해 서비스된다. 이 두 프로토콜은 transport mode 또는 tunnel mode에서 동작하며, 단독으로 또는 같이 적용될 수 있다.

Database에 저장되어 있는 policy를 SPD(Security Policy Database)라고 하며 이는 system manager에 의해 변경가능하다. IKE 프로토콜은 암호화 키의 관리에 사용된다.

3.1 SAD (Security Association Database)

 

SA는  Security Association을 의미하며 IPSec을 사용하는 두 peer간의 협약을 의미한다.
SA는 보안을 위해 두 peer간에 사용되는 암호화 알고리즘, 사용되는 key, SA life time, 최대 전송 byte등을 정의한다. IPSec에서 SA를 설정하는 방법에는 manual과 automatic 2가지가 있다. 
manual인 경우는 system manager가 대상 시스템에 대해 SA를 규정해둔다. automatic인 경우는 사전에 정의된 policy만 있으면 connecting시 자동으로 설정되며, system manager는 이를 확인할수 있다. 이렇게 특정 connection에 대하여 정의되는 SA의 database를 SAD라 한다. AH와 ESP가 같이 사용될 경우 두 peer간에 여러 개의 SA가 사용된다.

SA에는 다음과 같은 내용이 포함된다.
 

AH parameter  :  AH 사용시 이와 관련된 인증 알고리즘 및 관련 key 

- ESP parameter : ESP사용시 이와 관련된 인증 알고리즘 및 관련 key

- mode : tunnel mode, transport mode

destinaton IP addr, IPSec protocol (AH or ESP), SPI : SPI는 Security Parameter Index로서 동일 destination에 대하여 같은 IPSec protocol을 사용하여 여러개의 SA가 설정되었을 경우 이를 구분하기 위한 32bit number이다.

- Lifetime : SA가 사용되는 life time.

3.2 SPD (Security Policy Database)

 

SPD (Security Policy Database)는 system manager에 의해 정의된다. SAD와 동일하게 SPD 또한 incoming, outgoing traffic의 두 부분으로 나뉘어진다. 그후 어떠한 traffic에 대하여 security 서비스가 사용되어야 할지 정의되어, 각각 discard, IPSec 적용없이 relay, IPSec 적용등을 구현한다. 
Policy의 적용기준은 다음의 field에 의한다.

 

Source / Destination IP Address

- Name  :  admin@enclue.com과 같은 DNS 사용자 식별자, X500 distinguished/general name, FQDN system name이 가능하다.

Transport Layer Protocol  :  TCP or UDP (AH, ESP, ICMP는 안됨)

Source / Destination Port

 

SPD의 각 policy는 SAD의 SA를 (있을경우) point 하며 SA의 list를 pointing하는 것도 가능하다.

3.3 AH (Authentication Header)

 

AH (Authentication Header)는 IP extension Header로서 IP packet에 대한 인증여부를 제공한다. ESP와는 달리 AH는 전체 IP 패킷에 대한 인증여부를 결정하게 된다.

다음은 AH의 format이다.

 

 

-  Next Header  :  authentication header 뒤에 나타나는 payload의 type을 나타내는 8 bit 값으로서 TCP는 6, UDP의 경우 17로 지정되어 있다.

-  Payload Length  :  authentication header를 나타내는 8 bit 값.

-  SPI  :  적합한 SA를 구분하기 위해 사용되는 index 숫자.

-  Authentication Data  :  SHA, Keyed MD5, HMAC-MD5-96, HMAC-SHA-1-96등의 인증 data가 포함된다.

 

다음은 tunnel mode 및 transport mode에서의 AH를 사용한 IPSec datagram 이다. 
transport mode의 경우 AH는 IP Header와 Payload 사이에 위치하여 전체 IP Packet을 인증하며, transport mode의 경우 새로운 IP Header와 AH가 앞부분에 첨가된다.

 

 Tunnel mode
 

Transport mode
 


AH의 경우 authentication은 AH를 포함한 전체 패킷에 대하여 고려된다. AH가 ESP와 같이 사용될 경우(transport mode에서), IP header뒤에 그리고 ESP와 상위 계층 프로토콜 앞부분에 위치한다.

3.4 ESP (Encapsulating Security Protocol)

 

ESP (Encapsulating Security Protocol)는 다수의 security service를 제공하며, confidentiality, origin authentication, data integrity를 제공한다. 각각의 서비스들은 별도로 제공가능하다. 따라서authentication 없이 confidentaility를 제공가능하다.

다음은 ESP의 format이다. Payload data, padding, pad length, Next Header는 필요시 encryption된다.

 

 

 

 SPI  :  적합한 SA를 인지하는데 필요한 Security Parameters Index.

 IV  :  CBC encryption에 사용되는 initialization vector. 없을 경우도 있음.

 Padding  :  payload data 및 뒤이은 두 필드를 정렬하는데 사용되며, encryption algorithm에 필요한 data block 경계를 설정하는데 사용된다.

-  Pad Length  :  Padding의 byte size

 Next Header  :  Payload Data Field에 포함되어 있는 데이타 타입. (TCP, UDP)

 Authentication Data  :  authentication value. AH와는 달리 authentication service가 선택되었을 경우에만 존재한다.

 

confidentiality service가 선택된 경우 Payload data, Padding, Pad Length, Next Header가 encryption 된다.

HMAC-MD5-96, HMAC-SHA-1-96등 AH와 같은 authentication algorithm 뿐만 아니라 DES-CBC(Cipher Black Chaining), 3DES-CBC가 일반적으로 사용되며, authentication data를 제외한 전체 ESP 패킷이 encryption된 후에 authenticate된다.

ESP또한 AH와 동일하게 transport mode, tunnel mode 2가지 모두에 동작된다. 다음은 각 mode 상태에서의 ip packet의 변형을 보여준다.

 

 

 

transport mode의 경우 ESP는 IP Header뒤에 나타나며, IP Payload는 ESP Payload에 의해 encapsulate 된다.

 

 

 

 

tunnel mode일 경우 새로운 IP 패킷이 만들어지며 이의 payload는 원본 IP 패킷이 된다. ESP에 의한 encapsulation은 transport mode의 경우와 동일하며, 전체 원본 IP 패킷이 ESP에의해 보호된다.

 

Transport mode 


Tunnel mode
 

3.5 Internet Key Management

 

IKE (Internet Key Exchange)는 internet을 통한 protocol negotiation과 Key exchange에 대하여 규정한다. IKE를 사용하여 통신하는 두 peer는 secure channel을 열고, 해당 channel을 통하여 IP Sec을 위한 SA를 협상한다. Key exchange에 가장 일반적인 방법은 Manual Key Exchange, Simple Key Interchange, Internet Security Association이다.

 

Manual Key Exchange

가장 간단하면서 많이 사용되는 방법으로서 (RFC1825에 정의됨), 관리자가 통신하는 양쪽의 system에 자신의 key와 상대방의 key를 수동적으로 configure해두는 것이다. 각 system은 configure 된 key를 사용하여 상대방을 인증하고, data를 송수신한다. 작은 크기의 네트웍을 사용하는 사업장은 가능하나 대규모의 VPN등을 사용하는 사업장에서는 자동으로 key 설정을 하는 방식이 바람직하다.

 

SKIP

Sun Microsystem에서 제안된 것으로서 구현하기가 쉬우나, IETF에서는 IPV6의 표준으로 ISAKMP를 채택하였다. 따라서 상업적으로 널리 사용되지 않는다.

 

SKAMP 와 Oakley

IETF에서 IPv6에 대한 표준으로서, IPv4에서는 option으로서 설정되었다. ISAKMP는 자체로서 session key를 설정하는 것이 아니며, internet key management의 framework를 제공한다. 그리고 실제 Key establish를 위해 표준으로 선택된 것이 Oakley이다.  이는 hybrid Diffie-Hellman technique를 사용하여 internet 상의 호스트/라우터들간의 session key를 설정하며, 단독으로 또는 ISAKMP와 같이 사용될 수 있다.

4. IP Packet Processing

 

다음은 incoming 및 outgoing data에 대하여 IP Sec에 의해 IP 패킷이 처리되는 과정을 개괄적으로 설명한 것이다.

4.1 Outgoing Data Processing

 

다음은 Normal data를 받은후 outgoing interface에 대하여 IPSec으로 encryption/encapsulation 처리를 하는 과정을 설명한 것이다.

 

IPSec Processing

가장 먼저 진행되는 과정은 수신된 패킷에 대하여 어떤 policy를 적용해야 하는지를 결정하기 위해 SPD를 찾는 것이다. 패킷내의 source/destination address, port, protocol등을 사용하여 selector가 생성되며, 해당 selector에 대해 discard, relay, IPSec 3가지의 policy가 적용된다. discard와 relay의 경우 IPSec processing이 필요하지 않게 되나, IPSec이 결정되면 이에 해당하는 SA가 있어야 한다. SA가 SAD에 없을 경우, IKE를 사용하여 새로운 SA가 생성된다. 일단 SA가 생성되었으면, mode (tunnel or transport)가 결정된다. tunnel mode가 결정된다면 새로운 IP 패킷이 생성되고, 초기의 패킷은 보존된다. tunnel의 endpoint IP address를 사용하여 새로운 header를 만든다.  IP 패킷의 Next protocol에는 AH(51) 또는 ESP(50)이 지정된다.

이러한 IPSec Processing이 실행되면 MTU에 따른 fragmentation을 수행한 후에 데이타는 relay된다. 다음은 이러한 과정을 그림으로 설명하였다.

 

 

IP packet이 gateway에 도착하면, 먼저 gateway는 어느 interface로 data를 보낼지를 사전에 정의된 routing에 의해 결정한다(1). 그후 SPD를 검색하여 적용가능한 policy가 있는지를 찾으며(2), 있을 경우 SAD를 통해 적용할 parameter를 구한다(3). IP Packet에 대한 처리를 한후(4) 이를 relay시킨다(5).

 

AH Processing

IPSec processing을 거친 패킷에 대하여 Authentication Header를 삽입한다. 그후 Sequence number를 생성하며, 이는 처음 SA를 생성할 경우 0으로 setting된다. 그후 AH processing을 할 때마다 1씩 증가시켜, AH에 입력한다. authentication data field가 필요하다면, 32, 64bit 경계에 맞추어서 padding을 하고, fragmentation을 수행한다.

 

ESP Processing

IPSec processing을 거친 패킷에 대해 ESP field를 삽입한다. 그리고 필요하다면 padding을 통해 Pad Length와 Next Header를 입력후 encryption을 수행한다. ESP payload가 SA에 지정된 algorithm에 따라 encryption되며, 만약 "NULL"로 지정될 경우 ciphering은 수행하지 않는다. 그후 AH와 동일하게, Sequence Number지정 및 fragmentation을 수행한다.

4.2 Incoming Data Processing

 

다음은 data를 받아서 reassemble한후의 처리과정을 설명한 것이다.

 

IPSec Processing

패킷이 도착하여 reassemble 과정을 거치면 Next Protocol에 AH, ESP가 정의되어 있는지 알수 있다. 정의되어 있을 경우 IPSec processing이 실행되고 없을 경우 일반 routing이 수행된다. IPSec processing 수행시 SAD query를 통해서 SA를 추출하며, destination IP address, IPSec Protocol, SPI등이 사용된다. SA를 통하여 정의된 policy에 맞도록 패킷처리를 한후 routing에 의해 패킷을 forwarding한다.

 

AH Processing

incoming data에 대한 AH  processing은 outgoing의 경우와 유사하며, 차이점이 있다면 sequence number validation이다. SA에 replay에 대한 방지가 정의되어있다면, 각 sequence number를 check하여 맞지 않는다면 discard된다.

Sequence number의 중복은 sliding-window mechanism에 의해 검사된다.

 

ESP Processing

AH processing과 동일하게 sequence number validation을 수행하며, authentication이 필요할 경우 해당 패킷을 검사하며, 그후 decryption을 실행한다.

5. Summary

 

IPSec은 처음부터 IETF에서 기존의 IP 네트워크 상에서 security를 강화하고, VPN등에 사용 할수 있도록 표준화를 하였다. 이러한 표준화가 IPsec의 가장 큰 장점이 되었으며, 여러 Vendor간의 장비 사이에서도 상호 연동가능하게 되었다.

IPSec은 IP 네트워크 상에서 동작하지만 여전히 network layer라고 할 수 있다. 기존 IP Packet을 encrryption을 통해 새로운 IP header를 만들며, transport mode와 tunnel mode에 따라 original IP Header의 활용도가 달라진다. 
추가로 IETF에서는 IPSec Processing을 수행하기 이전에 두 peer간의 secure channel 형성과 적합한 parameter를 negotiate할수 있도록 Internet Key Exchange protocol을 만들었다. 이는 application layer에서 동작하며 두 peer가 통신하고자 할때, IPSec이 필요하도록 configure 되어 있으면 먼저 IKE에 요청하여, parameter가 정의되어있는 SA를 상호 교환한다. 그후 정의된 바에 따라 IP Packe의 authentication, encryption을 위해AH, 또는 ESP processing을 거친다. 이러한 과정을 통해 internet이라는 public network을 통해서도 private network과 같은 보안성있는 데이타 통신이 가능하게 된다. 또한 IPSec은 SSL등과 같이 application layer에서 동작하는 프로토콜이 아닌 network layer에서 운영되므로, 여러 application의 구현이 가능하다.


'Info' 카테고리의 다른 글

Info - 리눅스 패키지 관련 사이트  (0) 2016.08.31
Info - 북마크 백업  (0) 2016.08.31
Info - C와 C++ 차이  (0) 2016.08.31
Info - 유니코드 멀티바이트  (0) 2016.08.31
Info - 유니코드와 멀티바이트  (0) 2016.08.31