์ฐ๋ฆฌ๋ ๋ค์ ๋ฎ์ ์์ค์ผ๋ก ๋ด๋ ค๊ฐ ํ์จ์ด x86 ํธํ ์ปดํจํฐ ํ๋ซํผ์ ๋ณด์์ ๋ํด ์ด์ผ๊ธฐํ ๊ฒ์ ์ ์ํฉ๋๋ค. ์ด๋ฒ ์ฐ๊ตฌ์ ์ฃผ์ ์์๋ ์ปดํจํฐ ์์คํ
๊ณต๊ธ์
์ฒด๊ฐ ์์ฐ ๋จ๊ณ์์ ์๊ตฌ์ ์ผ๋ก ํ์ฑํ ๋๋ ๋นํ์ฑํํ ์ ์๋ ํ๋์จ์ด ์ง์ BIOS ์ ๋ขฐํ ์ ์๋ ๋ถํ
๊ธฐ์ ์ธ Intel Boot Guard(Intel BIOS Guard์ ํผ๋ํ์ง ๋ง์ญ์์ค!)์
๋๋ค. ์, ์ฐ๋ฆฌ๋ ์ด๋ฏธ ์ฐ๊ตฌ ๋ฐฉ๋ฒ์ ์๊ณ ์์ต๋๋ค. ๋ฆฌ๋ฒ์ค ์์ง๋์ด๋ง์ ํตํด ์ด ๊ธฐ์ ์ ๊ตฌํ์ ์๊ฒ ์๋ฅด๊ณ , ์ํคํ
์ฒ๋ฅผ ์ค๋ช
ํ๊ณ , ๋ฌธ์ํ๋์ง ์์ ์ธ๋ถ ์ ๋ณด๋ก ์ฑ์ฐ๊ณ , ๋ง๋ณด๊ธฐ ์ํด ๊ณต๊ฒฉ ๋ฒกํฐ๋ก ์๋
ํ๊ณ ํผํฉํฉ๋๋ค. ๋ช ๋
๋์ ์ฌ๋ฌ ๋ฒค๋์ ์ ํ์์ ๋ณต์ ๋ ๋ฒ๊ทธ๊ฐ ์ด๋ป๊ฒ ์ ์ฌ์ ์ธ ๊ณต๊ฒฉ์๊ฐ ์ด ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ์์คํ
์์ ์ ๊ฑฐํ ์ ์๋(ํ๋ก๊ทธ๋๋จธ๋) ์จ๊ฒจ์ง ๋ฃจํธํท์ ๋ง๋ค ์ ์๋์ง์ ๋ํ ์ด์ผ๊ธฐ๋ก ๋ถ์ ๋ถ์
๋๋ค.
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ์ด ๊ธฐ์ฌ๋ ์ปจํผ๋ฐ์ค์ "On Guard for Rootkits: Intel BootGuard" ๋ณด๊ณ ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
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 ์ปจํธ๋กค๋ฌ์์ ํ์ธํฉ๋๋ค. ์ด ํ์ธ ํ๋ก์ธ์ค๋ ์ด๋ฏธ ๋ค์ ์ค ํ๋์์ ๋
ผ์๋์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ACPI EC ํ์จ์ด๋ ์์น์ ์ผ๋ก ๋ฌด๊ฒฐ์ฑ์ ๋ํด์๋ง ํ์ธ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด ๋ฐ์ด๋๋ฆฌ๊ฐ UEFI BIOS์ ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์ ๊ฑฐ์ ํญ์ UEFI BIOS๊ฐ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋์ผํ ๋ณดํธ ๋ฉ์ปค๋์ฆ์ด ์ ์ฉ๋ฉ๋๋ค. ๊ทธ๋ค์ ๋ํด ์ด์ผ๊ธฐํฉ์๋ค.
์ด๋ฌํ ๋ฉ์ปค๋์ฆ์ ๋ ๊ฐ์ง ๋ฒ์ฃผ๋ก ๋๋ ์ ์์ต๋๋ค.
UEFI BIOS ์์ญ์ ๋ํ ์ฐ๊ธฐ ๋ฐฉ์ง
- ์ฐ๊ธฐ ๋ฐฉ์ง ์ ํผ๋ก SPI ํ๋์ ๋ฉ๋ชจ๋ฆฌ ๋ด์ฉ์ ๋ฌผ๋ฆฌ์ ๋ณดํธ
- ์นฉ์ ์ PRx ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํ์ฌ CPU ์ฃผ์ ๊ณต๊ฐ์์ UEFI BIOS ์์ญ์ ํ๋ก์ ์ ๋ณดํธ
- ์นฉ์ ๋ ์ง์คํฐ์์ BIOS_WE/BLE ๋ฐ SMM_BWP ๋นํธ๋ฅผ ์ค์ ํ์ฌ ํด๋น SMI ์ธํฐ๋ฝํธ๋ฅผ ์์ฑ ๋ฐ ์ฒ๋ฆฌํ์ฌ UEFI BIOS ์์ญ์ ์ฐ๊ธฐ ์๋๋ฅผ ์ฐจ๋จํฉ๋๋ค.
- ์ด ๋ณดํธ ๊ธฐ๋ฅ์ ๊ณ ๊ธ ๋ฒ์ ์ PFAT(Intel BIOS Guard)์ ๋๋ค.
์ด๋ฌํ ๋ฉ์ปค๋์ฆ ์ธ์๋ ๊ณต๊ธ์ ์ฒด๋ ๊ณ ์ ํ ๋ณด์ ์กฐ์น(์: 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 ํค๋ฅผ ์์ฑํ๊ณ ๋ ๊ฐ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์์ฑํฉ๋๋ค(๊ทธ๋ฆผ ์ฐธ์กฐ).
- ์ด ๋งค๋ํ์คํธ์ SVN(๋ณด์ ๋ฒ์ ๋ฒํธ), ๋ค์ ๋งค๋ํ์คํธ ๊ณต๊ฐ ํค์ SHA256 ํด์, RSA ๊ณต๊ฐ ํค(์ฆ, ๊ณต๊ธ์ ์ฒด ๋ฃจํธ ํค) ์ด ๋งค๋ํ์คํธ์ ์๋ช ๊ณผ ์๋ช ์์ฒด๋ฅผ ํ์ธํฉ๋๋ค.
- 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 ๊ธฐ์ ์ ๋ํ ๊ตฌ์ฑ์ ์ค์ ํ๊ธฐ ์ํด ๊ณต๊ธ์ ์ฒด๋ ์์ฐ ์ค์ ๋ค์์ ์ํํฉ๋๋ค.
- ํ๋์ ์ด๋ฏธ์ง ๋๊ตฌ(Intel STK์์ ์ ๊ณต)๋ฅผ ์ฌ์ฉํ์ฌ Intel ME ์์ญ(์์ FPF์ฉ ์์ ๋ฏธ๋ฌ) ๋ด ๋ณ์๋ก ์ง์ ๋ Intel BG ๊ตฌ์ฑ์ ์ฌ์ฉํ์ฌ ํ์จ์ด ์ด๋ฏธ์ง๋ฅผ ์์ฑํฉ๋๋ค.
- ํ๋์ ํ๋ก๊ทธ๋๋ฐ ๋๊ตฌ(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 ํค๋ฅผ ์ ์กฐํ์ง ์์ต๋๋ค."๋ผ๊ณ ๋งํ์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ ์ค์ํ ์ ์
๋๋ค. ํจ์ฆ๋ ์ ์๋์ง ์์ ์ํ๋ก ๋จ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์(๋๋ ๊ณต๊ฒฉ์)๊ฐ ์ง์ ํ๋ก๊ทธ๋๋ฐํ ์ ์์ต๋๋ค(๊ฐ์ฅ ์ด๋ ค์ด ๊ฒ์
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์ ๋ํ ํฅ๋ฏธ๋ก์ด ๊ณต๊ฒฉ ๋ฒกํฐ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
์กฐ์ฌ ๊ฒฐ๊ณผ
- ์ด ์ฐ๊ตฌ๋ Intel Boot Guard ๊ธฐ์ ์ ์๋ ๋ฐฉ์์ ๋ํ ๊ธฐ์ ์ ์ค๋ช ์ ์ ๊ณตํ์ต๋๋ค. ๋ชจํธ์ฑ ๋ชจ๋ธ์ ํตํ ์ธํ ๋ณด์์ ๋ช ๊ฐ์ง ๋น๋ฐ์ ๋บ ๊ฒ์ ๋๋ค.
- ์์คํ ์์ ์ ๊ฑฐํ ์ ์๋ ๋ฃจํธํท์ ๋ง๋ค ์ ์๋ ๊ณต๊ฒฉ ์๋๋ฆฌ์ค๊ฐ ์ ๊ณต๋ฉ๋๋ค.
- ์ฐ๋ฆฌ๋ ์ต์ Intel ํ๋ก์ธ์๊ฐ BIOS๊ฐ ์์๋๊ธฐ ์ ์๋ ๋ง์ ๋ ์ ์ฝ๋๋ฅผ ์คํํ ์ ์์์ ํ์ธํ์ต๋๋ค.
- Intel 64 ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉํ๋ ํ๋ซํผ์ ํ๋์จ์ด ๊ฒ์ฆ, ์ ์ ๋ ๋ง์ ๋ ์ ๊ธฐ์ ๋ฐ ํ์ ์์คํ (SoC ์นฉ์ ์ 86๊ฐ ์ฝ์ด: x86 ME, xXNUMX ISH ๋ฐ ARC PMC)๊ณผ ๊ฐ์ ์์ ์ํํธ์จ์ด๋ฅผ ์คํํ๋ ๋ฐ ์ ์ ๋ ์ ํฉํ์ง ์๊ฒ ๋๊ณ ์์ต๋๋ค.
์ํ
์๋์ ์ผ๋ก ์ ์กฐ ๋ชจ๋๋ฅผ ์ด์ด ๋๋ ๋ฒค๋๋ ๋ฐ๋์ ๋ซ์์ผ ํฉ๋๋ค. ์ง๊ธ๊น์ง ๊ทธ๋ค์ ๋จ์ง ๋์ ๊ฐ์์ ๋ฟ์ด๋ฉฐ ์๋ก์ด Kaby Lake ์์คํ ์ด ์ด๋ฅผ ๋ณด์ฌ์ค๋๋ค.
์ฌ์ฉ์๋ -closemnf ์ต์
๊ณผ ํจ๊ป ํ๋์ ํ๋ก๊ทธ๋๋ฐ ๋๊ตฌ๋ฅผ ์คํํ์ฌ ์์คํ
์์ ์ธํ
BG(์ค๋ช
๋ ์ทจ์ฝ์ ์ ์ํฅ์ ๋ฐ์)๋ฅผ ๋นํ์ฑํํ ์ ์์ต๋๋ค. ๋จผ์ ME ์์ญ์ Intel BG ๊ตฌ์ฑ์ด FPF์์ ํ๋ก๊ทธ๋๋ฐํ ํ ์ด ๊ธฐ์ ์ ์ ํํ ๋๋๋ก ์ ๊ณตํ๋์ง ํ์ธํด์ผ ํฉ๋๋ค(MEinfo ์ฌ์ฉ).
์ถ์ฒ : habr.com