VPN WireGuard๋Š” net-next ๋ธŒ๋žœ์น˜์— ์Šน์ธ๋˜์—ˆ์œผ๋ฉฐ Linux 5.6 ์ปค๋„์— ํฌํ•จ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

๋ฐ์ด๋น„๋“œ ๋ฐ€๋Ÿฌ(๋ฐ์ด๋น„๋“œ 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๋กœ ์ „์†กํ•˜๋ฉด ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

VPN WireGuard๋Š” net-next ๋ธŒ๋žœ์น˜์— ์Šน์ธ๋˜์—ˆ์œผ๋ฉฐ Linux 5.6 ์ปค๋„์— ํฌํ•จ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€