-
VPN (Virtual Private Network)란?
- 가상 사설망의 약자이다. 이름에서 알 수 있듯이 VPN은 두 개 이상의 물리적 네트워크 (또는 장치) 사이의 인터넷/공용 네트워크를 통해 생성된 가상 네트워크로, 사용자/장치가 직접 연결된 하나의 개인 네트워크에 있는 것처럼 데이터를 보내고 받을 수 있도록 확장된 개인 네트워크를 만듭니다. 따라서 VPN에 연결된 애플리케이션은 동일한 기능을 실행할 수 있고 개인 네트워크에 연결되어 있는 것처럼 관리할 수 있습니다.
VPN을 사용하는 이유는 무엇인가요?
- 인터넷에 연결된 모든 장치에는 브라우저, 명령줄 또는 기타 방법을 사용하여 해당 장치를 식별하고 연결하는 데 사용되는 공용 IP 주소가 있습니다. 이 작업을 수행하기 위해 데이터는 인터넷을 통해 전송되고 IP 주소와 같은 정보를 포함하는데, 이 정보를 안전하지 않은 네트워크를 통해 전송하면 중간에 차단 될 수도 있습니다. 인터넷을 통해 전송되는 신원 정보, 개인정보, 데이터를 보호하기 위해 VPN을 사용하여 두 장치/네트워크 간에 개인 연결을 구성할 수 있습니다.
VPN은 어떻게 작동하나요?
- 인터넷에서 VPN을 사용하면 두 장치/네트워크 사이에 암호화된 개인 터널이 생성됩니다. 따라서 VPN 덕분에 데이터를 도청하기가 훨씬 더 여렵고, 네트워크에 침입하는 경우에도 데이터가 암호화되기 때문에 해당 데이터에서 정보를 얻는 것은 거의 불가능합니다. VPN 터널을 만드는 데 사용되는 프로토콜에는 PPTP, L2TP, IPsec과 같은 여러 VPN 터널링 프로토콜이 있습니다.
VPN 기술 및 장점
- 인터넷은 원격에 존재하는 시스템과의 상호연결을 위한 휼륭한 수단을 제공하지만, 원격근무자가 회사 내부 네트워크에 공용으로 사용하는 인터넷을 통해 접속하는 경우 보안 위험이 존재합니다.
- VPN기술은 지사 사무실, 홈 오피스, 비즈니스 파트너 사이트, 그리고 원격 근무자들이 그들의 회사 네트워크에 접속하기 위한 가상의 WAN 인프라를 제공합니다.
- 이를 위해서는 전용망을 대신하여 트래픽을 암호화하는 기술을 사용하며, 인터넷을 통하여 라우트 되는 가상의 연결을 사용합니다.
- VPN을 사용하면 원격 사이트와 원격근무자들이 회사의 네트워크에 안전하게 연결할 수 있습니다.
- VPN상의 데이터는 암호화되어 자격 없는 사람에 의해서는 해독이 불가능합니다.
- VPN은 원격의 호스트들을 회사 네트워크의 방화벽을 내부로 옮겨 오는것과 같은 수준의 보안성을 제공합니다.
- VPN을 사용하는 경우의 장점은 다음과 같습니다.
* 비용절감
* 보안성
* 확장성
VPN의 종류
Site-to-Site VPN
- 전용선이나 프레임릴레이 연결과 동일한 방식으로 분산된 지역들을 상호 연결하도록 하는 VPN 방식
- 회사의 인트라넷과 비즈니스파트너의 extranet을 연동하는 방식입니다. 실제로 이는 고전적인 WAN 네트워킹의 확장으로서 네트워크 전체를 상호 연결하는 것임. ex) 지사와 본사의 네트워크를 상호 연결합니다.
- VPN gateway를 통해서 TCP/IP 트래픽을 송수신하게 되며, 이는 Router나 PIX방화벽 혹은 ASA방화벽이 될 수 있습니다.
- VPN gateway는 특정 사이트로 부터 특정 타깃 사이트의 VPN gateway로 터널링을 생성하여 송신되는 모든 트래픽을 캡슐화하고 암호화하며, 수신되는 쪽에서는 이를 복호화하게 됩니다.
Remote Access VPN
- 모바일사용자나 원격근무자들이 사용하는 VPN 타입입니다.
- 과거에는 원격근무자들을 dialup 네트워크를 이용하여 회사에 접속했었는데, 이는 비싼 장거리 전화요금을 부담해야 하는 문제가 있었습니다.
- 근래에는 대부분의 원격 근무자들을 집에서 인터넷을 사용할 수 있으며, broadband 연결을 통하여 원격 VPN을 설정할 수 있습니다.
- remote access VPN에서 각각의 호스트는 VPN client software를 가지고 있게 되며, 호스트들이 트래픽을 전송할 때마다, 이 소프트웨어가 트래픽을 캡슐화하고 암호화합니다.
- 수신하는 VPN gateway는 site-to-site와 동일한 방식으로 데이터를 다루게 됩니다.
VPN의 구성요소
- VPN은 공중 네트워크 인프랑 위에 사설 네트워크를 생성하여 신뢰성과 보안성을 보장하게 됩니다.
- VPN은 패킷스니핑, 송신자 인증, 그리고 메시지 무결성을 위해 암호화 터널링 프로토콜을 사용합니다.
- VPN을 구성하기 위해 필요한 요소
- 서버와 워크스테이션을 포함한 네트워크
- 인터넷 연결
- 라우터, 방화벽, VPN concentrators, ASA 등과 같이 VPN 연결을 설정하고 관리하며 제어하기 위한 end point로서 동작하는 VPN gateway
- VPN 터널링을 생성하고 관리하기 위해 적절한 software
- VPN이 보안성을 위해 수행하는 중요한 역할
- Encapsulation: 터널링이라고도 부릅니다. 한쪽 네트워크에서 다른 네트워크로 공유 네트워크 인프라를 통하여 데이터를 투명하게 전달합니다.
- Encryption: 암호화 키를 사용하여 상이한 데이터 포맷으로 데이터를 암호화 합니다.
VPN이 제공하는 보안성
Data confidentiality (신뢰성)
- 도청으로부터 데이터를 보호하는 기능
- 데이터 신뢰성은 인증되지 않았거나 권한이 없는 사용자에 의한 데이터 스니핑으로부터 메시지의 내용을 보호하는 것을 의미합니다.
- VPN은 이를 위해 캡슐화와 암호화 기법을 사용합니다.
Data integrity (무결성)
- 출발지에서 목적지로 데이터가 전송되는 동안 변조가 발생하지 않았음을 증명하기 위한 기법으로서 해쉬 기법을 사용합니다.
- 해쉬는 일종의 checksum과 같으며 물건을 봉인하는 seal과 같습니다.
*checksum (체크섬): 중복 검사의 한 형태로, 오류 정정을 통해, 공간(전자 통신)이나 시간(기억 장치) 속에서 송신된 자료의 무결성을 보호하는 단순한 방법입니다.
Authentication (인증)- 인증은 전송되는 메시지가 인증된 출발지로부터 왔으며, 인증된 목적지로 가는 것을 보장하는 기법입니다.- VPN은 이를 위해 Password, 디지털 서명, 스마트카드, 생체인증들을 사용합니다.
VPN 터널링- 적절한 데이터 신뢰성 능력을 VPN에 결합시킴으로써, 외도된 송신자와 수신자 만이 원래의 메시지 내용을 해석할 수 있도록 할 수 있습니다.- 터널링은 인터넷과 같은 공중 네트워크를 사용하여 사용자들이 마치 사설 네트워크인 것처럼 데이터를 전송할 수 있도록 하는 기술입니다.- 터널링은 전체 패킷은 다른 패킷 안으로 캡슐화하여 새로운 합성 패킷을 네트워크로 전송하도록 합니다. 이러한 특징은 터널링에서 사용하는 세 가지 클래스의 프로토콜로 분류될 수 있습니다.
VPN 데이터 암호화- 만약 평문이 공중 인터넷으로 통해 전달되게 되면, 이는 인터셉트되어 타인에 의해 읽힐 수 있으므로 암호화될 필요성이 있습니다.- VPN 암호화는 데이터를 암호화하며 비인가된 수신자는 이를 읽을 수 없게 합니다.- 암호화를 위해서 송신자와 수신자는 원래의 메시지를 코드화 된 폼으로 변형시키기 위해 사용되는 원리를 알고 있어야 합니다. 이는 암호화 알고리즘과 key를 의미합니다.- 특정 암호화 알고리즘의 보안 수준은 key의 길이에 의해 좌우됩니다. 키의 길이가 짧을수록 더 쉽게 깨지게 되지만, 메시지를 전달하는 시간이 짧아집니다.- 일반적인 암호화 알고리즘과 사용되는 키의 길이는 다음과 같습니다. - Data Encryption Standard (DES): IBM에서 개발, 56bit 키를 사용, 대칭키 암호화 방식을 사용함. - Triple DES (3 DES): DES의 발전된 버전. 하나의 키를 가지고 암호화를 한 후 다른 키를 가지고 복호화, 그러고 나서 마지막 다른 키를 가지고 암호화. 암호화 과정이 전 보다 강력합니다. - Advanced Encryption Standard (AES): NIST에서 DES를 대신하기 위해 개발. DES보다 더 안전하며, 3 DES보다 계산 효율적입니다. 128, 192, 256-bit 키를 사용합니다. - Rivest, Shamir, and Adelman (RSA): 비대칭키 암호화 시스템으로서 512, 768, 1024 이상의 키를 사용합니다.
VPN 데이터 무결성 및 인증- Hash는 데이터 무결성과 인증을 위해 사용합니다.- Hash는 message digest로도 부르며, 텍스트로부터 생성된 숫자를 의미합니다. (일반적으로 text보다는 길이가 작음)- Hash는 상이한 text가 동일한 Hash값을 생성하지 못하도록 하는 수식을 사용하여 만들어집니다.- 원래의 송신자가 메시지의 Hash를 생성하고 그것을 메시지와 함께 전송합니다. 수신자는 그 메시지를 복호화하고, 수신된 메시지로부터 새로운 Hash를 생성시켜서 두 Hash값을 비교합니다. 만약 이 두 값이 동일하면 수신자는 무결성에 문제가 없다고 확신합니다.
- VPN은 메시지의 무결성과 인증성을 확인하기 위하여 별도의 추가적인 메커니즘을 사용하지 않고 메시지 인증코드를 사용합니다.
- HMAC (Hashed Message Authentication Code)는 메시지의 무결성을 보장하는 데이터 무결성 알고리즘입니다.
- HMAC는 두 가지 parameter(message와 secret code)를 가지고 있습니다. Secret key는 송신자와 수신자만이 알고 있어야 합니다.
- 송신자는 secret key와 메시지로부터 형성된 값을 생성하기 위해 HMAC함수를 사용하며 이로부터 메시지 인증코드가 생성됩니다. 이 값이 메시지와 함께 수신자에게 전송이 되며, 수신자는 수신된 메시지에 동일한 secret key를 적용시켜 메시지 인증코드를 생성시킨 수 두 개의 값을 비교합니다
- 이를 위해 사용하는 HMAC 알고리즘은 다음과 같습니다.
- Message Digest 5 (MD5): 128bit 공유키를 사용합니다. 가변적 길이의 메시징화 128bit의 키가 결합되어 128bit의 Hash값이 생성됩니다. 이 Hash값이 원래의 메시지와 함께 원격으로 전송됩니다.
- Secure Hash Algorigm1 (SHA-1): 160bit의 secret key를 사용합니다. 가변적 길이의 메시지와 160bit의 키가 결합되어 160bit의 Hash값이 생성됩니다. 이 값이 원래의 메시지와 함께 원격으로 전송됩니다.
- VPN 터널의 한쪽 끝에 있는 장치는 해당 통신 경로가 안전한 지를 인정할 필요가 있습니다. 이를 위한 두 가지 인증 방법이 존재합니다.
- Pre-Shared Key (PSK): 안전한 채널을 사용하기 위해서 양쪽 사이에 공유된 비밀키. PSK는 대칭키 암호화 알고리즘을 사용합니다. PSK가 각 종단에 수동을 입력되어 양종단을 인증하기 위해 사용됩니다. 각 종단에서 인증키를 형성하기 위해 다른 정보와 결합되게 됩니다.
- RSA signature: 양쪽 peer를 인증하기 위하여 디지털 인증서 교환을 사용합니다. 로컬 장치는 Hash를 생성하여 사설키로 이를 암호화합니다. 이 암호화된 Hash값이 메시지에 첨부되어 원격으로 전달됩니다. 원격에서 암호화된 Hash는 local 쪽에서 사용한 개인키의 공개키로 복호화되어 이 복호화된 Hash가 재 계산된 Hash와 동일한지를 비교합니다.
'여러가지 공부' 카테고리의 다른 글
소프트웨어 역공학 실습 GDB exam1, exam1-1 (0) 2022.04.20 소프트웨어 역공학 시험 정리 (0) 2022.04.19 소프트웨어 역공학 3주자 (0) 2022.04.18 도커와 쿠버네티스 비교 (0) 2022.04.18 소프트웨어 역공학 (리버싱, 어셈블리어) 2주차 정리 (0) 2022.04.17