์ƒˆ๋กœ์šด VPN ๊ตฌํ˜„์ธ WireGuard๊ฐ€ FreeBSD ์ฝ”๋“œ๋ฒ ์ด์Šค์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

FreeBSD ์†Œ์Šค ํŠธ๋ฆฌ๋Š” VPN WireGuard์˜ ์ €์ž์ธ Jason A. Donenfeld์™€ John H. Baldwin์˜ ๊ธฐ์—ฌ๋กœ ํ•ต์‹ฌ FreeBSD ๋ฐ WireGuard ๊ฐœ๋ฐœ ํŒ€์ด ๊ณต๋™์œผ๋กœ ์ƒ์„ฑํ•œ ์ปค๋„ ๋ชจ๋“ˆ ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” VPN WireGuard์˜ ์ƒˆ๋กœ์šด ๊ตฌํ˜„์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 2000๋…„๋Œ€ ์ดˆ๋ฐ˜ FreeBSD ์ปค๋„์—์„œ SMP ๋ฐ NUMA์— ๋Œ€ํ•œ ์ง€์›์„ ๊ตฌํ˜„ํ•œ ์œ ๋ช…ํ•œ GDB ๋ฐ FreeBSD ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค. ๋“œ๋ผ์ด๋ฒ„๊ฐ€ FreeBSD(sys/dev/wg)์— ์Šน์ธ๋œ ํ›„ ํ•ด๋‹น ๋“œ๋ผ์ด๋ฒ„์˜ ๊ฐœ๋ฐœ ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌ๋Š” ์ดํ›„ FreeBSD ์ €์žฅ์†Œ์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ๊ฐ€ ์Šน์ธ๋˜๊ธฐ ์ „์— FreeBSD Foundation์˜ ์ง€์›์„ ํ†ตํ•ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์ „์ฒด ๊ฒ€ํ† ๊ฐ€ ์ˆ˜ํ–‰๋˜์—ˆ์œผ๋ฉฐ, ๊ทธ ๋™์•ˆ ๋“œ๋ผ์ด๋ฒ„์™€ ๋‚˜๋จธ์ง€ ์ปค๋„ ํ•˜์œ„ ์‹œ์Šคํ…œ์˜ ์ƒํ˜ธ ์ž‘์šฉ๋„ ๋ถ„์„๋˜์—ˆ์œผ๋ฉฐ ์ปค๋„์—์„œ ์ œ๊ณตํ•˜๋Š” ์•”ํ˜ธํ™” ๊ธฐ๋ณธ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ๋„ ๋ถ„์„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ‰๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋“œ๋ผ์ด๋ฒ„์— ํ•„์š”ํ•œ ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด FreeBSD ์ปค๋„ ์•”ํ˜ธํ™” ํ•˜์œ„ ์‹œ์Šคํ…œ์˜ API๊ฐ€ ํ™•์žฅ๋˜์—ˆ์œผ๋ฉฐ, ์—ฌ๊ธฐ์— ํ‘œ์ค€ ์•”ํ˜ธํ™” API๋ฅผ ํ†ตํ•ด FreeBSD์—์„œ ์ง€์›๋˜์ง€ ์•Š๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‚ฌ์šฉ์„ ํ—ˆ์šฉํ•˜๋Š” ํ•˜๋„ค์Šค๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. libsodium ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํ•„์ˆ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜. ๋“œ๋ผ์ด๋ฒ„์— ๋‚ด์žฅ๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘์—์„œ Blake2 ํ•ด์‹œ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์ฝ”๋“œ๋งŒ ๋‚จ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด FreeBSD์—์„œ ์ œ๊ณต๋˜๋Š” ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ตฌํ˜„์€ ๊ณ ์ •๋œ ํ•ด์‹œ ํฌ๊ธฐ์— ๋ฌถ์—ฌ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ฒ€ํ†  ๊ณผ์ •์—์„œ ์ฝ”๋“œ ์ตœ์ ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋ฉ€ํ‹ฐ ์ฝ”์–ด CPU์˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ํšจ์œจ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค(CPU ์ฝ”์–ด์— ๋Œ€ํ•œ ํŒจํ‚ท ์•”ํ˜ธํ™” ๋ฐ ์•”ํ˜ธ ํ•ด๋… ์ž‘์—… ํ• ๋‹น์˜ ๊ท ์ผํ•œ ๊ท ํ˜•์ด ๋ณด์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค). ๊ฒฐ๊ณผ์ ์œผ๋กœ ํŒจํ‚ท์„ ์ฒ˜๋ฆฌํ•  ๋•Œ์˜ ์˜ค๋ฒ„ํ—ค๋“œ๋Š” Linux ๋“œ๋ผ์ด๋ฒ„ ๊ตฌํ˜„์˜ ์˜ค๋ฒ„ํ—ค๋“œ์™€ ๋น„์Šทํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ์ฝ”๋“œ๋Š” ossl ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•”ํ˜ธํ™” ์ž‘์—… ์†๋„๋ฅผ ๋†’์ด๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

WireGuard๋ฅผ FreeBSD์— ํ†ตํ•ฉํ•˜๋ ค๋Š” ์ด์ „ ์‹œ๋„์™€ ๋‹ฌ๋ฆฌ, ์ƒˆ๋กœ์šด ๊ตฌํ˜„์—์„œ๋Š” ifconfig์˜ ์ˆ˜์ •๋œ ๋ฒ„์ „์ด ์•„๋‹Œ ํ‘œ์ค€ wg ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ Linux์™€ FreeBSD์—์„œ ๊ตฌ์„ฑ์„ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. wg ์œ ํ‹ธ๋ฆฌํ‹ฐ์™€ ๋“œ๋ผ์ด๋ฒ„๋Š” FreeBSD ์†Œ์Šค ์ฝ”๋“œ์— ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ด๋Š” wg ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋ผ์ด์„ผ์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค(์ด ์ฝ”๋“œ๋Š” ์ด์ œ MIT ๋ฐ GPL ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ ์‚ฌ์šฉ ๊ฐ€๋Šฅ). FreeBSD์— WireGuard๋ฅผ ํฌํ•จ์‹œํ‚ค๋ ค๋Š” ๋งˆ์ง€๋ง‰ ์‹œ๋„๋Š” 2020๋…„์— ์ด๋ฃจ์–ด์กŒ์ง€๋งŒ ์Šค์บ”๋“ค๋กœ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ๋‚ฎ์€ ํ’ˆ์งˆ, ๋ถ€์ฃผ์˜ํ•œ ๋ฒ„ํผ ์ž‘์—…, ๊ฒ€์‚ฌ โ€‹โ€‹๋Œ€์‹  ์Šคํ… ์‚ฌ์šฉ, ๋ถˆ์™„์ „ํ•œ ๊ตฌํ˜„์œผ๋กœ ์ธํ•ด ์ด๋ฏธ ์ถ”๊ฐ€๋œ ์ฝ”๋“œ๊ฐ€ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœํ† ์ฝœ ์œ„๋ฐ˜ ๋ฐ GPL ๋ผ์ด์„ผ์Šค ์œ„๋ฐ˜.

VPN WireGuard๋Š” ์ตœ์‹  ์•”ํ˜ธํ™” ๋ฐฉ๋ฒ•์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„๋˜๊ณ  ๋งค์šฐ ๋†’์€ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ณ  ๋ณต์žกํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋Œ€๋Ÿ‰์˜ ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์—ฌ๋Ÿฌ ๋Œ€๊ทœ๋ชจ ๋ฐฐํฌ์—์„œ ์ž…์ฆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” 2015๋…„๋ถ€ํ„ฐ ๊ฐœ๋ฐœ๋˜์–ด ์™”์œผ๋ฉฐ ์‚ฌ์šฉ๋œ ์•”ํ˜ธํ™” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ฐ์‚ฌ ๋ฐ ๊ณต์‹ ๊ฒ€์ฆ์„ ๊ฑฐ์ณค์Šต๋‹ˆ๋‹ค. WireGuard๋Š” ๊ฐ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์— ๊ฐœ์ธ ํ‚ค๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณต๊ฐœ ํ‚ค๋ฅผ ๋ฐ”์ธ๋”ฉํ•˜๋Š” ์•”ํ˜ธํ™” ํ‚ค ๋ผ์šฐํŒ… ๊ฐœ๋…์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

SSH์™€ ์œ ์‚ฌํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ณต๊ฐœ ํ‚ค๋ฅผ ๊ตํ™˜ํ•˜์—ฌ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์—์„œ ๋ณ„๋„์˜ ๋ฐ๋ชฌ์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ํ‚ค๋ฅผ ํ˜‘์ƒํ•˜๊ณ  ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด SSH์—์„œ Authorized_keys๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ Noise Protocol Framework์˜ Noise_IK ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ „์†ก์€ UDP ํŒจํ‚ท์˜ ์บก์Šํ™”๋ฅผ ํ†ตํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ž๋™ ํด๋ผ์ด์–ธํŠธ ์žฌ๊ตฌ์„ฑ์œผ๋กœ ์—ฐ๊ฒฐ์„ ๋Š์ง€ ์•Š๊ณ  VPN ์„œ๋ฒ„์˜ IP ์ฃผ์†Œ ๋ณ€๊ฒฝ(๋กœ๋ฐ)์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์•”ํ˜ธํ™”์—์„œ๋Š” Daniel J. Bernstein, Tanja Lange ๋ฐ Peter Schwabe๊ฐ€ ๊ฐœ๋ฐœํ•œ ChaCha20 ์ŠคํŠธ๋ฆผ ์•”ํ˜ธ์™€ Poly1305 ๋ฉ”์‹œ์ง€ ์ธ์ฆ ์•Œ๊ณ ๋ฆฌ์ฆ˜(MAC)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ChaCha20 ๋ฐ Poly1305๋Š” AES-256-CTR ๋ฐ HMAC์˜ ๋” ๋น ๋ฅด๊ณ  ์•ˆ์ „ํ•œ ์•„๋‚ ๋กœ๊ทธ๋กœ ์ž๋ฆฌ ์žก์•˜์œผ๋ฉฐ, ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌํ˜„์„ ํ†ตํ•ด ํŠน๋ณ„ํ•œ ํ•˜๋“œ์›จ์–ด ์ง€์›์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ๊ณ ์ •๋œ ์‹คํ–‰ ์‹œ๊ฐ„์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต์œ  ๋น„๋ฐ€ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด Daniel Bernstein์ด ์ œ์•ˆํ•œ Curve25519 ๊ตฌํ˜„์— ํƒ€์› ๊ณก์„  Diffie-Hellman ํ”„๋กœํ† ์ฝœ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ•ด์‹ฑ์—๋Š” BLAKE2s ์•Œ๊ณ ๋ฆฌ์ฆ˜(RFC7693)์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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