Microsoft, C ์ฝ”๋“œ ๋ณด์•ˆ ๊ฐ•ํ™”๋ฅผ ์œ„ํ•œ ํ•˜๋“œ์›จ์–ด ์†”๋ฃจ์…˜ 'CHERIoT' ๊ณต๊ฐœ

Microsoft๋Š” ๊ธฐ์กด C ๋ฐ C++ ์ฝ”๋“œ์˜ ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ์ฐจ๋‹จํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” CHERIoT(์‚ฌ๋ฌผ ์ธํ„ฐ๋„ท์šฉ RISC-V์˜ ๊ธฐ๋Šฅ ํ•˜๋“œ์›จ์–ด ํ™•์žฅ) ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์ž‘์—…์„ ๊ณต๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. CHERIoT๋Š” ๊ธฐ์กด C/C++ ์ฝ”๋“œ ๋ฒ ์ด์Šค๋ฅผ ์žฌ์ž‘์—… ์—†์ด ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ๋Š” ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ณดํ˜ธ ๊ธฐ๋Šฅ์€ ํ”„๋กœ์„ธ์„œ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ํŠน์ˆ˜ ํ™•์žฅ ํ”„๋กœ์„ธ์„œ ๋ช…๋ น์–ด(ISA) ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ˆ˜์ •๋œ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„๋˜๋ฉฐ, ํ•˜๋“œ์›จ์–ด ์ˆ˜์ค€์—์„œ ๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ , ํฌ์ธํ„ฐ ์ฒ˜๋ฆฌ์˜ ์ •ํ™•์„ฑ์„ ๊ฒ€์‚ฌํ•˜๋ฉฐ, ์ฝ”๋“œ ๋ธ”๋ก์˜ ๊ฒฉ๋ฆฌ๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์ ํŠธ๋Š” C ์–ธ์–ด์˜ ์ €์ˆ˜์ค€ ํŠน์„ฑ์ด ๋ฉ”๋ชจ๋ฆฌ ์ž‘์—… ์‹œ ์˜ค๋ฅ˜์˜ ์›์ธ์ด ๋˜์–ด ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ, ์ด๋ฏธ ํ•ด์ œ๋œ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ, ํฌ์ธํ„ฐ ์—ญ์ฐธ์กฐ, ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ด์ค‘ ํ•ด์ œ์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•œ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•˜์—ฌ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๊ตฌ๊ธ€์ด๋‚˜ ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์ฒ˜๋Ÿผ ์—„๊ฒฉํ•œ ๋ณ€๊ฒฝ ๊ฒ€ํ†  ์ •์ฑ…์„ ์‹œํ–‰ํ•˜๊ณ  ์ตœ์‹  ๊ฐœ๋ฐœ ๋ฐฉ์‹๊ณผ ์ •์  ๋ถ„์„ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€๊ธฐ์—…์กฐ์ฐจ๋„ ๋ฉ”๋ชจ๋ฆฌ ์ž‘์—… ์‹œ ์˜ค๋ฅ˜๊ฐ€ ์—†๋‹ค๊ณ  ๋ณด์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. (์˜ˆ๋ฅผ ๋“ค์–ด, ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์™€ ๊ตฌ๊ธ€ ์†Œํ”„ํŠธ์›จ์–ด ์ œํ’ˆ์˜ ์ทจ์•ฝ์  ์ค‘ ์•ฝ 70%๋Š” ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ ์ฒ˜๋ฆฌ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.)

์ด ๋ฌธ์ œ๋Š” ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์•ˆ์ „ํ•œ ์ž‘์—…์„ ๋ณด์žฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ์ถ”๊ฐ€ ๊ฒ€์‚ฌ๊ฐ€ ํฌํ•จ๋œ ๋ฐ”์ธ๋”ฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ผ๋ฐ˜ ํฌ์ธํ„ฐ ๋Œ€์‹  MiraclePtr(raw_ptr)์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด์ œ๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์€ ์ƒˆ ์ฝ”๋“œ์— ๋” ์ ํ•ฉํ•˜๋ฉฐ, ๊ธฐ์กด C/C++ ํ”„๋กœ์ ํŠธ๋ฅผ ์žฌ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์€ ์ƒ๋‹นํžˆ ๊นŒ๋‹ค๋กญ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ์ด๋‚˜ ์‚ฌ๋ฌผ ์ธํ„ฐ๋„ท ๊ธฐ๊ธฐ์™€ ๊ฐ™์ด ๋ฆฌ์†Œ์Šค๊ฐ€ ์ œํ•œ๋œ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

CHERIoT ํ•˜๋“œ์›จ์–ด ๊ตฌ์„ฑ ์š”์†Œ๋Š” RISC-V ์•„ํ‚คํ…์ฒ˜ ๊ธฐ๋ฐ˜ ๋งˆ์ดํฌ๋กœ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ, ๋ณดํ˜ธํ˜• CHERI ํ”„๋กœ์„ธ์„œ ์•„ํ‚คํ…์ฒ˜(RISC-V์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ ํ•˜๋“œ์›จ์–ด ํ™•์žฅ)๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ "๊ธฐ๋Šฅ"(๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ๊ฐ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ ์ž‘์—…์ด ์Šน์ธ๋จ)์— ๊ธฐ๋ฐ˜ํ•œ ์ œ์–ด๋œ ๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค ๋ชจ๋ธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. CHERIoT์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ช…๋ น์–ด ์„ธํŠธ ์•„ํ‚คํ…์ฒ˜(ISA)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ, ๊ฐœ๋ณ„ ๊ฐ์ฒด ์ˆ˜์ค€์—์„œ ๋ฉ”๋ชจ๋ฆฌ ์ž‘์—…์˜ ์•ˆ์ „์„ฑ์„ ๋ณด์žฅํ•˜๊ณ , ์ด๋ฏธ ํ•ด์ œ๋œ ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ๋ณดํ˜ธํ•˜๋ฉฐ, ๊ฐ€๋ฒผ์šด ๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค ๊ฒฉ๋ฆฌ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋ชจ๋ธ์ด ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์†Œํ”„ํŠธ์›จ์–ด ๋ณดํ˜ธ ๋ชจ๋ธ์€ C/C++ ์–ธ์–ด ๋ชจ๋ธ์— ์ง์ ‘ ๋ฐ˜์˜๋˜์–ด ๊ธฐ์กด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ณดํ˜ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(CHERIoT ISA๋ฅผ ์ง€์›ํ•˜๋Š” ์žฅ๋น„์—์„œ ์žฌ์ปดํŒŒ์ผํ•˜์—ฌ ์‹คํ–‰ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค).

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

์ด ํ”„๋กœ์ ํŠธ์—๋Š” ํ™•์žฅ๋œ CHERIoT ๋ช…๋ น์–ด ์„ธํŠธ ์•„ํ‚คํ…์ฒ˜ ์‚ฌ์–‘, CHERIoT ISA๋ฅผ ์ง€์›ํ•˜๋Š” 32๋น„ํŠธ RISC-V CPU์˜ ์ฐธ์กฐ ๊ตฌํ˜„, ๊ทธ๋ฆฌ๊ณ  ์ˆ˜์ •๋œ LLVM ํˆดํ‚ท์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. Verilog๋กœ ์ž‘์„ฑ๋œ CPU ํ”„๋กœํ† ํƒ€์ž… ํšŒ๋กœ์™€ ํ•˜๋“œ์›จ์–ด ๋ธ”๋ก ์„ค๋ช…์€ Apache 2.0 ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. CPU๋Š” lowRISC ํ”„๋กœ์ ํŠธ์˜ Ibex ์ปค๋„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. CHERIoT ISA ์ฝ”๋“œ ๋ชจ๋ธ์€ Sail ์–ธ์–ด๋กœ ์ •์˜๋˜๋ฉฐ BSD ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ, 256MB RAM์„ ํƒ‘์žฌํ•œ ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ์—์„œ๋„ ์ปดํŒŒํŠธ๋จผํŠธ๋ฅผ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” CHERIoT RTOS ์‹ค์‹œ๊ฐ„ ์šด์˜์ฒด์ œ ํ”„๋กœํ† ํƒ€์ž…์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. CHERIoT RTOS ์ฝ”๋“œ๋Š” C++๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ MIT ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ๋ถ€ํŠธ๋กœ๋”, ์Šค์ผ€์ค„๋Ÿฌ, ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์‹œ์Šคํ…œ๊ณผ ๊ฐ™์€ ๊ธฐ๋ณธ OS ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์ปดํŒŒํŠธ๋จผํŠธ ํ˜•ํƒœ๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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

์ถœ์ฒ˜ : opennet.ru

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