요약: VPN 서비스는 암호 및 연결 프로토콜을 사용하여 웹 트래픽을 이해할 수 없는 코드로 변환함으로써 제3자의 감시로부터 사용자의 브라우징 활동을 보호합니다. AES-256이나 ChaCha20 보다 약한 암호를 사용하여 데이터를 암호화하는 VPN은 안전하다고 할 수 없습니다.
VPN 터널은 기기와 VPN 서버 사이에 설정된 보안 채널로, 공용 인터넷에 안전한 비밀 경로를 생성합니다.
원래 트래픽이 암호화되고 암호화되지 않은 트래픽 레이어로 래핑되기 때문에 터널이라고 불립니다.
쉽게 설명하자면 봉인된 봉투를 다른 주소가 적힌 또 다른 봉투 안에 넣어 원본 메시지를 숨기고 가로채는 사람이 읽을 수 없도록 만드는 것과 같습니다.
캡슐화라고 하는 이 프로세스는 터널링 프로토콜에 의해 수행됩니다.
VPN 암호화
암호화는 일반 텍스트 데이터를 비밀 코드로 변환하여 해독에 필요한 키가 없으면 누구도 읽을 수 없도록 만듭니다.
VPN은 암호화를 사용하여 기기와 VPN 서버 간의 브라우징 활동을 숨겨 다양한 형태의 감시로부터 사용자를 보호합니다.
VPN은 암호를 사용하여 사용자의 온라인 활동을 읽을 수 없는 코드로 변환합니다. 암호는 데이터를 암호화하고 해독하는 수학적 알고리즘(예: 일련의 규칙)으로, 주로 특정 키 길이와 결합됩니다.
키는 암호화된 데이터를 변경하는 데 사용되는 문자열입니다. 동일한 키를 소유한 사람만이 데이터를 해독할 수 있습니다.
일반적으로 키 길이가 길수록 암호의 보안 강도가 높아지기 때문에 AES-256이 AES-128보다 더 안전합니다.
어떤 VPN 프로토콜은 장기간 사용하도록 설계된 고정 키를 사용하는 반면, 어떤 프로토콜은 단일 세션 또는 데이터 교환 후 만료되는 임시 키를 사용합니다.
암호화에 사용되는 암호는 다음과 같이 작동합니다:
- 데이터를 보내기 전에 암호가 키를 사용하여 데이터를 암호화합니다.
- 수신자가 데이터를 해독하는 데 사용하는 키와 동일하거나 관련된 키가 사용됩니다.
- 맞는 키를 가진 대상만이 데이터를 해독하고 읽을 수 있습니다.
VPN에서 사용하는 암호는 개발자가 성능보다 보안을 얼마나 우선시하는 지에 따라 결정되는 경우가 많습니다. 암호가 강력할수록 처리하기가 더 힘든 경향이 있기 때문입니다.
시간이 지남에 따라 최신 암호도 등장하고 있으며 더 높은 품질의 서비스와 통합됩니다.
VPN 서비스에서 가장 일반적으로 사용되는 암호는 다음과 같습니다.
- 고급 암호화 표준 (AES)
- 온라인 암호화 프로토콜의 정석
- 128비트 및 256비트 키 길이로 제공
- 더 강력한 보안을 위해서는 AES-256 선호
- 양자 내성 암호화
- 블로피시(Blowfish)
- 1993년에 설계되었으나 지금은 대부분 AES-256으로 대체됨
- 128비트 키 사용 (32비트에서 448비트까지도 사용 가능)
- 공격에 취약한 것으로 알려짐
- AES-256 대비책으로 사용
- ChaCha20
- 인기가 많아지고 있는 새로운 암호
- 256비트 키 사용
- AES-256과 동등한 수준의 보안
- 더 빠른 성능 (특히 모바일 기기에서)
- 카멜리아(Camellia)
- 2000년에 개발됨
- ES와 동등한 수준의 보안 및 속도
- 미국 국립표준기술원(NIST)의 인증을 받지 않음
- 대부분의 VPN 소프트웨어에서 지원하지 않음
암호화 모드는 AES 같은 암호가 데이터를 암호화하는 방법을 결정합니다. 이는 VPN 보안에 매우 중요하며 개인정보 보호와 성능 모두에 영향을 미칩니다. VPN에 주로 사용되는 가장 일반적인 모드는 다음과 같습니다:
- CBC (암호 블록 체인)
- 기존의 모드
- 종속 블록 체인 생성
- 최신 모드보다 느릴 수 있음
- 추가적인 보안 조치 필요
- GCM (갈루와/카운터 모드)
- 암호화 및 인증 제공
- CBC보다 빠른 속도
- 매우 안전한 것으로 평가됨
- 최신 VPN에서 널리 사용
- CTR (카운터)
- 블록암호를 스트림암호로 변환
- 빠른 속도 및 병렬 처리 가능
- 인증만 단독으로 제공하지 않음
- ChaCha20에서 사용
- OCB (오프셋 코드북 모드)
- 단일 패스로 인증된 암호화 제공
- 매우 효율적
- 특허 문제로 인해 사용에 한계
이 외의 모드는 VPN에서 피하는 것이 좋습니다. 특히 ECB(전자 코드북)는 너무 단순해서 보안을 유지할 수 없는 반면, CFB(암호 피드백)와 OFB는 복잡하고 오래된 것이기 때문에 구성이 잘못되기 쉽습니다. 별도의 인증 메커니즘과 결합되지 않는 한 무결성 검사가 없는 모드도 피해야 합니다.
현재 대부분의 최상위 VPN은 보안과 성능의 적절한 균형을 제공하는 AES나 ChaCha20-Poly1305 조합과 함께 GCM 모드를 사용합니다. Top10VPN이 VPN을 리뷰할 때 이러한 최신의 인증된 암호화 모드를 사용하는지 확인합니다.
VPN 프로토콜
VPN 프로토콜은 VPN 서버와의 보안 연결을 설정하기 위해 따라야 하는 일련의 규칙 및 프로세스입니다.
VPN 프로토콜은 VPN 터널이 형성되는 방식을 결정하고 암호는 터널을 통과하는 데이터를 암호화하는 데 사용되는 것입니다.
사용 중인 프로토콜에 따라 VPN의 속도, 기능, 취약성이 달라집니다. 대부분의 VPN은 앱은 특정 프로토콜을 디폴트로 설정해두었지만, 앱 설정에서 어떤 프로토콜을 사용할 지 선택할 수도 있습니다.
일반적인 VPN 프로토콜:
- 오픈VPN: 오픈 소스로 매우 안전하며 호환성과 구성 수준이 높습니다.
- 와이어가드: 엄청나게 빠르고 매우 효율적입니다. 상대적으로 역사가 짧지만VPN 업계에서의 사용이 빠르게 증가하고 있습니다.
- IKEv2/IPsec: 빠른 재연결 덕분에 모바일 VPN에 적합하지만 소스가 비공개이고 외부 공격을 받았을 가능성이 있습니다.
- SoftEther: 빠르고 안전하며 검열을 우회하지만 제대로 지원되지 않습니다.
- L2TP/IPsec: 느리며 해킹된 것으로 의심됩니다.
- SSTP: 방화벽을 우회하는데 적합하지만 비공개 소스이며 중간자 공격에 취약합니다.
- PPTP: 오래된 프로토콜이며 안전하지 않지 때문에 사용을 피해야 합니다.
VPN 프로토콜을 자세히 비교해보고 싶다면 Top10VPN의 VPN 프로토콜 가이드를 확인해보시기 바랍니다.
VPN 핸드셰이크
VPN 핸드셰이크는 보안 연결을 시작하는 데 있어 중요합니다. 과정은 다음과 같습니다:
- 인증: VPN 클라이언트와 서버의 신원 확인
- 키 교환: 세션의 암호화 키를 안전하게 공유
- 매개변수 협상: 통신 규칙 및 사용할 암호 제품군에 동의
VPN 핸드셰이크 과정 중에 기기와 VPN 서버는 데이터를 교환하여 보안 채널을 설정합니다. 이 교환을 통해 공유 비밀 키가 생성되는데, 이 키가 VPN 세션 전체에서 데이터를 암호화하고 해독하는 데 사용됩니다.
VPN 핸드셰이크는 주로 RSA (Rivest-Shamir-Adleman) 알고리즘을 사용합니다. RSA는 지난 20년 동안 인터넷 보안의 기반이었습니다. 하지만, 키 길이가 중요합니다.
적절한 보안을 위해서는 RSA-2048 또는 RSA-4096을 사용하는 VPN 서비스를 선택하는 것이 좋습니다. 컴퓨팅 성능의 발전으로 인해 RSA-1024는 더 이상 안전하다고 여겨지지 않습니다.
대부분의 경우 안전하지만, 핸드셰이크 프로세스는 손상될 경우를 대비하여 해당 서버의 모든 세션을 잠재적으로 해독할 수 있는 ‘마스터 키’를 생성합니다.
이 때문에, 공격자가 VPN 서버를 해킹하여 VPN 터널을 통해 흐르는 모든 데이터에 액세스할 수 있습니다.
이러한 위험을 방지하려면 완전 순방향 비밀성으로 설정된 VPN 서비스를 사용하는 것이 좋습니다.
완전 순방향 비밀성
완전 순방향 비밀성이 작동하는 방식 도식화
완전 순방향 비밀성(PFS)은 최신 VPN 프로토콜에서 가장 중요한 보안 기능입니다. 디피 헬먼 키 교환 알고리즘 (DH) 또는 타원곡선 디피 헬먼 키 교환 알고리즘 (ECDH)을 사용하여 고유한 임시 세션 키를 생성합니다.
완전 순방향 비밀성은 암호화 키가 연결 과정에서 절대 교환되지 않도록 합니다.
완전 순방향 비밀성의 주요 장점은 다음과 같습니다:
- 독립 키 생성: VPN 서버와 클라이언트가 동일한 암호화 키를 교환하지 않고 독립적으로 키를 생성합니다.
- 세션 격리: 각 연결에서 고유한 키를 사용하여 단일 세션이 손상되더라도 이로 인한 잠재적 피해를 방지합니다.
- 임시 보안: 키가 일시적으로 사용되며, 사용 후 폐기되기 때문에 캡처된 데이터의 향후 암호 해독을 방지합니다.
RSA는 인증에 중요하지만, RSA만으로는 완전 순방향 비밀성을 구현할 수 없습니다. PFS를 구현하려면 암호화 제품군에 DH나 ECDH를 포함해야 합니다. ECDH는 핸드셰이크에 대한 강력한 보안을 제공하는 반면, DH는 잠재적인 취약점이 있기 때문에 다른 암호와 함께 사용해야 합니다.
Top10VPN이 추천하는 VPN 프로토콜인 OpenVPN과 와이어가드는 완전 순방향 비밀성을 지원합니다.
해시 인증 (Hash Authentication)
보안 해시 알고리즘(SHA)은 다음을 통해 VPN의 보안에 중요한 역할을 합니다:
- 전송 중 데이터 무결성 확인
- 클라이언트-서버 연결 인증
- 무단 데이터 조작 방지
SHA는 해시 함수를 사용하여 소스 데이터를 “해시 값”이라고 하는 고정 길이 문자열로 변환합니다. 이는 단방향 프로세스이므로 되돌릴 수 없습니다. 입력에서 문자 하나만 변경해도 출력되는 해시 값이 완전히 변경됩니다.
VPN 통신이 작동하는 방식은 다음과 같습니다:
- 발신자가 합의된 해시 함수를 데이터에 적용합니다.
- 수신자는 동일한 기능을 사용하여 수신된 데이터에서 해시를 생성합니다.
- 생성된 해시가 전송된 해시와 일치하면 데이터 무결성이 확인됩니다.
- 일치하지 않는 해시는 변조 가능성이 있기 때문에 데이터가 삭제됩니다.
SHA 해시 인증은 유효한 인증서의 변조를 감지할 수 있기 때문에 중간자 공격을 방지하며, 해커가 합법적인 VPN 서버로 가장하는 것을 막을 수 있습니다.
보안을 극대화하려면 SHA-2 이상을 사용하는 VPN 서비스를 사용하는 것이 좋습니다. SHA-1은 보안을 손상시킬 수 있다는 취약성이 입증되었습니다.