๋ฐ์ด๋น๋ ๋ฐ๋ฌ(๋ฐ์ด๋น๋ S. ๋ฐ๋ฌ), Linux ์ปค๋์ ๋คํธ์ํน ํ์ ์์คํ
์ ๋ด๋นํฉ๋๋ค. ๋ฐ์ ๋ค์๋ค. net-next ์ง์ ์ผ๋ก ํจ์น ํ๋ก์ ํธ์ VPN ์ธํฐํ์ด์ค ๊ตฌํ์ผ๋ก ์์ด์ด ๊ฐ๋. ๋ด๋
์ด net-next ๋ธ๋์น์ ๋์ ๋ ๋ณ๊ฒฝ ์ฌํญ์ Linux ์ปค๋ 5.6 ์ถ์์ ๊ธฐ๋ฐ์ด ๋ ๊ฒ์
๋๋ค.
WireGuard ์ฝ๋๋ฅผ ๋ฉ์ธ ์ปค๋์ ํธ์ํ๋ ค๋ ์๋๋ ์ง๋ ๋ช ๋
๋์ ์ด๋ฃจ์ด์ก์ง๋ง ์ฑ๋ฅ ํฅ์์ ์ํด ์ฌ์ฉ๋ ์ํธํ ๊ธฐ๋ฅ์ ๋
์ ๊ตฌํ๊ณผ ์ฐ๊ฒฐ๋์ด ์ฑ๊ณตํ์ง ๋ชปํ์ต๋๋ค. ์ฒ์์๋ ์ด๋ฌํ ๊ธฐ๋ฅ์ด ์ ์ ์ปค๋์ ๊ฒฝ์ฐ ์ถ๊ฐ ์ ์์ค Zinc API๋ก ์ฌ์ฉ๋๋ฉฐ ๊ฒฐ๊ตญ ํ์ค Crypto API๋ฅผ ๋์ฒดํ ์ ์์ต๋๋ค.
Kernel Recipes ์ปจํผ๋ฐ์ค์์ ๋
ผ์ํ ํ XNUMX์ WireGuard ์ ์์๋ ์ ์ถฉ ๊ฒฐ์ ์ ๋ด๋ ธ๋ค WireGuard ๊ฐ๋ฐ์๊ฐ ์ฑ๋ฅ ๋ฐ ์ผ๋ฐ ๋ณด์ ๋ถ์ผ์์ ๋ถ๋ง์ ์ ๊ธฐํ๋ ์ฝ์ด์์ ์ฌ์ฉ ๊ฐ๋ฅํ Crypto API๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ํจ์น๋ฅผ ์ ์กํ์ญ์์ค. Zinc API๋ฅผ ๊ณ์ ๊ฐ๋ฐํ๊ธฐ๋ก ๊ฒฐ์ ํ์ง๋ง ๋ณ๋์ ํ๋ก์ ํธ๋ก ์งํํ์ต๋๋ค.
XNUMX์, ์ปค๋ ๊ฐ๋ฐ์ ๊ฐ์ ํํ์ ๋ํ ๋์์ผ๋ก ์ฝ๋์ ์ผ๋ถ๋ฅผ Zinc์์ ๋ฉ์ธ ์ปค๋๋ก ์ ์กํ๋ ๋ฐ ๋์ํ์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ๋ถ ์์ฐ ๊ตฌ์ฑ ์์๋ ์ฝ์ด๋ก ์ด๋๋์ง๋ง ๋ณ๋์ API๊ฐ ์๋ Crypto API ํ์ ์์คํ
์ ์ผ๋ถ๋ก ์ด๋๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, Crypto API๋ ์ด๋ฏธ ํฌํจ ๋ WireGuard์์ ์ค๋น๋ ChaCha20 ๋ฐ Poly1305 ์๊ณ ๋ฆฌ์ฆ์ ๋น ๋ฅด๊ฒ ๊ตฌํํฉ๋๋ค.
๋ฉ์ธ ์ฝ์ด์ WireGuard๊ฐ ๊ณง ์ ๊ณต๋ ์์ ์ธ ํ๋ก์ ํธ ์ฐฝ๋ฆฝ์ ะพะฑััะฒะธะป ์ ์ฅ์ ์ฌ๊ตฌ์ฑ์ ๋ํด ๊ฐ๋ฐ์ ๋จ์ํํ๊ธฐ ์ํด ๋
๋ฆฝ์ ์ผ๋ก ์กด์ฌํ๋๋ก ์ค๊ณ๋ ๋ชจ๋๋ฆฌ์ "WireGuard.git" ์ ์ฅ์๋ ๊ธฐ๋ณธ ์ปค๋์ ์ฝ๋ ์์
์ ๊ตฌ์ฑํ๋ ๋ฐ ๋ ์ ํฉํ ์ธ ๊ฐ์ ๋ณ๋ ์ ์ฅ์๋ก ๋์ฒด๋ฉ๋๋ค.
- wireguard-linux.git - Wireguard ํ๋ก์ ํธ์ ๋ณ๊ฒฝ ์ฌํญ์ด ํฌํจ๋ ์์ ํ ์ปค๋ ํธ๋ฆฌ, ์ปค๋์ ํฌํจํ๊ธฐ ์ํด ๊ฒํ ๋๊ณ ์ ๊ธฐ์ ์ผ๋ก net/net-next ๋ถ๊ธฐ๋ก ์ ์ก๋๋ ํจ์น์
๋๋ค.
- wireguard-tools.git - wg ๋ฐ wg-quick๊ณผ ๊ฐ์ ์ฌ์ฉ์ ๊ณต๊ฐ์์ ์คํ๋๋ ์ ํธ๋ฆฌํฐ ๋ฐ ์คํฌ๋ฆฝํธ๋ฅผ ์ํ ์ ์ฅ์์
๋๋ค. ์ ์ฅ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐํฌ์ฉ ํจํค์ง๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
- wireguard-linux-compat.git - ์ปค๋๊ณผ ๋ณ๋๋ก ์ ๊ณต๋๊ณ ์ด์ ์ปค๋๊ณผ์ ํธํ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด compat.h ๋ ์ด์ด๋ฅผ ํฌํจํ๋ ๋ชจ๋ ๋ณํ์ด ์๋ ์ ์ฅ์์
๋๋ค. ์ฃผ์ ๊ฐ๋ฐ์ wireguard-linux.git ์ ์ฅ์์์ ์ํ๋ ์์ ์ด์ง๋ง, ์ฌ์ฉ์๋ค ์ฌ์ด์ ๊ธฐํ์ ํ์์ฑ์ด ์๋ ํ ๋ณ๋์ ํจ์น ๋ฒ์ ๋ ์์
ํํ๋ก ์ง์๋ ๊ฒ์
๋๋ค.
VPN WireGuard๋ ์ต์ ์ํธํ ๋ฐฉ๋ฒ์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ๋๊ณ ๋งค์ฐ ๋์ ์ฑ๋ฅ์ ์ ๊ณตํ๋ฉฐ ์ฌ์ฉํ๊ธฐ ์ฝ๊ณ ๋ณต์กํ์ง ์์ผ๋ฉฐ ๋๋์ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๋ ์ฌ๋ฌ ๋๊ท๋ชจ ๋ฐฐํฌ์์ ์
์ฆ๋์์ต๋๋ค. ์ด ํ๋ก์ ํธ๋ 2015๋
๋ถํฐ ๊ฐ๋ฐ๋์ด ๊ฐ์ฌ๋ฅผ ๋ฐ์์ผ๋ฉฐ, ์ ์ ๊ฒ์ฆ ์ฌ์ฉ๋ ์ํธํ ๋ฐฉ๋ฒ. WireGuard ์ง์์ ์ด๋ฏธ NetworkManager ๋ฐ systemd์ ํตํฉ๋์ด ์์ผ๋ฉฐ ์ปค๋ ํจ์น๋ ๊ธฐ๋ณธ ๋ฐฐํฌํ์ ํฌํจ๋์ด ์์ต๋๋ค. ๋ฐ๋น์ ๋ถ์์ , ๋ง๊ฒ์ด์, ์ํ์ธ, ์์น, ์ ํฌ, OpenWrt, NixOS, ํ์ ๊ทธ๋ํ ะธ ALT.
WireGuard๋ ๊ฐ ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ๊ฐ์ธ ํค๋ฅผ ์ฐ๊ฒฐํ๊ณ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ณต๊ฐ ํค๋ฅผ ๋ฐ์ธ๋ฉํ๋ ์ํธํ ํค ๋ผ์ฐํ
๊ฐ๋
์ ์ฌ์ฉํฉ๋๋ค. SSH์ ์ ์ฌํ ๋ฐฉ์์ผ๋ก ๊ณต๊ฐ ํค๋ฅผ ๊ตํํ์ฌ ์ฐ๊ฒฐ์ ์ค์ ํฉ๋๋ค. ์ฌ์ฉ์ ๊ณต๊ฐ์์ ๋ณ๋์ ๋ฐ๋ชฌ์ ์คํํ์ง ์๊ณ ํค๋ฅผ ํ์ํ๊ณ ์ฐ๊ฒฐํ๋ ค๋ฉด ๋ค์์ Noise_IK ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ธ์. ๋
ธ์ด์ฆ ํ๋กํ ์ฝ ํ๋ ์์ํฌSSH์์ Authorized_keys๋ฅผ ์ ์งํ๋ ๊ฒ๊ณผ ์ ์ฌํฉ๋๋ค. ๋ฐ์ดํฐ ์ ์ก์ UDP ํจํท์ ์บก์ํ๋ฅผ ํตํด ์ํ๋ฉ๋๋ค. ์ฐ๊ฒฐ์ ๋์ง ์๊ณ ํด๋ผ์ด์ธํธ๋ฅผ ์๋์ผ๋ก ์ฌ๊ตฌ์ฑํ์ง ์๊ณ VPN ์๋ฒ์ IP ์ฃผ์ ๋ณ๊ฒฝ(๋ก๋ฐ)์ ์ง์ํฉ๋๋ค.
์ํธํ๋ฅผ ์ํด ์ฌ์ฉ ๋ ์คํธ๋ฆผ ์ํธ ChaCha20 ๋ฐ ๋ฉ์์ง ์ธ์ฆ ์๊ณ ๋ฆฌ์ฆ(MAC) Poly1305, ๋ค๋์ ๋ฒ์คํ์ธ(Daniel Bernstein)์ด ๋์์ธํ๋ค๋์ J. ๋ฒ์คํ์ธ), ํ๋ ๋ญ
(Tanja Lange) ๋ฐ Peter Schwabe. ChaCha20 ๋ฐ Poly1305๋ AES-256-CTR ๋ฐ HMAC์ ๋ ๋น ๋ฅด๊ณ ์์ ํ ์๋ ๋ก๊ทธ๋ก ์๋ฆฌ ์ก์์ผ๋ฉฐ, ์ํํธ์จ์ด ๊ตฌํ์ ํตํด ํน๋ณํ ํ๋์จ์ด ์ง์์ ์ฌ์ฉํ์ง ์๊ณ ๋ ๊ณ ์ ๋ ์คํ ์๊ฐ์ ๋ฌ์ฑํ ์ ์์ต๋๋ค. ๊ณต์ ๋น๋ฐ ํค๋ฅผ ์์ฑํ๊ธฐ ์ํด ํ์ ๊ณก์ Diffie-Hellman ํ๋กํ ์ฝ์ด ๊ตฌํ์ ์ฌ์ฉ๋ฉ๋๋ค. ์ปค๋ธ 25519, Daniel Bernstein๋ ์ ์ํ์ต๋๋ค. ํด์ฑ์ ์ฌ์ฉ๋๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. BLAKE2(RFC7693).
์ ํ
์คํธ ์ฑ๋ฅ WireGuard๋ OpenVPN(HMAC-SHA3.9-3.8์ ์ฌ์ฉํ๋ 256๋นํธ AES)์ ๋นํด 2๋ฐฐ ๋ ๋์ ์ฒ๋ฆฌ๋๊ณผ 256๋ฐฐ ๋ ๋์ ์๋ต์ฑ์ ๋ณด์ฌ์ฃผ์์ต๋๋ค. IPsec(256๋นํธ ChaCha20+Poly1305 ๋ฐ AES-256-GCM-128)๊ณผ ๋น๊ตํ์ฌ WireGuard๋ ์ฝ๊ฐ์ ์ฑ๋ฅ ํฅ์(13-18%)๊ณผ ๋ ๋ฎ์ ๋๊ธฐ ์๊ฐ(21-23%)์ ๋ณด์ฌ์ค๋๋ค. ํ
์คํธ๋ ํ๋ก์ ํธ์์ ๊ฐ๋ฐํ ์ํธํ ์๊ณ ๋ฆฌ์ฆ์ ๋น ๋ฅธ ๊ตฌํ์ ์ฌ์ฉํ์ฌ ์ํ๋์์ต๋๋ค. ์ปค๋์ ํ์ค Crypto API๋ก ์ ์กํ๋ฉด ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค.
์ถ์ฒ : opennet.ru