Intel CPU ๋ง ๋ฒ„์Šค๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์œ ์ถœ

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

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ธ ๊ฐ€์ง€ ๊ณต๊ฒฉ์ด ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ๋ถ€์ฑ„๋„ ๊ณต๊ฒฉ์— ์ทจ์•ฝํ•œ RSA ๋ฐ EdDSA ๊ตฌํ˜„์„ ์‚ฌ์šฉํ•  ๋•Œ ์•”ํ˜ธํ™” ํ‚ค์˜ ๊ฐœ๋ณ„ ๋น„ํŠธ๋ฅผ ๋ณต๊ตฌํ•ฉ๋‹ˆ๋‹ค(๊ณ„์‚ฐ ์ง€์—ฐ์ด ์ฒ˜๋ฆฌ ์ค‘์ธ ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š” ๊ฒฝ์šฐ). ์˜ˆ๋ฅผ ๋“ค์–ด EdDSA์˜ ์ดˆ๊ธฐํ™” ๋ฒกํ„ฐ(nonce)์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ๊ฐœ๋ณ„ ๋น„ํŠธ๊ฐ€ ์œ ์ถœ๋˜๋ฉด ์ „์ฒด ๊ฐœ์ธ ํ‚ค๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ณต๊ตฌํ•˜๋Š” ๊ณต๊ฒฉ์„ ์‚ฌ์šฉํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์€ ์‹ค์ œ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ ์–ด๋ ต๊ณ  ๋งŽ์€ ์˜ˆ์•ฝ์ด ์žˆ์œผ๋ฉด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด SMT(HyperThreading)๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋˜๊ณ  LLC ์บ์‹œ๊ฐ€ CPU ์ฝ”์–ด ๊ฐ„์— ๋ถ„ํ• ๋˜๋ฉด ์„ฑ๊ณต์ ์ธ ์ž‘์—…์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  • ํ‚ค ์ž…๋ ฅ ๊ฐ„ ์ง€์—ฐ์— ๋Œ€ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์ง€์—ฐ์€ ํ‚ค์˜ ์œ„์น˜์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋ฉฐ ํ†ต๊ณ„ ๋ถ„์„์„ ํ†ตํ•ด ํŠน์ • ํ™•๋ฅ ๋กœ ํ‚ค๋ณด๋“œ์—์„œ ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์€ ์ผ๋ฐ˜์ ์œผ๋กœ "a" ๋‹ค์Œ์— "s"๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์ด "g" ๋’ค์— ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฆ…๋‹ˆ๋‹ค. "์—์Šค").
  • ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ, ํ”„๋กœ์„ธ์„œ ์บ์‹œ, CPU ์ฝ”์–ด๋ณ„ ๋ฆฌ์†Œ์Šค ๋ฐ ํ”„๋กœ์„ธ์„œ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ดˆ๋‹น ์•ฝ 4MB์˜ ์†๋„๋กœ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋„๋ก ์ˆจ๊ฒจ์ง„ ํ†ต์‹  ์ฑ„๋„์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ œ์•ˆ๋œ ๋น„๋ฐ€ ์ฑ„๋„ ์ƒ์„ฑ ๋ฐฉ๋ฒ•์€ ๊ธฐ์กด์˜ ๋ถ€์ฑ„๋„ ๊ณต๊ฒฉ ๋ฐฉ์–ด ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ์ฐจ๋‹จํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต๋‹ค๋Š” ์ ์— ์ฃผ๋ชฉํ•œ๋‹ค.

์ต์Šคํ”Œ๋กœ์ž‡์—๋Š” ๋†’์€ ๊ถŒํ•œ์ด ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ ๊ถŒํ•œ์ด ์—†๋Š” ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ณต๊ฒฉ์€ ์ž ์žฌ์ ์œผ๋กœ ๊ฐ€์ƒ ๋จธ์‹  ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์œ ์ถœ์„ ์กฐ์งํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์กฐ์ •๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด ๋ฌธ์ œ๋Š” ์—ฐ๊ตฌ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฌ์œผ๋ฉฐ ๊ฐ€์ƒํ™” ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๋Š” ์ˆ˜ํ–‰๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ œ์•ˆ๋œ ์ฝ”๋“œ๋Š” Ubuntu 7์˜ Intel i9700-16.04 CPU์—์„œ ํ…Œ์ŠคํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๊ณต๊ฒฉ ๋ฐฉ๋ฒ•์€ Intel Coffee Lake ๋ฐ Skylake ์ œํ’ˆ๊ตฐ์˜ ๋ฐ์Šคํฌํ†ฑ ํ”„๋กœ์„ธ์„œ์—์„œ ํ…Œ์ŠคํŠธ๋˜์—ˆ์œผ๋ฉฐ Broadwell ์ œํ’ˆ๊ตฐ์˜ Xeon ์„œ๋ฒ„ ํ”„๋กœ์„ธ์„œ์—๋„ ์ž ์žฌ์ ์œผ๋กœ ์ ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

๋˜ํ•œ Linux ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ๊ณต๊ฒฉ ์ค‘์— Spectre ์ทจ์•ฝ์ (CVE-2017-5753)์˜ ์ฒซ ๋ฒˆ์งธ ๋ณ€์ข…์— ๋Œ€ํ•œ ์ต์Šคํ”Œ๋กœ์ž‡ ์‚ฌ์šฉ ํ”์ ์ด ์‹๋ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ต์Šคํ”Œ๋กœ์ž‡์€ ์‚ฌ์ด๋“œ ์ฑ„๋„ ์ •๋ณด ์œ ์ถœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์Šˆํผ๋ธ”๋ก์„ ์ฐพ๊ณ , /etc/shadow ํŒŒ์ผ์˜ inode๋ฅผ ๊ฒฐ์ •ํ•˜๊ณ , ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€ ์ฃผ์†Œ๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ๋””์Šคํฌ ์บ์‹œ์—์„œ ํŒŒ์ผ์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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