Secure Protocols
TCP/IP 5계층의 보안 프로토콜
1) Application Layer - HTTPS, SSH, PGP, S/MIME
2) Transport Layer - SSL/TLS
3) Network Layer - IPsec, VPN
4) Data Link Layer - L2TP
=> IPsec 는 네트워크 계층의 보안 프로토콜 중 하나
IPsec
- IPsec는 Internet Protocol Security의 약자이다.
- Network layer에서 IP패킷을 암호화하고 인증하는 등의 보안을 위한 표준이다.
- 안전한 인터넷 프로토콜(IP) 통신을 위한 인터넷 프로토콜들의 모음이다.
- IPSec가 제공하는 보안 서비스의 범위는 호스트나 보안게이트웨이 사이이다.
- VPN을 구현하는데 사용되는 프로토콜이기도 하다.
=> Network layer에서 IP 패킷을 보호하기 위해서 만들어진 프로토콜 표준의 프레임워크이다.
(대부분의 VPN 서버와 클라이언트는 IPsec의 표준을 따른다.)
* IPv4 - 선택적 사용 / IPv6 - Default 스펙
- IPsec의 기능
1) Confidentiality - 암호화를 통해 기밀성을 제공한다.
2) Integrity - HMAC을 통해 무결성을 제공한다.
3) Origin Authentication - 올바른 송신자로부터 온 것인지를 확인하는 송신자 인증을 제공한다.
4) Anti-replay protection - 재전송 공격(replay attack)을 막아준다.
5) Access control - 보안정책(SP)로 패킷 접근 제어한다.
6) Limited Traffic Flow Confidentiality - 패킷의 출발지와 도차지 정보를 제한적으로 암호화한다.
- IPsec의 SA와 SP
SA (Security Association)
- 보안 통신을 지원하기 위해 두 peer 간에 공유 보안 속성을 설정하는 것
IPsec에서 고려하는 SA의 주요 요소
1) Sequence Number Counter : 패킷의 Sequence number 설정을 위한 카운터
2) Anti-Replay Window : 재전송 공격 방어 위한 Window 값
3) AH/ESP : 프로토콜 정보
4) Lifetime : 세션 만료 기간
5) Mode : 동작모드 (Transport, Tunnel)
6) path MTU : 경로 MTU 값
* IPsec 프로토콜 통신시, 해당 요소들의 공유 보안 속성 설정 주의
SP (Security Policy)
- 패킷을 필터링하기 위한 패킷 필터링 정책
IPSec에서 고려하는 SP의 주요 요소
1) Source / Destination IP Address : 송/수신 IP 주소
2) Source / Destination Port : 송/수신 포트 번호
3) Name : DNS 식별자 등의 이름
4) Transport Layer Protocol : TCP or UDP
* 외부에서 내부로 들어오는 Incoming Traffic / 내부에서 외부로 나가는 Outgoing Traffic으로 정책 설정
* IPSec 프로토콜에서는 SP를 통해 IP 패킷의 허용, 폐기. 보호 등을 관리
IPsec의 프로토콜 종류(AH/ESP/IKE)
참고) IPsec의 헤더가 붙으면 IP 패킷의 크기가 기존의 MTU보다 커진다. 이로 인한 fragmentation을 피하기 위해서는 MTU의 크기를 줄여야 한다.
1) AH 프로토콜 (Authentication Header 프로토콜)
1.1) AH 프로토콜의 헤더
- Next Header : 프로토콜의 종류를 식별
- Payload length : AH 패킷의 사이즈
- Reserved : 나중에 사용될 것을 위한 잉여자리 (0으로 채워짐)
- SPI(Security Parameters Index) : 패킷 처리를 위한 SA 정보를 찾을 때 parameters로 활용됨
- Sequence Nuber Field : Sequence number를 담음
- Authentication Data : 데이터 인증에 필요한 정보를 담음. (HMAC 값)
1.2) AH 프로토콜의 기능
- 무결성 보장
- 송신자 인증
- replay attack 방지
1.3) AH 프로토콜의 과정
무결성 보장과 송신자 인증은 HMAC을 이용한다.
checksum이나 TTL과 같은 특정 부분을 제외한 패킷의 모든 부분을 가지고 HMAC을 생성한다.
이 때 HMAC은 peer간에 공유된 비밀키를 바탕으로 생성된다.
따라서 HMAC을 통해 올바른 송신자로부터 온 패킷인지와 패킷이 중간에 변조없이 도착했는지를 알 수 있다.
비밀키는 DB에 저장되어 있고, SPI를 통해서 찾을 수 있다.
SPI는 IPsec 프로토콜 헤더에 포함되어 있으므로, 받은 SPI를 가지고 DB를 찾아보면 비밀키를 얻을 수 있다.
SPI는 IKE 교환 과정에서 destination으로부터 받는다.
replay attack 방지는 sequence number를 덧붙여서 실현한다.
참고로 AH 프로토콜은 암호화 기능은 제공하지 않는다.
2) ESP 프로토콜 (Encapsulated Security Payload 프로토콜)
2.1) ESP 프로토콜의 헤더
- SPI : 패킷 처리를 위한 SA 정보를 찾을 때 parameters로 활용됨
- Sequence number : Sequence number를 담음
- payload Data : 전송될 데이터
- Padding : Payload와 Authentication Data 구분 위해 사용
- Pad length : 패딩의 길이
- Next header : 프로토콜의 종류를 식별
- Authentication Data : 데이터 인증에 필요한 정보를 담음 (HMAC 값)
ESP 헤더의 가장 큰 특징으로는 데이터 앞에 위치하는것이 아니라 데이터를 감싸고 있다는 것이다.
2.2) ESP 프로토콜의 기능
- 기밀성 보장
- 무결성 보장
network layer에서 암호화를 통해 기밀성을 보장하므로, 그 위의 레이어 (application layer, transport layer) 에서도 자동적으로 기밀성이 보장된다.
3) IKE (Internet Key Exchange) 프로토콜
IPSec가 올바르게 동작하기 위해서는 SA(Security Association) 설정 과정이 필수적이기 때문에,
두 peer 간에 특정 요소에 어떤 설정 값을 사용할지 정하는 과정이 필요하다. 이러한 과정이 IKE라고 한다.
[1단계]
IKE 알고리즘 자체의 SA를 설정하고 협상하는 단계
IPsec SA 관련 설정들을 안전하게 협상하는데 필요한 여러 SA들을 설정하는 단계로, IPsec SA 설정을 위한 기초 작업
[2단계]
IPsec 알고리즘의 SA를 설정하고 협상하는 단계 (실질적인 IPsec 연결을 설정하는 단계)
IPsec에 사용할 Sequence Number Counter, Window 크기, AH/ESP 프로토콜 정보, Mode 등을 설정
- IPsec 동작 모드 (Transport mode / Tunnel mode)
1) Transport mode
- 호스트 간의 통신과정에 적용 (End-to-end)
- 따라서 통신구간 전체에 적용
- 호스트들이 IPsec를 적용할 수 있어야 한다.
- 기존의 IP 헤더와 데이터 사이에 ESP/AH 헤더 추가.
- 가장 최소한의 헤더만 추가하므로 터널모드에 비해 효율적.
- ESP 프로토콜의 경우, authentication을 옵션으로 선택 가능
- 기존의 IP 헤더를 사용하므로, 트래픽 경로가 노출된다.
2) Tunnel mode
- IP 터널에 적용
- site-to-site, client-to-site에 적용
- 기존의 IP 패킷 전체를 encapsulate 한다.
- 기존의 IP 패킷 앞에 ESP/AH 헤더와 새로운 IP 헤더를 추가.
- 새로운 ESP/AH 헤더의 출발/도착 지점은 터널의 시작과 끝이다.
- local network 내에서는 암호화가 적용되지 않는다.
- 메시지가 특정 컴퓨터에서 왔다는 것을 보장 못한다. (특정 subnet에서 왔다는 것만 보장 가능)
- 게이트웨이 이후의 local network 내에서는 IPSec 프로토콜이 적용되지 않는다
모드 종류 | 전송 모드 | 터널 모드 |
보호 범위 | IP 패킷의 payload | IP 패킷 전체 |
프로토콜 적용 구간 | Host to host | Gateway to gateway / Gateway to host |
보안상의 장점 | 최소한의 헤더만 추가하므로 효율적 | 전체 트래픽 경로 노출 방지 가능 |
보안상의 단점 | 트래픽 경로가 노출 | 전체 통신구간에서 프로토콜 적용 불가능 |
요점 정리
- IPsec이란? Network layer에서 여러가지 암호화와 인증을 해주는 프로토콜
- IPsec기능? 기밀성, 무결성, 송신자인증, 재전송 공격 방지 등
- IPsec 프로토콜? 메시지 인증해주는 AH 헤더, 기밀성까지 보장해주는 ESP 헤더, 키 교환시 이용되는 IKE
- IPsec 동작 모드? 호스트 사이에서 적용되는 transport mode / 게이트웨이 사이에서 적용되는 tunnel mode
[용어/개념] 프로세스(Process) vs 쓰레드(Thread) 비교 정리
[Linux] tcpdump 명령어 사용법 - 송수신되는 패킷 정보 출력하기