์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ๋ฏฟ์Œ์งํ•œ ์žฅํ™”. ์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ

์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ๋ฏฟ์Œ์งํ•œ ์žฅํ™”. ์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ
์šฐ๋ฆฌ๋Š” ๋‹ค์‹œ ๋‚ฎ์€ ์ˆ˜์ค€์œผ๋กœ ๋‚ด๋ ค๊ฐ€ ํŽŒ์›จ์–ด x86 ํ˜ธํ™˜ ์ปดํ“จํ„ฐ ํ”Œ๋žซํผ์˜ ๋ณด์•ˆ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ์—ฐ๊ตฌ์˜ ์ฃผ์š” ์š”์†Œ๋Š” ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ ๊ณต๊ธ‰์—…์ฒด๊ฐ€ ์ƒ์‚ฐ ๋‹จ๊ณ„์—์„œ ์˜๊ตฌ์ ์œผ๋กœ ํ™œ์„ฑํ™” ๋˜๋Š” ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ํ•˜๋“œ์›จ์–ด ์ง€์› BIOS ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€ํŒ… ๊ธฐ์ˆ ์ธ Intel Boot Guard(Intel BIOS Guard์™€ ํ˜ผ๋™ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค!)์ž…๋‹ˆ๋‹ค. ์Œ, ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ์—ฐ๊ตฌ ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง์„ ํ†ตํ•ด ์ด ๊ธฐ์ˆ ์˜ ๊ตฌํ˜„์„ ์–‡๊ฒŒ ์ž๋ฅด๊ณ , ์•„ํ‚คํ…์ฒ˜๋ฅผ ์„ค๋ช…ํ•˜๊ณ , ๋ฌธ์„œํ™”๋˜์ง€ ์•Š์€ ์„ธ๋ถ€ ์ •๋ณด๋กœ ์ฑ„์šฐ๊ณ , ๋ง›๋ณด๊ธฐ ์œ„ํ•ด ๊ณต๊ฒฉ ๋ฒกํ„ฐ๋กœ ์–‘๋…ํ•˜๊ณ  ํ˜ผํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋ช‡ ๋…„ ๋™์•ˆ ์—ฌ๋Ÿฌ ๋ฒค๋”์˜ ์ œํ’ˆ์—์„œ ๋ณต์ œ๋œ ๋ฒ„๊ทธ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž ์žฌ์ ์ธ ๊ณต๊ฒฉ์ž๊ฐ€ ์ด ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ์—์„œ ์ œ๊ฑฐํ•  ์ˆ˜ ์—†๋Š”(ํ”„๋กœ๊ทธ๋ž˜๋จธ๋„) ์ˆจ๊ฒจ์ง„ ๋ฃจํŠธํ‚ท์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋กœ ๋ถˆ์„ ๋ถ™์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ์ด ๊ธฐ์‚ฌ๋Š” ์ปจํผ๋Ÿฐ์Šค์˜ "On Guard for Rootkits: Intel BootGuard" ๋ณด๊ณ ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ œ๋กœ๋‚˜์ด์ธ  2016 ๊ทธ๋ฆฌ๊ณ  29์ผ ํšŒ์˜ ๋ฐํ”„์ฝ˜ ๋Ÿฌ์‹œ์•„ (๋‘ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๋ชจ๋‘ ์—ฌ๊ธฐ์—).

Intel 64 ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ปดํ“จํ„ฐ ํ”Œ๋žซํผ์šฉ ํŽŒ์›จ์–ด

๋จผ์ € Intel 64 ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ตœ์‹  ์ปดํ“จํ„ฐ ํ”Œ๋žซํผ์˜ ํŽŒ์›จ์–ด๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?๋ผ๋Š” ์งˆ๋ฌธ์— ๋‹ตํ•ด ๋ด…์‹œ๋‹ค. ๋ฌผ๋ก  UEFI BIOS์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜์ด ๋Œ€๋‹ต์€ ์ •ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ์•„ํ‚คํ…์ฒ˜์˜ ๋ฐ์Šคํฌํ†ฑ(๋…ธํŠธ๋ถ) ๋ฒ„์ „์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ทธ๋ฆผ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ๋ฏฟ์Œ์งํ•œ ์žฅํ™”. ์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ
๊ธฐ์ดˆ๋Š” ๋‹ค์Œ ๋งํฌ์ž…๋‹ˆ๋‹ค.

  • ํ”„๋กœ์„ธ์„œ(CPU, Central Processing Unit): ๊ธฐ๋ณธ ์ฝ”์–ด ์™ธ์— ๋‚ด์žฅํ˜• ๊ทธ๋ž˜ํ”ฝ ์ฝ”์–ด(์ผ๋ถ€ ๋ชจ๋ธ ์•„๋‹˜) ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์ปจํŠธ๋กค๋Ÿฌ(IMC, ํ†ตํ•ฉ ๋ฉ”๋ชจ๋ฆฌ ์ปจํŠธ๋กค๋Ÿฌ)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฃผ๋ณ€ ์žฅ์น˜์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๊ณ  ํ•˜์œ„ ์‹œ์Šคํ…œ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ํฌํ•จ๋œ ์นฉ์…‹(PCH, Platform Controller Hub). ๊ทธ์ค‘์—๋Š” ํŽŒ์›จ์–ด(Intel ME ํŽŒ์›จ์–ด)๋„ ์žˆ๋Š” ์•…๋ช… ๋†’์€ Intel ME(Management Engine)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋”ฐ๋ผ์„œ ์œ„์˜ ํŽŒ์›จ์–ด ์กฐํ•ฉ์€ ๊ณตํ†ต SPI ํ”Œ๋ž˜์‹œ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๋Š” ์ปดํ“จํ„ฐ ํ”Œ๋žซํผ(์‹œ์Šคํ…œ ํŽŒ์›จ์–ด)์˜ ํŽŒ์›จ์–ด์ž…๋‹ˆ๋‹ค. ์ด ๋ฉ”๋ชจ๋ฆฌ์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ˆ„์›Œ์žˆ๋Š” ๊ณณ์„ ํ˜ผ๋™ํ•˜์ง€ ์•Š๋„๋ก ์ด ๋ฉ”๋ชจ๋ฆฌ์˜ ๋‚ด์šฉ์€ ๋‹ค์Œ ์˜์—ญ์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆผ ์ฐธ์กฐ).

  • UEFI ๋ฐ”์ด์˜ค์Šค;
  • ACPI EC ํŽŒ์›จ์–ด(Skylake ํ”„๋กœ์„ธ์„œ ๋งˆ์ดํฌ๋กœ์•„ํ‚คํ…์ฒ˜(2015)์™€ ํ•จ๊ป˜ ๋ณ„๋„์˜ ์˜์—ญ์ด ๋“ฑ์žฅํ–ˆ์ง€๋งŒ ์‹ค์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ์•„์ง ๋ณธ ์ ์ด ์—†์œผ๋ฏ€๋กœ ์ž„๋ฒ ๋””๋“œ ์ปจํŠธ๋กค๋Ÿฌ ํŽŒ์›จ์–ด๋Š” ์—ฌ์ „ํžˆ UEFI BIOS์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค.)
  • ์ธํ…” ME ํŽŒ์›จ์–ด;
  • ๋‚ด์žฅ GbE(๊ธฐ๊ฐ€๋น„ํŠธ ์ด๋”๋„ท) ๋„คํŠธ์›Œํฌ ์–ด๋Œ‘ํ„ฐ์˜ ๊ตฌ์„ฑ(MAC ์ฃผ์†Œ ๋“ฑ)
  • ํ”Œ๋ž˜์‹œ ๋””์Šคํฌ๋ฆฝํ„ฐ - ๋‹ค๋ฅธ ์˜์—ญ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ์™€ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ํฌํ•จํ•˜๋Š” ํ”Œ๋ž˜์‹œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์š” ์˜์—ญ์ž…๋‹ˆ๋‹ค.

์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ๋ฏฟ์Œ์งํ•œ ์žฅํ™”. ์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ
์˜์—ญ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ์ฐจ๋ณ„ํ™”(์ง€์ •๋œ ๊ถŒํ•œ์— ๋”ฐ๋ผ)๋Š” ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์•ก์„ธ์Šคํ•˜๋Š” ์นฉ์…‹์— ๋‚ด์žฅ๋œ SPI ์ปจํŠธ๋กค๋Ÿฌ์ธ SPI ๋ฒ„์Šค ๋งˆ์Šคํ„ฐ์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๊ถŒํ•œ์ด Intel์—์„œ ๊ถŒ์žฅํ•˜๋Š”(๋ณด์•ˆ์ƒ์˜ ์ด์œ ๋กœ) ๊ฐ’์œผ๋กœ ์„ค์ •๋˜๋ฉด SPI ํ”Œ๋ž˜์‹œ์˜ ๊ฐ ์‚ฌ์šฉ์ž๋Š” ํ•ด๋‹น ์ง€์—ญ์— ๋Œ€ํ•ด์„œ๋งŒ ์ „์ฒด ์•ก์„ธ์Šค(์ฝ๊ธฐ/์“ฐ๊ธฐ) ๊ถŒํ•œ์„ ๊ฐ–์Šต๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€๋Š” ์ฝ๊ธฐ ์ „์šฉ์ด๊ฑฐ๋‚˜ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์•Œ๋ ค์ง„ ์‚ฌ์‹ค: ๋งŽ์€ ์‹œ์Šคํ…œ์—์„œ CPU๋Š” UEFI BIOS ๋ฐ GbE์— ๋Œ€ํ•œ ์ „์ฒด ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ๊ณ  ํ”Œ๋ž˜์‹œ ์„ค๋ช…์ž์— ๋Œ€ํ•œ ์ฝ๊ธฐ ์•ก์„ธ์Šค ๊ถŒํ•œ๋งŒ ์žˆ์œผ๋ฉฐ Intel ME ์˜์—ญ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์€ ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค. ์ „๋ถ€๊ฐ€ ์•„๋‹Œ ๋งŽ์€ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ถŒ์žฅ ์‚ฌํ•ญ์€ ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ์˜ ๋’ท๋ถ€๋ถ„์—์„œ ์ž์„ธํžˆ ์•Œ๋ ค ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

์ˆ˜์ •์œผ๋กœ๋ถ€ํ„ฐ ์ปดํ“จํ„ฐ ํ”Œ๋žซํผ์˜ ํŽŒ์›จ์–ด๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜

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

๋”ฐ๋ผ์„œ Intel ME ํŽŒ์›จ์–ด๋Š” ๋ฌด๊ฒฐ์„ฑ ๋ฐ ์ธ์ฆ ์ œ์–ด๋ฅผ ์œ„ํ•ด ์„œ๋ช…๋˜์—ˆ์œผ๋ฉฐ ME UMA ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋  ๋•Œ๋งˆ๋‹ค ME ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด ํ™•์ธ ํ”„๋กœ์„ธ์Šค๋Š” ์ด๋ฏธ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜์—์„œ ๋…ผ์˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์กฐํ•ญIntel ME ํ•˜์œ„ ์‹œ์Šคํ…œ ์ „์šฉ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ACPI EC ํŽŒ์›จ์–ด๋Š” ์›์น™์ ์œผ๋กœ ๋ฌด๊ฒฐ์„ฑ์— ๋Œ€ํ•ด์„œ๋งŒ ํ™•์ธ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ UEFI BIOS์— ํฌํ•จ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฑฐ์˜ ํ•ญ์ƒ UEFI BIOS๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ณดํ˜ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ฉ์‹œ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ๋‘ ๊ฐ€์ง€ ๋ฒ”์ฃผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

UEFI BIOS ์˜์—ญ์— ๋Œ€ํ•œ ์“ฐ๊ธฐ ๋ฐฉ์ง€

  1. ์“ฐ๊ธฐ ๋ฐฉ์ง€ ์ ํผ๋กœ SPI ํ”Œ๋ž˜์‹œ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์šฉ์˜ ๋ฌผ๋ฆฌ์  ๋ณดํ˜ธ
  2. ์นฉ์…‹์˜ PRx ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CPU ์ฃผ์†Œ ๊ณต๊ฐ„์—์„œ UEFI BIOS ์˜์—ญ์˜ ํ”„๋กœ์ ์…˜ ๋ณดํ˜ธ
  3. ์นฉ์…‹ ๋ ˆ์ง€์Šคํ„ฐ์—์„œ BIOS_WE/BLE ๋ฐ SMM_BWP ๋น„ํŠธ๋ฅผ ์„ค์ •ํ•˜์—ฌ ํ•ด๋‹น SMI ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ƒ์„ฑ ๋ฐ ์ฒ˜๋ฆฌํ•˜์—ฌ UEFI BIOS ์˜์—ญ์— ์“ฐ๊ธฐ ์‹œ๋„๋ฅผ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค.
  4. ์ด ๋ณดํ˜ธ ๊ธฐ๋Šฅ์˜ ๊ณ ๊ธ‰ ๋ฒ„์ „์€ PFAT(Intel BIOS Guard)์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์™ธ์—๋„ ๊ณต๊ธ‰์—…์ฒด๋Š” ๊ณ ์œ ํ•œ ๋ณด์•ˆ ์กฐ์น˜(์˜ˆ: UEFI BIOS ์—…๋ฐ์ดํŠธ๋กœ ์บก์Š ์„œ๋ช…)๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

UEFI BIOS ์ธ์ฆ ํ™•์ธ

์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€ํŒ… ๊ธฐ์ˆ ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ๋– ์˜ค๋ฅด๋Š” ๊ฒƒ์€ ๋ณด์•ˆ ๋ถ€ํŒ…์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•„ํ‚คํ…์ฒ˜์ ์œผ๋กœ๋Š” ํŽŒ์›จ์–ด ์ž์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ UEFI BIOS ์™ธ๋ถ€์˜ ๊ตฌ์„ฑ ์š”์†Œ(๋“œ๋ผ์ด๋ฒ„, ๋กœ๋” ๋“ฑ)๋ฅผ ์ธ์ฆํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ Intel์€ Bay Trail ๋งˆ์ดํฌ๋กœ์•„ํ‚คํ…์ฒ˜(2012)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” SoC์—์„œ ํ•˜๋“œ์›จ์–ด ์ „ํ™˜ ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ณด์•ˆ ๋ถ€ํŒ…(Verified Boot)์„ ๊ตฌํ˜„ํ–ˆ์œผ๋ฉฐ, ์ด๋Š” ์•ž์„œ ์–ธ๊ธ‰ํ•œ ๋ณด์•ˆ ๋ถ€ํŒ… ๊ธฐ์ˆ ๊ณผ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์—(2013) ์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ๊ฐœ์„ ๋˜์—ˆ๊ณ  Intel Boot Guard๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ Haswell ๋งˆ์ดํฌ๋กœ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์žˆ๋Š” ๋ฐ์Šคํฌํƒ‘์šฉ์œผ๋กœ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Intel Boot Guard๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์ „์— Intel 64 ์•„ํ‚คํ…์ฒ˜์˜ ์‹คํ–‰ ํ™˜๊ฒฝ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ํ™˜๊ฒฝ์€ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€ํŒ… ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ์‹ ๋ขฐ์˜ ๊ทผ์›์ž…๋‹ˆ๋‹ค.

์ธํ…” CPU

Cap์€ ํ”„๋กœ์„ธ์„œ๊ฐ€ Intel 64 ์•„ํ‚คํ…์ฒ˜์˜ ์ฃผ์š” ์‹คํ–‰ ํ™˜๊ฒฝ์ด๋ผ๊ณ  ์ œ์•ˆํ•˜๋Š”๋ฐ ์™œ ์ด๊ฒƒ์ด ์‹ ๋ขฐ์˜ ๊ทผ์›์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋ ‡๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๋‹ค์Œ ์š”์†Œ๋ฅผ ์†Œ์œ ํ•˜๊ณ  ์žˆ์Œ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค.

  • ๋งˆ์ดํฌ๋กœ์ฝ”๋“œ ROM์€ ๋งˆ์ดํฌ๋กœ์ฝ”๋“œ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋น„ํœ˜๋ฐœ์„ฑ, ์žฌ๊ธฐ๋ก ๋ถˆ๊ฐ€๋Šฅ ๋ฉ”๋ชจ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๋งˆ์ดํฌ๋กœ์ฝ”๋“œ๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ช…๋ น์–ด์— ๋Œ€ํ•œ ํ”„๋กœ์„ธ์„œ ๋ช…๋ น์–ด ์‹œ์Šคํ…œ์˜ ๊ตฌํ˜„์ด๋ผ๊ณ  ๋ฏฟ์–ด์ง‘๋‹ˆ๋‹ค. ๋งˆ์ดํฌ๋กœ์ฝ”๋“œ์—์„œ๋„ ๋ฐœ์ƒ ๋ฒ„๊ทธ. ๋”ฐ๋ผ์„œ BIOS์—์„œ ๋งˆ์ดํฌ๋กœ์ฝ”๋“œ ์—…๋ฐ์ดํŠธ๊ฐ€ ํฌํ•จ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(ROM์„ ๋ฎ์–ด์“ธ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€ํŒ… ์‹œ ์ค‘์ฒฉ๋ฉ๋‹ˆ๋‹ค). ์ด๋Ÿฌํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ ์ฝ˜ํ…์ธ ๋Š” ์•”ํ˜ธํ™”๋˜์–ด ๋ถ„์„์ด ๋งค์šฐ ๋ณต์žกํ•ด์ง€๋ฉฐ(๋”ฐ๋ผ์„œ ๋งˆ์ดํฌ๋กœ์ฝ”๋“œ์˜ ํŠน์ • ์ฝ˜ํ…์ธ ๋Š” ์ด๋ฅผ ๊ฐœ๋ฐœํ•œ ์‚ฌ๋žŒ๋งŒ ์•Œ ์ˆ˜ ์žˆ์Œ) ์„œ๋ช…๋˜์–ด ๋ฌด๊ฒฐ์„ฑ๊ณผ ์‹ ๋ขฐ์„ฑ์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.
  • ๋งˆ์ดํฌ๋กœ์ฝ”๋“œ ์—…๋ฐ์ดํŠธ ๋‚ด์šฉ์„ ํ•ด๋…ํ•˜๊ธฐ ์œ„ํ•œ AES ํ‚ค
  • ๋งˆ์ดํฌ๋กœ์ฝ”๋“œ ์—…๋ฐ์ดํŠธ์˜ ์„œ๋ช…์„ ํ™•์ธํ•˜๋Š” RSA ๊ณต๊ฐœ ํ‚ค์˜ ํ•ด์‹œ
  • RSA ๊ณต๊ฐœ ํ‚ค ํ•ด์‹œ๋Š” ์ธํ…”์—์„œ ๊ฐœ๋ฐœํ•œ ACM(Authenticated Code Module) ์ฝ”๋“œ ๋ชจ๋“ˆ์˜ ์„œ๋ช…์„ ํ™•์ธํ•˜๋ฉฐ BIOS๊ฐ€ ์‹œ์ž‘๋˜๊ธฐ ์ „(hello ๋งˆ์ดํฌ๋กœ์ฝ”๋“œ) ๋˜๋Š” ์ž‘๋™ ์ค‘์— ์ผ๋ถ€ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ CPU๊ฐ€ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ธํ…” ME

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

์Šคํ…”์Šค์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  Intel ME๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์ ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹ ๋ขฐ์˜ ๊ทผ์›์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

  • ME ROM - ์‹œ์ž‘ ์ฝ”๋“œ์™€ Intel ME ํŽŒ์›จ์–ด์˜ ์„œ๋ช…์„ ํ™•์ธํ•˜๋Š” RSA ๊ณต๊ฐœ ํ‚ค์˜ SHA256 ํ•ด์‹œ๋ฅผ ํฌํ•จํ•˜๋Š” ๋น„ํœ˜๋ฐœ์„ฑ, ์žฌ๊ธฐ๋ก ๋ถˆ๊ฐ€๋Šฅ ๋ฉ”๋ชจ๋ฆฌ(์ œ๊ณต๋œ ์—…๋ฐ์ดํŠธ ๋ฐฉ๋ฒ• ์—†์Œ)
  • ๋น„๋ฐ€ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ AES ํ‚ค;
  • ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ ๊ณต๊ธ‰์—…์ฒด๊ฐ€ ์ง€์ •ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜์—ฌ ์ผ๋ถ€ ์ •๋ณด๋ฅผ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์นฉ์…‹์— ํ†ตํ•ฉ๋œ ํ“จ์ฆˆ ์„ธํŠธ(FPF, Field Programmable Fuse)์— ๋Œ€ํ•œ ์•ก์„ธ์Šค.

์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ 1.x

์ž‘์€ ๋ฉด์ฑ… ์กฐํ•ญ. ์ด ๋ฌธ์„œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” Intel Boot Guard ๊ธฐ์ˆ ์˜ ๋ฒ„์ „ ๋ฒˆํ˜ธ๋Š” ์ž„์˜์ ์ด๋ฉฐ ๋‚ด๋ถ€ Intel ์„ค๋ช…์„œ์— ์‚ฌ์šฉ๋œ ๋ฒˆํ˜ธ์™€ ๊ด€๋ จ์ด ์—†์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์—ฌ๊ธฐ์— ์ œ๊ณต๋œ ์ด ๊ธฐ์ˆ ์˜ ๊ตฌํ˜„์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง ์ค‘์— ์–ป์€ ๊ฒƒ์ด๋ฉฐ, ๊ณต๊ฐœ๋˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” Intel Boot Guard ์‚ฌ์–‘์— ๋น„ํ•ด ๋ถ€์ •ํ™•ํ•œ ๋‚ด์šฉ์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ Intel Boot Guard(BG)๋Š” ํ•˜๋“œ์›จ์–ด ์ง€์› UEFI BIOS ์ธ์ฆ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์ฑ… [Platform Embedded Security Technology Revealed, Chapter Boot with Integrity or Not Boot]์˜ ์ž‘์€ ์„ค๋ช…์œผ๋กœ ํŒ๋‹จํ•˜๋ฉด ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€ํŠธ ์ฒด์ธ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฒซ ๋ฒˆ์งธ ๋งํฌ๋Š” RESET ์ด๋ฒคํŠธ์— ์˜ํ•ด ํŠธ๋ฆฌ๊ฑฐ๋˜๋Š” CPU ๋‚ด๋ถ€์˜ ๋ถ€ํŠธ ์ฝ”๋“œ(๋งˆ์ดํฌ๋กœ์ฝ”๋“œ)์ž…๋‹ˆ๋‹ค(BIOS์˜ RESET ๋ฒกํ„ฐ์™€ ํ˜ผ๋™ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค!). CPU๋Š” SPI ํ”Œ๋ž˜์‹œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ Intel์ด ๊ฐœ๋ฐœํ•˜๊ณ  ์„œ๋ช…ํ•œ ์ฝ”๋“œ ๋ชจ๋“ˆ(Intel BG ์‹œ์ž‘ ACM)์„ ์ฐพ์•„ ์บ์‹œ์— ๋กœ๋“œํ•˜๊ณ  ํ™•์ธํ•ฉ๋‹ˆ๋‹ค(CPU์—๋Š” ACM ์„œ๋ช…์„ ํ™•์ธํ•˜๋Š” ๊ณต๊ฐœ ํ‚ค ํ•ด์‹œ๊ฐ€ ์žˆ์Œ์€ ์œ„์—์„œ ์ด๋ฏธ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ) ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ๋ฏฟ์Œ์งํ•œ ์žฅํ™”. ์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ

์ด ์ฝ”๋“œ ๋ชจ๋“ˆ์€ UEFI BIOS์˜ ์ž‘์€ ์‹œ์ž‘ ๋ถ€๋ถ„์ธ IBB(Initial Boot Block)๋ฅผ ํ™•์ธํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋ฉฐ, ์—ฌ๊ธฐ์—๋Š” UEFI BIOS์˜ ์ฃผ์š” ๋ถ€๋ถ„์„ ํ™•์ธํ•˜๋Š” ๊ธฐ๋Šฅ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Intel BG๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด OS๋ฅผ ๋ถ€ํŒ…ํ•˜๊ธฐ ์ „์— BIOS์˜ ์‹ ๋ขฐ์„ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(Secure Boot ๊ธฐ์ˆ ์˜ ๊ฐ๋…ํ•˜์— ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ).

์ธํ…” BG ๊ธฐ์ˆ ์€ ๋‘ ๊ฐ€์ง€ ์ž‘๋™ ๋ชจ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆฌ๊ณ  ํ•˜๋‚˜๋Š” ๋‹ค๋ฅธ ํ•˜๋‚˜๋ฅผ ๋ฐฉํ•ดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์‹œ์Šคํ…œ์—์„œ ๋‘ ๋ชจ๋“œ๋ฅผ ๋ชจ๋‘ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๊ณ  ๋‘˜ ๋‹ค ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).

์‹ ์ค‘ํ•œ ๋ถ€ํŒ…

๊ณ„ํš ๋ถ€ํŒ…(MB) ๋ชจ๋“œ์—์„œ ๊ฐ ๋ถ€ํŒ… ๊ตฌ์„ฑ ์š”์†Œ(CPU ๋ถ€ํŒ… ROM์œผ๋กœ ์‹œ์ž‘)๋Š” TPM(์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ ๋ชจ๋“ˆ)์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ "์ธก์ •"ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ฅด์‹œ๋Š” ๋ถ„๋“ค์„ ์œ„ํ•ด ์„ค๋ช…๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

TPM์—๋Š” ๋‹ค์Œ ๊ณต์‹์— ๋”ฐ๋ผ ํ•ด์‹ฑ ์ž‘์—…์˜ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํ•˜๋Š” PCR(ํ”Œ๋žซํผ ๊ตฌ์„ฑ ๋ ˆ์ง€์Šคํ„ฐ)์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ๋ฏฟ์Œ์งํ•œ ์žฅํ™”. ์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ

์ €๊ฒƒ๋“ค. ํ˜„์žฌ PCR ๊ฐ’์€ ์ด์ „ ๊ฐ’์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋ฉฐ ์ด๋Ÿฌํ•œ ๋ ˆ์ง€์Šคํ„ฐ๋Š” ์‹œ์Šคํ…œ์ด RESET์ผ ๋•Œ๋งŒ ์žฌ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

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

๊ฒ€์ฆ๋œ ๋ถ€ํŒ…

UEFI BIOS ์ˆ˜์ •์„ ์ข‹์•„ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ฐ€์žฅ ๋ฌด์„œ์šด ๊ฒƒ์€ ๊ฐ ๋ถ€ํŒ… ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋‹ค์Œ ๊ตฌ์„ฑ ์š”์†Œ์˜ ๋ฌด๊ฒฐ์„ฑ๊ณผ ์‹ ๋ขฐ์„ฑ์„ ์•”ํ˜ธ๋กœ ํ™•์ธํ•˜๋Š” ๊ฒ€์ฆ ๋ถ€ํŒ…(VB) ๋ชจ๋“œ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฒ€์ฆ ์˜ค๋ฅ˜์˜ ๊ฒฝ์šฐ(๋‹ค์Œ ์ค‘ ํ•˜๋‚˜)๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

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

์ž‘์—… ์„ ํƒ์€ ์ปดํ“จํ„ฐ ํ”Œ๋žซํผ ๊ณต๊ธ‰์—…์ฒด๊ฐ€ ํŠน์ˆ˜ ์„ค๊ณ„๋œ ์Šคํ† ๋ฆฌ์ง€ ์นฉ์…‹ ํ“จ์ฆˆ(FPF)์— ์˜๊ตฌ์ ์œผ๋กœ ๊ธฐ๋กํ•˜๋Š” ์ง€์ •๋œ ์ธํ…” BG ๊ตฌ์„ฑ(์ฆ‰, ์†Œ์œ„ ์‹œํ–‰ ์ •์ฑ…)์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ด ์ ์— ๋Œ€ํ•ด์„œ๋Š” ๋‚˜์ค‘์— ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ์™ธ์—๋„ ๊ณต๊ธ‰์—…์ฒด๋Š” ๋‘ ๊ฐœ์˜ RSA 2048 ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋‘ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆผ ์ฐธ์กฐ).

  1. ์ด ๋งค๋‹ˆํŽ˜์ŠคํŠธ์˜ SVN(๋ณด์•ˆ ๋ฒ„์ „ ๋ฒˆํ˜ธ), ๋‹ค์Œ ๋งค๋‹ˆํŽ˜์ŠคํŠธ ๊ณต๊ฐœ ํ‚ค์˜ SHA256 ํ•ด์‹œ, RSA ๊ณต๊ฐœ ํ‚ค(์ฆ‰, ๊ณต๊ธ‰์—…์ฒด ๋ฃจํŠธ ํ‚ค) ์ด ๋งค๋‹ˆํŽ˜์ŠคํŠธ์˜ ์„œ๋ช…๊ณผ ์„œ๋ช… ์ž์ฒด๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  2. IBB ๋งค๋‹ˆํŽ˜์ŠคํŠธ(IBBM, Initial Boot Block Manifest)๋Š” ์ด ๋งค๋‹ˆํŽ˜์ŠคํŠธ์˜ SVN, IBB์˜ SHA256 ํ•ด์‹œ, ์ด ๋งค๋‹ˆํŽ˜์ŠคํŠธ์˜ ์„œ๋ช…์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ๊ณต๊ฐœ ํ‚ค ๋ฐ ์„œ๋ช… ์ž์ฒด๋ฅผ ๋„ฃ์Šต๋‹ˆ๋‹ค.

OEM ๋ฃจํŠธ ํ‚ค์˜ SHA256 ํ•ด์‹œ๋Š” ์ธํ…” BG ๊ตฌ์„ฑ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์นฉ์…‹ ํ“จ์ฆˆ(FPF)์— ์˜๊ตฌ์ ์œผ๋กœ ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค. ์ธํ…” BG ๊ตฌ์„ฑ์ด ์ด ๊ธฐ์ˆ ์˜ ํฌํ•จ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ์šฐ ์ง€๊ธˆ๋ถ€ํ„ฐ ์ด ์‹œ์Šคํ…œ์—์„œ OEM ๋ฃจํŠธ ํ‚ค์˜ ๊ฐœ์ธ ๋ถ€๋ถ„ ์†Œ์œ ์ž๋งŒ BIOS๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ฆ‰, ์ด๋Ÿฌํ•œ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ๋‹ค์‹œ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Œ). ๊ณต๊ธ‰์—…์ฒด.

์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ๋ฏฟ์Œ์งํ•œ ์žฅํ™”. ์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ

์‚ฌ์ง„์„ ๋ณด๋ฉด ์ด๋ ‡๊ฒŒ ๊ธด ํ™•์ธ ์ฒด์ธ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ์˜์‹ฌ์ด ์ฆ‰์‹œ ๋– ์˜ค๋ฆ…๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์™œ ๋ณต์žกํ•ฉ๋‹ˆ๊นŒ?

์‹ค์ œ๋กœ Intel์€ ๋ฒค๋”์—๊ฒŒ ๋‹ค์–‘ํ•œ ์ œํ’ˆ ๋ผ์ธ์— ๋Œ€ํ•ด ์„œ๋กœ ๋‹ค๋ฅธ IBB ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ํ•˜๋‚˜๋ฅผ ๋ฃจํŠธ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. IBB ํ‚ค์˜ ๊ฐœ์ธ ๋ถ€๋ถ„(๋‘ ๋ฒˆ์งธ ๋งค๋‹ˆํŽ˜์ŠคํŠธ์— ์„œ๋ช…)์ด ์œ ์ถœ๋˜๋ฉด ์‚ฌ๊ณ ๋Š” ๊ณต๊ธ‰์—…์ฒด๊ฐ€ ์ƒˆ ์Œ์„ ์ƒ์„ฑํ•˜๊ณ  ๋‹ค์Œ BIOS ์—…๋ฐ์ดํŠธ์—์„œ ์žฌ๊ณ„์‚ฐ๋œ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ํ™œ์„ฑํ™”ํ•  ๋•Œ๊นŒ์ง€ ํ•œ ์ œํ’ˆ ๋ผ์ธ์—๋งŒ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ฃจํŠธ ํ‚ค๊ฐ€ ์†์ƒ๋œ ๊ฒฝ์šฐ(์ฒซ ๋ฒˆ์งธ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๊ฐ€ ์„œ๋ช…๋œ ๊ฒฝ์šฐ) ์ด๋ฅผ ๋Œ€์ฒดํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ํ•ด์ง€ ์ ˆ์ฐจ๊ฐ€ ์ œ๊ณต๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ํ‚ค์˜ ๊ณต๊ฐœ ๋ถ€๋ถ„ ํ•ด์‹œ๋Š” FPF์— ๋‹จ๋ฒˆ์— ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋ฉ๋‹ˆ๋‹ค.

์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ ๊ตฌ์„ฑ

์ด์ œ Intel BG ๊ตฌ์„ฑ๊ณผ ์ƒ์„ฑ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Intel STK(System Tool Kit)์˜ Flash Image Tool GUI์—์„œ ํ•ด๋‹น ํƒญ์„ ๋ณด๋ฉด Intel BG ๊ตฌ์„ฑ์— ๋ฒค๋” ๋ฃจํŠธ ํ‚ค์˜ ๊ณต๊ฐœ ๋ถ€๋ถ„ ํ•ด์‹œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ’ ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ธํ…” BG ํ”„๋กœํ•„.

์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ๋ฏฟ์Œ์งํ•œ ์žฅํ™”. ์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ

์ด ํ”„๋กœํ•„์˜ ๊ตฌ์กฐ:

typedef struct BG_PROFILE
{
	unsigned long Force_Boot_Guard_ACM : 1;
	unsigned long Verified_Boot : 1;
	unsigned long Measured_Boot : 1;
	unsigned long Protect_BIOS_Environment : 1;
	unsigned long Enforcement_Policy : 2; // 00b โ€“ do nothing
                                              // 01b โ€“ shutdown with timeout
                                              // 11b โ€“ immediate shutdown
	unsigned long : 26;
};

์ผ๋ฐ˜์ ์œผ๋กœ ์ธํ…” BG ๊ตฌ์„ฑ์€ ๋งค์šฐ ์œ ์—ฐํ•œ ์—”ํ„ฐํ‹ฐ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Force_Boot_Guard_ACM ํ”Œ๋ž˜๊ทธ๋ฅผ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค. ์ง€์›Œ์ง„ ๊ฒฝ์šฐ SPI ํ”Œ๋ž˜์‹œ์—์„œ BG ์‹œ์ž‘ ACM ๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์œผ๋ฉด ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€ํŒ…์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ™•์ธ์— ์‹คํŒจํ•˜๋ฉด ๋‹ค์‹œ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ๋‹ค์šด๋กœ๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜๋„๋ก VB ๋ชจ๋“œ์— ๋Œ€ํ•œ ์‹œํ–‰ ์ •์ฑ…์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์œ„์—์„œ ์ด๋ฏธ ์ผ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฐ๊ฑด ํŒ๋งค์ž์—๊ฒŒ ๋งก๊ธฐ๊ณ ...

์œ ํ‹ธ๋ฆฌํ‹ฐ์˜ GUI๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ "์ค€๋น„๋œ" ํ”„๋กœํŒŒ์ผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์•„๋‹ˆ์˜ค.
์ œ๋„
๊ธฐ์ˆ 

0
No_FVME
์ธํ…” BG ๊ธฐ์ˆ  ๋น„ํ™œ์„ฑํ™”๋จ

1
VE
VB ๋ชจ๋“œ ํ™œ์„ฑํ™”, ์‹œ๊ฐ„ ์ดˆ๊ณผ๋กœ ์ข…๋ฃŒ

2
VME
๋‘ ๋ชจ๋“œ ๋ชจ๋‘ ํ™œ์„ฑํ™”(VB ๋ฐ MB), ์‹œ๊ฐ„ ์ดˆ๊ณผ๋กœ ์ข…๋ฃŒ

3
VM
์‹œ์Šคํ…œ์„ ๋„์ง€ ์•Š๊ณ  ๋‘ ๋ชจ๋“œ๊ฐ€ ๋ชจ๋‘ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.

4
FVE
VB ๋ชจ๋“œ ํ™œ์„ฑํ™”, ์ฆ‰์‹œ ์ข…๋ฃŒ

5
FVME
๋‘ ๋ชจ๋“œ ํ™œ์„ฑํ™”, ์ฆ‰์‹œ ์ข…๋ฃŒ

์ด๋ฏธ ์–ธ๊ธ‰ํ•œ ๋ฐ”์™€ ๊ฐ™์ด ์ธํ…” BG ๊ตฌ์„ฑ์€ ์‹œ์Šคํ…œ ๊ณต๊ธ‰์—…์ฒด๊ฐ€ ์นฉ์…‹ ํ“จ์ฆˆ(FPF)์— ํ•œ ๋ฒˆ๋งŒ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์นฉ์…‹ ํ“จ์ฆˆ(FPF)๋Š” ์™ธ๋ถ€์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ์ˆ˜ ์žˆ๋Š” ์นฉ์…‹ ๋‚ด๋ถ€์˜ ์ž‘์€(ํ™•์ธ๋˜์ง€ โ€‹โ€‹์•Š์€ ์ •๋ณด์— ๋”ฐ๋ฅด๋ฉด 256๋ฐ”์ดํŠธ์— ๋ถˆ๊ณผํ•จ) ํ•˜๋“œ์›จ์–ด ์ •๋ณด ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค. ์ธํ…”์˜ ์ƒ์‚ฐ ์‹œ์„ค(๊ทธ๋ž˜์„œ ํ•„๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅ ํ“จ์ฆˆ).

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ๊ตฌ์„ฑ์„ ์ €์žฅํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์ผํšŒ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅ ๋ฐ์ดํ„ฐ ์ €์žฅ ์˜์—ญ(์ธํ…” BG ๊ตฌ์„ฑ์ด ์ž‘์„ฑ๋œ ์œ„์น˜)์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • Intel ME๋งŒ ์ฝ๊ณ  ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํŠน์ • ์‹œ์Šคํ…œ์—์„œ ์ธํ…” BG ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ๊ตฌ์„ฑ์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด ๊ณต๊ธ‰์—…์ฒด๋Š” ์ƒ์‚ฐ ์ค‘์— ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. ํ”Œ๋ž˜์‹œ ์ด๋ฏธ์ง€ ๋„๊ตฌ(Intel STK์—์„œ ์ œ๊ณต)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Intel ME ์˜์—ญ(์†Œ์œ„ FPF์šฉ ์ž„์‹œ ๋ฏธ๋Ÿฌ) ๋‚ด ๋ณ€์ˆ˜๋กœ ์ง€์ •๋œ Intel BG ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŽŒ์›จ์–ด ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  2. ํ”Œ๋ž˜์‹œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋„๊ตฌ(Intel STK์˜)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์ด๋ฏธ์ง€๋ฅผ ์‹œ์Šคํ…œ์˜ SPI ํ”Œ๋ž˜์‹œ ๋ฉ”๋ชจ๋ฆฌ์— ์“ฐ๊ณ  ์†Œ์œ„ ๋‹ซ์Šต๋‹ˆ๋‹ค. ์ œ์กฐ ๋ชจ๋“œ(์ด ๊ฒฝ์šฐ ํ•ด๋‹น ๋ช…๋ น์ด Intel ME๋กœ ์ „์†ก๋จ).

์ด๋Ÿฌํ•œ ์ž‘์—…์˜ ๊ฒฐ๊ณผ๋กœ Intel ME๋Š” ME ์˜์—ญ์˜ FPF์— ๋Œ€ํ•œ ๋ฏธ๋Ÿฌ์—์„œ ์ฃผ์–ด์ง„ ๊ฐ’์„ FPF์— ์ปค๋ฐ‹ํ•˜๊ณ  SPI ํ”Œ๋ž˜์‹œ ๋””์Šคํฌ๋ฆฝํ„ฐ์˜ ๊ถŒํ•œ์„ Intel์—์„œ ๊ถŒ์žฅํ•˜๋Š” ๊ฐ’์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค(์ฒ˜์Œ์— ์„ค๋ช…๋จ). ๊ธฐ์‚ฌ) ์‹œ์Šคํ…œ RESET์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ ๊ตฌํ˜„ ๋ถ„์„

ํŠน์ • ์˜ˆ์—์„œ ์ด ๊ธฐ์ˆ ์˜ ๊ตฌํ˜„์„ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ์‹œ์Šคํ…œ์—์„œ Intel BG ๊ธฐ์ˆ ์˜ ํ”์ ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฒด๊ณ„
์ฃผ์˜

๊ธฐ๊ฐ€ ๋ฐ”์ดํŠธ GA-H170-D3H
Skylake, ์ง€์›์ด ์žˆ์Šต๋‹ˆ๋‹ค

๊ธฐ๊ฐ€๋ฐ”์ดํŠธ GA-Q170-D3H
Skylake, ์ง€์›์ด ์žˆ์Šต๋‹ˆ๋‹ค

๊ธฐ๊ฐ€๋ฐ”์ดํŠธ GA-B150-HD3
Skylake, ์ง€์›์ด ์žˆ์Šต๋‹ˆ๋‹ค

MSI H170A ๊ฒŒ์ด๋ฐ ํ”„๋กœ
์Šค์นด์ด๋ ˆ์ดํฌ, ์ง€์› ์•ˆํ•จ

Lenovo ThinkPad 460
Skylake, ์ง€์› ๊ฐ€๋Šฅ, ๊ธฐ์ˆ  ์ง€์›

๋ ˆ๋…ธ๋ฒ„ ์š”๊ฐ€ 2 ํ”„๋กœ
ํ•˜์Šค์›ฐ, ์ง€์›ํ•˜์ง€ ์•Š์Œ

๋ ˆ๋…ธ๋ฒ„ U330p
ํ•˜์Šค์›ฐ, ์ง€์›ํ•˜์ง€ ์•Š์Œ

"์ง€์›"์€ ์ธํ…” BG ์‹œ์ž‘ ACM ๋ชจ๋“ˆ, ์œ„์— ์–ธ๊ธ‰๋œ ๋งค๋‹ˆํŽ˜์ŠคํŠธ ๋ฐ BIOS์˜ ํ•ด๋‹น ์ฝ”๋“œ, ์ฆ‰ ๋ถ„์„์„ ์œ„ํ•œ ๊ตฌํ˜„.

์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ๋ฌด์‹ค์—์„œ ๋‹ค์šด๋กœ๋“œํ•œ ๊ฒƒ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Gigabyte GA-H170-D3H(๋ฒ„์ „ F4)์šฉ SPI ํ”Œ๋ž˜์‹œ ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ณต๊ธ‰์—…์ฒด ์‚ฌ์ดํŠธ ์ด๋ฏธ์ง€.

์ธํ…” CPU ๋ถ€ํŒ… ROM

๋จผ์ € Intel BG ๊ธฐ์ˆ ์ด ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ํ”„๋กœ์„ธ์„œ์˜ ๋™์ž‘์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ•ด๋…๋œ ๋งˆ์ดํฌ๋กœ์ฝ”๋“œ์˜ ์ƒ˜ํ”Œ์„ ์ฐพ์„ ์ˆ˜ ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜์— ์„ค๋ช…๋œ ์กฐ์น˜๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋˜๋Š”์ง€(๋งˆ์ดํฌ๋กœ์ฝ”๋“œ ๋˜๋Š” ํ•˜๋“œ์›จ์–ด์—์„œ) ๊ณต๊ฐœ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ตœ์‹  Intel ํ”„๋กœ์„ธ์„œ๊ฐ€ ์ด๋Ÿฌํ•œ ์ž‘์—…์„ "์ˆ˜ํ–‰"ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์€ ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค.

RESET ์ƒํƒœ๋ฅผ ์ข…๋ฃŒํ•œ ํ›„ ํ”„๋กœ์„ธ์„œ(ํ”Œ๋ž˜์‹œ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋‚ด์šฉ์ด ์ด๋ฏธ ๋งคํ•‘๋œ ์ฃผ์†Œ ๊ณต๊ฐ„)๋Š” FIT(ํŽŒ์›จ์–ด ์ธํ„ฐํŽ˜์ด์Šค ํ…Œ์ด๋ธ”)๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ํฌ์ธํ„ฐ๋Š” FFFF FFC0h ์ฃผ์†Œ์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.

์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ๋ฏฟ์Œ์งํ•œ ์žฅํ™”. ์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ
์ด ์˜ˆ์—์„œ ์ด ์ฃผ์†Œ์—๋Š” ๊ฐ’ FFD6 9500h๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ฃผ์†Œ๋กœ ์ „ํ™˜ํ•˜๋ฉด ํ”„๋กœ์„ธ์„œ๋Š” ๋‚ด์šฉ์ด ๋ ˆ์ฝ”๋“œ๋กœ ๊ตฌ๋ถ„๋˜๋Š” FIT ํ…Œ์ด๋ธ”์„ ๋ด…๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ํ•ญ๋ชฉ์€ ๋‹ค์Œ ๊ตฌ์กฐ์˜ ์ œ๋ชฉ์ž…๋‹ˆ๋‹ค.

typedef struct FIT_HEADER
{
	char           Tag[8];     // โ€˜_FIT_   โ€™
	unsigned long  NumEntries; // including FIT header entry
	unsigned short Version;    // 1.0
	unsigned char  EntryType;  // 0
	unsigned char  Checksum;
};

์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ๋ฏฟ์Œ์งํ•œ ์žฅํ™”. ์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ
๋ช‡ ๊ฐ€์ง€ ์•Œ ์ˆ˜ ์—†๋Š” ์ด์œ ๋กœ ์ด๋Ÿฌํ•œ ํ…Œ์ด๋ธ”์—์„œ ์ฒดํฌ์„ฌ์ด ํ•ญ์ƒ ๊ณ„์‚ฐ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค(ํ•„๋“œ๋Š” null๋กœ ๋‚จ์Œ).

๋‚˜๋จธ์ง€ ํ•ญ๋ชฉ์€ BIOS๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „์— ๊ตฌ๋ฌธ ๋ถ„์„/์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค. ๋ ˆ๊ฑฐ์‹œ RESET ๋ฒกํ„ฐ(FFFF FFF0h)๋กœ ์ „ํ™˜ํ•˜๊ธฐ ์ „. ์ด๋Ÿฌํ•œ ๊ฐ ํ•ญ๋ชฉ์˜ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

typedef struct FIT_ENTRY
{
	unsigned long  BaseAddress;
	unsigned long  : 32;
	unsigned long  Size;
	unsigned short Version;     // 1.0
	unsigned char  EntryType;
	unsigned char  Checksum;
};

์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ๋ฏฟ์Œ์งํ•œ ์žฅํ™”. ์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ
EntryType ํ•„๋“œ๋Š” ์ด ํ•ญ๋ชฉ์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ธ”๋ก ์œ ํ˜•์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ช‡ ๊ฐ€์ง€ ์œ ํ˜•์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

enum FIT_ENTRY_TYPES
{
	FIT_HEADER = 0,
	MICROCODE_UPDATE,
	BG_ACM,
	BIOS_INIT = 7,
	TPM_POLICY,
	BIOS_POLICY,
	TXT_POLICY,
	BG_KEYM,
	BG_IBBM
};

์ด์ œ ํ•ญ๋ชฉ ์ค‘ ํ•˜๋‚˜๊ฐ€ Intel BG ์‹œ์ž‘ ACM ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ ์œ„์น˜๋ฅผ โ€‹โ€‹๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ ํ—ค๋” ๊ตฌ์กฐ๋Š” ์ธํ…”์—์„œ ๊ฐœ๋ฐœํ•œ ์ฝ”๋“œ ๋ชจ๋“ˆ(ACM, ๋งˆ์ดํฌ๋กœ์ฝ”๋“œ ์—…๋ฐ์ดํŠธ, ์ธํ…” ME ์ฝ”๋“œ ์„น์…˜ ๋“ฑ)์— ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค.

typedef struct BG_ACM_HEADER
{
	unsigned short ModuleType;     // 2
	unsigned short ModuleSubType;  // 3
	unsigned long  HeaderLength;   // in dwords
	unsigned long  : 32;
	unsigned long  : 32;
	unsigned long  ModuleVendor;   // 8086h
	unsigned long  Date;           // in BCD format
	unsigned long  TotalSize;      // in dwords
	unsigned long  unknown1[6];
	unsigned long  EntryPoint;
	unsigned long  unknown2[16];
	unsigned long  RsaKeySize;     // in dwords
	unsigned long  ScratchSize;    // in dwords
	unsigned char  RsaPubMod[256];
	unsigned long  RsaPubExp;
	unsigned char  RsaSig[256];
};

์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ๋ฏฟ์Œ์งํ•œ ์žฅํ™”. ์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ
ํ”„๋กœ์„ธ์„œ๋Š” ์ด ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์บ์‹œ์— ๋กœ๋“œํ•˜๊ณ  ํ™•์ธํ•˜๊ณ  ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ธํ…” BG ์Šคํƒ€ํŠธ์—… ACM

์ด ACM์˜ ์ž‘์—…์„ ๋ถ„์„ํ•œ ๊ฒฐ๊ณผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

  • ์ธํ…” ME์—์„œ ์นฉ์…‹ ํ“จ์ฆˆ(FPF)์— ๊ธฐ๋ก๋œ ์ธํ…” BG ๊ตฌ์„ฑ์„ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.
  • KEYM ๋ฐ IBBM ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ์ฐพ์•„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ACM์€ ์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์˜ ํ•ญ๋ชฉ์ด ์žˆ๋Š” FIT ํ…Œ์ด๋ธ”๋„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(์œ„์˜ FIT_ENTRY_TYPES ์ฐธ์กฐ).

์„ ์–ธ๋ฌธ์„ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋งค๋‹ˆํŽ˜์ŠคํŠธ์˜ ๊ตฌ์กฐ์—๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ชจํ˜ธํ•œ ์ƒ์ˆ˜, ๋‘ ๋ฒˆ์งธ ๋งค๋‹ˆํŽ˜์ŠคํŠธ์˜ ๊ณต๊ฐœ ํ‚ค ํ•ด์‹œ ๋ฐ ์ค‘์ฒฉ๋œ ๊ตฌ์กฐ๋กœ ์„œ๋ช…๋œ ๊ณต๊ฐœ OEM ๋ฃจํŠธ ํ‚ค๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

typedef struct KEY_MANIFEST
{
	char           Tag[8];          // โ€˜__KEYM__โ€™
	unsigned char  : 8;             // 10h
	unsigned char  : 8;             // 10h
	unsigned char  : 8;             // 0
	unsigned char  : 8;             // 1
	unsigned short : 16;            // 0Bh
	unsigned short : 16;            // 20h == hash size?
	unsigned char  IbbmKeyHash[32]; // SHA256 of an IBBM public key
	BG_RSA_ENTRY   OemRootKey;
};

typedef struct BG_RSA_ENTRY
{
	unsigned char  : 8;             // 10h
	unsigned short : 16;            // 1
	unsigned char  : 8;             // 10h
	unsigned short RsaPubKeySize;   // 800h
	unsigned long  RsaPubExp;
	unsigned char  RsaPubKey[256];
	unsigned short : 16;            // 14
	unsigned char  : 8;             // 10h
	unsigned short RsaSigSize;      // 800h
	unsigned short : 16;            // 0Bh
	unsigned char  RsaSig[256];
};

์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ๋ฏฟ์Œ์งํ•œ ์žฅํ™”. ์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ
OEM ๋ฃจํŠธ ํ‚ค์˜ ๊ณต๊ฐœ ํ‚ค๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํ˜„์žฌ Intel ME์—์„œ ์ด๋ฏธ ์ˆ˜์‹ ํ•œ ํ“จ์ฆˆ์˜ SHA256 ํ•ด์‹œ๊ฐ€ ์‚ฌ์šฉ๋˜์—ˆ์Œ์„ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ์„ ์–ธ๋ฌธ์œผ๋กœ ๋„˜์–ด ๊ฐ‘์‹œ๋‹ค. ์„ธ ๊ฐ€์ง€ ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

typedef struct IBB_MANIFEST
{
	ACBP Acbp;         // Boot policies
	IBBS Ibbs;         // IBB description
	IBB_DESCRIPTORS[];
	PMSG Pmsg;         // IBBM signature
};

์ฒซ ๋ฒˆ์งธ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ƒ์ˆ˜๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

typedef struct ACBP
{
	char           Tag[8];          // โ€˜__ACBP__โ€™
	unsigned char  : 8;             // 10h
	unsigned char  : 8;             // 1
	unsigned char  : 8;             // 10h
	unsigned char  : 8;             // 0
	unsigned short : 16;            // x & F0h = 0
	unsigned short : 16;            // 0 < x <= 400h
};

๋‘ ๋ฒˆ์งธ๋Š” IBB์˜ SHA256 ํ•ด์‹œ์™€ IBB์˜ ๋‚ด์šฉ(์ฆ‰, ํ•ด์‹œ๊ฐ€ ๊ณ„์‚ฐ๋˜๋Š” ๋Œ€์ƒ)์„ ์„ค๋ช…ํ•˜๋Š” ์„ค๋ช…์ž์˜ ์ˆ˜๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

typedef struct IBBS
{
	char           Tag[8];            // โ€˜__IBBS__โ€™
	unsigned char  : 8;               // 10h
	unsigned char  : 8;               // 0
	unsigned char  : 8;               // 0
	unsigned char  : 8;               // x <= 0Fh
	unsigned long  : 32;              // x & FFFFFFF8h = 0
	unsigned long  Unknown[20];
	unsigned short : 16;              // 0Bh
	unsigned short : 16;              // 20h == hash size ?
	unsigned char  IbbHash[32];       // SHA256 of an IBB
	unsigned char  NumIbbDescriptors;
};

IBB ๋””์Šคํฌ๋ฆฝํ„ฐ๋Š” ์ฐจ๋ก€๋กœ ์ด ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์ฝ˜ํ…์ธ ์˜ ํ˜•์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

typedef struct IBB_DESCRIPTOR
{
	unsigned long  : 32;
	unsigned long  BaseAddress;
	unsigned long  Size;
};

๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์„ค๋ช…์ž๋Š” IBB ์ฒญํฌ์˜ ์ฃผ์†Œ/ํฌ๊ธฐ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ๋””์Šคํฌ๋ฆฝํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ธ”๋ก์˜ ์—ฐ๊ฒฐ(๋””์Šคํฌ๋ฆฝํ„ฐ ์ž์ฒด ์ˆœ์„œ๋Œ€๋กœ)์€ IBB์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ IBB๋Š” SEC ๋ฐ PEI ๋‹จ๊ณ„์˜ ๋ชจ๋“  ๋ชจ๋“ˆ ์กฐํ•ฉ์ž…๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋Š” IBB ๊ณต๊ฐœ ํ‚ค(์ฒซ ๋ฒˆ์งธ ๋งค๋‹ˆํŽ˜์ŠคํŠธ์˜ SHA256 ํ•ด์‹œ๋กœ ํ™•์ธ๋จ)์™€ ์ด ๋งค๋‹ˆํŽ˜์ŠคํŠธ์˜ ์„œ๋ช…์„ ํฌํ•จํ•˜๋Š” ๊ตฌ์กฐ๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค.

typedef struct PMSG
{
	char           Tag[8];            // โ€˜__PMSG__โ€™
	unsigned char  : 8;               // 10h
	BG_RSA_ENTRY   IbbKey;
};

์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ๋ฏฟ์Œ์งํ•œ ์žฅํ™”. ์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ
๋”ฐ๋ผ์„œ UEFI BIOS ์‹คํ–‰์ด ์‹œ์ž‘๋˜๊ธฐ ์ „์—๋„ ํ”„๋กœ์„ธ์„œ๋Š” ACM์„ ์‹œ์ž‘ํ•˜์—ฌ SEC ๋ฐ PEI ๋‹จ๊ณ„ ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” ์„น์…˜ ๋‚ด์šฉ์˜ ์ง„์œ„๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ ํ”„๋กœ์„ธ์„œ๋Š” ACM์„ ์ข…๋ฃŒํ•˜๊ณ  RESET ๋ฒกํ„ฐ๋ฅผ ๋”ฐ๋ผ ์ด๋™ํ•˜๋ฉฐ BIOS ์‹คํ–‰์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

PEI ํ™•์ธ ํŒŒํ‹ฐ์…˜์—๋Š” ๋‚˜๋จธ์ง€ BIOS(DXE ์ฝ”๋“œ)๋ฅผ ๊ฒ€์‚ฌํ•  ๋ชจ๋“ˆ์ด ํฌํ•จ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“ˆ์€ IBV(Independent BIOS Vendor) ๋˜๋Š” ์‹œ์Šคํ…œ ๊ณต๊ธ‰์—…์ฒด ์ž์ฒด์—์„œ ์ด๋ฏธ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด Lenovo ๋ฐ Gigabyte ์‹œ์Šคํ…œ๋งŒ ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  Intel BG๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‹œ์Šคํ…œ์—์„œ ์ถ”์ถœ๋œ ์ฝ”๋“œ๋ฅผ ๊ณ ๋ คํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

UEFI BIOS ๋ชจ๋“ˆ LenovoVerifiedBootPei

๋ ˆ๋…ธ๋ฒ„์˜ ๊ฒฝ์šฐ ๋ ˆ๋…ธ๋ฒ„์—์„œ ๊ฐœ๋ฐœํ•œ LenovoVerifiedBootPei {B9F2AC77-54C7-4075-B42E-C36325A9468D} ๋ชจ๋“ˆ๋กœ ๋ฐํ˜€์กŒ๋‹ค.

์ž‘์—…์€ DXE์˜ ํ•ด์‹œ ํ…Œ์ด๋ธ”์„ GUID๋กœ ์กฐํšŒํ•˜๊ณ  DXE๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

if (EFI_PEI_SERVICES->GetBootMode() != BOOT_ON_S3_RESUME)
{
	if (!FindHashTable())
		return EFI_NOT_FOUND;
	if (!VerifyDxe())
		return EFI_SECURITY_VIOLATION;
}

ะฅะตัˆ ั‚ะฐะฑะปะธั†ะฐ {389CC6F2-1EA8-467B-AB8A-78E769AE2A15} ะธะผะตะตั‚ ัะปะตะดัƒัŽั‰ะธะน ั„ะพั€ะผะฐั‚:

typedef struct HASH_TABLE
{
	char          Tag[8];            // โ€˜$HASHTBLโ€™
	unsigned long NumDxeDescriptors;
	DXE_DESCRIPTORS[];
};

typedef struct DXE_DESCRIPTOR
{
	unsigned char BlockHash[32];     // SHA256
	unsigned long Offset;
	unsigned long Size;
};

UEFI BIOS ๋ชจ๋“ˆ BootGuardPei

Gigabyte์˜ ๊ฒฝ์šฐ AMI์—์„œ ๊ฐœ๋ฐœํ•œ BootGuardPei {B41956E1-7CA2-42DB-9562-168389F0F066} ๋ชจ๋“ˆ๋กœ ๋ฐํ˜€์กŒ์œผ๋ฏ€๋กœ Intel BG๋ฅผ ์ง€์›ํ•˜๋Š” ๋ชจ๋“  AMI BIOS์— ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

์ž‘๋™ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹ค์†Œ ๋‹ค๋ฅด์ง€๋งŒ ๊ฒฐ๊ตญ์—๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

int bootMode = EFI_PEI_SERVICES->GetBootMode();

if (bootMode != BOOT_ON_S3_RESUME &&
    bootMode != BOOT_ON_FLASH_UPDATE &&
    bootMode != BOOT_IN_RECOVERY_MODE)
{
	HOB* h = CreateHob();
	if (!FindHashTable())
		return EFI_NOT_FOUND;
	WriteHob(&h, VerifyDxe());
	return h;
}

์กฐํšŒํ•˜๋Š” ํ•ด์‹œ ํ…Œ์ด๋ธ” {389CC6F2-1EA8-467B-AB8A-78E769AE2A15}์˜ ํ˜•์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

typedef HASH_TABLE DXE_DESCRIPTORS[];

typedef struct DXE_DESCRIPTOR
{
	unsigned char BlockHash[32];     // SHA256
	unsigned long BaseAddress;
	unsigned long Size;
};

์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ 2.x

Apollo Lake ๋งˆ์ดํฌ๋กœ์•„ํ‚คํ…์ฒ˜๊ฐ€ ํฌํ•จ๋œ Intel SoC ๊ธฐ๋ฐ˜ ์ตœ์‹  ์‹œ์Šคํ…œ์ธ ASRock J4205-IT์—์„œ ๋ฐœ๊ฒฌ๋œ Intel Boot Guard์˜ ๋˜ ๋‹ค๋ฅธ ๊ตฌํ˜„์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ์ด์•ผ๊ธฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ๋ฒ„์ „์€ SoC์—์„œ๋งŒ ์‚ฌ์šฉ๋˜์ง€๋งŒ(Kaby Lake ํ”„๋กœ์„ธ์„œ ๋งˆ์ดํฌ๋กœ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์žˆ๋Š” ์ƒˆ๋กœ์šด ์‹œ์Šคํ…œ์€ Intel Boot Guard 1.x๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•จ) Intel SoC๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ํ”Œ๋žซํผ์„ ์œ„ํ•œ ์ƒˆ๋กœ์šด ์•„ํ‚คํ…์ฒ˜ ์˜ต์…˜์„ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐ ํฐ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • BIOS ๋ฐ Intel ME ์˜์—ญ(๋˜๋Š” Intel SoC ์šฉ์–ด์— ๋”ฐ๋ฅด๋ฉด Intel TXE)์€ ์ด์ œ ํ•˜๋‚˜์˜ IFWI ์˜์—ญ์ž…๋‹ˆ๋‹ค.
  • ์ธํ…” BG๊ฐ€ ํ”Œ๋žซํผ์—์„œ ํ™œ์„ฑํ™”๋˜์—ˆ์ง€๋งŒ FIT, KEYM, IBBM๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋Š” ํ”Œ๋ž˜์‹œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
  • TXE ๋ฐ ISH ์ฝ”์–ด(x86) ์™ธ์—๋„ ์ „์› ํ•˜์œ„ ์‹œ์Šคํ…œ์˜ ์ž‘๋™ ๊ฐ€๋Šฅ์„ฑ ๋ฐ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ๊ด€๋ จ๋œ ์„ธ ๋ฒˆ์งธ ์ฝ”์–ด(๋‹ค์‹œ ARC)๊ฐ€ ์นฉ์…‹์ธ PMC(Power Management Controller)์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ๋ฏฟ์Œ์งํ•œ ์žฅํ™”. ์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ
์ƒˆ๋กœ์šด IFWI ์˜์—ญ์˜ ๋‚ด์šฉ์€ ๋‹ค์Œ ๋ชจ๋“ˆ ์„ธํŠธ์ž…๋‹ˆ๋‹ค.

ํŽธ๊ฒฌ
์ด๋ฆ„
๊ธฐ์ˆ 

0000 2000h
SMIP
๋ฒค๋”๊ฐ€ ์„œ๋ช…ํ•œ ์ผ๋ถ€ ํ”Œ๋žซํผ ๊ตฌ์„ฑ

0000 6000h
RBEP
์ธํ…”์—์„œ ์„œ๋ช…ํ•œ ์ธํ…” TXE ํŽŒ์›จ์–ด ์ฝ”๋“œ ์„น์…˜, x86

0001 0000h
PMCP
ํŽŒ์›จ์–ด ์ฝ”๋“œ ์„น์…˜ ์ธํ…” PMC, ARC, ์ธํ…” ์„œ๋ช…

0002 0000h
FTPR
์ธํ…”์—์„œ ์„œ๋ช…ํ•œ ์ธํ…” TXE ํŽŒ์›จ์–ด ์ฝ”๋“œ ์„น์…˜, x86

0007B000h
์œ ์ฝ”๋“œ
Intel์ด ์„œ๋ช…ํ•œ CPU ๋งˆ์ดํฌ๋กœ์ฝ”๋“œ ์—…๋ฐ์ดํŠธ

0008 0000h
IBBP
UEFI BIOS, SEC/PEI ๋‹จ๊ณ„, x86, ๊ณต๊ธ‰์—…์ฒด ์„œ๋ช…

0021 8000h
ISHC
๊ณต๊ธ‰์—…์ฒด๊ฐ€ ์„œ๋ช…ํ•œ ์ธํ…” ISH ํŽŒ์›จ์–ด x86์˜ ์ฝ”๋“œ ์„น์…˜

0025 8000h
FTP
์ธํ…”์—์„œ ์„œ๋ช…ํ•œ ์ธํ…” TXE ํŽŒ์›จ์–ด ์ฝ”๋“œ ์„น์…˜, x86

0036 1000h
IUNP
์•Œ ์ˆ˜์—†๋Š”

0038 1000h
OBBP
UEFI BIOS, DXE ๋‹จ๊ณ„, x86, ์„œ๋ช…๋˜์ง€ ์•Š์Œ

TXE ํŽŒ์›จ์–ด๋ฅผ ๋ถ„์„ํ•˜๋Š” ๋™์•ˆ RESET ํ›„ TXE๊ฐ€ CPU ์ฃผ์†Œ ๊ณต๊ฐ„์˜ ๊ธฐ๋ณธ ๋‚ด์šฉ(FIT, ACM, RESET ๋ฒกํ„ฐ ...)์„ ์ค€๋น„ํ•  ๋•Œ๊นŒ์ง€ ํ”„๋กœ์„ธ์„œ๋ฅผ ์ด ์ƒํƒœ๋กœ ์œ ์ง€ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ TXE๋Š” ์ด ๋ฐ์ดํ„ฐ๋ฅผ SRAM์— ์ €์žฅํ•œ ํ›„ ์ผ์‹œ์ ์œผ๋กœ ํ”„๋กœ์„ธ์„œ์— ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์ œ๊ณตํ•˜๊ณ  RESET์—์„œ "ํ•ด์ œ"ํ•ฉ๋‹ˆ๋‹ค.

๋ฃจํŠธํ‚ท ๋ณดํ˜ธ

์ž, ์ด์ œ "๋œจ๊ฑฐ์šด"์œผ๋กœ ๋„˜์–ด ๊ฐ‘์‹œ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ•œ๋•Œ ๋งŽ์€ ์‹œ์Šคํ…œ์—์„œ SPI ํ”Œ๋ž˜์‹œ ๋””์Šคํฌ๋ฆฝํ„ฐ๊ฐ€ SPI ํ”Œ๋ž˜์‹œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์˜์—ญ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ์ด ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ๋ชจ๋“  ์˜์—ญ์„ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €๊ฒƒ๋“ค. ์•ˆ ๋ผ์š”.

MEinfo ์œ ํ‹ธ๋ฆฌํ‹ฐ(Intel STK์—์„œ ์ œ๊ณต)๋กœ ํ™•์ธํ•œ ํ›„ ์ด๋Ÿฌํ•œ ์‹œ์Šคํ…œ์˜ ์ œ์กฐ ๋ชจ๋“œ๊ฐ€ ๋‹ซํžˆ์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์นฉ์…‹ ํ“จ์ฆˆ(FPF)๊ฐ€ ๋ถˆํ™•์‹คํ•œ ์ƒํƒœ๋กœ ๋‚จ์•„ ์žˆ์Œ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ, ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ์ธํ…” BG๋Š” ํ™œ์„ฑํ™”๋˜๊ฑฐ๋‚˜ ๋น„ํ™œ์„ฑํ™”๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋‹ค์Œ ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(Intel BG ๋ฐ ์ด ๊ธฐ์‚ฌ์˜ ๋’ท๋ถ€๋ถ„์—์„œ ์„ค๋ช…ํ•  ๋‚ด์šฉ๊ณผ ๊ด€๋ จํ•˜์—ฌ Haswell ํ”„๋กœ์„ธ์„œ ๋งˆ์ดํฌ๋กœ์•„ํ‚คํ…์ฒ˜ ์ด์ƒ์ด ์žˆ๋Š” ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค).

  • ๋ชจ๋“  ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ ์ œํ’ˆ
  • ๋ชจ๋“  MSI ์ œํ’ˆ;
  • 21๊ฐœ์˜ Lenovo ๋…ธํŠธ๋ถ ๋ชจ๋ธ ๋ฐ 4๊ฐœ์˜ Lenovo ์„œ๋ฒ„ ๋ชจ๋ธ.

๋ฌผ๋ก  ์ธํ…”์€ ๋ฌผ๋ก  ์ด๋Ÿฌํ•œ ๊ณต๊ธ‰์—…์ฒด์—๋„ ๋ฐœ๊ฒฌ ์‚ฌ์‹ค์„ ๋ณด๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์—์„œ๋งŒ ์ ์ ˆํ•œ ์‘๋‹ต ๋ ˆ๋…ธ๋ฒ„๋ฌธ์ œ๋ฅผ ์ธ์ •ํ•œ ์‚ฌ๋žŒ๊ณผ ํŒจ์น˜๋ฅผ ๋ฐœํ‘œํ–ˆ๋‹ค.

๊ธฐ๊ฐ€ ๋ฐ”์ดํŠธ ๊ทธ๋“ค์€ ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ฐ›์•„๋“ค์ธ ๊ฒƒ์œผ๋กœ ๋ณด์ด์ง€๋งŒ ์–ด๋– ํ•œ ๋ฐฉ์‹์œผ๋กœ๋„ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

ํ†ต์‹  MSI (์•”ํ˜ธํ™” ๋œ ๋ณด์•ˆ ๊ถŒ๊ณ ๋ฅผ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด) ๊ณต๊ฐœ PGP ํ‚ค๋ฅผ ๋ณด๋‚ด ๋‹ฌ๋ผ๋Š” ์š”์ฒญ์— ๋”ฐ๋ผ ์™„์ „ํžˆ ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ "ํ•˜๋“œ์›จ์–ด ์ œ์กฐ์—…์ฒด์ด๋ฉฐ PGP ํ‚ค๋ฅผ ์ œ์กฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."๋ผ๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋” ์ค‘์š”ํ•œ ์ ์ž…๋‹ˆ๋‹ค. ํ“จ์ฆˆ๋Š” ์ •์˜๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ๋‚จ์•„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž(๋˜๋Š” ๊ณต๊ฒฉ์ž)๊ฐ€ ์ง์ ‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๊ฐ€์žฅ ์–ด๋ ค์šด ๊ฒƒ์€ ์ธํ…” STK ์ฐพ๊ธฐ). ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ ๋‹จ๊ณ„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

1. Windows OS๋กœ ๋ถ€ํŒ…ํ•ฉ๋‹ˆ๋‹ค(์›ํ•˜๋Š” OS์— ๋Œ€ํ•œ Intel STK์˜ ์•„๋‚ ๋กœ๊ทธ๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒฝ์šฐ ์ผ๋ฐ˜์ ์œผ๋กœ ์•„๋ž˜ ์„ค๋ช…๋œ ๋‹จ๊ณ„๋Š” Linux์—์„œ๋„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ). MEinfo ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์‹œ์Šคํ…œ์˜ ํ“จ์ฆˆ๊ฐ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ๋ฏฟ์Œ์งํ•œ ์žฅํ™”. ์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ
2. ํ”Œ๋ž˜์‹œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”Œ๋ž˜์‹œ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋‚ด์šฉ์„ ์ฝ์œผ์‹ญ์‹œ์˜ค.

์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ๋ฏฟ์Œ์งํ•œ ์žฅํ™”. ์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ
3. UEFI BIOS ํŽธ์ง‘ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ๊ธฐ ์ด๋ฏธ์ง€๋ฅผ ์—ด๊ณ  ํ•„์š”ํ•œ ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ•˜๊ณ (์˜ˆ: ๋ฃจํŠธํ‚ท ๊ตฌํ˜„) ME ์˜์—ญ์—์„œ ๊ธฐ์กด KEYM ๋ฐ IBBM ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑ/ํŽธ์ง‘ํ•ฉ๋‹ˆ๋‹ค.

์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ๋ฏฟ์Œ์งํ•œ ์žฅํ™”. ์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ
์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ๋ฏฟ์Œ์งํ•œ ์žฅํ™”. ์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ
RSA ํ‚ค์˜ ๊ณต๊ฐœ ๋ถ€๋ถ„์€ ๊ทธ๋ฆผ์—์„œ ๊ฐ•์กฐ ํ‘œ์‹œ๋˜์–ด ์žˆ์œผ๋ฉฐ ํ•ด์‹œ๋Š” ์ธํ…” BG ๊ตฌ์„ฑ์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„๊ณผ ํ•จ๊ป˜ ์นฉ์…‹ ํ“จ์ฆˆ์— ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋ฉ๋‹ˆ๋‹ค.

4. Flash Image Tool์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ ํŽŒ์›จ์–ด ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค(์ธํ…” BG ๊ตฌ์„ฑ ์„ค์ •).

์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ๋ฏฟ์Œ์งํ•œ ์žฅํ™”. ์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ
5. ํ”Œ๋ž˜์‹œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”Œ๋ž˜์‹œ์— ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ์ž‘์„ฑํ•˜๊ณ , ME ์˜์—ญ์— ์ด์ œ Intel BG ๊ตฌ์„ฑ์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ MEinfo๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ๋ฏฟ์Œ์งํ•œ ์žฅํ™”. ์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ
6. Flash ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ œ์กฐ ๋ชจ๋“œ๋ฅผ ๋‹ซ์Šต๋‹ˆ๋‹ค.

์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ๋ฏฟ์Œ์งํ•œ ์žฅํ™”. ์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ
7. ์‹œ์Šคํ…œ์ด ์žฌ๋ถ€ํŒ…๋œ ํ›„ MEinfo๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด์ œ FPF๊ฐ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ๋ฏฟ์Œ์งํ•œ ์žฅํ™”. ์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ
์ด๋Ÿฌํ•œ ์กฐ์น˜ ์˜์›ํžˆ ์ด ์‹œ์Šคํ…œ์—์„œ ์ธํ…” BG๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—…์„ ์‹คํ–‰ ์ทจ์†Œํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋‹ค์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฃจํŠธ ํ‚ค์˜ ๊ฐœ์ธ ๋ถ€๋ถ„ ์†Œ์œ ์ž(์ฆ‰, ์ธํ…” BG๋ฅผ ํ™œ์„ฑํ™”ํ•œ ์†Œ์œ ์ž)๋งŒ ์ด ์‹œ์Šคํ…œ์—์„œ UEFI BIOS๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›๋ž˜ ํŽŒ์›จ์–ด๋ฅผ ์ด ์‹œ์Šคํ…œ์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋ฉด ์ผœ์ง€์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค(ํ™•์ธ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ์‹œํ–‰ ์ •์ฑ…์˜ ๊ฒฐ๊ณผ).
  • ์ด๋Ÿฌํ•œ UEFI BIOS๋ฅผ ์ œ๊ฑฐํ•˜๋ ค๋ฉด ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋œ FPF๊ฐ€ ์žˆ๋Š” ์นฉ์…‹์„ "๊นจ๋—ํ•œ" ๊ฒƒ์œผ๋กœ ๊ต์ฒดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ์ž๋™์ฐจ ๊ฐ€๊ฒฉ์œผ๋กœ ์ ์™ธ์„  ๋‚ฉ๋•œ ์Šคํ…Œ์ด์…˜์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ์นฉ์…‹์„ ๋‹ค์‹œ ๋‚ฉ๋•œํ•˜๊ฑฐ๋‚˜ ๋งˆ๋”๋ณด๋“œ๋งŒ ๊ต์ฒด). ).

๊ทธ๋Ÿฌํ•œ ๋ฃจํŠธํ‚ท์ด ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ดํ•ดํ•˜๋ ค๋ฉด UEFI BIOS ํ™˜๊ฒฝ์—์„œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ํ‰๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์„œ์˜ ๊ฐ€์žฅ ํŠน๊ถŒ์ ์ธ ๋ชจ๋“œ ์ธ SMM์—์„œ ๋งํ•˜์‹ญ์‹œ์˜ค. ์ด๋Ÿฌํ•œ ๋ฃจํŠธํ‚ท์€ ๋‹ค์Œ ์†์„ฑ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • OS์™€ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค(ํƒ€์ด๋จธ์— ์˜ํ•ด ํŠธ๋ฆฌ๊ฑฐ๋˜๋Š” SMI ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Œ).
  • SMM ๋ชจ๋“œ์— ์žˆ๋Š” ๋ชจ๋“  ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค(RAM ๋ฐ ํ•˜๋“œ์›จ์–ด ๋ฆฌ์†Œ์Šค์˜ ๋‚ด์šฉ์— ๋Œ€ํ•œ ์ „์ฒด ์•ก์„ธ์Šค, OS์˜ ๋น„๋ฐ€์„ฑ).
  • ๋ฃจํŠธํ‚ท ์ฝ”๋“œ๋Š” SMM ๋ชจ๋“œ์—์„œ ์‹คํ–‰๋  ๋•Œ ์•”ํ˜ธํ™” ๋ฐ ํ•ด๋…๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SMM ๋ชจ๋“œ์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™” ํ‚ค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด SMRAM์— ์žˆ๋Š” ์ฃผ์†Œ ์ง‘ํ•ฉ์˜ ํ•ด์‹œ์ž…๋‹ˆ๋‹ค. ์ด ํ‚ค๋ฅผ ์–ป์œผ๋ ค๋ฉด SMM์œผ๋กœ ์˜ฌ๋ผ๊ฐ€์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SMM ์ฝ”๋“œ์—์„œ RCE๋ฅผ ์ฐพ์•„ ์•…์šฉํ•˜๊ฑฐ๋‚˜ ์ž์ฒด SMM ๋ชจ๋“ˆ์„ BIOS์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Boot Guard๋ฅผ ํ™œ์„ฑํ™”ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด ์ทจ์•ฝ์ ์œผ๋กœ ์ธํ•ด ๊ณต๊ฒฉ์ž๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์‹œ์Šคํ…œ์—์„œ ์•Œ๋ ค์ง€์ง€ ์•Š์€ ๋ชฉ์ ์˜ ์ˆจ๊ฒจ์ง„ ์ œ๊ฑฐ ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ฃจํŠธํ‚ท์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • Intel SoC ๋‚ด๋ถ€์˜ ์นฉ์…‹ ์ฝ”์–ด ์ค‘ ํ•˜๋‚˜, ์ฆ‰ Intel ISH์—์„œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆผ ์ž์„ธํžˆ ๋ณด๊ธฐ).

์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ๋ฏฟ์Œ์งํ•œ ์žฅํ™”. ์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ
์Šˆ๋ขฐ๋”ฉ๊ฑฐ์˜ ๋ฏฟ์Œ์งํ•œ ์žฅํ™”. ์ธํ…” ๋ถ€ํŠธ ๊ฐ€๋“œ
Intel ISH ํ•˜์œ„ ์‹œ์Šคํ…œ์˜ ๊ธฐ๋Šฅ์€ ์•„์ง ํƒ์ƒ‰๋˜์ง€ ์•Š์•˜์ง€๋งŒ Intel ME์— ๋Œ€ํ•œ ํฅ๋ฏธ๋กœ์šด ๊ณต๊ฒฉ ๋ฒกํ„ฐ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์กฐ์‚ฌ ๊ฒฐ๊ณผ

  1. ์ด ์—ฐ๊ตฌ๋Š” Intel Boot Guard ๊ธฐ์ˆ ์˜ ์ž‘๋™ ๋ฐฉ์‹์— ๋Œ€ํ•œ ๊ธฐ์ˆ ์  ์„ค๋ช…์„ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจํ˜ธ์„ฑ ๋ชจ๋ธ์„ ํ†ตํ•œ ์ธํ…” ๋ณด์•ˆ์˜ ๋ช‡ ๊ฐ€์ง€ ๋น„๋ฐ€์„ ๋บ€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  2. ์‹œ์Šคํ…œ์—์„œ ์ œ๊ฑฐํ•  ์ˆ˜ ์—†๋Š” ๋ฃจํŠธํ‚ท์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฒฉ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
  3. ์šฐ๋ฆฌ๋Š” ์ตœ์‹  Intel ํ”„๋กœ์„ธ์„œ๊ฐ€ BIOS๊ฐ€ ์‹œ์ž‘๋˜๊ธฐ ์ „์—๋„ ๋งŽ์€ ๋…์  ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.
  4. Intel 64 ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”Œ๋žซํผ์€ ํ•˜๋“œ์›จ์–ด ๊ฒ€์ฆ, ์ ์  ๋” ๋งŽ์€ ๋…์  ๊ธฐ์ˆ  ๋ฐ ํ•˜์œ„ ์‹œ์Šคํ…œ(SoC ์นฉ์…‹์˜ 86๊ฐœ ์ฝ”์–ด: x86 ME, xXNUMX ISH ๋ฐ ARC PMC)๊ณผ ๊ฐ™์€ ์ž์œ  ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์ ์  ๋” ์ ํ•ฉํ•˜์ง€ ์•Š๊ฒŒ ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์™„ํ™”

์˜๋„์ ์œผ๋กœ ์ œ์กฐ ๋ชจ๋“œ๋ฅผ ์—ด์–ด ๋‘๋Š” ๋ฒค๋”๋Š” ๋ฐ˜๋“œ์‹œ ๋‹ซ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ๊ทธ๋“ค์€ ๋‹จ์ง€ ๋ˆˆ์„ ๊ฐ์•˜์„ ๋ฟ์ด๋ฉฐ ์ƒˆ๋กœ์šด Kaby Lake ์‹œ์Šคํ…œ์ด ์ด๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๋Š” -closemnf ์˜ต์…˜๊ณผ ํ•จ๊ป˜ ํ”Œ๋ž˜์‹œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋„๊ตฌ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์‹œ์Šคํ…œ์—์„œ ์ธํ…” BG(์„ค๋ช…๋œ ์ทจ์•ฝ์ ์˜ ์˜ํ–ฅ์„ ๋ฐ›์Œ)๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ME ์˜์—ญ์˜ Intel BG ๊ตฌ์„ฑ์ด FPF์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•œ ํ›„ ์ด ๊ธฐ์ˆ ์„ ์ •ํ™•ํžˆ ๋„๋„๋ก ์ œ๊ณตํ•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MEinfo ์‚ฌ์šฉ).

์ถœ์ฒ˜ : habr.com

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