TLS 1.3 ๊ธฐ๋ฐ˜ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…

์†Œ๊ฐœ

TLS 1.3 ๊ธฐ๋ฐ˜ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…
Cisco, BlueCoat, FireEye์™€ ๊ฐ™์€ ์œ ๋ช… ์ œ์กฐ์—…์ฒด์˜ ์ตœ์‹  ๊ธฐ์—… ์ฝ˜ํ…์ธ  ํ•„ํ„ฐ๋ง ์‹œ์Šคํ…œ์€ ๊ตญ๊ฐ€ ์ฐจ์›์—์„œ ํ™œ๋ฐœํžˆ ๋„์ž…๋˜๊ณ  ์žˆ๋Š” ๋”์šฑ ๊ฐ•๋ ฅํ•œ DPI ์‹œ์Šคํ…œ๊ณผ ๋งŽ์€ ๊ณตํ†ต์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ์‹œ์Šคํ…œ์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์€ ์ธํ„ฐ๋„ท ํŠธ๋ž˜ํ”ฝ์˜ ์†ก์ˆ˜์‹ ์„ ์ฐจ๋‹จํ•˜๊ณ , ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ/ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ์„ ์ฐจ๋‹จํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‘ ์‹œ์Šคํ…œ ๋ชจ๋‘ ์ž‘๋™ ์›๋ฆฌ๊ฐ€ ์œ ์‚ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ด๋ฅผ ์šฐํšŒํ•˜๋Š” ๋ฐฉ๋ฒ• ๋˜ํ•œ ๋งŽ์€ ๊ณตํ†ต์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

DPI์™€ ๊ธฐ์—… ์‹œ์Šคํ…œ์„ ๋ชจ๋‘ ํšจ๊ณผ์ ์œผ๋กœ ์šฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ  ์ค‘ ํ•˜๋‚˜๋Š” ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…(domain fronting) ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ์ˆ ์˜ ํ•ต์‹ฌ์€ ํ‰ํŒ์ด ์ข‹์€ ๋‹ค๋ฅธ ๊ณต๊ฐœ ๋„๋ฉ”์ธ ๋’ค์— ์ˆจ์–ด ์ฐจ๋‹จ๋œ ๋ฆฌ์†Œ์Šค๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋„๋ฉ”์ธ์€ ์–ด๋–ค ์‹œ์Šคํ…œ์—์„œ๋„ ์ฐจ๋‹จ๋˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด google.com๊ณผ ๊ฐ™์€ ๋„๋ฉ”์ธ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ๊ธฐ์‚ฌ๋Š” ์ด๋ฏธ ๊ฝค ๋งŽ์ด ์ž‘์„ฑ๋˜์—ˆ๊ณ , ๋งŽ์€ ์‚ฌ๋ก€๊ฐ€ ์ œ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ตœ๊ทผ ์ฃผ๋ชฉ๋ฐ›๊ณ  ๋…ผ์˜๋˜๋Š” DNS-over-HTTPS ๋ฐ ์•”ํ˜ธํ™”๋œ SNI ๊ธฐ์ˆ ๊ณผ ์ƒˆ๋กœ์šด ๋ฒ„์ „์˜ TLS 1.3 ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…์˜ ๋˜ ๋‹ค๋ฅธ ๋ฒ„์ „์„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์ˆ  ์ดํ•ด

๋จผ์ €, ๋ชจ๋‘๊ฐ€ ๋ˆ„๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€, ๊ทธ๋ฆฌ๊ณ  ์™œ ์ด ๋ชจ๋“  ๊ฒƒ์ด ํ•„์š”ํ•œ์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋ณธ ๊ฐœ๋…์„ ์ •์˜ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์•ž์„œ eSNI ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ–ˆ๋Š”๋ฐ, ์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ์ž‘๋™ ๋ฐฉ์‹์€ ๋‚˜์ค‘์— ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. eSNI(์•”ํ˜ธํ™”๋œ ์„œ๋ฒ„ ์ด๋ฆ„ ํ‘œ์‹œ) ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ SNI์˜ ๋ณด์•ˆ ๋ฒ„์ „์œผ๋กœ, TLS 1.3 ํ”„๋กœํ† ์ฝœ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ต์‹ฌ์€ ์š”์ฒญ์ด ์ „์†ก๋˜๋Š” ๋„๋ฉ”์ธ ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์ œ eSNI ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ตœ์‹  DPI ์†”๋ฃจ์…˜(์˜ˆ: ์œ ๋ช…ํ•œ ํ† ๋ ŒํŠธ ์ถ”์  ํ”„๋กœ๊ทธ๋žจ์ธ rutracker.nl)์— ์˜ํ•ด ์ฐจ๋‹จ๋œ ์ธํ„ฐ๋„ท ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ† ๋ ŒํŠธ ์ถ”์  ํ”„๋กœ๊ทธ๋žจ ์›น์‚ฌ์ดํŠธ์— ์ ‘์†ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๊ฐ€ ์ฐจ๋‹จ๋˜์—ˆ๋‹ค๋Š” ํ‘œ์ค€ ์ œ๊ณต์—…์ฒด์˜ ์Šคํ…์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

TLS 1.3 ๊ธฐ๋ฐ˜ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…

RKN ์›น์‚ฌ์ดํŠธ์—์„œ๋Š” ์ด ๋„๋ฉ”์ธ์ด ์‹ค์ œ๋กœ ์ค‘์ง€ ๋ชฉ๋ก์— ๋“ฑ์žฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

TLS 1.3 ๊ธฐ๋ฐ˜ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…

whois๋ฅผ ์ฟผ๋ฆฌํ•˜๋ฉด ๋„๋ฉ”์ธ ์ž์ฒด๊ฐ€ ํด๋ผ์šฐ๋“œ ์ œ๊ณต์—…์ฒด Cloudflare ๋’ค์— "์ˆจ๊ฒจ์ ธ" ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

TLS 1.3 ๊ธฐ๋ฐ˜ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…

ํ•˜์ง€๋งŒ RKN์˜ "์ „๋ฌธ๊ฐ€"๋“ค๊ณผ๋Š” ๋‹ฌ๋ฆฌ, ๊ธฐ์ˆ ์ ์œผ๋กœ ๋” ๋Šฅ์ˆ™ํ•œ Beeline์˜ ์ง์›๋“ค(ํ˜น์€ ์œ ๋ช…ํ•œ ๊ทœ์ œ ๊ธฐ๊ด€์˜ ์“ฐ๋ผ๋ฆฐ ๊ฒฝํ—˜์„ ํ†ตํ•ด ๊ตํ›ˆ์„ ์–ป์€ ์ง์›๋“ค)์€ ๋‹จ์ˆœํžˆ IP ์ฃผ์†Œ๋กœ ์‚ฌ์ดํŠธ๋ฅผ ์ฐจ๋‹จํ•˜๋Š” ๋ฐ ๊ทธ์น˜์ง€ ์•Š๊ณ , ํ•ด๋‹น ์‚ฌ์ดํŠธ๋ฅผ ์ฐจ๋‹จ ๋ชฉ๋ก์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋„๋ฉ”์ธ ์ด๋ฆ„์ด ๋„๋ฉ”์ธ ๋’ค์— ์ˆจ๊ฒจ์ง„ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ๋“ค์„ ์‚ดํŽด๋ณด๋ฉด ์ด๋ฅผ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. IP ์ฃผ์†Œ๊ทธ์ค‘ ํ•œ ๊ณณ์„ ๋ฐฉ๋ฌธํ•˜์—ฌ ์ ‘์†์ด ์ฐจ๋‹จ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

TLS 1.3 ๊ธฐ๋ฐ˜ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…

์–ด๋–ป๊ฒŒ ์ด๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚˜๋Š” ๊ฑธ๊นŒ์š”? ๋ชจ๋“  ํ†ต์‹ ์ด https ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง€๊ณ  Beeline์˜ https ์ธ์ฆ์„œ๊ฐ€ ์•„์ง ๋Œ€์ฒด๋œ ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ–ˆ๋Š”๋ฐ, ์ œ๊ณต์—…์ฒด์˜ DPI๋Š” ์–ด๋–ป๊ฒŒ ๋‚ด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์–ด๋–ค ๋„๋ฉ”์ธ์— ์ ‘์†ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์„๊นŒ์š”? ๊ทธ๋Š” ํˆฌ์‹œ๋ ฅ์ด ์žˆ๋Š” ๊ฑธ๊นŒ์š”, ์•„๋‹ˆ๋ฉด ์ €๋ฅผ ๊ฐ์‹œํ•˜๊ณ  ์žˆ๋Š” ๊ฑธ๊นŒ์š”?

Wireshark๋ฅผ ํ†ตํ•ด ํŠธ๋ž˜ํ”ฝ์„ ์‚ดํŽด๋ณด๋ฉด์„œ ์ด ์งˆ๋ฌธ์— ๋‹ตํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

TLS 1.3 ๊ธฐ๋ฐ˜ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…

์Šคํฌ๋ฆฐ์ƒท์€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋จผ์ € DNS๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์˜ IP ์ฃผ์†Œ๋ฅผ ์–ป์€ ๋‹ค์Œ, ๋Œ€์ƒ ์„œ๋ฒ„์™€ ํ‘œ์ค€ TCP ํ•ธ๋“œ์…ฐ์ดํฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ , ๋งˆ์ง€๋ง‰์œผ๋กœ ์„œ๋ฒ„์™€์˜ SSL ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•˜๋Š” ๊ณผ์ •์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ ๋ธŒ๋ผ์šฐ์ €๋Š” ํŒจํ‚ท์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. SSL ํด๋ผ์ด์–ธํŠธ์˜ "Hello" ๋ฉ”์‹œ์ง€์—๋Š” ์†Œ์Šค ๋„๋ฉ”์ธ ์ด๋ฆ„์ด ํ‰๋ฌธ์œผ๋กœ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ•„๋“œ๋Š” Cloudflare ํ”„๋ŸฐํŠธ์—”๋“œ ์„œ๋ฒ„์—์„œ ์—ฐ๊ฒฐ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ผ์šฐํŒ…ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์ด ๋ถ€๋ถ„์—์„œ ISP์˜ DPI(์‹ฌํ™” ํŒจํ‚ท ๊ฒ€์‚ฌ)๊ฐ€ ์ €ํฌ ์—ฐ๊ฒฐ์„ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ €ํฌ๋Š” ISP๋กœ๋ถ€ํ„ฐ ์•„๋ฌด๋Ÿฐ ์Šคํ… ๋ฉ”์‹œ์ง€๋„ ๋ฐ›์ง€ ๋ชปํ•˜๊ณ , ๋งˆ์น˜ ์‚ฌ์ดํŠธ๊ฐ€ ๋‹ค์šด๋˜์—ˆ๊ฑฐ๋‚˜ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ผ๋ฐ˜์ ์ธ ๋ธŒ๋ผ์šฐ์ € ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

TLS 1.3 ๊ธฐ๋ฐ˜ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…

์ด์ œ ๋ธŒ๋ผ์šฐ์ €์—์„œ eSNI ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ™œ์„ฑํ™”ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํŒŒ์ด์–ด ํญ์Šค :
์ด๋ฅผ ์œ„ํ•ด Firefox ๊ตฌ์„ฑ ํŽ˜์ด์ง€๋ฅผ ์—ฝ๋‹ˆ๋‹ค. ์ •๋ณด : ์„ค์ • ๋‹ค์Œ ์„ค์ •์„ ํ™œ์„ฑํ™”ํ•˜์„ธ์š”.

network.trr.mode = 2;
network.trr.uri = https://mozilla.cloudflare-dns.com/dns-query
network.security.esni.enabled = true

๊ทธ ํ›„, ํด๋ผ์šฐ๋“œํ”Œ๋ ˆ์–ด ์›น์‚ฌ์ดํŠธ์˜ ์„ค์ •์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋งํฌ ์ด์ œ ํ† ๋ ŒํŠธ ์ถ”์ ๊ธฐ๋ฅผ ์ด์šฉํ•ด ๋‹ค์‹œ ํ•œ๋ฒˆ ์‹œ๋„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

TLS 1.3 ๊ธฐ๋ฐ˜ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…

์งœ์ž”! VPN์ด๋‚˜ โ€‹โ€‹ํ”„๋ก์‹œ ์„œ๋ฒ„ ์—†์ด๋„ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋Š” ์ถ”์  ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์™€์ด์–ด์ƒคํฌ์—์„œ ํŠธ๋ž˜ํ”ฝ ๋คํ”„๋ฅผ ํ™•์ธํ•ด ๋ณผ๊นŒ์š”? ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ฌ๋Š”์ง€.

TLS 1.3 ๊ธฐ๋ฐ˜ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…

์ด๋ฒˆ์—๋Š” SSL ํด๋ผ์ด์–ธํŠธ Hello ํŒจํ‚ท์— ๋Œ€์ƒ ๋„๋ฉ”์ธ์ด ๋ช…์‹œ์ ์œผ๋กœ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š๊ณ , ๋Œ€์‹  ํŒจํ‚ท์— ์ƒˆ๋กœ์šด ํ•„๋“œ์ธ encrypted_server_name์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ํ•„๋“œ์— rutracker.nl ๊ฐ’์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, Cloudflare ํ”„๋ŸฐํŠธ์—”๋“œ ์„œ๋ฒ„๋งŒ ์ด ํ•„๋“œ๋ฅผ ๋ณตํ˜ธํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋ณตํ˜ธํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด, ์ œ๊ณต์—…์ฒด DPI๋Š” ์ด๋Ÿฌํ•œ ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•  ์ˆ˜๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค. ์•”ํ˜ธํ™”์—๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ €์—์„œ ์ด ๊ธฐ์ˆ ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ด ๊ธฐ์ˆ ์„ ๋” ๊ตฌ์ฒด์ ์ด๊ณ  ํฅ๋ฏธ๋กœ์šด ๋ถ„์•ผ์— ์ ์šฉํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋จผ์ €, ๋™์ผํ•œ curl์„ ์‚ฌ์šฉํ•˜์—ฌ TLS 1.3์—์„œ eSNI๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๊ณ , ๋™์‹œ์— eSNI ๊ธฐ๋ฐ˜ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

eSNI๋ฅผ ์‚ฌ์šฉํ•œ ๋„๋ฉ”์ธ ํ”„๋ŸฐํŒ…

curl์€ https๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ‘œ์ค€ openssl ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ๋จผ์ € ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ eSNI ์ง€์›์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. openssl ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜์—๋Š” ์•„์ง eSNI ์ง€์›์ด ์—†์œผ๋ฏ€๋กœ, ๋ณ„๋„์˜ openssl ๋ธŒ๋žœ์น˜๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์ปดํŒŒ์ผํ•˜๊ณ  ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

GitHub์—์„œ ์ €์žฅ์†Œ๋ฅผ ๋ณต์ œํ•˜๊ณ  ํ‰์†Œ์ฒ˜๋Ÿผ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค.

$ git clone https://github.com/sftcd/openssl
$ cd openssl
$ ./config

$ make
$ cd esnistuff
$ make

๋‹ค์Œ์œผ๋กœ, curl์„ ์‚ฌ์šฉํ•˜์—ฌ ์ €์žฅ์†Œ๋ฅผ ๋ณต์ œํ•˜๊ณ  ๋‚ด์žฅ๋œ openssl ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํŒŒ์ผ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

$ cd $HOME/code
$ git clone https://github.com/niallor/curl.git curl-esni
$ cd curl-esni

$ export LD_LIBRARY_PATH=/opt/openssl
$ ./buildconf
$ LDFLAGS="-L/opt/openssl" ./configure --with-ssl=/opt/openssl --enable-esni --enable-debug

์—ฌ๊ธฐ์„œ openssl์ด ์žˆ๋Š” ๋ชจ๋“  ๋””๋ ‰ํ† ๋ฆฌ(์ด ๊ฒฝ์šฐ /opt/openssl/)๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ง€์ •ํ•˜๊ณ  ๊ตฌ์„ฑ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์˜ค๋ฅ˜ ์—†์ด ์ง„ํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ์„ฑ์ด ์„ฑ๊ณตํ•˜๋ฉด ๋‹ค์Œ ์ค„์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ : esni ESNI๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์ง€๋งŒ ์‹คํ—˜์šฉ์œผ๋กœ ํ‘œ์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์˜ํ•ด์„œ ์‚ฌ์šฉํ•˜์„ธ์š”!

$ make

ํŒจํ‚ค์ง€๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๋นŒ๋“œํ•œ ํ›„ openssl์˜ ํŠน์ˆ˜ bash ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ curl์„ ์„ค์ •ํ•˜๊ณ  ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ํŽธ์˜๋ฅผ ์œ„ํ•ด ์ด ํŒŒ์ผ์„ curl ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋ณต์‚ฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

cp /opt/openssl/esnistuff/curl-esni 

๊ทธ๋ฆฌ๊ณ  Cloudflare ์„œ๋ฒ„์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ https ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  Wireshark์—์„œ DNS ๋ฐ TLS ํŒจํ‚ท์„ ๋™์‹œ์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

$ ESNI_COVER="www.hello-rkn.ru" ./curl-esni https://cloudflare.com/

์„œ๋ฒ„ ์‘๋‹ต์—๋Š” openssl๊ณผ curl์—์„œ ์˜จ ๋งŽ์€ ๋””๋ฒ„๊น… ์ •๋ณด์™€ ๋”๋ถˆ์–ด Cloudflare์—์„œ 301 ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋œ HTTP ์‘๋‹ต์ด ์ˆ˜์‹ ๋ฉ๋‹ˆ๋‹ค.

HTTP/1.1 301 Moved Permanently
< Date: Sun, 03 Nov 2019 13:12:55 GMT
< Transfer-Encoding: chunked
< Connection: keep-alive
< Cache-Control: max-age=3600
< Expires: Sun, 03 Nov 2019 14:12:55 GMT
< Location: https://www.cloudflare.com/

์ด๋Š” ์š”์ฒญ์ด ๋Œ€์ƒ ์„œ๋ฒ„์— ์„ฑ๊ณต์ ์œผ๋กœ ์ „๋‹ฌ๋˜์–ด ์ฒ˜๋ฆฌ๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์ด์ œ Wireshark์—์„œ ํŠธ๋ž˜ํ”ฝ ๋คํ”„๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ด ๊ฒฝ์šฐ ๊ณต๊ธ‰์ž DPI๊ฐ€ ํ™•์ธํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

TLS 1.3 ๊ธฐ๋ฐ˜ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…

curl์ด ๋จผ์ € Cloudflare ์„œ๋ฒ„์˜ ๊ณต๊ฐœ eSNI ํ‚ค๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด DNS ์„œ๋ฒ„์— ์ ‘์†ํ•œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. _esni.cloudflare.com์œผ๋กœ ์ „์†ก๋œ TXT DNS ์š”์ฒญ(ํŒจํ‚ท #13)์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ openssl ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ SNI ํ•„๋“œ๊ฐ€ ์ด์ „ ๋‹จ๊ณ„์—์„œ ์–ป์€ ๊ณต๊ฐœ ํ‚ค(ํŒจํ‚ท #1.3)๋กœ ์•”ํ˜ธํ™”๋œ TLS 22 ์š”์ฒญ์„ Cloudflare ์„œ๋ฒ„๋กœ ์ „์†กํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ eSNI ํ•„๋“œ ์™ธ์—๋„ SSL-hello ํŒจํ‚ท์—๋Š” ์ผ๋ฐ˜์ ์ธ ๊ฐœ๋ฐฉํ˜• SNI๊ฐ€ ํฌํ•จ๋œ ํ•„๋“œ๋„ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์–ด๋–ค ์ˆœ์„œ๋กœ๋“  ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ด ๊ฒฝ์šฐ, www.hello-rkn.ru).

์ด ๊ณต๊ฐœ SNI ํ•„๋“œ๋Š” Cloudflare ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌ๋  ๋•Œ ์ „ํ˜€ ๊ณ ๋ ค๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ, ์ œ๊ณต์—…์ฒด์˜ DPI๋ฅผ ๋งˆ์Šคํ‚นํ•˜๋Š” ์šฉ๋„๋กœ๋งŒ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Cloudflare ์„œ๋ฒ„๋Š” ssl-hello ํŒจํ‚ท์„ ์ˆ˜์‹ ํ•˜์—ฌ eSNI๋ฅผ ๋ณตํ˜ธํ™”ํ•˜๊ณ , ์›๋ณธ SNI๋ฅผ ์ถ”์ถœํ•˜์—ฌ ๋งˆ์น˜ ์•„๋ฌด ์ผ๋„ ์—†์—ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค(eSNI ๊ฐœ๋ฐœ ๋‹น์‹œ ๊ณ„ํšํ–ˆ๋˜ ๋Œ€๋กœ ๋ชจ๋“  ์ž‘์—…์„ ์ •ํ™•ํžˆ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค).

์ด ๊ฒฝ์šฐ DPI ๊ด€์ ์—์„œ ํฌ์ฐฉํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๊ฒƒ์€ _esni.cloudflare.com์— ๋Œ€ํ•œ ๊ธฐ๋ณธ DNS ์š”์ฒญ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ €ํฌ๋Š” ์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ๋‚ด๋ถ€์—์„œ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด DNS ์š”์ฒญ์„ ๊ณต๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.

DPI๋ฅผ ์™„์ „ํžˆ ๋ฌด๋ ฅํ™”ํ•˜๊ธฐ ์œ„ํ•ด, ์•ž์„œ ์–ธ๊ธ‰ํ•œ DNS-over-HTTPS ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜์ž๋ฉด, DOH๋Š” HTTPS ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด DNS ์š”์ฒญ์„ ์ „์†กํ•˜์—ฌ "์ค‘๊ฐ„์ž ๊ณต๊ฒฉ(man in the middle attack)"์œผ๋กœ๋ถ€ํ„ฐ ์ž์‹ ์„ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.

์š”์ฒญ์„ ๋‹ค์‹œ ์‹คํ–‰ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ฒˆ์—๋Š” DNS๊ฐ€ ์•„๋‹Œ https ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ๊ณต๊ฐœ eSNI ํ‚ค๋ฅผ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ESNI_COVER="www.hello-rkn.ru" DOH_URL=https://mozilla.cloudflare-dns.com/dns-query ./curl-esni https://cloudflare.com/

์š”์ฒญ ํŠธ๋ž˜ํ”ฝ ๋คํ”„๋Š” ์•„๋ž˜ ์Šคํฌ๋ฆฐ์ƒท์— ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.

TLS 1.3 ๊ธฐ๋ฐ˜ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…

curl์ด ๋จผ์ € DoH ํ”„๋กœํ† ์ฝœ(์„œ๋ฒ„ 104.16.249.249์— ๋Œ€ํ•œ https ์—ฐ๊ฒฐ)์„ ํ†ตํ•ด mozilla.cloudflare-dns.com ์„œ๋ฒ„์— ์ ‘์†ํ•˜์—ฌ SNI ์•”ํ˜ธํ™”๋ฅผ ์œ„ํ•œ ๊ณต๊ฐœ ํ‚ค ๊ฐ’์„ ์–ป์€ ๋‹ค์Œ ๋„๋ฉ”์ธ ๋’ค์— ์ˆจ์–ด ๋Œ€์ƒ ์„œ๋ฒ„๋กœ ์ „์†กํ•œ๋‹ค๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. www.hello-rkn.ru.

์œ„์˜ DoH ๋ฆฌ์กธ๋ฒ„ mozilla.cloudflare-dns.com ์™ธ์—๋„, ์˜ˆ๋ฅผ ๋“ค์–ด ์œ ๋ช…ํ•œ ์•…์˜์ ์ธ ๊ธฐ์—…์ด ์ œ๊ณตํ•˜๋Š” ๋‹ค๋ฅธ ์ธ๊ธฐ ์žˆ๋Š” DoH ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ESNI_COVER="www.kremlin.ru" DOH_URL=https://dns.google/dns-query ./curl-esni https://rutracker.nl/

๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๋‹ต์„ ์–ป์Šต๋‹ˆ๋‹ค:

< HTTP/1.1 301 Moved Permanently
< Date: Sun, 03 Nov 2019 14:10:22 GMT
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: keep-alive
< Set-Cookie: __cfduid=da0144d982437e77b0b37af7d00438b1a1572790222; expires=Mon, 02-Nov-20 14:10:22 GMT; path=/; domain=.rutracker.nl; HttpOnly; Secure
< Location: https://rutracker.nl/forum/index.php
< CF-Cache-Status: DYNAMIC
< Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
< Server: cloudflare
< CF-RAY: 52feee696f42d891-CPH

TLS 1.3 ๊ธฐ๋ฐ˜ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ…

์ด ๊ฒฝ์šฐ, DoH ๋ฆฌ์กธ๋ฒ„์ธ dns.google(์˜คํƒ€๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ด ์œ ๋ช… ๊ธฐ์—…์€ ์ž์ฒด ์ตœ์ƒ์œ„ ๋„๋ฉ”์ธ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค)์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฐจ๋‹จ๋œ rutracker.nl ์„œ๋ฒ„์— ์ ‘์†ํ•˜๊ณ , ๋ชจ๋“  DPI์— ๋Œ€ํ•ด ์‚ฌํ˜•์„ ๊ฐ์ˆ˜ํ•˜๊ณ ๋ผ๋„ ์ฐจ๋‹จ์ด ์—„๊ฒฉํžˆ ๊ธˆ์ง€๋œ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์œผ๋กœ ๋Œ€์ฒดํ–ˆ์Šต๋‹ˆ๋‹ค. ์‘๋‹ต์„ ํ†ตํ•ด ์š”์ฒญ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œ๊ณต์ž์˜ DPI๊ฐ€ ์šฐ๋ฆฌ๊ฐ€ ์ปค๋ฒ„๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ณต๊ฐœ SNI์— ์‘๋‹ตํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ์ถ”๊ฐ€ ํ™•์ธ์œผ๋กœ, ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค๋ฅธ "์ข‹์€" ํ† ๋ŸฐํŠธ ์ถ”์ ๊ธฐ์™€ ๊ฐ™์ด ๊ธˆ์ง€๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์žฅํ•˜์—ฌ rutracker.nl์— ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ ESNI_COVER="rutor.info" DOH_URL=https://dns.google/dns-query ./curl-esni https://rutracker.nl/

DPI ์‹œ์Šคํ…œ์ด ์šฐ๋ฆฌ์˜ ์š”์ฒญ์„ ์ฐจ๋‹จํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์šฐ๋ฆฌ๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‘๋‹ต์„ ๋ฐ›์ง€ ๋ชปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ๊ฒฐ๋ก 

๋”ฐ๋ผ์„œ openssl๊ณผ curl์„ ์‚ฌ์šฉํ•˜์—ฌ eSNI์˜ ๊ธฐ๋Šฅ์„ ์‹œ์—ฐํ•˜๊ณ  eSNI ๊ธฐ๋ฐ˜ ๋„๋ฉ”์ธ ํ”„๋ก ํŒ… ์ž‘๋™์„ ๊ฒ€์ฆํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ openssl ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ ํ˜ธํ•˜๋Š” ๋„๊ตฌ๋ฅผ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์˜ "์ปค๋ฒ„ ์•„๋ž˜"์—์„œ ์ž‘๋™ํ•˜๋„๋ก ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ ๊ธ€์—์„œ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

DDoS ๋ณดํ˜ธ, VPS VDS ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ์•ˆ์ •์ ์ธ ํ˜ธ์ŠคํŒ… ๊ตฌ์ž… ๐Ÿ”ฅ DDoS ๊ณต๊ฒฉ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์ด ํƒ‘์žฌ๋œ ์•ˆ์ •์ ์ธ ์›น์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…, VPS ๋ฐ VDS ์„œ๋ฒ„๋ฅผ ๊ตฌ๋งคํ•˜์„ธ์š” | ProHoster