이전 글에서 프록시에 대해서 알아봤다. 잠깐 언급하자면 프록시는 엔드유저와 인터넷 사이에서 IP 주소를 바꿔 직접적인 통신이 아닌 간접적인 통신을 해주는 미들웨어라고 했다.
하지만 프록시의 문제는 데이터가 암호화가 되지 않는다는 것이다. 프록시는 사용자의 IP를 가려주기만 할 뿐 메시지는 평문으로 전송된다.
이 문제로 암호화하지 않은 데이터는 해커나 정부 등에서 볼 수 있고, 다른곳에 쓰이거나 정부가 막아놓은 페이지라면 볼 수 없는 것이다.
그러므로 여기서 VPN
이라는 기술이 등장한다. 이는 데이터를 암호화한다. 그러므로 데이터를 보안
, 익명성
, 암호화
할 수 있다. 자세한 것을 더 알아보도록 하자.
2가지가 있다.
공용 네트워크에서 사설 네트워크를 사용할 수 있도록 하기 위해 터널링(Tunneling)
을 사용한다. 이는 두 엔드포인트 간에 가상 경로를 설정하여 전용선처럼 사용할 수 있도록 만들어준다.
간단히 설명하면 데이터를 암호화 알고리즘을 통해 알아볼 수 없게 만든 후 특정 프로토콜로 감싸 전송한다. 이를 상대방은 같은 종류의 복호화 알고리즘을 통해 데이터의 원본을 알아내고 이를 통해 데이터를 안전하게 주고받는다. 이것이 두 엔드포인트간의 터널링이다. 이는 익명성
을 보장해준다.
암호화
는 여러가지 방법이 있다. 대칭키(비밀키) 암호 알고리즘
과 비대칭키(공개키) 암호 알고리즘
이 있는데, 이는 어째됐든 1:1 통신을 위한 비밀번호 이므로 서로간의 데이터를 주고받기 위해 사용한다. 즉, 두 개의 엔드포인트 외에 데이터에 접근하거나 열람할 수 없다. 그러므로 앞서 설명했던 보안
과 더불어 암호화
가 가능한 것이다.
앞서 말했다시피 공용 네트워크에서 내 민감한 정보를 보호하기 위해 사용한다고 했다. 만약 카페같은 곳에서 Wi-fi를 연결해서 결제를 하려 하면 이 정보들이 보여질 수 있다는 말이다(물론 요즘 와이파이 기술들은 보안에 취약하지 않다...라고 생각했지만 며칠 전 투썸을 가보니까 공용 wifi더라.) 그렇게 되면 개인정보나 카드정보가 해커에게 넘어간다면... 끔찍한 일이 아닐 수 없다.
한 네트워크에서 다른 네트워크로 접속을 거쳐 데이터를 보낼 수 있도록 하는 기술을 말한다. 이 때 데이터 패킷은 하나의 프로토콜이 다른 프로토콜을 감싸서 캡슐화한 후 운반된다.
일반적으로 터널링 기법은 보안채널의 역할을 하므로 뒤에 소개할 암호화 기법이 적용된다. 보통 사용되는 프로토콜은 PPTP
나 OpenVPN
, L2TP/IPSec
, IKEv2/IPSec
이다.
VPN터널을 생성하고 VPN에 액세스 하기 위해 사용자는 승인된 비밀번호를 사용하여 VPN에 로그인해야한다. 옛날에 많이 사용했지만 암호화를 제공하지 않아 더이상 사용하지 않는다.
MS와 Cisco가 개발한 VPN이다. 보안 프로토콜과 결합하여 안전한 VPN을 제공한다.
두 연결지점 간 터널을 형성하고 IPSec과 같은 다른 VPN의 데이터를 암호화하고 터널 보안에 중점을 두는 방식이다.
데이터 기밀성 및 무결성을 모두 제공하는 것이 PPTP와의 큰 차이점이라 할 수 있다.
IPSec 암호화는 인터넷을 통한 데이터의 안전한 전송을 위한 VPN 프로토콜이다. IPSec은 다음과 같은 기능을 제공한다.
기밀성(Confidentiality): packets encrypted before transmission
무결성(Integrity): authenticates packets at the destination peer to ensure that data has not been tampered during transmission
인증(Authentication): peers authenticate source of all IPSEC protected packets
리플레이방지(Anti-replay): prevents capture and replay of packets
클라이언트리스 VPN이 등자한다. 사용자는 VPN을 접속하기 위해 전용 클라이언트 및 소프트웨어를 설치하고 관리 및 유지보수가 필요했다. 인터넷 브라우저를 이용하여 쉽게 VPN을 사용할 수 있다.
SSL(Secure Sockets Layer)은 웹서버와 브라우저간 안전한 통신을 위해 넷스케이프에서 만든 프로토콜이다. 사용자와 SSL VPN장비 사이의 안전한 데이터 교환을 위해 애플리케이션 계층에서 SSL을 이용한 암호화 서비스를 제공한다.
SSL VPN vs. IPSec
데이터의 기밀성과 무결성을 보장한다. 다만, 데이터의 암호화를 구현하는 방식에서 차이가 있다.
OSI 7계층에서 각각 이런 일을 한다.
네트워크: IPSec VPN에서 채택한 기술 IPSec/IKE 사용
트랜스포트: SSL VPN에서 채택한 SSL을 사용하는 SOCKS사용
애플리케이션: SSL VPN에서 채택한 SSL상에서 동작하는 HTTP
요약이다.
VPN은 간단히 인터넷 회선을 사용하여 종점간 데이터 전송시 가상으로 사설 네트워크를 사용하는 효과를 준다. 즉, 공중망을 경유하여 데이터가 전송되더라도 데이터는 외부인이 볼 수 없도록 보호된다.
터널링
이란 기술을 사용한다. 이는 종점간 암호화 알고리즘을 사용하여 데이터를 암호화하여 전송한다.
암호화 및 인증
을 한다. 이는 종점간 데이터 암호화 및 터널링 형성을 위해 사용되며 메시지 인증은 MAC이나 해시함수를 사용한다.