WireGuard VPN ๊ฐ๋ฐ์์ธ Jason A. Donenfeld๋ Windows 1.0์ฉ WireGuard ํด๋ผ์ด์ธํธ ์ํํธ์จ์ด์ ์ฒซ ๋ฒ์งธ ์ฃผ์ ๋ฒ์ ๊ณผ WireGuardNT 1.0 ๋๋ผ์ด๋ฒ(ํฌํธ ํฌํจ)๋ฅผ ์ถ์ํ์ต๋๋ค. VPN Windows 10 ๋ฐ 11 ์ปค๋์ฉ WireGuard๋ AMD64, x86 ๋ฐ ARM64 ์ํคํ ์ฒ๋ฅผ ์ง์ํฉ๋๋ค. Windows ์ปค๋ ๊ตฌ์ฑ ์์ ์ฝ๋๋ GPLv2 ๋ผ์ด์ ์ค์ ๋ฐ๋ผ, ํด๋ผ์ด์ธํธ ์ํํธ์จ์ด๋ MIT ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค.
์ด ํฌํธ๋ Linux ์ปค๋์ฉ WireGuard ๋ฉ์ธ ๊ตฌํ์ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ, Windows ์ปค๋ ์ํฐํฐ์ NDIS ๋คํธ์ํฌ ์คํ์ ์ฌ์ฉํ๋๋ก ๋ณํ๋์์ต๋๋ค. ์ฌ์ฉ์ ๊ณต๊ฐ์์ ์คํ๋๊ณ Wintun ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ wireguard-go ๊ตฌํ๊ณผ ๋น๊ตํ์ฌ WireGuardNT๋ ์ปจํ ์คํธ ์ค์์น๋ฅผ ์ ๊ฑฐํ๊ณ ํจํท ๋ด์ฉ์ ์ปค๋์์ ์ฌ์ฉ์ ๊ณต๊ฐ์ผ๋ก ๋ณต์ฌํจ์ผ๋ก์จ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํต๋๋ค. Linux, OpenBSD ๋ฐ FreeBSD ๊ตฌํ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก WireGuardNT์ ๋ชจ๋ ํ๋กํ ์ฝ ์ฒ๋ฆฌ ๋ก์ง์ ๋คํธ์ํฌ ์คํ ์์ค์์ ์ง์ ์คํ๋ฉ๋๋ค.
๋ฒ์ 1.0์ ์ฌ๋ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ๋ค์๊ณผ ๊ฐ์ ์๋๋ ์์ ์ ์๋ฃํ ์ค์ํ ์ด์ ํ๋ก ๊ธฐ๋ก๋์์ต๋๋ค. ๋๋ผ์ด๋ฒ ์ํ๋ฅผ ์์ฝ๋ ํ๋์ ์ ์ฅํ๋ ๋ณด์์ฑ์ด ๋จ์ด์ง๋ ๋ฐฉ์๊ณผ ๋ฌธ์ํ๋์ง ์์ ์คํ์ ์ฌ์ฉ ๋์ NdisWdfGetAdapterContextFromAdapterHandle() ํจ์๋ฅผ ์ฌ์ฉํ ์ , ์์คํ ํธ์ถ ๊ฐ๋ก์ฑ๊ธฐ๋ฅผ ํตํด MTU(์ต๋ ์ ์ก ๋จ์) ํฌ๊ธฐ๋ฅผ ์ ํํ๊ณ ์ ์ํ๊ฒ ์ถ์ ํ ์ , ์ฝ๋์ C23 ํ์ค์ ์ ์ฉํ ์ ๋ฑ์ด ์ด์ ํด๋นํฉ๋๋ค.
VPN WireGuard๋ ์ต์ ์ํธํ ๋ฐฉ์์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ๋์์ผ๋ฉฐ, ๋งค์ฐ ๋์ ์ฑ๋ฅ์ ์ ๊ณตํ๊ณ , ์ฌ์ฉํ๊ธฐ ์ฝ๊ณ , ๋ณต์กํ์ง ์์ผ๋ฉฐ, ๋๋์ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๋ ์ฌ๋ฌ ๋๊ท๋ชจ ๊ตฌํ์์ ์ฐ์ํ ์ฑ๋ฅ์ ์ ์ฆํ๋ค๋ ์ ์ ์๊ธฐ์์ผ๋๋ฆฝ๋๋ค. ์ด ํ๋ก์ ํธ๋ 2015๋ ๋ถํฐ ๊ฐ๋ฐ๋์ด ์์ผ๋ฉฐ, ์ฌ์ฉ๋ ์ํธํ ๋ฐฉ๋ฒ์ ๋ํ ๊ฐ์ฌ์ ๊ณต์ ๊ฒ์ฆ์ ๊ฑฐ์ณค์ต๋๋ค. WireGuard๋ ํค ๊ธฐ๋ฐ ์ํธํ ๋ผ์ฐํ ๊ฐ๋ ์ ์ฌ์ฉํ๋๋ฐ, ์ด๋ ๊ฐ ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ๊ฐ์ธ ํค๋ฅผ ์ฐ๊ฒฐํ๊ณ ๋ฐ์ธ๋ฉ์๋ ๊ณต๊ฐ ํค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค.
์ฐ๊ฒฐ์ ์ค์ ํ๊ธฐ ์ํ ๊ณต๊ฐ ํค ๊ตํ์ SSH์ ์ ์ฌํฉ๋๋ค. ์ฌ์ฉ์ ๊ณต๊ฐ์์ ๋ณ๋์ ๋ฐ๋ชฌ์ ์คํํ์ง ์๊ณ ํค๋ฅผ ํ์ํ๊ณ ์ฐ๊ฒฐํ๊ธฐ ์ํด, SSH์ authorized_keys ๊ด๋ฆฌ ๋ฐฉ์๊ณผ ์ ์ฌํ๊ฒ Noise ํ๋กํ ์ฝ ํ๋ ์์ํฌ์ Noise_IK ๋ฉ์ปค๋์ฆ์ด ์ฌ์ฉ๋ฉ๋๋ค. ๋ฐ์ดํฐ ์ ์ก์ UDP ํจํท์ผ๋ก ์บก์ํ๋์ด ์ด๋ฃจ์ด์ง๋๋ค. ๋ณ๊ฒฝ๋ ์ง์๋ฉ๋๋ค. IP ์ฃผ์ VPN ์๋ฒ(๋ก๋ฐ)๋ ์ฐ๊ฒฐ ๋๊น ์์ด ์๋ ํด๋ผ์ด์ธํธ ์ฌ๊ตฌ์ฑ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
์ํธํ์๋ Daniel J. Bernstein, Tanja Lange, Peter Schwabe๊ฐ ๊ฐ๋ฐํ ChaCha20 ์คํธ๋ฆผ ์ํธ์ Poly1305 ๋ฉ์์ง ์ธ์ฆ ์๊ณ ๋ฆฌ์ฆ(MAC)์ ์ฌ์ฉํฉ๋๋ค. ChaCha20๊ณผ Poly1305๋ AES-256-CTR ๋ฐ HMAC์ ๋ ๋น ๋ฅด๊ณ ์์ ํ ์๋ ๋ก๊ทธ๋ก ์๋ฆฌ๋งค๊นํ์ผ๋ฉฐ, ์ด๋ฅผ ์ํํธ์จ์ด๋ก ๊ตฌํํ๋ฉด ํน๋ณํ ํ๋์จ์ด ์ง์์ ์ฌ์ฉํ์ง ์๊ณ ๋ ๊ณ ์ ๋ ์คํ ์๊ฐ์ ๋ฌ์ฑํ ์ ์์ต๋๋ค. ๊ณต์ ๋น๋ฐ ํค๋ฅผ ์์ฑํ๊ธฐ ์ํด, Daniel Bernstein์ด ์ ์ํ Curve25519 ๊ตฌํ์์๋ Elliptic Curve Diffie-Hellman ํ๋กํ ์ฝ์ด ์ฌ์ฉ๋ฉ๋๋ค. ํด์ฑ์๋ BLAKE2s(RFC7693) ์๊ณ ๋ฆฌ์ฆ์ด ์ฌ์ฉ๋ฉ๋๋ค.
์ถ์ฒ : opennet.ru
