개요

IPsec은 네트워크 계층에서 무결성, 기밀성, 종단간 인증을 제공하는 프로토콜이다.

종류

RFC에는 십여가지의 정의가 있지만 그중 특히 AH (Authentication Header) 프로토콜과 ESP (Encapsulation Security Payload)가 중요한 역활을 담당한다.

  1. AH는 출발지 인증과 데이터 무결성을 제공하지만 기밀성을 제공하지 않는다.
  2. ESP 프로토콜은 출발지 인증, 데이터 무결성, 그리고 기밀성을 제공한다.

SA (Security Associations)

IPsec 데이터그램을 전송하기 전에 출발지 개체와 목적지 개체는 네트워크 계층에서 논리적 연결을 설립한다. 이 논리적 연결이 SA이다. SA는 단방향 연결이어서 출발지로부터 목적지 방향으로만 데이터가 흐를 수 있다. SA는 다음과 같은 상태정보를 포함한다.

SA에 대한 32 비트 식별자 (SPI) | SA 시작점의 주소와 최종점의 주소 | 사용하는 암호화 타입 | 암호키 | 무결성 검사 타입 | 인증키

라우터나 호스트는 SA로 보낼 정보를 복호화 하고 암호화하는 과정에서 SA의 상태정보를 확인하여 갱신한다. IPsec 개체는 모든 SA에 대한 상태정보를 그 개체의 OS 커널에 있는 SAD (Security Association Database)라는 데이터 구조에 저장한다.

SPD

어떤 형태의 데이터그램이 IPsec으로 처리되어야 하는지와 그때 사용할 SA를 지시한다. 만약 내부 호스트가 네이버로 접속한다면 그냥 데이터를 보내고 가상 사설망을 이용하여 지점으로 연결한다면 IPsec을 이용하게 할 수 있다.

IPsec 데이터그램

IPsecHeader.png
  1. IPv4데이터그램의 뒤에 ESP 트레일러를 덧붙인다.
  2. SA에 지정된 알고리즘과 키를 이용하여 위의 결과를 암호화한다.
  3. 암호화된 결과의 앞에 ESP 헤더를 덧붙인다.
  4. SA에 지정된 알고리즘과 키를 이용하여 전체 ESP 헤더 ~ ESP 트레일러의 내용의 MAC 인증을 생성한다.
  5. ESP 트레일러 뒤에 MAC인증을 추가하여 페이로드를 만든다.
  6. 전형적인 IPv4 헤더 필드들을 가지고 완전히 새로운 IP 헤더를 만들어 위의 페이로드 앞에 붙인다.

새로운 IPv4 필드의 상위 프로토콜 값으로는 50이 사용된다. 이는 이것이 ESP 프로토콜임을 알려준다.

ESP 트레일러

  1. 패딩 (Padding): 패딩은 블록 암호화 방식에서 지정된 길이를 맞출 수 있도록 의미없는 값으로 채워지는 공간이다.
  2. 패딩 길이 (Pad length): 패딩비트가 얼마나 삽입되었는지 알려준다.
  3. 다음헤더: 페이로드에 포함된 데이터의 타입을 지시한다.

ESP 헤더

  1. SPI: 수신 개체에게 데이터그램이 어느 SA에 속해 있는지 지시해준다.
  2. 순서번호: 재생 공격에 대응하기 위해 사용된다.

수신자의 행동

  1. 데이터그램의 목적지를 확인하여 자신이 목적지인지 확인한다.
  2. 상위 프로토콜 필드의 값을 확인하여 50이면 IPsec을 이용하였음을 알게 된다.
  3. IPsec 헤더를 확인하여 어떤 SA를 이용해야 하는지 확인한다.
  4. MAC필드를 이용하여 무결성을 확인한다.
  5. 순서번호 필드를 검사하여 중복데이터가 전송되었는지 확인한다.
  6. SA에 관련된 복호화 알고리즘을 확인하여 암호화된 부분을 복호한다.
  7. 패딩 비트를 삭제하여 평범한 IP 데이터그램을 추출한다.
  8. 원래 IP 데이터그램을 IP 데이터그램이 요구하는 목적지로 전송한다.

응용

VPN (가상 사설망)은 기존 공공 인터넷 상에 IPsec을 이용한 패킷을 보내어, 기밀성을 제공하고 내부 페이로드를 이용하여 마치 내부의 서버에 직접 연결되어 있는 것처럼 서비스를 누리게 해준다.