์•„์›ƒ๋ผ์ธ ํ”„๋กœ์ ํŠธ์˜ Shadowsocks ํ”„๋ก์‹œ ๊ตฌํ˜„์ธoutline-ss-server 1.4 ๋ฆด๋ฆฌ์Šค

outline-ss-server 1.4 ํ”„๋ก์‹œ ์„œ๋ฒ„๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์„œ๋ฒ„๋Š” Shadowsocks ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠธ๋ž˜ํ”ฝ์˜ ์†์„ฑ์„ ์ˆจ๊ธฐ๊ณ , ๋ฐฉํ™”๋ฒฝ์„ ์šฐํšŒํ•˜๋ฉฐ, ํŒจํ‚ท ๊ฒ€์‚ฌ ์‹œ์Šคํ…œ์„ ์†์ž…๋‹ˆ๋‹ค. ์ด ์„œ๋ฒ„๋Š” Outline ํ”„๋กœ์ ํŠธ์—์„œ ๊ฐœ๋ฐœ ์ค‘์ด๋ฉฐ, ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ”์ธ๋”ฉ๊ณผ ์ œ์–ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ถ”๊ฐ€๋กœ ์ œ๊ณตํ•˜์—ฌ ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์ด๋‚˜ ์ž์ฒด ์žฅ๋น„์— outline-ss-server ๊ธฐ๋ฐ˜ ๋‹ค์ค‘ ์‚ฌ์šฉ์ž Shadowsocks ์„œ๋ฒ„๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ๋ฐฐํฌํ•˜๊ณ , ์›น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌํ•˜๊ณ , ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์•ก์„ธ์Šค๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ๋Š” ๊ฒ€์—ด์„ ์šฐํšŒํ•˜๊ณ  ์ž์œ ๋กœ์šด ์ •๋ณด ๊ตํ™˜์„ ์œ„ํ•œ ๋„๊ตฌ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด ์„ค๋ฆฝ๋œ Google์˜ ์‚ฌ์—…๋ถ€์ธ Jigsaw์—์„œ ๊ฐœ๋ฐœ ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Outline-ss-server๋Š” Go ์–ธ์–ด๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ Apache 2.0 ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ๊ทธ๋žจ์€ ํ”„๋ก์‹œ ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.์„œ๋ฒ„ go-shadowsocks2๋Š” Shadowsocks ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์ œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ Shadowsocks ํ”„๋กœ์ ํŠธ๋Š” ์ƒˆ๋กœ์šด Rust ์„œ๋ฒ„ ๊ฐœ๋ฐœ์— ์ฃผ๋ ฅํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, Go ๊ตฌํ˜„์€ 1๋…„ ๋„˜๊ฒŒ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์•„ ๊ธฐ๋Šฅ ๋ฉด์—์„œ ๋ˆˆ์— ๋„๊ฒŒ ๋’ค์ณ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

outline-s-server์™€ go-shadowsocks2์˜ ์ฐจ์ด์ ์€ ํ•˜๋‚˜์˜ ๋„คํŠธ์›Œํฌ ํฌํŠธ๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ, ์—ฐ๊ฒฐ์„ ํ—ˆ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๋„คํŠธ์›Œํฌ ํฌํŠธ๋ฅผ ์—ด ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ, ์—ฐ๊ฒฐ์„ ๋Š์ง€ ์•Š๊ณ  ํ•ซ ๋ฆฌ์Šคํƒ€ํŠธ ๋ฐ ๊ตฌ์„ฑ ์—…๋ฐ์ดํŠธ๋ฅผ ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ, prometheus.io ํ”Œ๋žซํผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ ์ œ๊ณต ๋„๊ตฌ์— ๊ตญํ•œ๋ฉ๋‹ˆ๋‹ค.

 ์•„์›ƒ๋ผ์ธ ํ”„๋กœ์ ํŠธ์˜ Shadowsocks ํ”„๋ก์‹œ ๊ตฌํ˜„์ธoutline-ss-server 1.4 ๋ฆด๋ฆฌ์Šค

Outline-ss-server๋Š” ํ”„๋กœ๋ธŒ ์š”์ฒญ ์ „์†ก ๋ฐ ํŠธ๋ž˜ํ”ฝ ์žฌ์ƒ ๊ณต๊ฒฉ์— ๋Œ€ํ•œ ๋ณดํ˜ธ ๊ธฐ๋Šฅ๋„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๋ธŒ ์š”์ฒญ ๊ณต๊ฒฉ์€ ํ”„๋ก์‹œ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํƒ์ง€ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ณต๊ฒฉ์ž๋Š” ๋Œ€์ƒ Shadowsocks ์„œ๋ฒ„์— ๋‹ค์–‘ํ•œ ํฌ๊ธฐ์˜ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ์ „์†กํ•˜๊ณ  ์„œ๋ฒ„๊ฐ€ ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ์—ฐ๊ฒฐ์„ ๋‹ซ๊ธฐ ์ „์— ์ฝ๋Š” ๋ฐ์ดํ„ฐ ์–‘์„ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋ž˜ํ”ฝ ์žฌ์ƒ ๊ณต๊ฒฉ์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์„ธ์…˜์„ ๊ฐ€๋กœ์ฑ„๋Š” ๊ฒƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์„ฌ๊ธฐ๋Š” ์‚ฌ๋žŒ ์ด์–ด์„œ ํ”„๋ก์‹œ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€๋กœ์ฑˆ ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ์ „์†กํ•˜๋ ค๋Š” ์‹œ๋„๊ฐ€ ์ด์–ด์กŒ์Šต๋‹ˆ๋‹ค.

๊ฒ€์ฆ ์š”์ฒญ์„ ํ†ตํ•œ ๊ณต๊ฒฉ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด outline-ss-server๋Š” ์ž˜๋ชป๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•  ๋•Œ ์—ฐ๊ฒฐ์„ ์ค‘๋‹จํ•˜๊ฑฐ๋‚˜ ์˜ค๋ฅ˜๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š๊ณ  ๊ณ„์†ํ•ด์„œ ์ •๋ณด๋ฅผ ์ˆ˜์‹ ํ•˜๋ฉฐ ์ผ์ข…์˜ ๋ธ”๋ž™ํ™€ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌํ”Œ๋ ˆ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์ˆ˜์‹ ํ•œ ๋ฐ์ดํ„ฐ๋Š” ์ตœ๊ทผ ์ˆ˜์ฒœ ๊ฐœ์˜ ํ•ธ๋“œ์…ฐ์ดํฌ ์‹œํ€€์Šค(์ตœ๋Œ€ 40๋งŒ ๊ฐœ, ํฌ๊ธฐ๋Š” ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ์„ค์ •๋˜๋ฉฐ ์‹œํ€€์Šค๋‹น 20๋ฐ”์ดํŠธ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•จ)์— ๋Œ€ํ•ด ์ €์žฅ๋œ ์ฒดํฌ์„ฌ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌํ”Œ๋ ˆ์ด ์—ฌ๋ถ€๋ฅผ ์ถ”๊ฐ€๋กœ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ค‘๋ณต ์‘๋‹ต์„ ์ฐจ๋‹จํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ์„œ๋ฒ„ ํ•ธ๋“œ์…ฐ์ดํฌ ์‹œํ€€์Šค๋Š” 32๋น„ํŠธ ํƒœ๊ทธ๊ฐ€ ์žˆ๋Š” HMAC ์ธ์ฆ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํŠธ๋ž˜ํ”ฝ ์€ํ ์ธก๋ฉด์—์„œ outline-ss-server ๊ตฌํ˜„์˜ Shadowsocks ํ”„๋กœํ† ์ฝœ์€ Tor ์ต๋ช… ๋„คํŠธ์›Œํฌ์˜ Obfs4 ํ”Œ๋Ÿฌ๊ทธํ˜• ์ „์†ก๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœํ† ์ฝœ์€ ์ค‘๊ตญ์˜ ํŠธ๋ž˜ํ”ฝ ๊ฒ€์—ด ์‹œ์Šคํ…œ(์ค‘๊ตญ์˜ ๋ฐฉํ™”๋ฒฝ)์„ ์šฐํšŒํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ์œผ๋ฉฐ ๋‹ค๋ฅธ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋˜๋Š” ํŠธ๋ž˜ํ”ฝ์„ ํšจ๊ณผ์ ์œผ๋กœ ์ˆจ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋žœ๋ค ์‹œ๋“œ๊ฐ€ ์ฒจ๋ถ€๋˜๊ณ  ์—ฐ์† ํ๋ฆ„์ด ์‹œ๋ฎฌ๋ ˆ์ด์…˜๋˜๊ธฐ ๋•Œ๋ฌธ์— ํŠธ๋ž˜ํ”ฝ์„ ์‹๋ณ„ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค).

SOCKS5๋Š” ์š”์ฒญ ํ”„๋ก์‹ฑ ํ”„๋กœํ† ์ฝœ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. SOCKS5๋ฅผ ์ง€์›ํ•˜๋Š” ํ”„๋ก์‹œ๊ฐ€ ๋กœ์ปฌ ์‹œ์Šคํ…œ์—์„œ ์‹คํ–‰๋˜์–ด ํŠธ๋ž˜ํ”ฝ์„ ์›๊ฒฉ ์„œ๋ฒ„๋กœ ํ„ฐ๋„๋งํ•˜๊ณ , ์ด ์›๊ฒฉ ์„œ๋ฒ„์—์„œ ์š”์ฒญ์ด ์‹ค์ œ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ํŠธ๋ž˜ํ”ฝ์€ ์•”ํ˜ธํ™”๋œ ํ„ฐ๋„(์ธ์ฆ๋œ ์•”ํ˜ธํ™” AEAD_CHACHA20_POLY1305, AEAD_AES_128_GCM ๋ฐ AEAD_AES_256_GCM ์ง€์›)์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. Shadowsocks์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์€ ํ„ฐ๋„ ์ƒ์„ฑ ์‚ฌ์‹ค์„ ์ˆจ๊ธฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. TCP ๋ฐ UDP ํ„ฐ๋„ ๊ตฌ์„ฑ์€ ๋ฌผ๋ก , Tor์˜ ํ”Œ๋Ÿฌ๊ทธํ˜• ์ „์†ก๊ณผ ์œ ์‚ฌํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ SOCKS5์— ๊ตญํ•œ๋˜์ง€ ์•Š์€ ์ž„์˜์˜ ํ„ฐ๋„ ์ƒ์„ฑ๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru