이전 포스팅에서는 IPSec VPN의 운용 모드 종류를 확인했었습니다.
https://steven-life-1991.tistory.com/157
이번에는 IPSec VPN이 터널링을 구성하기 위해 사용되는 알고리즘인 AH/ESP/IKE를 자세히 확인해보도록 합시다.
AH & ESP
AH헤더와 ESP헤더는 IPSec 터널이 생성된 이후 VPN이 패킷을 암호화/인증 할 때 사용됩니다. |
AH : IP 패킷의 무결성, 인증에만 사용되는 헤더
AH(Authentication Header)와 ESP(Encapsulating Security Payload)는 IP 패킷의 보안성을 부여하기 위해 프로토콜 헤더로 패킷을 암호화/인증 하는 역할을 합니다. 이 두 헤더는 위에서 언급한 바와 같이 기존 프로토콜에 헤더를 추가로 부착하는 방법을 사용해 패킷의 암호화를 실현하게 됩니다.
AH는 IP패킷의 무결성을 입증하기 위한, 패킷이 변질되지 않았음을 '인증'하는 프로토콜 헤더입니다.
패킷의 데이터 부분에 해당하는 IP Payload(페이로드)와 IP 헤더를 인증한 후 인증 데이터를 생성하여 AH헤더에 이를 포함하여 패킷에 부착합니다.
그리고 새로운 IP Header(공인 IP)를 추가하여 기존 AH 헤더, IP 헤더와 IP Payload를 캡슐화 합니다.
위의 패킷은 원래 패킷이고 아래 패킷은 AH헤더가 부착된 패킷입니다.
IPSec VPN의 터널을 통과하는 패킷은 아래의 패킷 모양을 하고 있다는 말이 됩니다.
좀더 세부적으로 AH헤더를 보자면
인증 데이터 : 사설 IP에 대한 정보가 있는 IP 헤더와 IP 페이로드 그리고 새로운 IP 헤더를 해쉬 알고리즘(HMAC, MD5, SHA 등)을 이용해 고정 크기의 블록으로 만든 것입니다. 공격자가 IP 페이로드 혹은 IP 헤더에 조작을 하게 된다면 해쉬 알고리즘이 적용된 인증 데이터와 일지하지 않을 테니 외부의 개입을 알 수 있게 되죠.
Next Header : 페이로드 내부의 프로토콜 헤더를 알려줌
Payload Length : 페이로드의 길이 정의
AH 헤더는 위서 보는바와 같이 인증에 관련된 부분만 개입되어 있으며 암호화에 대한 부분이 전혀 없습니다.
따라서 여기서 ESP 알고리즘이 필요하게 됩니다.
ESP 헤더 : AH 헤더의 인증기능에 더해 AH 헤더의 약점인 패킷 암호화 기능을 갖춘 프로토콜 헤더, 암호 알고리즘(DES, 3DES, AES)과 함께 암호화 키를 사용하여 패킷을 암호화
아래 패킷을 보면 ESP 해더가 앞뒤로 추가된 것을 볼 수 있습니다.
ESP Trailer : 패킷을 암호화하면 필수적으로 생성되는 페이로드와 인증 데이터를 구분하기 위한 'Padding'과 내부 프로토콜 헤더에 관한 정보를 담음
ESP Header : IP 헤더와 IP 페이로드 그리고 ESP Trailer를 암호화
ESP Auth : 암호화 된 패킷에 해쉬 알고리즘을 적용한 인증데이터
ESP 헤더와 ESP Trailer를 자세히 확인 할 수 있는 위 표를 보면, '가변'이라고 써진 곳이 ESP Auth입니다.
ESP 헤더의 주 목적이 암호화인 데다 인증 데이터까지 ESP Auth에 포함되어 있기 때문에 ESP 헤더에는 특별한 데이터는 따로 없습니다.
AH헤더와 ESP헤더 패킷을 자세히 보면 SPI(Security Paramater Index)를 확인할 수 있는데, 이는 SA(Security Association)의 식별 번호입니다. SA란 VPN과 VPN이 데이터를 안전하게 교환하기 위한 쌍방 간에 합의되는 사항, 즉 협약을 말합니다.
VPN과 VPN이 협상하여 터널을 생성하고 데이터를 암호화하는 만큼 서로 사용 가능한 알고리즘/프로토콜/기타 정보를 확인해야 합니다.
그래서 SA에는 VPN 간 서로를 인증할 방법, 터널의 유지 시간, 인증 데이터를 생성하기 위한 해쉬 알고리즘 합의, IP 페이로드를 암호화하기 위한 암호 알고리즘, 패킷 암호화에 필요한 키 생성 알고리즘, 터널 동작모드 결정 뿐만 아니라 AH/ESP헤더 사용에 대한 합의 등이 포함됩니다.
VPN이 어느 VPN에 연결되는냐에 따라 목적지가 다르기에 터널마다 각각의 SA를 갖게 되고, SA를 식별하기 위한 번호가 SPI가 됩니다.
IKE
IPSec의 SA 생성을 위한 복합 프로토콜, 그에따른 키 교환을 수행 |
IKE(Internet Key Exchange, 키 교환 복합 프로토콜)는 IPSec의 SA 생성을 위한 복합 프로토콜 입니다.
복합 프로토콜이라고 부르는 이유는 IKE가 새롭게 설계한 프로토콜이 아닌 ISAKMP(Internet Security Association and Key Management Protocol)라는 키 교환 프로토콜의 구조와 설계, 메시지 포맷을 명시한 프로토콜을 기반으로 OAKLEY, SKEME와 같은 키 교환 프로토콜을 결합하여 만든 프로토콜이기 때문입니다.
추가로, ISAMKP 프로토콜은 SA 협상 시 포트 번호 'UDP 500'을 사용할 것을 명시하기 때문에 IKE 또한 'UDP 500'을 사용합니다.
IPSec VPN의 안전한 터널링 구성을 위해 상대방을 인증하고, 패킷을 암호화/인증할 알고리즘과 암호화 키를 안정적으로 교환할 수 있는 과정을 정의한 IKE 프로토콜은 2가지로 나눌 수 있습니다.
1. VPN간 안전한 페이즈 2 SA 교환을 위한 페이즈 1 터널 생성과 상대방 VPN과의 인증(IKE 페이즈 1)
2. 패킷의 암호화 알고리즘 결정과 암호화 키 교환(IKE 페이즈 2)
1번은 IPSec 터널을 생성하여 패킷을 암호화/인증하기 이전에 '패킷의 암호화 알고리즘 결정 및 암호화 키 교환'을 위한 환경을 마련하는 것입니다.
추가로 IKE 페이즈 1 터널 생성 과정 중 상대방 VPN을 인증하기 위한 수단을 암호화/인증하기 위한 알고리즘, 암호화 키 교환 또한 수해합니다.
2번은 IPSec터널이 생성된 상태에서 패킷을 암호화/인증할 수단을 교환하여 패킷 교환 준비를 끝나치는 과정입니다. 패킷을 암호화할 암호 알고리즘, 암호화 키를 교환합니다. 1번 터널을 기반으로 패킷 교환이 가능한 터널을 생성합니다.
IKE에서는 1번을 IKE 페이즈1 혹은 ISAKMP SA라고 하며 2번을 IKE 페이즈 2 혹은 IPSec SA라고 합니다. 말 그대로 두 개의 과정으로 나누어 터널을 생성하고 패킷을 암호화/인증할 알고리즘과 암호화 키를 안전하게 교환합니다.
'IT > Security' 카테고리의 다른 글
[SECURITY] 잘알려진 포트 및 취약포트 정리 (0) | 2022.07.12 |
---|---|
[XSS] 크로스사이트스크립팅 [WEB] (0) | 2022.07.04 |
[인프라] 서버 이중화 (Active-Active, Active-Standby) (0) | 2022.06.29 |
[VPN] IPSec VPN #1 연결 종류 및 IKE (0) | 2022.06.23 |
[VPN] SSL VPN과 IPsec VPN의 차이 (0) | 2022.06.22 |