IT를 공부하면서 VPN을 굉장히 많이 들어보았다.
단순히 가상 사설망 이라는 이름에서 오는 감으로 그냥 넘어갔었는데, 이번기회에 조금 더 deep하게 알아볼 수 있었다.
인터넷 위에 가상의 전용선을 만들 수 없을까?
Virtual Private Network
인터넷을 사용하지만 “암호화 + 터널”을 만들어서 마치 전용선 처럼 사용할 수 있게 하는 깃ㄹ.
즉 “공용망 위에 사설망을 가상으로 만드는 것”이다.
VPN은 크게 터널링 + 암호화 + 인증 + 무결성 이렇게 4가지 개념이 함께 들어가있다.
터널링을 통해 패킷을 감싸서 안의 내용을 숨겨줄 수 있다.
원래의 네트워크 패킷 위에 새로운 헤더를 붙인다 -> 외부에서는 내부 패킷의 존재만 알 수 있고 네트워크 경로를 감출 수 있다.
하지만 터널링 만으로는 보안이 완전하지 않다. 패킷을 열어볼 수 있다면 내부 데이터를 그대로 확인할 수 있기 때문이다.
이때 암호화 없이 터널링만 하게되면 패킷을 깠을 때 내용이 보이게 된다.
터널링은 겉으로 봤을 때 원래 내용을 숨겨주는 것이다. 단, 보호까지 해주지는 않는다.
내용을 이해할 수 없게 하는것
터널링만 적용하면 패킷을 열어보는 순간 내부 데이터가 그대로 노출된다.
이 문제를 해결하기 위해 사용하는 것이 암호화다.
암호화를 적용하면 패킷을 강제로 열어보더라도 내용을 해석할 수 없다.
VPN에서는 대칭키 암호화와 비대칭키 암호화를 함께 사용한다.
먼저 비대칭키 기반의 키 합의 과정을 통해 안전하게 세션 키를 생성한다.
대표적으로 Diffie-Hellman 방식이 사용된다.
이 과정에서는 실제 키를 네트워크로 보내지 않고, 서로 계산을 통해 동일한 키를 만들어낸다.
즉, 키를 전달하지 않고도 공유할 수 있다. (공개값 교환 → 서로 계산 → 동일한 공유키 생성)
이렇게 만들어진 세션 키는 실제 데이터 암호화에 사용된다.
세션 키는 한 번의 통신 동안만 사용되며, 보안을 위해 주기적으로 변경된다.
이후 실제 데이터 암호화는 대칭키 방식으로 수행된다.
대칭키 방식은 속도가 빠르기 때문에 실시간 통신에 적합하다.
서로가 신뢰할 수 있는 대상인지 확인
인증은 통신을 시작하기 전에 상대방이 진짜인지 확인하는 과정이다.
대표적인 인증 방식은 다음과 같다.
PSK 방식
미리 동일한 키를 공유하여 인증하는 방식으로 구현이 간단하지만, 키 유출 시 보안에 취약하다.
인증서 기반 방식
PKI를 이용하여 상대 장비를 인증하는 방식으로, 보안성과 신뢰성이 높아 기업 환경에서 사용된다.
ID/Password 방식
원격 접속 VPN(Remote Access)에서 사용자 인증에 사용되는 방식으로, 계정 정보를 기반으로 인증한다.
데이터가 변조되지 않았음을 보장하는 성질
암호화는 데이터를 읽지 못하게 만드는 역할을 하지만, 데이터 자체를 변조하는 것까지 막지는 못한다.
즉, 공격자가 데이터를 바꾼 후 그대로 전달할 수도 있다. 즉, 수신자는 그 데이터가 원본인지 알 수 없게 된다.
그래서 필요한 것이 무결성이다.
동작 과정은 다음과 같다.
먼저 송신 측에서 데이터를 생성한다.
그 다음, 데이터와 세션 키를 이용해 HMAC을 생성한다.
이때 송신자와 수신자는 이미 Diffie-Hellman 등의 방식으로 동일한 세션 키를 공유하고 있다.
이 키를 이용해 HMAC을 생성한다.
이후 데이터와 HMAC을 함께 전송한다.
수신 측에서는 데이터를 받은 후, 동일한 방식으로 HMAC을 다시 계산한다.
그리고 송신자가 보낸 HMAC과 비교한다.
두 값이 같으면 데이터는 변조되지 않은 것으로 판단한다.
값이 다르면 데이터가 변경된 것으로 보고 폐기한다.
HMAC을 사용하는 이유는 단순 해시의 한계를 보완하기 위해서다.
만약 데이터와 해시값만 함께 전송한다면,
공격자는 데이터를 변조한 뒤 새로운 해시를 계산해 붙일 수 있다.
이 경우 변조 여부를 탐지할 수 없다.
하지만 HMAC은 데이터와 비밀키를 함께 사용한다.
비밀키를 모르면 올바른 HMAC을 생성할 수 없기 때문에,
데이터 위변조를 효과적으로 방지할 수 있다.
→ 사용자의 PC를 사용하지 않음.
Full Tunnel
사용자가 업무 트래픽 말고도 인터넷 트래픽까지 회사망을 통해서 사용하는 것
회사에서 트래픽을 통제할 수 있기 때문에 보안이 매우 강함
split Tunnel
업무 트래픽은 VPN회사망으로 사용하고 인터넷 트래픽은 로컬에서 직접 사용하는 것이다.
속도가 빠르지만 트래픽 통제가 어렵기 때문에 회사망쪽으로의 공격 경로가 증가된다.
ISAKMP가 프레임워크라고 하면 실제로 구현하고 움직이는 프로그램이 IKE이다.
ISAKMP (구조 정의)
↓
IKE (동작 구현)
↓
Diffie-Hellman (키 생성 도구)