Computer Science/컴퓨터네트워크(ComNet)

[컴네/CN] 암호통신: IPSec

gxxgsta 2023. 12. 9. 17:09
반응형
SMALL

IP Sec

IP Sec(IP Security)은 IP 패킷 자체를 암호화하는 알고리즘이다.

encryption(암호화), authentication(인증), integrity(무결성)를 제공한다.

 

TCP 연결 시 TLS를 사용하여 암호화를 진행하지만,

BGP라우터 또는 DNS에 패킷을 가로챌 수 있다.

TLS 1.2의 경우 데이터가 암호화되어 내용이 보이진 않지만 SNI 필드로 인해 해당 패킷이 어디를 향하는지 확인할 수 있다. 이러한 상황을 ip단에서 막기 위해 등장하였다.

 

IPSec은 두 가지 모드가 있다.

 

transport mode

 

PC 사이 즉 호스트 간의 통신 시의 트랜스포트를 암호화한 것이다.

즉, 데이터그램의 페이로드 부분만을 암호화 및 인증한다.

 

tunnel mode

 

도메인 간 라우팅 시 패킷이 외부 도메인으로 가기 위해서는 꼭 gateway 라우터를 거친다.

이때, gateway 라우터에서 암호화를 진행하여 터널에서는 해당 패킷이 무조건 안전하다고 할 수 있다.

 

tunnel mode는 전체 데이터그램을 암호화 및 인증하며, 암호화된 데이터그램은 다른 IP 패킷으로 캡슐화된다. 이때, 이 캡슐화는 gateway 라우터에서 진행한다.

 

Two IPsec protocols

IPsec의 구현방법은 아래와 같이 두 가지가 존재한다.

- Authentication Header (AH) [RFC 4302]

암호화 기능은 제공하지 않고, 인증만 할 수 있다.

 

- Encapsulation Security Protocol (ESP) [RFC 4303]

암호화 및 인증 기능을 담당한다.

보통 암호화 기능까지 있는 것을 선호하기 때문에 ESP 방법을 많이 쓴다.

 

Security associations (SAs)

SA는 암호화 관련 여러 기능들을 결합한 것으로 데이터를 전송하기 전 호스트 또는 라우터 사이에서 Security Associations (SA)를 만든다.

 

라우터, 또는 호스트 간에 SA가 맺어지면, 그 사이에 전송되는 패킷은 ip단에서 암호화를 진행하여 모두 안전하다고 할 수 있다.

 

ip는 패킷단이라고 할 수 있는데,

다익스트라 알고리즘을 사용하는 경우 항상 같은 경로를 통해 전송되지 않으며 라우터에서는 해당 상태를 저장하지 않는다.

IPSec의 경우 패킷의 상태를 저장한다. 상대방에 대한 정보 또는 state를 기억하는데, 기억하며 암호화 전송을 해야 암호화 시 키와 같은 정보를 이용할 수 있다.

 

IPsec datagram

 

IPSec을 이용하여 패킷을 전달할 때 tunnel mode를 사용하는 경우 라우터 사이의 패킷을 별도로 만든다. 이때 이 패킷을 ESP 알고리즘으로 원래의 IP 패킷을 다른 IP 패킷으로 캡슐화하여 전송한다. 이때 캡슐화시키는 패킷은 위와 같은 모양을 가지고 있다.

 

위 사진에서 초록색 부분이 원래 전송하려고 했던 original packet이다.

새로운 패킷의 구성은 아래와 같다.

 

- ESP trailer

block cipher(암호)를 위한 padding이 있다.

 

- ESP header

replay attack를 막기 위한 seq #과, SPI가 있다.

 

현재 가고 있는 라우터에 대한 목적지가 new IP header에 있고 최종으로 도달해야 하는 목적지가 original packet에 있다. 이렇게 캡슐화된 패킷은 라우터에 decapsulization된다.

 

IKE: Internet Key Exchange

앞서 우리는 라우터 사이에 SA를 생성한다고 하였다.

SA에는 어떤 내용이 들어있는지 확인해보자.

 

- SPI: 12345
- Source IP: 200.168.1.100
- Dest IP: 193.68.2.23
- Protocol: ESP
- Encryption algorithm: 3DES-cbc (암호화 알고리즘)

- HMAC algorithm: MD5 (해시 알고리즘)

- Encryption key: 0x7aeaca... 

- HMAC key:0xc0291f...

 

VPN

VPN은 가상으로 만든 private network이다. private network는 public network의 반대말로 public network(공중망 네트워크)는 누구나 접근이 가능한 네트워크이다.

 

예를 들어 분점에서 본점으로 매출액과 같은 기밀 정보를 전송할 때, 공중망을 사용하면 안 된다. 따라서 보통은 KT의 공중망과 계약하여 개인 네트워크처럼 사용하는데, 개인 네트워크로 만드는 기술 줄 하나가 IPSec이다.

 

보통은 회사 차원에서 많이 사용하지만, 이러한 기능을 상업적으로도 제공하여 우리가 VPN을 통해 미국 서버의 넷플릭스를 시청할 수 있는 것과 같다.

 

이러한 IPSec는 암호화, 인증, 무결성을 모두 지원한다.

TLS, 이메일 보안, IPSec와 같은 보안은 임의로 제작하였던 TCP/IP가 상용화되며 생성된 방법들이다.


참고 및 출처

https://velog.io/@dltmdrl1244/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-8-6.-IPsec

반응형
LIST