[컴퓨터네트워크] IPsec이란?

[컴퓨터네트워크] IPsec이란?

IPsec

IPsec은 하나의 프로토콜이 아니다.
네트워크 계층에서 보안을 제공하는 서비스와 프로토콜 모음을 말하는 용어이다.

데이터 그램을 암호화한다면 모든 페이로드의 내용을 보호할 수 있다.
OSI 7계층이나 TCP/IP 4계층에서 밑에 층[네트워크 계층]을 암호화 하면 위에 계층은 당연히 암호화 되기 때문이다.

  • 네트워크계층(IP 계층) 상에서 IP 패킷 단위로 인증 및 암호화를 하는 기술
  • 인터넷 경유 구간에 일종의 보안 통로인 터널링을 형성해 줌
    • 가상사설망(VPN)에서 많이 사용되는 터널링 프로토콜
  • 수송계층(TCP, UDP 등) 하위에서 구현되기 때문에 응용에 투명함
    • 응용 소프트웨어 변경 필요 없음

IPsec이 만들어진 이유

가장 큰 이유는 보안성의 요구이다.

오늘날 인터넷은 공공의 인터넷 망으로서 많은 보안 위협이 발생하였다.

발생하는 보안 위협
  • 데이터 무결성
    • 공격자가 천만원이라는 숫자를 1억이라 바꿨는지 아닌지 확인
  • IP 패킷의 송신지 위조
    • 진짜 은행에서 왔는지 공격자에게서 왔는지
  • 재전송 공격
    • 1천만원 송금 패킷을 10번 재전송
  • 프라이버시 문제
    • 사전인 대화 내용을 유출
그래서 이를 보호하기 위한 프로토콜이 개발되기 시작했다.


위의 그림처럼 Network 계층을 암호화 하기 때문에, 위의 데이터들은 캡슐화 되어 있어 이도 역시 암호화 시킬 수 있다.

또 IP Sec을 적용하기 위해서는 운영체제의 수정이 필요하다.
각 데이터 그램을 만드는 과정에서 이루어지기 때문에 이러한 과정이 일어나는 운영체제의 수정이 필요하다.


IP Sec 프로토콜

앞서 설명에서 IP Sec이란 서비스와 프로토콜의 모음이라고 하였다.
2가지 프로토콜이 존재한다.
AH, ESP이다. 다시 강조하지만이 두개는 프로토콜이다.

AH(Authentication Header) protocol


출발지 인증데이터 무결성을 보장한다.
하지만 기밀성은 보장하지 않는다.

ESP(Encapsulation Security Protocol)

ESP의 경우에는 출발지 인증, 데이터 무결성, 기밀성을 보장한다.
기밀성이 추가되어 있고, 이는 중요한 사항이기 때문에 AH보다 더 많이 사용된다고 한다.



IP Sec의 모드

IP Sec에는 프로토콜과 마찬가지로 두가지 모드가 존재한다.
전송 모드(Transport)와 터널 모드(Tunnel Mode) 두가지 이다.

전송 모드(Transport) 


상위 계층의 프로토콜을 보호한다. 그렇기 때문에 원본의 IP Header는 보호되지 못한다.

그리고 Host to Host 전송을 제공한다. 즉 컴퓨터끼리 연결하기 위해서 만들어진 모드이다.

하지만 이를 이루기 위해서는 통신을 원하는 모든 컴퓨터는 운영체제의 수정이 필요하다.

각 컴퓨터의 성능을 고려해야 하기 때문에 최소한의 헤더만 추가가 이루어 지며, 성능 상에는 많은 자원을 먹지 않는다.
하지만 원본의 헤더가 그대로 존재하기 때문에 수동 공격이 가능하다.

(수동 공격 : 도청, 스캐닝, 트래픽 분석을 말한다. 비록 그 내용을 알수 없다 하여도 통신을 하는지 누구와 통신을 어떻게, 얼마나 많은 양의 데이터가 오가는지 알 수 있다.)


터널 모드(Tunnel Mode)


해당 모드는 전체 패킷을 보호하는데, 이를 풀어서 설명한다.

위의 전송 모드에서는 원본 IP Header가 그대로 존재하였다. 하지만 터널 모드에서는 새로운 해더를 만든다.
그러면 어떠한 Host끼리 통신하는지 정확하게 파악하기 힘들어 수동 공격에 잘 안통한다.

앞서 해당 모드는 Host간 통신을 제공하기 위해서 만들어진것이 아니라, 방화벽 대 방화벽 전송을 위해서 만들어진 모드이다.

방화벽 대 방화벽이라고 하면 이해하기 어려워서 쉽게 라우터간 통신을 위해서 만들어진 모드라고 생각하면 된다.

해당 장치에서 모든 보호 작동이 이루어지고 새로운 헤더를 만들어서 사용할 수 있다.
원본 헤더를 해석하는 능력을 갖추고 있기 때문이다.



IP Sec 요구 수준

IPv4 : 선택적인 요구사항
IPv6 : 의무적인 요구사항



출처

댓글

이 블로그의 인기 게시물

[Python] # -*- coding: utf-8 -*-를 쓰는 이유

[소프트웨어공학] NS(Nassi-Schneiderman) 차트

[컴퓨터네트워크] Telnet이란?