맨위로가기

와이어가드

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

와이어가드는 Jason A. Donenfeld가 2016년에 개발한 가상 사설망(VPN) 기술이다. 노이즈 프로토콜 프레임워크의 IK 핸드셰이크 패턴을 기반으로 하며, Curve25519, ChaCha20, Poly1305, SipHash24, BLAKE2s, HKDF 등의 암호화 알고리즘을 사용한다. UDP만을 사용하여 TCP 멜트다운 문제를 피하고 IPv4와 IPv6를 모두 지원한다. 리눅스 커널에 통합되었으며, OpenBSD, FreeBSD, Windows 등 다양한 운영체제에서 구현되었다. 설정 및 사용의 용이성, 강력한 암호화, 작은 코드베이스로 인해 긍정적인 평가를 받았다.

더 읽어볼만한 페이지

  • 터널링 프로토콜 - IPsec
    IPsec은 IP 네트워크에서 보안 통신을 제공하기 위한 프로토콜 스위트로서, 전송 모드와 터널 모드를 지원하며, AH, ESP 등의 프로토콜을 사용하여 데이터 무결성, 인증, 기밀성을 제공하고, IKE 프로토콜을 통해 보안 연결을 설정 및 키를 교환하는 개방형 표준이다.
  • 터널링 프로토콜 - PPPoE
    PPPoE는 이더넷을 통해 PPP 연결을 설정하는 네트워크 프로토콜로, DSL과 같은 광대역 환경에서 클라이언트-서버 모델로 동작하며, 사용자의 컴퓨터를 ISP에 연결하는 데 사용되고, 디스커버리 및 PPP 세션 단계를 거쳐 연결을 설정하며 전 세계에서 널리 쓰인다.
  • 가상사설망 - IPsec
    IPsec은 IP 네트워크에서 보안 통신을 제공하기 위한 프로토콜 스위트로서, 전송 모드와 터널 모드를 지원하며, AH, ESP 등의 프로토콜을 사용하여 데이터 무결성, 인증, 기밀성을 제공하고, IKE 프로토콜을 통해 보안 연결을 설정 및 키를 교환하는 개방형 표준이다.
  • 가상사설망 - 계층 2 터널링 프로토콜
    계층 2 터널링 프로토콜(L2TP)은 두 네트워크 노드 간 터널을 생성하여 데이터를 전송하는 데 사용되는 네트워크 프로토콜로, L2F와 PPTP에서 비롯되어 RFC 2661로 표준화되었으며, 자체 보안 기능이 없어 IPsec과 함께 사용되어 L2TP/IPsec으로 보안을 강화한다.
  • 자유 보안 소프트웨어 - 클램윈
    클램윈은 ClamAV 엔진 기반의 오픈 소스 백신 소프트웨어로, 트로이 목마, 바이러스, 멀웨어 등 다양한 악성 위협 분석 자료를 제공하며 예약 검사, 수동 검사, 컨텍스트 메뉴 통합 등의 기능을 지원하지만 실시간 감시 기능은 제공하지 않는다.
  • 자유 보안 소프트웨어 - OpenSSL
    OpenSSL은 1998년에 설립된 암호화 도구 프로젝트로, 다양한 암호화 알고리즘과 프로토콜을 지원하며, 아파치 라이선스를 채택했고, 보안 문제와 API 호환성 문제 등의 비판을 받았다.
와이어가드 - [IT 관련 정보]에 관한 문서
기본 정보
와이어가드 로고
와이어가드 로고
종류가상 사설망
개발
개발자제이슨 A. 도넨펠트
최초 출시2015년
언어
프로그래밍 언어C (리눅스, FreeBSD 커널 모듈, NetBSD, OpenBSD 커널 드라이버)
Go (사용자 공간 구현)
지원 운영체제
운영체제Android
iOS
리눅스
FreeBSD
NetBSD
OpenBSD
macOS
Windows 7+
기타
라이선스
라이선스다양한 자유-오픈 소스 라이선스
웹사이트
공식 웹사이트와이어가드 공식 웹사이트

2. 역사

와이어가드의 초기 코드 스냅샷은 2016년 6월 30일부터 존재한다.[24][50] 초기 도입자로는 VPN 서비스 제공업체인 Mullvad[51], AzireVPN[52], IVPN[25][53], cryptostorm[54] 등이 있었다. 와이어가드는 Mullvad, 프라이빗 인터넷 액세스, IVPN, NLnet 재단으로부터 기부를 받았다.[55] 2018년 6월 시점까지 개발자는 와이어가드를 실험적인 상태로 간주하고 안정 버전 출시 전까지 주의를 당부했다.[56][44]

2019년 12월 9일, 리눅스 네트워킹 스택 관리자인 데이비드 밀러(David Miller)가 와이어가드 패치를 "net-next" 관리자 트리에 포함시켰다.[26][27][28][57][58][59] 2020년 1월 28일, 리누스 토르발스가 이 트리를 병합하면서 와이어가드는 메인라인 리눅스 커널 트리에 포함되었다.[29][60] 이후 2020년 3월 29일, 리눅스 5.6 릴리스에 정식으로 통합되었다.

2020년에는 여러 운영체제와 소프트웨어에서 와이어가드 지원이 추가되었다. 3월 20일 데비안 11(테스팅)에서 모듈 빌드 옵션이 활성화되었고,[30] 3월 30일에는 안드로이드 제네릭 커널 이미지에 네이티브 커널 지원이 추가되었다.[31] 4월 22일에는 NetworkManager를 통해 GNOME 환경에서의 GUI 지원이 병합되었다.[32] 5월 OpenBSD에 네이티브 커널 지원 패치가 제안되어[33] 6월 22일 정식으로 임포트되었다.[34] 11월 23일에는 설치, 안정성, ARM 지원 및 엔터프라이즈 기능이 개선된 윈도우용 패키지가 업데이트되었으며,[35] 당시 윈도우 버전은 베타 상태였다. 11월 29일에는 FreeBSD 13 커널에 와이어가드 지원이 임포트되었다.[36]

2021년 1월, pfSense Community Edition (CE) 2.5.0 개발 스냅샷에 와이어가드 지원이 미리보기로 추가되었다.[40] 그러나 3월, FreeBSD 13.0 테스트 버전에서 코드 정리 문제로 커널 모드 지원이 제거되었고,[37] 이에 따라 pfSense CE 2.5.0 및 pfSense Plus 21.02에서도 관련 기능이 제외되었다.[38] 5월에는 커뮤니티 개발자가 만든 실험적 패키지를 통해 pfSense 개발 스냅샷에 와이어가드 지원이 다시 도입되었으며, 이 패키지는 Netgate의 후원을 받아 진행 중인 커널 모드 개발 작업을 통합했다.[39][40][41] 6월에는 pfSense CE 2.5.2 및 pfSense Plus 21.05의 공식 패키지 저장소에 와이어가드 패키지가 포함되었다.[42]

2023년에는 독일의 Sovereign Tech Fund로부터 200k 이상의 지원을 받았다.[43]

3. 프로토콜

와이어가드 프로토콜은 노이즈 프로토콜 프레임워크의 `IK` 핸드셰이크 패턴 변형을 기반으로 하며, 구체적으로는 `Noise_IKpsk2_25519_ChaChaPoly_BLAKE2s` 구성을 사용한다. ([https://www.wireguard.com/papers/wireguard.pdf 백서] 참조)

주요 암호화 기술은 다음과 같다.[46]

목적사용 기술
키 교환Curve25519
대칭 암호화ChaCha20
메시지 인증 코드Poly1305
해시 테이블 키SipHash24
암호화 해시 함수BLAKE2s
키 유도 함수HKDF



개인 키, 공개 키, 사전 공유 키는 Base64로 인코딩하여 사용한다.

네트워킹 측면에서는 UDP만을 사용하며,[2] 네트워크 계층에서 IPv4IPv6를 모두 지원하고 v4-in-v6 및 v6-in-v4 방식의 캡슐화가 가능하다.[10][48] (자세한 내용은 네트워킹 섹션 참조)

또한, 와이어가드는 선택적으로 사전 공유 대칭 키 모드를 지원하여 양자 컴퓨터 공격에 대비한 추가 보안 계층을 제공한다. 이는 미래에 양자 컴퓨터가 등장하여 Curve25519 암호화를 해독할 수 있게 되더라도, 사전 공유 키로 암호화된 과거 트래픽의 기밀성을 보호하는 데 목적이 있다. 키 관리의 어려움과 도난 위험[7]에도 불구하고, 단기적으로는 Curve25519 키와 함께 이중 보안을 제공한다.

프로토콜의 보안성은 2019년 5월 INRIA 연구진이 CryptoVerif 증명 보조 도구를 사용하여 발표한 기계 검증 증명을 통해 입증되었다.[49]

3. 1. 네트워킹

와이어가드는 UDP만을 사용한다.[2] 이는 TCP 기반 연결 위에 TCP를 터널링할 때 발생하는 "TCP-over-TCP" 문제[5][8][9] 때문이다. TCP-over-TCP는 TCP 멜트다운 문제를 일으켜 전송 성능을 크게 떨어뜨릴 수 있다.

기본적으로 사용하는 서버 포트는 UDP 51820이다.

와이어가드는 터널 내부와 외부 모두에서 IPv4IPv6를 완벽하게 지원하며, 레이어 3에서 작동한다. 또한 v4-in-v6 또는 v6-in-v4 방식의 캡슐화도 가능하다.[10]

와이어가드 패킷의 오버헤드는 다음과 같이 구성된다.[11]

  • 20바이트 IPv4 헤더 또는 40바이트 IPv6 헤더
  • 8바이트 UDP 헤더
  • 4바이트 타입
  • 4바이트 키 인덱스
  • 8바이트 논스
  • N바이트 암호화된 데이터
  • 16바이트 인증 태그


이러한 오버헤드를 고려하여, 일반적인 인터넷 환경(1500바이트 MTU)에서 와이어가드 인터페이스의 MTU(Maximum Transmission Unit)를 설정하는 것이 중요하다. IPv4IPv6 트래픽을 모두 처리하려면 와이어가드 인터페이스의 MTU를 1420바이트로 설정하는 것이 이상적이다. 만약 IPv4 트래픽만 독점적으로 사용한다면 1440바이트 MTU로도 충분하다.[11]

하지만 네트워크 구성의 통일성과 향후 IPv6 도입의 편의성을 고려하면, 네트워크 전체적으로 와이어가드 인터페이스의 MTU를 1420으로 설정하는 것이 권장된다.

만약 통신 상대방 중 하나가 LTE와 같이 MTU가 낮은 무선 네트워크 환경에 있다면, 해당 네트워크 사업자가 설정한 MTU 값(예: 1420바이트보다 낮음)에 맞춰 외부 IP 패킷이 단편화될 수 있다. 그러나 와이어가드 터널 내부에서는 PMTUD(Path MTU Discovery)를 통해 피어 간의 적절한 MTU(이 경우 1420바이트)를 감지하고 고정된 크기의 패킷을 전송하므로, 터널 내부 데이터는 단편화되지 않는다.

3. 2. 확장성

와이어가드는 서드 파티 프로그램과 스크립트를 통해 확장될 수 있도록 설계되었다. 이를 통해 사용자 친화적인 관리 인터페이스(키 설정 간소화 포함), 로깅, 동적 방화벽 업데이트, 동적 IP 할당,[12] LDAP 통합 등 다양한 기능을 추가하여 와이어가드를 보강할 수 있다.

이처럼 복잡한 기능들을 핵심 코드베이스에서 분리함으로써 안정성과 보안을 높일 수 있다. 와이어가드는 보안을 확실히 하기 위해 암호화 제어 구현 옵션을 제한하고, 키 교환 프로세스 선택의 폭을 좁히며, 사용되는 알고리즘[4]을 현대적인 암호화 기본 요소 중 검증된 일부로 한정한다. 만약 사용된 기본 요소에서 결함이 발견될 경우, 해당 문제를 해결한 새로운 버전을 신속하게 배포할 수 있다.

4. 구현

와이어가드 프로토콜의 다양한 구현은 다음과 같다.


  • Donenfeld의 초기 구현: CGo로 작성되었다.[17][62]
  • 클라우드플레어(Cloudflare)의 BoringTun: 사용자 공간에서 Rust로 작성된 구현이다.[18][19][63][64]
  • Matt Dunwoodie의 OpenBSD용 구현: C로 작성되었다.[20]
  • Ryota Ozaki의 NetBSD용 wg(4) 구현: C로 작성되었다.[21][65]
  • FreeBSD 구현: C로 작성되었으며, OpenBSD 구현과 데이터 경로의 상당 부분을 공유한다.[36]
  • "wireguard-nt": 2021년 8월부터 개발된 네이티브 Windows 커널 구현이다.[22]
  • AVM Fritz!Box 모뎀-라우터: Fritz!OS 버전 7.39 이상에서 지원하며, 버전 7.50부터는 사이트 간 연결도 가능하다.[23]
  • 벡터 패킷 처리(Vector Packet Processing) 사용자 공간 구현: C로 작성되었다.

5. 평가

Ars Technica의 리뷰에 따르면 와이어가드는 설정 및 사용이 쉽고, 강력한 암호를 사용하며, 공격 표면이 작은 최소한의 코드베이스를 가지고 있다는 평가를 받았다. Ars Technica는 OpenVPN이나 IPsec 등 기존의 일반적인 VPN 기술들이 설정의 어려움, 잦은 연결 끊김, 긴 재접속 시간, 오래된 암호 방식 사용, 그리고 방대한 소스 코드(40만~60만 행)로 인한 버그 발견의 어려움 등의 문제점을 가지고 있다고 지적했다.[47]

와이어가드는 이러한 문제점들을 해결하는 것을 목표로 설계되었다. 터널의 보안을 강화하고 관리를 용이하게 만들었으며, 암호화 방식의 버전 관리를 통해 항상 최신의 안전한 기술을 사용하도록 한다. 특히 약 4,000행에 불과한 간결한 코드베이스는 OpenVPN이나 IPsec 코드의 약 1% 수준으로, 보안 감사를 용이하게 만드는 주요 장점이다.[47] Ars Technica의 테스트에서도 와이어가드는 기존 기술들에 비해 안정적인 터널을 쉽게 생성했으며, 특히 빠른 재접속 속도는 기존 기술의 긴 지연 시간과 비교했을 때 매우 인상적이라고 평가되었다.[47]

와이어가드는 오픈 테크놀로지 펀드(Open Technology Fund)[13]로부터 자금 지원을 받았으며, 멀바드(Mullvad)[51], 프라이빗 인터넷 액세스(Private Internet Access), IVPN[53], NLnet 재단(NLnet Foundation)[14][55] 및 OVPN[15] 등 여러 VPN 서비스 제공업체 및 관련 재단으로부터 기부를 받으며 기술적 발전을 지속하고 있다.

또한, 미국 상원의 오리건 주 대표 론 와이든(Ron Wyden) 의원은 미국 국립 표준 기술 연구소(NIST)에 와이어가드를 IPsec, OpenVPN 등 기존 기술의 대안으로 평가할 것을 권고하며 기술의 중요성과 잠재력을 강조하였다.[16][61] 이는 와이어가드가 향후 보안 표준으로 자리 잡을 가능성을 시사하는 중요한 움직임으로 평가된다.

참조

[1] 뉴스 How one hacker's push to secure the internet became a crucial part of Mac, Linux, and Windows operating systems https://www.business[...] 2022-11-25
[2] 웹사이트 WireGuard: fast, modern, secure VPN tunnel https://www.wireguar[...] WireGuard 2021-03-31
[3] 서적 Applied Cryptography and Network Security https://books.google[...] Springer 2018-06-25
[4] 웹사이트 Protocol & Cryptography - WireGuard https://www.wireguar[...] 2023-05-14
[5] 웹사이트 Known Limitations - WireGuard https://www.wireguar[...] 2020-06-01
[6] 간행물 A Mechanised Cryptographic Proof of the WireGuard Virtual Private Network Protocol https://hal.inria.fr[...] Inria 2019
[7] 웹사이트 WireGuard: Next Generation Kernel Network Tunnel https://www.wireguar[...] 2021-05-02
[8] 웹사이트 Why TCP Over TCP Is A Bad Idea http://sites.inka.de[...] 2015-10-17
[9] conference Understanding TCP over TCP: effects of TCP tunneling on end-to-end throughput and latency 2005-10
[10] conference WireGuard: Next Generation Kernel Network Tunnel https://www.wireguar[...]
[11] 웹사이트 "[WireGuard] Header / MTU sizes for Wireguard" https://lists.zx2c4.[...] 2024-01-13
[12] 간행물 Wireguard Dynamic IP Configuration Tool https://github.com/W[...] WireGuard 2023-05-14
[13] 웹사이트 Building a more secure, accessible and resilient WireGuard VPN protocol. https://www.opentech[...] 2022-06-20
[14] 웹사이트 Donations https://www.wireguar[...] WireGuard 2018-04-28
[15] 웹사이트 OVPN donates to support WireGuard https://www.ovpn.com[...] 2020-03-23
[16] 웹사이트 US Senator Recommends Open-Source WireGuard To NIST For Government VPN https://www.phoronix[...] Phoronix 2018-08-05
[17] 웹사이트 WireGuard: fast, modern, secure VPN tunnel https://www.wireguar[...] 2019-06-16
[18] 웹사이트 BoringTun, a userspace WireGuard implementation in Rust https://blog.cloudfl[...] 2019-03-29
[19] 웹사이트 CloudFlare Launches "BoringTun" As Rust-Written WireGuard User-Space Implementation https://www.phoronix[...] 2019-03-29
[20] 웹사이트 WireGuard imported into OpenBSD https://undeadly.org[...] 2020-06-21
[21] 웹사이트 wg(4) - NetBSD Manual Pages https://man.netbsd.o[...] 2020-08-20
[22] 웹사이트 WireGuardNT, a high-performance WireGuard implementation for the Windows kernel https://lists.zx2c4.[...] 2021-08-02
[23] 웹사이트 WireGuard: VPN has never been so easy https://en.avm.de/ne[...]
[24] 웹사이트 Index of /Monolithic-historical/ https://download.wir[...]
[25] 웹사이트 Introducing Wireguard https://www.ivpn.net[...] 2019-09-22
[26] 웹사이트 e7096c131e5161fa3b8e52a650d7719d2857adfd - pub/scm/linux/kernel/git/davem/net-next - Git at Google https://kernel.googl[...]
[27] 웹사이트 LKML: David Miller: Re: [PATCH net-next v2] net: WireGuard secure network tunnel https://lkml.org/lkm[...]
[28] 웹사이트 "[ANNOUNCE] WireGuard merged to net-next, on its way to Linux 5.6" https://lists.zx2c4.[...] 2020-01-09
[29] 웹사이트 index : kernel/git/torvalds/linux.git https://git.kernel.o[...] Kernel.org 2020-02-02
[30] 웹사이트 drivers/net: Enable WIREGUARD as module https://salsa.debian[...] 2020-03-21
[31] 웹사이트 ANDROID: GKI: enable CONFIG_WIREGUARD https://android.goog[...]
[32] 웹사이트 "merge branch 'bg/wireguard' (d321d0df) · Commits · GNOME / network-manager-applet" https://gitlab.gnome[...] 2020-05-30
[33] 웹사이트 WireGuard for OpenBSD Kernel Patches Posted https://lists.zx2c4.[...] 2020-05-12
[34] 웹사이트 add wg(4), an in kernel driver for WireGuard vpn communication https://marc.info/?l[...]
[35] 웹사이트 "[ANNOUNCE] WireGuard for Windows 0.3: ARM support, enterprise features, & more" https://lists.zx2c4.[...] 2020-11-23
[36] 웹사이트 Import kernel WireGuard support https://svnweb.freeb[...]
[37] 뉴스 FreeBSD 13.0 to ship without WireGuard support as dev steps in to fix 'grave issues' with initial implementation https://www.theregis[...] Situation Publishing 2021-03-31
[38] 웹사이트 WireGuard Removed from pfSense® CE and pfSense® Plus Software https://www.netgate.[...] Rubicon Communications 2021-03-20
[39] 웹사이트 pfSense: WireGuard returns as an Experimental Package https://www.netgate.[...] 2021-06-09
[40] 웹사이트 WireGuard for pfSense Software https://www.netgate.[...] 2021-06-09
[41] 웹사이트 wireguard-freebsd - WireGuard implementation for the FreeBSD kernel https://git.zx2c4.co[...] 2021-06-09
[42] 웹사이트 pfSense Plus 21.05-RELEASE Now Available https://www.netgate.[...] 2021-06-09
[43] 웹사이트 WireGuard https://www.sovereig[...] 2024-05-26
[44] 웹사이트 Installation https://www.wireguar[...] Edge Security 2020-02-05
[45] 서적 Applied Cryptography and Network Security https://books.google[...] Springer 2018-04-26
[46] 웹사이트 WireGuard: fast, modern, secure VPN tunnel https://www.wireguar[...] 2020-02-06
[47] 웹사이트 WireGuard VPN review: A new type of VPN offers serious advantages https://arstechnica.[...] Ars Technica 2020-02-06
[48] 간행물 WireGuard: Next Generation Kernel Network Tunnel https://www.wireguar[...]
[49] 웹사이트 A Mechanised Cryptographic Proof of the WireGuard Virtual Private Network Protocol https://hal.inria.fr[...] Inria 2020-02-06
[50] 웹사이트 Index of /monolithic-historical/ https://download.wir[...] 2020-02-06
[51] 웹사이트 Mullvad Review https://thebestvpn.c[...] TheBestVPN.com 2020-02-06
[52] 웹사이트 AzireVPN Review https://thebestvpn.c[...] TheBestVPN.com 2020-02-06
[53] 웹사이트 Introducing WireGuard, fully automated. https://www.ivpn.net[...] IVPN Blog 2020-02-06
[54] 웹사이트 WireGuard support added! https://cryptostorm.[...] cryptostorm blog 2020-02-06
[55] 웹사이트 Donations https://www.wireguar[...] 2020-02-06
[56] 웹사이트 About The Project https://www.wireguar[...] 2020-02-06
[57] 웹사이트 net: WireGuard secure network tunnel https://git.kernel.o[...] kernel.org 2020-02-06
[58] 웹사이트 Re: [PATCH net-next v2] net: WireGuard secure network tunnel https://lkml.org/lkm[...] LKML 2020-02-06
[59] 웹사이트 "[ANNOUNCE] WireGuard merged to net-next, on its way to Linux 5.6" https://lists.zx2c4.[...] lists.zx2c4.com 2020-02-06
[60] 웹사이트 Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next https://git.kernel.o[...] kernel.org 2020-02-06
[61] 웹사이트 US Senator Recommends Open-Source WireGuard To NIST For Government VPN https://www.phoronix[...] Phoronix 2020-02-06
[62] 웹사이트 Source Code https://www.wireguar[...] 2020-02-06
[63] 웹사이트 BoringTun, a userspace WireGuard implementation in Rust https://blog.cloudfl[...] The Cloudflare Blog 2020-02-06
[64] 웹사이트 CloudFlare Launches "BoringTun" As Rust-Written WireGuard User-Space Implementation https://www.phoronix[...] Phoronix 2020-02-06
[65] 웹사이트 wg(4) - NetBSD Manual Pages https://man.netbsd.o[...] 2021-10-21
[66] 뉴스 How one hacker's push to secure the internet became a crucial part of Mac, Linux, and Windows operating systems https://www.business[...] 2022-11-25
[67] 웹인용 WireGuard: fast, modern, secure VPN tunnel https://www.wireguar[...] WireGuard 2021-03-31
[68] 서적 Applied Cryptography and Network Security https://books.google[...] Springer 2018-06-25



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com