ื”ืžื’ืฃ ื”ืžื”ื™ืžืŸ ืฉืœ ืฉืจื“ื™ื ื’ืจ. Intel Boot Guard

ื”ืžื’ืฃ ื”ืžื”ื™ืžืŸ ืฉืœ ืฉืจื“ื™ื ื’ืจ. Intel Boot Guard
ืื ื• ืžืฆื™ืขื™ื ืœืจื“ืช ืฉื•ื‘ ืœืจืžื” ื”ื ืžื•ื›ื” ื•ืœื“ื‘ืจ ืขืœ ื”ืื‘ื˜ื—ื” ืฉืœ ืคืœื˜ืคื•ืจืžื•ืช ืžื—ืฉื‘ ืชื•ืืžื•ืช ืงื•ืฉื—ื” x86. ื”ืคืขื, ื”ืžืจื›ื™ื‘ ื”ืขื™ืงืจื™ ืฉืœ ื”ืžื—ืงืจ ื”ื•ื Intel Boot Guard (ืœื ืœื”ืชื‘ืœื‘ืœ ืขื Intel BIOS Guard!) - ื˜ื›ื ื•ืœื•ื’ื™ื™ืช ืืชื—ื•ืœ ืžื”ื™ืžื ื” ืฉืœ BIOS ื”ื ืชืžื›ืช ื‘ื—ื•ืžืจื” ืฉืกืคืง ืžืขืจื›ืช ืžื—ืฉื‘ื™ื ื™ื›ื•ืœ ืœื”ืคืขื™ืœ ืื• ืœื›ื‘ื•ืช ืœืฆืžื™ืชื•ืช ื‘ืฉืœื‘ ื”ื™ื™ืฆื•ืจ. ื•ื‘ื›ืŸ, ืื ื—ื ื• ื›ื‘ืจ ืžื›ื™ืจื™ื ืืช ืžืชื›ื•ืŸ ื”ืžื—ืงืจ: ื—ืชื›ื• ื“ืง ืืช ื”ื™ื™ืฉื•ื ืฉืœ ื”ื˜ื›ื ื•ืœื•ื’ื™ื” ื”ื–ื• ืขืœ ื™ื“ื™ ื”ื ื“ืกื” ืœืื—ื•ืจ, ืชืืจื• ืืช ื”ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœื”, ืžืžืœืื™ื ืื•ืชื” ื‘ืคืจื˜ื™ื ืœื ืžืชื•ืขื“ื™ื, ืžืชื‘ืœื™ื ืื•ืชื” ื‘ื•ืงื˜ื•ืจื™ ืชืงื™ืคื” ืœืคื™ ื”ื˜ืขื ื•ืžืขืจื‘ื‘ื™ื ืื•ืชื”. ื‘ื•ืื• ื ื•ืกื™ืฃ ืืฉ ืขื ืกื™ืคื•ืจ ืขืœ ืื™ืš ื‘ืื’ ืžืฉื•ื‘ื˜ ื‘ื™ื™ืฆื•ืจ ืฉืœ ืžืกืคืจ ืกืคืงื™ื ื‘ืžืฉืš ืฉื ื™ื ืžืืคืฉืจ ืœืชื•ืงืฃ ืคื•ื˜ื ืฆื™ืืœื™ ืœื”ืฉืชืžืฉ ื‘ื˜ื›ื ื•ืœื•ื’ื™ื” ื”ื–ื• ื›ื“ื™ ืœื™ืฆื•ืจ rootkit ืžื•ืกืชืจ ืฉืœื ื ื™ืชืŸ ืœื”ืกื™ืจ (ืืคื™ืœื• ืขืœ ื™ื“ื™ ืžืชื›ื ืช) ื‘ืžืขืจื›ืช.

ืื’ื‘, ื”ื›ืชื‘ื” ืžื‘ื•ืกืกืช ืขืœ ื”ื“ื™ื•ื•ื—ื™ื "On Guard for Rootkits: Intel BootGuard" ืžื”ื›ื ืก ZeroNights 2016 ื•ืžืคื’ืฉ 29 DefCon ืจื•ืกื™ื” (ืฉืชื™ ื”ืžืฆื’ื•ืช ื›ืืŸ).

ืงื•ืฉื—ื” ืœืคืœื˜ืคื•ืจืžืช ืžื—ืฉื‘ ืขื ืืจื›ื™ื˜ืงื˜ื•ืจืช Intel 64

ืจืืฉื™ืช, ื‘ื•ืื• ื ืขื ื” ืขืœ ื”ืฉืืœื”: ืžื”ื™ ื”ืงื•ืฉื—ื” ืฉืœ ืคืœื˜ืคื•ืจืžืช ืžื—ืฉื‘ ืžื•ื“ืจื ื™ืช ืขื ืืจื›ื™ื˜ืงื˜ื•ืจืช Intel 64? ื›ืžื•ื‘ืŸ, UEFI BIOS. ืื‘ืœ ืชืฉื•ื‘ื” ื–ื• ืœื ืชื”ื™ื” ืžื“ื•ื™ืงืช. ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ื”ืื™ื•ืจ, ื”ืžืฆื™ื’ื” ืืช ื’ืจืกืช ืฉื•ืœื—ืŸ ื”ืขื‘ื•ื“ื” (ื”ืžื—ืฉื‘ ื”ื ื™ื™ื“) ืฉืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื–ื•.

ื”ืžื’ืฃ ื”ืžื”ื™ืžืŸ ืฉืœ ืฉืจื“ื™ื ื’ืจ. Intel Boot Guard
ื”ื‘ืกื™ืก ื”ื•ื ื”ืงื™ืฉื•ืจ:

  • ืžืขื‘ื“ (CPU, Central Processing Unit), ืืฉืจ ื‘ื ื•ืกืฃ ืœืœื™ื‘ื•ืช ื”ืจืืฉื™ื•ืช, ื™ืฉ ืœื• ืœื™ื‘ื” ื’ืจืคื™ืช ืžื•ื‘ื ื™ืช (ืœื ื‘ื›ืœ ื”ื“ื’ืžื™ื) ื•ื‘ืงืจ ื–ื™ื›ืจื•ืŸ (IMC, Integrated Memory Controller);
  • ืขืจื›ืช ืฉื‘ื‘ื™ื (PCH, Platform Controller Hub), ื”ืžื›ื™ืœื” ื‘ืงืจื™ื ืฉื•ื ื™ื ืœืื™ื ื˜ืจืืงืฆื™ื” ืขื ื”ืชืงื ื™ื ื”ื™ืงืคื™ื™ื ื•ื ื™ื”ื•ืœ ืชืชื™ ืžืขืจื›ื•ืช. ื‘ื™ื ื™ื”ื ื ื™ืชืŸ ืœืžืฆื•ื ืืช Intel Management Engine (ME) ื”ื™ื“ื•ืข ืœืฉืžืฆื”, ืฉื™ืฉ ืœื• ื’ื ืงื•ืฉื—ื” (ืงื•ืฉื—ื” ืฉืœ Intel ME).

ืžื—ืฉื‘ื™ื ื ื™ื™ื“ื™ื, ื‘ื ื•ืกืฃ ืœืืžื•ืจ ืœืขื™ืœ, ื“ื•ืจืฉื™ื ื‘ืงืจ ืžืฉื•ืœื‘ (ACPI EC, Advanced Control and Power Interface Embedded Controller), ืฉืื—ืจืื™ ืขืœ ืชืคืขื•ืœ ืชืช-ืžืขืจื›ืช ื”ื—ืฉืžืœ, ืžืฉื˜ื— ื”ืžื’ืข, ื”ืžืงืœื“ืช, ืžืงืฉื™ Fn (ื‘ื”ื™ืจื•ืช ื”ืžืกืš, ืขื•ืฆืžืช ื”ืงื•ืœ, ืžืงืœื“ืช ืชืื•ืจื” ืื—ื•ืจื™ืช ื•ื›ื•'). ) ื•ืขื•ื“. ื•ื™ืฉ ืœื• ื’ื ืงื•ืฉื—ื” ืžืฉืœื•.

ืื–, ื”ืฉื™ืœื•ื‘ ืฉืœ ื”ืงื•ืฉื—ื” ืœืขื™ืœ ื”ื•ื ื”ืงื•ืฉื—ื” ืฉืœ ืคืœื˜ืคื•ืจืžืช ื”ืžื—ืฉื‘ (ืงื•ืฉื—ืช ื”ืžืขืจื›ืช), ืืฉืจ ืžืื•ื—ืกื ืช ื‘ื–ื™ื›ืจื•ืŸ ืคืœืืฉ SPI ื ืคื•ืฅ. ื›ื“ื™ ืฉืžืฉืชืžืฉื™ ื”ื–ื™ื›ืจื•ืŸ ื”ื–ื” ืœื ื™ืชื‘ืœื‘ืœื• ืื™ืคื” ืžื™ืฉื”ื• ืฉื•ื›ื‘, ื”ืชื•ื›ืŸ ืฉืœ ื”ื–ื™ื›ืจื•ืŸ ื”ื–ื” ืžื—ื•ืœืง ืœืื–ื•ืจื™ื ื”ื‘ืื™ื (ื›ืคื™ ืฉืžื•ืฆื’ ื‘ืื™ื•ืจ):

  • UEFI BIOS;
  • ืงื•ืฉื—ืช ACPI EC (ืื–ื•ืจ ื ืคืจื“ ื”ื•ืคื™ืข ืขื ื”ืžื™ืงืจื•-ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœ ืžืขื‘ื“ Skylake (2015), ืื‘ืœ ื‘ื˜ื‘ืข ืขื“ื™ื™ืŸ ืœื ืจืื™ื ื• ื“ื•ื’ืžืื•ืช ืœืฉื™ืžื•ืฉ ื‘ื”, ื•ืœื›ืŸ ืงื•ืฉื—ืช ื”ื‘ืงืจ ื”ืžื•ื˜ื‘ืข ื”ื™ื ืขื“ื™ื™ืŸ ื—ืœืง ืžื”-UEFI BIOS);
  • ืงื•ืฉื—ืช Intel ME;
  • ืชืฆื•ืจื” (ื›ืชื•ื‘ืช MAC ื•ื›ื•') ืฉืœ ืžืชืื ื”ืจืฉืช GbE (Gigabit Ethernet) ื”ืžื•ื‘ื ื”;
  • ืžืชืืจื™ flash - ื”ืื–ื•ืจ ื”ืจืืฉื™ ืฉืœ ื–ื™ื›ืจื•ืŸ ื”ืคืœืืฉ, ื”ืžื›ื™ืœ ืžืฆื‘ื™ืขื™ื ืœืื–ื•ืจื™ื ืื—ืจื™ื, ื›ืžื• ื’ื ื”ืจืฉืื•ืช ื’ื™ืฉื” ืืœื™ื”ื.

ื”ืžื’ืฃ ื”ืžื”ื™ืžืŸ ืฉืœ ืฉืจื“ื™ื ื’ืจ. Intel Boot Guard
ื‘ื™ื“ื•ืœ ื”ื’ื™ืฉื” ืœืื–ื•ืจื™ื (ื‘ื”ืชืื ืœื”ืจืฉืื•ืช ืฉืฆื•ื™ื ื•) ืžื˜ื•ืคืœ ืขืœ ื™ื“ื™ ืžื ื”ืœ ื”ืื•ื˜ื•ื‘ื•ืก SPI - ื‘ืงืจ ื”-SPI ื”ืžื•ื‘ื ื” ื‘ืขืจื›ืช ื”ืฉื‘ื‘ื™ื, ืฉื“ืจื›ื• ื ื™ื’ืฉื™ื ืœื–ื™ื›ืจื•ืŸ ื–ื”. ืื ื”ื”ืจืฉืื•ืช ืžื•ื’ื“ืจื•ืช ืœืขืจื›ื™ื ื”ืžื•ืžืœืฆื™ื (ืžืกื™ื‘ื•ืช ืื‘ื˜ื—ื”) ืขืœ ื™ื“ื™ ืื™ื ื˜ืœ, ืื– ืœื›ืœ ืžืฉืชืžืฉ ื‘ืคืœืืฉ SPI ื™ืฉ ื’ื™ืฉื” ืžืœืื” (ืงืจื™ืื”/ื›ืชื™ื‘ื”) ืจืง ืœืื–ื•ืจ ืฉืœื•. ื”ืฉืืจ ื”ื ืœืงืจื™ืื” ื‘ืœื‘ื“ ืื• ื‘ืœืชื™ ื ื’ื™ืฉื™ื. ืขื•ื‘ื“ื” ื™ื“ื•ืขื”: ื‘ืžืขืจื›ื•ืช ืจื‘ื•ืช, ืœ-CPU ื™ืฉ ื’ื™ืฉื” ืžืœืื” ืœ-UEFI BIOS ื•-GbE, ื’ื™ืฉืช ืงืจื™ืื” ืจืง ืœืชื™ืื•ืจื™ ืคืœืืฉ, ื•ืœืœื ื’ื™ืฉื” ืœืื–ื•ืจ Intel ME ื›ืœืœ. ืœืžื” ืจื‘ื™ื ื•ืœื ื›ื•ืœื? ืžื” ืฉืžื•ืžืœืฅ ื”ื•ื ืื•ืคืฆื™ื•ื ืœื™. ื ืกืคืจ ืœื›ื ื™ื•ืชืจ ื‘ื”ืžืฉืš ื”ืžืืžืจ.

ืžื ื’ื ื•ื ื™ื ืœื”ื’ื ื” ืขืœ ื”ืงื•ืฉื—ื” ืฉืœ ืคืœื˜ืคื•ืจืžืช ืžื—ืฉื‘ ืžืคื ื™ ืฉื™ื ื•ื™ื™ื

ืžืŸ ื”ืกืชื, ื”ืงื•ืฉื—ื” ืฉืœ ืคืœื˜ืคื•ืจืžืช ืžื—ืฉื‘ ืฆืจื™ื›ื” ืœื”ื™ื•ืช ืžื•ื’ื ืช ืžืคื ื™ ืคืฉืจื” ืืคืฉืจื™ืช, ืฉืชืืคืฉืจ ืœืชื•ืงืฃ ืคื•ื˜ื ืฆื™ืืœื™ ืœื”ืฉื™ื’ ื‘ื” ื“ืจื™ืกืช ืจื’ืœ (ืœืฉืจื•ื“ ืขื“ื›ื•ื ื™ ืžืขืจื›ืช ื”ืคืขืœื” / ื”ืชืงื ื•ืช ืžื—ื“ืฉ), ืœื‘ืฆืข ืืช ื”ืงื•ื“ ืฉืœื• ื‘ืžืฆื‘ื™ื ื”ืžื•ืขื“ืคื™ื ื‘ื™ื•ืชืจ ื•ื›ื•'. ื•ืชื™ื—ื•ื ื’ื™ืฉื” ืœืื–ื•ืจื™ ื–ื™ื›ืจื•ืŸ ืคืœืืฉ SPI, ื›ืžื•ื‘ืŸ, ืื™ื ื• ืžืกืคื™ืง. ืœื›ืŸ, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ืžื ื’ื ื•ื ื™ื ืฉื•ื ื™ื ืกืคืฆื™ืคื™ื™ื ืœื›ืœ ืกื‘ื™ื‘ืช ื‘ื™ืฆื•ืข ื›ื“ื™ ืœื”ื’ืŸ ืขืœ ื”ืงื•ืฉื—ื” ืžืคื ื™ ืฉื™ื ื•ื™ื™ื.

ืœื›ืŸ, ื”ืงื•ืฉื—ื” ืฉืœ Intel ME ื—ืชื•ืžื” ืขื‘ื•ืจ ื‘ืงืจืช ืฉืœืžื•ืช ื•ืื•ืชื ื˜ื™ื•ืช, ื•ื ื‘ื“ืงืช ืขืœ ื™ื“ื™ ื‘ืงืจ ME ื‘ื›ืœ ืคืขื ืฉื”ื™ื ื ื˜ืขื ืช ืœื–ื™ื›ืจื•ืŸ ME UMA. ืชื”ืœื™ืš ื”ืื™ืžื•ืช ื”ื–ื” ื›ื‘ืจ ื ื“ื•ืŸ ืขืœ ื™ื“ื™ื ื• ื‘ืื—ื“ ืžื”- ืžืืžืจื™ืืžื•ืงื“ืฉ ืœืชืช-ืžืขืจื›ืช Intel ME.

ื•ืงื•ืฉื—ืช ACPI EC, ื›ื›ืœืœ, ื ื‘ื“ืงืช ืจืง ืขื‘ื•ืจ ืชืงื™ื ื•ืช. ืขื ื–ืืช, ื‘ืฉืœ ื”ืขื•ื‘ื“ื” ืฉื”ื‘ื™ื ืืจื™ ื”ื–ื” ื›ืœื•ืœ ื‘-UEFI BIOS, ื”ื•ื ื›ืคื•ืฃ ื›ืžืขื˜ ืชืžื™ื“ ืœืื•ืชื ืžื ื’ื ื•ื ื™ ื”ื’ื ื” ืฉื‘ื”ื ืžืฉืชืžืฉ ื”-UEFI BIOS. ื‘ื•ืื• ื ื“ื‘ืจ ืขืœื™ื”ื.

ื ื™ืชืŸ ืœื—ืœืง ืžื ื’ื ื•ื ื™ื ืืœื• ืœืฉืชื™ ืงื˜ื’ื•ืจื™ื•ืช.

ื”ื’ื ืช ื›ืชื™ื‘ื” ืœืื–ื•ืจ UEFI BIOS

  1. ื”ื’ื ื” ืคื™ื–ื™ืช ืขืœ ื”ืชื•ื›ืŸ ืฉืœ ื–ื™ื›ืจื•ืŸ ื”ืคืœืืฉ SPI ืขื ืžื’ืฉืจ ืœื”ื’ื ื” ืขืœ ื›ืชื™ื‘ื”;
  2. ื”ื’ื ื” ืขืœ ื”ืงืจื ื” ืฉืœ ืื–ื•ืจ ื”-UEFI BIOS ื‘ืžืจื—ื‘ ื”ื›ืชื•ื‘ื•ืช ืฉืœ ื”ืžืขื‘ื“ ื‘ืืžืฆืขื•ืช ืื•ื’ืจื™ PRx ืฉืœ ืขืจื›ืช ื”ืฉื‘ื‘ื™ื;
  3. ื—ืกื™ืžืช ื ื™ืกื™ื•ื ื•ืช ื›ืชื™ื‘ื” ืœืื–ื•ืจ UEFI BIOS ืขืœ ื™ื“ื™ ื™ืฆื™ืจื” ื•ืขื™ื‘ื•ื“ ืฉืœ ื”ืคืกืงืช SMI ื”ืžืชืื™ืžื” ืขืœ ื™ื“ื™ ื”ื’ื“ืจืช ืกื™ื‘ื™ื•ืช BIOS_WE / BLE ื•-SMM_BWP ื‘ืื•ื’ืจื™ ืขืจื›ืช ื”ืฉื‘ื‘ื™ื;
  4. ื’ืจืกื” ืžืชืงื“ืžืช ื™ื•ืชืจ ืฉืœ ื”ื’ื ื” ื–ื• ื”ื™ื Intel BIOS Guard (PFAT).

ื‘ื ื•ืกืฃ ืœืžื ื’ื ื•ื ื™ื ืืœื”, ื”ืกืคืงื™ื ื™ื›ื•ืœื™ื ืœืคืชื— ื•ืœื™ื™ืฉื ืืžืฆืขื™ ืื‘ื˜ื—ื” ืžืฉืœื”ื (ืœื“ื•ื’ืžื”, ื—ืชื™ืžื” ืขืœ ืงืคืกื•ืœื•ืช ืขื ืขื“ื›ื•ื ื™ UEFI BIOS).

ื—ืฉื•ื‘ ืœืฆื™ื™ืŸ ื›ื™ ืขืœ ืžืขืจื›ืช ืกืคืฆื™ืคื™ืช (ืชืœื•ื™ ื‘ืกืคืง), ื™ื™ืชื›ืŸ ืฉืœื ื›ืœ ืžื ื’ื ื•ื ื™ ื”ื”ื’ื ื” ื”ื "ืœ ืžื™ื•ืฉืžื™ื, ื™ื™ืชื›ืŸ ืฉื”ื ืœื ืžื™ื•ืฉืžื™ื ื›ืœืœ ืื• ืฉื”ื ืžื™ื•ืฉืžื™ื ื‘ืฆื•ืจื” ืคื’ื™ืขื”. ืชื•ื›ืœ ืœืงืจื•ื ืขื•ื“ ืขืœ ืžื ื’ื ื•ื ื™ื ืืœื• ื•ืขืœ ื”ืžืฆื‘ ืขื ื™ื™ืฉื•ืžื ื‘ ืžืืžืจ ื–ื”. ืœืžืขื•ื ื™ื™ื ื™ื, ืื ื• ืžืžืœื™ืฆื™ื ืœืงืจื•ื ืืช ื›ืœ ืกื“ืจืช ื”ืžืืžืจื™ื ืขืœ ืื‘ื˜ื—ืช UEFI BIOS ืž ืงื•ื“.

ืื™ืžื•ืช UEFI BIOS ืื™ืžื•ืช

ื›ืฉืื ื—ื ื• ืžื“ื‘ืจื™ื ืขืœ ื˜ื›ื ื•ืœื•ื’ื™ื•ืช ืืชื—ื•ืœ ืžื”ื™ืžื ื•ืช, ื”ื“ื‘ืจ ื”ืจืืฉื•ืŸ ืฉืขื•ืœื” ืขืœ ื”ื“ืขืช ื”ื•ื ืืชื—ื•ืœ ืžืื•ื‘ื˜ื—. ืขื ื–ืืช, ืžื‘ื—ื™ื ื” ืืจื›ื™ื˜ืงื˜ื•ื ื™ืช, ื”ื•ื ื ื•ืขื“ ืœืืžืช ืจื›ื™ื‘ื™ื ื—ื™ืฆื•ื ื™ื™ื ืœ-UEFI BIOS (ืžื ื”ืœื™ ื”ืชืงื ื™ื, ืžืขืžื™ืกื™ื ื•ื›ื•'), ื•ืœื ืืช ื”ืงื•ืฉื—ื” ืขืฆืžื”.

ืœื›ืŸ, ืื™ื ื˜ืœ ื‘-SoCs ืขื ืžื™ืงืจื•-ืืจื›ื™ื˜ืงื˜ื•ืจืช Bay Trail (2012) ื”ื˜ืžื™ืขื” ืืชื—ื•ืœ ืžืื•ื‘ื˜ื— ืฉืื™ื ื• ื ื™ืชืŸ ืœื”ื—ืœืคื” ื‘ื—ื•ืžืจื” (ืืชื—ื•ืœ ืžืื•ืžืช), ืฉืื™ืŸ ืœื• ืฉื•ื ืงืฉืจ ืœื˜ื›ื ื•ืœื•ื’ื™ื™ืช ื”ืืชื—ื•ืœ ื”ืžืื•ื‘ื˜ื— ื”ื "ืœ. ืžืื•ื—ืจ ื™ื•ืชืจ (2013), ืžื ื’ื ื•ืŸ ื–ื” ืฉื•ืคืจ, ื•ืชื—ืช ื”ืฉื Intel Boot Guard, ืฉื•ื—ืจืจ ืœืžื—ืฉื‘ื™ื ืฉื•ืœื—ื ื™ื™ื ืขื ื”ืžื™ืงืจื•-ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœ Haswell.

ืœืคื ื™ ืฉื ืชืืจ ืืช Intel Boot Guard, ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ื–ืžื ื™ ืจื™ืฆื” ื‘ืืจื›ื™ื˜ืงื˜ื•ืจืช Intel 64, ืืฉืจ, ื‘ืฉื™ืœื•ื‘, ื”ื ืฉื•ืจืฉื™ ื”ืืžื•ืŸ ืฉืœ ื˜ื›ื ื•ืœื•ื’ื™ื™ืช ื”ืืชื—ื•ืœ ื”ืžื”ื™ืžื ื” ื”ื–ื•.

ืžืขื‘ื“ ืื™ื ื˜ืœ

Cap ืžืฆื™ืข ืฉื”ืžืขื‘ื“ ื”ื•ื ืกื‘ื™ื‘ืช ื”ื‘ื™ืฆื•ืข ื”ืขื™ืงืจื™ืช ื‘ืืจื›ื™ื˜ืงื˜ื•ืจืช Intel 64. ืžื“ื•ืข ื”ื•ื ื’ื ืฉื•ืจืฉ ื”ืืžื•ืŸ? ืžืกืชื‘ืจ ืฉื”ื—ื–ืงืช ื”ืžืจื›ื™ื‘ื™ื ื”ื‘ืื™ื ื”ื™ื ื–ื• ืฉื’ื•ืจืžืช ืœื›ืš:

  • Microcode ROM ื”ื•ื ื–ื™ื›ืจื•ืŸ ืœื ื ื“ื™ืฃ ื•ืœื ื ื™ืชืŸ ืœื›ืชื™ื‘ื” ืœืื—ืกื•ืŸ ืžื™ืงืจื•ืงื•ื“. ื”ื•ื ื”ืืžื™ืŸ ื›ื™ ืžื™ืงืจื•ืงื•ื“ ื”ื•ื ื”ื™ื™ืฉื•ื ืฉืœ ืžืขืจื›ืช ื”ื•ืจืื•ืช ื”ืžืขื‘ื“ ืขืœ ื”ื”ื•ืจืื•ืช ื”ืคืฉื•ื˜ื•ืช ื‘ื™ื•ืชืจ. ืงื•ืจื” ื’ื ื‘ืžื™ืงืจื•ืงื•ื“ ื‘ืื’ื™ื. ืื– ื‘-BIOS ืืชื” ื™ื›ื•ืœ ืœืžืฆื•ื ืงื‘ืฆื™ื ื‘ื™ื ืืจื™ื™ื ืขื ืขื“ื›ื•ื ื™ ืžื™ืงืจื•ืงื•ื“ (ื”ื ืžื•ื ื—ื™ื ืขืœ ื’ื‘ื™ ื‘ื–ืžืŸ ื”ืืชื—ื•ืœ, ื›ื™ ืœื ื ื™ืชืŸ ืœื”ื—ืœื™ืฃ ืืช ื”-ROM). ื”ืชื•ื›ืŸ ืฉืœ ืงื‘ืฆื™ื ื‘ื™ื ืืจื™ื™ื ืืœื• ืžื•ืฆืคืŸ, ืžื” ืฉืžืกื‘ืš ืžืื•ื“ ืืช ื”ื ื™ืชื•ื— (ืœื›ืŸ, ื”ืชื•ื›ืŸ ื”ืกืคืฆื™ืคื™ ืฉืœ ื”ืžื™ืงืจื•ืงื•ื“ ื™ื“ื•ืข ืจืง ืœืžื™ ืฉืžืคืชื— ืื•ืชื•), ื•ื ื—ืชื ื›ื“ื™ ืœืฉืœื•ื˜ ืขืœ ื”ืฉืœืžื•ืช ื•ื”ืื•ืชื ื˜ื™ื•ืช;
  • ืžืคืชื— AES ืœืคืขื ื•ื— ื”ืชื•ื›ืŸ ืฉืœ ืขื“ื›ื•ื ื™ ืžื™ืงืจื•ืงื•ื“;
  • hash ืฉืœ ื”ืžืคืชื— ื”ืฆื™ื‘ื•ืจื™ RSA ื”ืžืืžืช ืืช ื”ื—ืชื™ืžื” ืฉืœ ืขื“ื›ื•ื ื™ ืžื™ืงืจื•ืงื•ื“;
  • Hash ืžืคืชื— ืฆื™ื‘ื•ืจื™ RSA, ืฉื‘ื•ื“ืง ืืช ื”ื—ืชื™ืžื” ืฉืœ ืžื•ื“ื•ืœื™ ืงื•ื“ ACM (Authenticated Code Module) ืฉืคื•ืชื—ื• ืขืœ ื™ื“ื™ ืื™ื ื˜ืœ, ืฉื”-CPU ื™ื›ื•ืœ ืœื”ืจื™ืฅ ืœืคื ื™ ื”ืคืขืœืช ื”-BIOS (ืฉืœื•ื ืžื™ืงืจื•ืงื•ื“) ืื• ื‘ืžื”ืœืš ืคืขื•ืœืชื•, ื›ืืฉืจ ืžืชืจื—ืฉื™ื ืื™ืจื•ืขื™ื ืžืกื•ื™ืžื™ื.

ืื™ื ื˜ืœ ME

ืชืช-ืžืขืจื›ืช ื–ื• ื‘ื‘ืœื•ื’ ืฉืœื ื• ื”ื•ืงื“ืฉื” ะดะฒะต ืžืืžืจื™ื. ื ื–ื›ื™ืจ ื›ื™ ืกื‘ื™ื‘ืช ื”ืคืขืœื” ื–ื• ืžื‘ื•ืกืกืช ืขืœ ื”ืžื™ืงืจื•-ื‘ืงืจ ื”ืžื•ื‘ื ื” ื‘ืขืจื›ืช ื”ืฉื‘ื‘ื™ื ื•ื”ื™ื ื”ื ืกืชืจืช ื•ื”ืžื•ืขื“ืคืช ื‘ื™ื•ืชืจ ื‘ืžืขืจื›ืช.

ืœืžืจื•ืช ื”ื”ืชื’ื ื‘ื•ืช, Intel ME ื”ื™ื ื’ื ืฉื•ืจืฉ ื”ืืžื•ืŸ, ืžื›ื™ื•ื•ืŸ ืฉื™ืฉ ืœื”:

  • ME ROM - ื–ื™ื›ืจื•ืŸ ืœื ื ื“ื™ืฃ ื•ืœื ื ื™ืชืŸ ืœื›ืชื™ื‘ื” ืžื—ื“ืฉ (ืœื ืžืกื•ืคืงืช ืฉื™ื˜ืช ืขื“ื›ื•ืŸ), ื”ืžื›ื™ืœ ืืช ืงื•ื“ ื”ื”ืชื—ืœื”, ื›ืžื• ื’ื ืืช ื”-hash SHA256 ืฉืœ ื”ืžืคืชื— ื”ืฆื™ื‘ื•ืจื™ RSA, ืฉื‘ื•ื“ืง ืืช ื”ื—ืชื™ืžื” ืฉืœ ื”ืงื•ืฉื—ื” ืฉืœ Intel ME;
  • ืžืคืชื— AES ืœืื—ืกื•ืŸ ืžื™ื“ืข ืกื•ื“ื™;
  • ื’ื™ืฉื” ืœืกื˜ ืฉืœ ื ืชื™ื›ื™ื (FPFs, Field Programmable Fuses) ื”ืžืฉื•ืœื‘ื™ื ื‘ืขืจื›ืช ื”ืฉื‘ื‘ื™ื ืœืื—ืกื•ืŸ ืงื‘ื•ืข ืฉืœ ืžื™ื“ืข ืžืกื•ื™ื, ื›ื•ืœืœ ืžื™ื“ืข ืฉืฆื•ื™ืŸ ืขืœ ื™ื“ื™ ืกืคืง ืžืขืจื›ืช ื”ืžื—ืฉื‘.

Intel Boot Guard 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], ื”ื•ื ืขื•ื‘ื“ ื›ืฉืจืฉืจืช ืืชื—ื•ืœ ืžื”ื™ืžื ื”. ื•ื”ืงื™ืฉื•ืจ ื”ืจืืฉื•ืŸ ื‘ื• ื”ื•ื ืงื•ื“ ื”ืืชื—ื•ืœ (ืžื™ืงืจื•ืงื•ื“) ื‘ืชื•ืš ื”-CPU, ื”ืžื•ืคืขืœ ืขืœ ื™ื“ื™ ืื™ืจื•ืข ื”-RESET (ืœื ืœื”ืชื‘ืœื‘ืœ ืขื ื•ืงื˜ื•ืจ ื”-RESET ื‘-BIOS!). ื”-CPU ืžื•ืฆื ืžื•ื“ื•ืœ ืงื•ื“ (Intel BG startup ACM) ืฉืคื•ืชื— ื•ื—ืชื•ื ืขืœ ื™ื“ื™ ืื™ื ื˜ืœ ื‘ื–ื™ื›ืจื•ืŸ ื”ืคืœืืฉ SPI, ื˜ื•ืขืŸ ืื•ืชื• ืœืžื˜ืžื•ืŸ ืฉืœื•, ืžืืžืช ืื•ืชื• (ื›ื‘ืจ ืฆื•ื™ืŸ ืœืžืขืœื” ืฉืœ-CPU ื™ืฉ Hash ืžืคืชื— ืฆื™ื‘ื•ืจื™ ืฉืžืืžืช ืืช ื—ืชื™ืžืช ACM ) ื•ืžืชื—ื™ืœ.

ื”ืžื’ืฃ ื”ืžื”ื™ืžืŸ ืฉืœ ืฉืจื“ื™ื ื’ืจ. Intel Boot Guard

ืžื•ื“ื•ืœ ืงื•ื“ ื–ื” ืื—ืจืื™ ืœืื™ืžื•ืช ื—ืœืง ื”ืชื—ืœืชื™ ืงื˜ืŸ ืฉืœ UEFI BIOS - Initial Boot Block (IBB), ืืฉืจ, ื‘ืชื•ืจื•, ืžื›ื™ืœ ืืช ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืœืื™ืžื•ืช ื”ื—ืœืง ื”ืขื™ืงืจื™ ืฉืœ UEFI BIOS. ืœืคื™ื›ืš, Intel BG ืžืืคืฉืจืช ืœืš ืœืืžืช ืืช ื”ืื•ืชื ื˜ื™ื•ืช ืฉืœ ื”-BIOS ืœืคื ื™ ืืชื—ื•ืœ ืžืขืจื›ืช ื”ื”ืคืขืœื” (ืฉื ื™ืชืŸ ืœื‘ืฆืข ืชื—ืช ืคื™ืงื•ื— ืฉืœ ื˜ื›ื ื•ืœื•ื’ื™ื™ืช Secure Boot).

ื˜ื›ื ื•ืœื•ื’ื™ื™ืช Intel BG ืžืกืคืงืช ืฉื ื™ ืžืฆื‘ื™ ืคืขื•ืœื” (ื•ืื—ื“ ืื™ื ื• ืžืคืจื™ืข ืœืฉื ื™, ื›ืœื•ืžืจ ื ื™ืชืŸ ืœื”ืคืขื™ืœ ืืช ืฉื ื™ ื”ืžืฆื‘ื™ื ื‘ืžืขืจื›ืช, ื•ืืช ืฉื ื™ื”ื ื ื™ืชืŸ ืœื”ืฉื‘ื™ืช).

ืืชื—ื•ืœ ืžื“ื•ื“

ื‘ืžืฆื‘ ืืชื—ื•ืœ ืžื“ื•ื“ (MB), ื›ืœ ืจื›ื™ื‘ ืืชื—ื•ืœ (ื”ื—ืœ ืž-CPU) "ืžื•ื“ื“" ืืช ื”ื‘ื ื‘ืืžืฆืขื•ืช ื”ื™ื›ื•ืœื•ืช ืฉืœ Trusted Platform Module (TPM). ืœืžื™ ืฉืœื ื™ื•ื“ืข, ืืกื‘ื™ืจ.

ืœ-TPM ื™ืฉ PCRs (Platform Configuration Registers), ื”ืžืชืขื“ื™ื ืืช ื”ืชื•ืฆืื” ืฉืœ ืคืขื•ืœืช ื”ื’ื™ื‘ื•ื‘ ืœืคื™ ื”ื ื•ืกื—ื”:

ื”ืžื’ืฃ ื”ืžื”ื™ืžืŸ ืฉืœ ืฉืจื“ื™ื ื’ืจ. Intel Boot Guard

ื”ึธื”ึตืŸ. ืขืจืš ื”-PCR ื”ื ื•ื›ื—ื™ ืชืœื•ื™ ื‘ืงื•ื“ื, ื•ื”ืจื’ื™ืกื˜ืจื™ื ื”ืœืœื• ืžืื•ืคืกื™ื ืจืง ื›ืืฉืจ ื”ืžืขืจื›ืช ืžืื•ืคืกืช.

ืœืคื™ื›ืš, ื‘ืžืฆื‘ MB, ื‘ื ืงื•ื“ืช ื–ืžืŸ ืžืกื•ื™ืžืช, PCRs ืžืฉืงืคื™ื ืžื–ื”ื” ื™ื™ื—ื•ื“ื™ (ื‘ืชื•ืš ื”ื™ื›ื•ืœื•ืช ืฉืœ ืคืขื•ืœืช ื”-hash) ืฉืœ ื”ืงื•ื“ ืื• ื”ื ืชื•ื ื™ื ืฉ"ื ืžื“ื“ื•". ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืขืจื›ื™ ื”-PCR ื‘ื”ืฆืคื ื” ืฉืœ ืคืขื•ืœื•ืช ืžืกื•ื™ืžื•ืช ืฉืœ ื ืชื•ื ื™ื (TPM_Seal). ืœืื—ืจ ืžื›ืŸ, ืคืขื ื•ื—ื (TPM_Unseal) ื™ืชืืคืฉืจ ืจืง ืื ืขืจื›ื™ ื”-PCR ืœื ื”ืฉืชื ื• ื›ืชื•ืฆืื” ืžื”ื˜ืขื™ื ื” (ื›ืœื•ืžืจ, ืืฃ ืจื›ื™ื‘ "ื ืžื“ื“" ืœื ืฉื•ื ื”).

ืืชื—ื•ืœ ืžืื•ืžืช

ื”ื“ื‘ืจ ื”ืžืคื—ื™ื“ ื‘ื™ื•ืชืจ ืขื‘ื•ืจ ืืœื” ืฉืื•ื”ื‘ื™ื ืœืฉื ื•ืช ืืช UEFI BIOS ื”ื•ื ืžืฆื‘ ื”ืืชื—ื•ืœ ื”ืžืื•ืžืช (VB), ืฉื‘ื• ื›ืœ ืจื›ื™ื‘ ืืชื—ื•ืœ ืžืืžืช ืงืจื™ืคื˜ื•ื’ืจืคื™ืช ืืช ื”ืฉืœืžื•ืช ื•ื”ืื•ืชื ื˜ื™ื•ืช ืฉืœ ื”ื‘ื. ื•ื‘ืžืงืจื” ืฉืœ ืฉื’ื™ืืช ืื™ืžื•ืช, (ืื—ืช ืžื”ืืคืฉืจื•ื™ื•ืช ื”ื‘ืื•ืช) ืžืชืจื—ืฉืช:

  • ื›ื™ื‘ื•ื™ ืขืœ ื™ื“ื™ ืคืกืง ื–ืžืŸ ืžื“ืงื” ืขื“ 1 ื“ืงื•ืช (ื›ื“ื™ ืฉืœืžืฉืชืžืฉ ื™ื”ื™ื” ื–ืžืŸ ืœื”ื‘ื™ืŸ ืžื“ื•ืข ื”ืžื—ืฉื‘ ืฉืœื• ืœื ืžืืชื—ืœ, ื•ืื ืืคืฉืจ, ื™ื ืกื” ืœืฉื—ื–ืจ ืืช ื”-BIOS);
  • ื›ื™ื‘ื•ื™ ืžื™ื™ื“ื™ (ื›ื“ื™ ืฉืœืžืฉืชืžืฉ ืื™ืŸ ื–ืžืŸ ืœื”ื‘ื™ืŸ ื•ื™ื•ืชืจ ืžื›ืš, ืœืขืฉื•ืช);
  • ื”ืžืฉืš ืขื‘ื•ื“ื” ืขื ืคื ื™ื ื™ืฉืจื•ืช (ื‘ืžืงืจื” ืฉืื™ืŸ ื–ืžืŸ ืœื‘ื˜ื™ื—ื•ืช, ื›ื™ ื™ืฉ ื“ื‘ืจื™ื ื™ื•ืชืจ ื—ืฉื•ื‘ื™ื ืœืขืฉื•ืช).

ื‘ื—ื™ืจืช ื”ืคืขื•ืœื” ืชืœื•ื™ื” ื‘ืชืฆื•ืจืช Intel BG ืฉืฆื•ื™ื ื” (ื›ืœื•ืžืจ, ื‘ืžื” ืฉื ืงืจื ืžื“ื™ื ื™ื•ืช ื”ืื›ื™ืคื”), ืืฉืจ ืžืชื•ืขื“ืช ืœืฆืžื™ืชื•ืช ืขืœ ื™ื“ื™ ืกืคืง ืคืœื˜ืคื•ืจืžืช ื”ืžื—ืฉื‘ ื‘ืื—ืกื•ืŸ ืฉืชื•ื›ื ืŸ ื‘ืžื™ื•ื—ื“ - ื ืชื™ื›ื™ื ืฉืœ ืขืจื›ืช ืฉื‘ื‘ื™ื (FPF). ืขืœ ื ืงื•ื“ื” ื–ื• ื ืชืขื›ื‘ ื‘ื™ืชืจ ืคื™ืจื•ื˜ ื‘ื”ืžืฉืš.

ื‘ื ื•ืกืฃ ืœืชืฆื•ืจื”, ื”ืกืคืง ื™ื•ืฆืจ ืฉื ื™ ืžืคืชื—ื•ืช RSA 2048 ื•ื™ื•ืฆืจ ืฉื ื™ ืžื‘ื ื™ ื ืชื•ื ื™ื (ืžื•ืฆื’ ื‘ืื™ื•ืจ):

  1. ืžื ื™ืคืกื˜ ืžืคืชื— ื”ืฉื•ืจืฉ ืฉืœ ื”ืกืคืง (KEYM, OEM Root Key Manifest), ืฉืžืฆื™ื‘ ืืช ื”-SVN (ืžืกืคืจ ื’ืจืกืช ืื‘ื˜ื—ื”) ืฉืœ ืžื ื™ืคืกื˜ ื–ื”, ื”-hash SHA256 ืฉืœ ื”ืžืคืชื— ื”ืฆื™ื‘ื•ืจื™ ืฉืœ ื”ืžื ื™ืคืกื˜ ื”ื‘ื, ื”ืžืคืชื— ื”ืฆื™ื‘ื•ืจื™ RSA (ื›ืœื•ืžืจ ื”ื—ืœืง ื”ืฆื™ื‘ื•ืจื™ ืฉืœ ื”ืžื ื™ืคืกื˜ ืžืคืชื— ืฉื•ืจืฉ ืฉืœ ืกืคืง) ื›ื“ื™ ืœืืžืช ืืช ื”ื—ืชื™ืžื” ืฉืœ ืžื ื™ืคืกื˜ ื–ื” ื•ืืช ื”ื—ืชื™ืžื” ืขืฆืžื”;
  2. ืžื ื™ืคืกื˜ IBB (IBBM, Initial Boot Block Manifest), ืฉืžืฆื™ื‘ ืืช ื”-SVN ืฉืœ ืžื ื™ืคืกื˜ ื–ื”, ืืช ื”-hash SHA256 ืฉืœ ื”-IBB, ืืช ื”ืžืคืชื— ื”ืฆื™ื‘ื•ืจื™ ืœืื™ืžื•ืช ื”ื—ืชื™ืžื” ืฉืœ ืžื ื™ืคืกื˜ ื–ื” ื•ืืช ื”ื—ืชื™ืžื” ืขืฆืžื”.

ื”-hash SHA256 ืฉืœ ืžืคืชื— ื”ืฉื•ืจืฉ ืฉืœ OEM ื ื›ืชื‘ ืœืฆืžื™ืชื•ืช ืœื ืชื™ื›ื™ื ืฉืœ ืขืจื›ื•ืช ืฉื‘ื‘ื™ื (FPFs), ื‘ื“ื™ื•ืง ื›ืžื• ืชืฆื•ืจืช Intel BG. ืื ืชืฆื•ืจืช Intel BG ืžืกืคืงืช ื”ื›ืœืœื” ืฉืœ ื˜ื›ื ื•ืœื•ื’ื™ื” ื–ื•, ืื– ืžืขืชื” ื•ืื™ืœืš ืžืขืจื›ืช ื–ื• ืจืง ื”ื‘ืขืœื™ื ืฉืœ ื”ื—ืœืง ื”ืคืจื˜ื™ ืฉืœ ืžืคืชื— ื”ืฉื•ืจืฉ ืฉืœ OEM ื™ื›ื•ืœ ืœืขื“ื›ืŸ ืืช ื”-BIOS (ื›ืœื•ืžืจ ืœื”ื™ื•ืช ืžืกื•ื’ืœ ืœื—ืฉื‘ ืžื—ื“ืฉ ืืช ื”ืžื ื™ืคืกื˜ื™ื ื”ืœืœื•), ื›ืœื•ืžืจ. ืžื•ึนื›ึตืจ.

ื”ืžื’ืฃ ื”ืžื”ื™ืžืŸ ืฉืœ ืฉืจื“ื™ื ื’ืจ. Intel Boot Guard

ื›ืฉืžืกืชื›ืœื™ื ืขืœ ื”ืชืžื•ื ื”, ืžื™ื“ ืžืชืขื•ืจืจื™ื ืกืคืงื•ืช ืœื’ื‘ื™ ื”ืฆื•ืจืš ื‘ืฉืจืฉืจืช ืื™ืžื•ืช ื›ืœ ื›ืš ืืจื•ื›ื” - ื™ื›ื•ืœืช ืœื”ืฉืชืžืฉ ื‘ืžื ื™ืคืกื˜ ืื—ื“. ืœืžื” ืœืกื‘ืš?

ืœืžืขืฉื”, ืื™ื ื˜ืœ ืžืกืคืงืช ืœืคื™ื›ืš ืœืกืคืง ืืช ื”ื”ื–ื“ืžื ื•ืช ืœื”ืฉืชืžืฉ ื‘ืžืคืชื—ื•ืช IBB ืฉื•ื ื™ื ืขื‘ื•ืจ ืงื•ื•ื™ ืžื•ืฆืจื™ื ืฉื•ื ื™ื ื•ืื—ื“ ื‘ืชื•ืจ ื”ืฉื•ืจืฉ. ืื ื”ื—ืœืง ื”ืคืจื˜ื™ ืฉืœ ืžืคืชื— IBB (ืฉื—ื•ืชื ืขืœ ื”ืžื ื™ืคืกื˜ ื”ืฉื ื™) ื“ืœื•ืฃ, ื”ืชืงืจื™ืช ืชืฉืคื™ืข ืจืง ืขืœ ืงื• ืžื•ืฆืจื™ื ืื—ื“ ื•ืจืง ืขื“ ืฉื”ืกืคืง ื™ืคื™ืง ื–ื•ื’ ื—ื“ืฉ ื•ื™ืืคืฉืจ ืืช ื”ืžื ื™ืคืกื˜ื™ื ื”ืžื—ื•ืฉื‘ื™ื ืžื—ื“ืฉ ื‘ืขื“ื›ื•ืŸ ื”-BIOS ื”ื‘ื.

ืื‘ืœ ืื ืžืคืชื— ื”ืฉื•ืจืฉ ื ืคื’ืข (ืขืžื• ื ื—ืชื ื”ืžื ื™ืคืกื˜ ื”ืจืืฉื•ืŸ), ืœื ื ื™ืชืŸ ื™ื”ื™ื” ืœื”ื—ืœื™ืฃ ืื•ืชื•, ื”ืœื™ืš ื”ื‘ื™ื˜ื•ืœ ืœื ืžืกื•ืคืง. ื”-hash ืฉืœ ื”ื—ืœืง ื”ืฆื™ื‘ื•ืจื™ ืฉืœ ืžืคืชื— ื–ื” ืžืชื•ื›ื ืช ืœืชื•ืš FPFs ืื—ืช ื•ืœืชืžื™ื“.

ืชืฆื•ืจืช Intel Boot Guard

ื›ืขืช ื‘ื•ืื• ื ืกืชื›ืœ ืžืงืจื•ื‘ ืขืœ ืชืฆื•ืจืช Intel BG ื•ืขืœ ืชื”ืœื™ืš ื”ื™ืฆื™ืจื” ืฉืœื”. ืื ืชืกืชื›ืœ ืขืœ ื”ื›ืจื˜ื™ืกื™ื™ื” ื”ืžืชืื™ืžื” ื‘-GUI ืฉืœ Flash Image Tool ืž-Intel System Tool Kit (STK), ืชื‘ื—ื™ืŸ ืฉืชืฆื•ืจืช Intel BG ื›ื•ืœืœืช hash ืฉืœ ื”ื—ืœืง ื”ืฆื™ื‘ื•ืจื™ ืฉืœ ืžืคืชื— ื”ืฉื•ืจืฉ ืฉืœ ื”ืกืคืง, ื›ืžื” ืœื ื‘ืจื•ืจื™ื ืขืจื›ื™ื ื•ื›ืŸ ื”ืœืื”. ืคืจื•ืคื™ืœ Intel BG.

ื”ืžื’ืฃ ื”ืžื”ื™ืžืŸ ืฉืœ ืฉืจื“ื™ื ื’ืจ. Intel Boot Guard

ื”ืžื‘ื ื” ืฉืœ ืคืจื•ืคื™ืœ ื–ื”:

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;
};

ื‘ืื•ืคืŸ ื›ืœืœื™, ืชืฆื•ืจืช Intel BG ื”ื™ื ื™ืฉื•ืช ื’ืžื™ืฉื” ืžืื•ื“. ืฉืงื•ืœ, ืœืžืฉืœ, ืืช ื“ื’ืœ Force_Boot_Guard_ACM. ื›ืืฉืจ ื”ื•ื ื ืžื—ืง, ืื ืžื•ื“ื•ืœ ื”ื”ืคืขืœื” ACM ืฉืœ BG ื‘ืคืœืืฉ SPI ืœื ื ืžืฆื, ืœื ื™ืชืจื—ืฉ ืืชื—ื•ืœ ืžื”ื™ืžืŸ. ื–ื” ื™ื”ื™ื” ืœื ืืžื™ืŸ.

ื›ื‘ืจ ื›ืชื‘ื ื• ืœืžืขืœื” ืฉื ื™ืชืŸ ืœื”ื’ื“ื™ืจ ืืช ืžื“ื™ื ื™ื•ืช ื”ืื›ื™ืคื” ืขื‘ื•ืจ ืžืฆื‘ VB ื›ืš ืฉืื ื”ืื™ืžื•ืช ื ื›ืฉืœ, ืฉื•ื‘, ืชืชืจื—ืฉ ื”ื•ืจื“ื” ืœื ืžื”ื™ืžื ื”.

ื”ืฉืืจ ื“ื‘ืจื™ื ื›ืืœื” ื‘ื™ื“ื™ ื”ืกืคืงื™ื...

ื”-GUI ืฉืœ ื›ืœื™ ื”ืฉื™ืจื•ืช ืžืกืคืง ืืช ื”ืคืจื•ืคื™ืœื™ื ื”"ืžื•ื›ื ื™ื" ื”ื‘ืื™ื:

ืžืกืคืจ
ืžืฉื˜ืจ
ืชื™ืื•ืจ

0
No_FVME
ื˜ื›ื ื•ืœื•ื’ื™ื™ืช Intel BG ืžื•ืฉื‘ืชืช

1
VE
ืžืฆื‘ VB ืžื•ืคืขืœ, ื›ื™ื‘ื•ื™ ืœืคื™ ืคืกืง ื–ืžืŸ

2
VME
ืฉื ื™ ื”ืžืฆื‘ื™ื ืžื•ืคืขืœื™ื (VB ื•-MB), ื›ื™ื‘ื•ื™ ืœืคื™ ืคืกืง ื–ืžืŸ

3
VM
ืฉื ื™ ื”ืžืฆื‘ื™ื ืžื•ืคืขืœื™ื, ืžื‘ืœื™ ืœื›ื‘ื•ืช ืืช ื”ืžืขืจื›ืช

4
FVE
ืžืฆื‘ VB ืžื•ืคืขืœ, ื›ื™ื‘ื•ื™ ืžื™ื™ื“ื™

5
FVME
ืฉื ื™ ื”ืžืฆื‘ื™ื ืžื•ืคืขืœื™ื, ื›ื™ื‘ื•ื™ ืžื™ื™ื“ื™

ื›ืคื™ ืฉื›ื‘ืจ ื”ื•ื–ื›ืจ, ืชืฆื•ืจืช Intel BG ื—ื™ื™ื‘ืช ืœื”ื™ื›ืชื‘ ืื—ืช ื•ืœืชืžื™ื“ ืขืœ ื™ื“ื™ ืกืคืง ื”ืžืขืจื›ืช ืœืชื•ืš ื ืชื™ื›ื™ื ืฉืœ ืขืจื›ืช ืฉื‘ื‘ื™ื (FPF) - ืื—ืกื•ืŸ ืžื™ื“ืข ื—ื•ืžืจื” ืงื˜ืŸ (ืœืคื™ ืžื™ื“ืข ืœื ืžืื•ืžืช, 256 ื‘ืชื™ื ื‘ืœื‘ื“) ื‘ืชื•ืš ืขืจื›ืช ื”ืฉื‘ื‘ื™ื, ืฉื ื™ืชืŸ ืœืชื›ื ืช ื‘ื—ื•ืฅ. ืžืžืชืงื ื™ ื”ื™ื™ืฆื•ืจ ืฉืœ ืื™ื ื˜ืœ (ืื– ื–ื• ื”ืกื™ื‘ื” ื ื™ืชืŸ ืœืชื›ื ื•ืช ื‘ืฉื˜ื— ื ืชื™ื›ื™ื).

ื–ื” ื ื”ื“ืจ ืœืื—ืกื•ืŸ ืชืฆื•ืจื” ืžื›ื™ื•ื•ืŸ:

  • ื‘ืขืœ ืื–ื•ืจ ืื—ืกื•ืŸ ื ืชื•ื ื™ื ืฉื ื™ืชืŸ ืœืชื›ื ื•ืช ื—ื“-ืคืขืžื™ (ื‘ื“ื™ื•ืง ื”ื™ื›ืŸ ืฉื ื›ืชื‘ื” ืชืฆื•ืจืช Intel BG);
  • ืจืง Intel ME ื™ื›ื•ืœื” ืœืงืจื•ื ื•ืœืชื›ื ืช ืื•ืชื•.

ืœื›ืŸ, ืขืœ ืžื ืช ืœื”ื’ื“ื™ืจ ืืช ื”ืชืฆื•ืจื” ืขื‘ื•ืจ ื˜ื›ื ื•ืœื•ื’ื™ื™ืช Intel BG ืขืœ ืžืขืจื›ืช ืกืคืฆื™ืคื™ืช, ื”ืกืคืง ืขื•ืฉื” ืืช ื”ืคืขื•ืœื•ืช ื”ื‘ืื•ืช ื‘ืžื”ืœืš ื”ื™ื™ืฆื•ืจ:

  1. ืฉื™ืžื•ืฉ ื‘ื›ืœื™ ื”-Flash Image (ืž-Intel STK), ื™ื•ืฆืจ ืชืžื•ื ืช ืงื•ืฉื—ื” ืขื ืชืฆื•ืจืช Intel BG ื ืชื•ื ื” ื›ืžืฉืชื ื™ื ื‘ืชื•ืš ืื–ื•ืจ Intel ME (ืžื” ืฉื ืงืจื ืžืจืื” ื–ืžื ื™ืช ืขื‘ื•ืจ FPFs);
  2. ื‘ืืžืฆืขื•ืช ื›ืœื™ ืชื›ื ื•ืช ื”ืคืœืืฉ (ืž-Intel STK), ื›ื•ืชื‘ ืชืžื•ื ื” ื–ื• ืœื–ื™ื›ืจื•ืŸ ื”ืคืœืืฉ SPI ืฉืœ ื”ืžืขืจื›ืช ื•ืกื•ื’ืจ ืืช ืžื” ืฉื ืงืจื. ืžืฆื‘ ื™ื™ืฆื•ืจ (ื‘ืžืงืจื” ื–ื”, ื”ืคืงื•ื“ื” ื”ืžืชืื™ืžื” ื ืฉืœื—ืช ืœืื™ื ื˜ืœ ME).

ื›ืชื•ืฆืื” ืžืคืขื•ืœื•ืช ืืœื•, ืื™ื ื˜ืœ ME ืชืชื—ื™ื™ื‘ ื‘ืคื ื™ FPF ืืช ื”ืขืจื›ื™ื ื”ื ืชื•ื ื™ื ืžื”ืžืจืื” ืขื‘ื•ืจ FPFs ื‘ืื–ื•ืจ ME, ืชื’ื“ื™ืจ ืืช ื”ื”ืจืฉืื•ืช ื‘ืžืชืืจื™ ื”ื‘ื–ืง ืฉืœ SPI ืœืขืจื›ื™ื ื”ืžื•ืžืœืฆื™ื ืขืœ ื™ื“ื™ ืื™ื ื˜ืœ (ืžืชื•ืืจื™ื ื‘ืชื—ื™ืœืช ื›ืชื‘ื”) ื•ืœื‘ืฆืข ืื™ืคื•ืก ืžืขืจื›ืช.

ื ื™ืชื•ื— ื™ื™ืฉื•ื ืฉืœ Intel Boot Guard

ืขืœ ืžื ืช ืœื ืชื— ืืช ื”ื™ื™ืฉื•ื ืฉืœ ื˜ื›ื ื•ืœื•ื’ื™ื” ื–ื• ืขืœ ื“ื•ื’ืžื” ืกืคืฆื™ืคื™ืช, ื‘ื“ืงื ื• ืืช ื”ืžืขืจื›ื•ืช ื”ื‘ืื•ืช ืขื‘ื•ืจ ืขืงื‘ื•ืช ืฉืœ ื˜ื›ื ื•ืœื•ื’ื™ื™ืช Intel BG:

ืžืขืจื›ืช
ืฉื™ื ืœื‘

Gigabyte GA-H170-D3H
ืกืงื™ื™ืœื™ื™ืง, ื™ืฉ ืชืžื™ื›ื”

Gigabyte GA-Q170-D3H
ืกืงื™ื™ืœื™ื™ืง, ื™ืฉ ืชืžื™ื›ื”

Gigabyte GA-B150-HD3
ืกืงื™ื™ืœื™ื™ืง, ื™ืฉ ืชืžื™ื›ื”

MSI H170A Gaming Pro
ืกืงื™ื™ืœื™ื™ืง, ืื™ืŸ ืชืžื™ื›ื”

Lenovo ThinkPad 460
Skylake, ืชืžื™ื›ื” ื–ืžื™ื ื”, ื˜ื›ื ื•ืœื•ื’ื™ื” ืžื•ืคืขืœืช

ืœื™ื ื•ืงืก ื™ื•ื’ื” 2 Pro
ื”ืกื•ื•ืœ, ืื™ืŸ ืชืžื™ื›ื”

ืœื ื•ื‘ื• U330p
ื”ืกื•ื•ืœ, ืื™ืŸ ืชืžื™ื›ื”

"ืชืžื™ื›ื”" ืคื™ืจื•ืฉื” ื”ื ื•ื›ื—ื•ืช ืฉืœ ืžื•ื“ื•ืœ ื”ื”ืคืขืœื” Intel BG ACM, ื”ืžื ื™ืคืกื˜ื™ื ืฉื”ื•ื–ื›ืจื• ืœืขื™ืœ ื•ื”ืงื•ื“ ื”ืžืชืื™ื ื‘-BIOS, ื›ืœื•ืžืจ. ื™ื™ืฉื•ืžื™ื ืœื ื™ืชื•ื—.

ื›ื“ื•ื’ืžื”, ื ื™ืงื— ืืช ื–ื” ืฉื”ื•ืจื“ ืžื”ืžืฉืจื“. ืชืžื•ื ืช ืืชืจ ืฉืœ ืกืคืง ืฉืœ ื–ื™ื›ืจื•ืŸ ืคืœืืฉ SPI ืขื‘ื•ืจ Gigabyte GA-H170-D3H (ื’ืจืกื” F4).

ROM ืืชื—ื•ืœ ืฉืœ ืื™ื ื˜ืœ CPU

ืงื•ื“ื ื›ืœ, ื‘ื•ืื• ื ื“ื‘ืจ ืขืœ ื”ืคืขื•ืœื•ืช ืฉืœ ื”ืžืขื‘ื“ ืื ื˜ื›ื ื•ืœื•ื’ื™ื™ืช Intel BG ืžื•ืคืขืœืช.

ืœื ื ื™ืชืŸ ื”ื™ื” ืœืžืฆื•ื ื“ื•ื’ืžืื•ืช ืฉืœ ื”ืžื™ืงืจื•ืงื•ื“ ื”ืžืคื•ืขื ื—, ืœื›ืŸ, ื›ื™ืฆื“ ื”ืคืขื•ืœื•ืช ื”ืžืชื•ืืจื•ืช ืœื”ืœืŸ ืžื™ื•ืฉืžื•ืช (ื‘ืžื™ืงืจื•ืงื•ื“ ืื• ื‘ื—ื•ืžืจื”) ื”ื™ื ืฉืืœื” ืคืชื•ื—ื”. ืขื ื–ืืช, ื”ืขื•ื‘ื“ื” ืฉืžืขื‘ื“ื™ ืื™ื ื˜ืœ ืžื•ื“ืจื ื™ื™ื "ื™ื›ื•ืœื™ื" ืœื‘ืฆืข ืืช ื”ืคืขื•ืœื•ืช ื”ืœืœื• ื”ื™ื ืขื•ื‘ื“ื”.

ืœืื—ืจ ื”ื™ืฆื™ืื” ืžืžืฆื‘ RESET, ื”ืžืขื‘ื“ (ืฉื‘ืžืจื—ื‘ ื”ื›ืชื•ื‘ื•ืช ืฉืœื• ืชื•ื›ืŸ ื–ื™ื›ืจื•ืŸ ื”ืคืœืืฉ ื›ื‘ืจ ืžืžื•ืคื”) ืžื•ืฆื ืืช ื”-FIT (Firmware Interface Table). ืœืžืฆื•ื ืื•ืชื• ืงืœ, ื”ืžืฆื‘ื™ืข ืืœื™ื• ื›ืชื•ื‘ ื‘ื›ืชื•ื‘ืช FFFF FFC0h.

ื”ืžื’ืฃ ื”ืžื”ื™ืžืŸ ืฉืœ ืฉืจื“ื™ื ื’ืจ. Intel Boot Guard
ื‘ื“ื•ื’ืžื” ื–ื•, ื›ืชื•ื‘ืช ื–ื• ืžื›ื™ืœื” ืืช ื”ืขืจืš 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;
};

ื”ืžื’ืฃ ื”ืžื”ื™ืžืŸ ืฉืœ ืฉืจื“ื™ื ื’ืจ. Intel Boot Guard
ืžืกื™ื‘ื” ืœื ื™ื“ื•ืขื”, ืกื›ื•ื ื”ื‘ื“ื™ืงื” ืœื ืชืžื™ื“ ืžื—ื•ืฉื‘ ื‘ื˜ื‘ืœืื•ืช ืืœื• (ื”ืฉื“ื” ื ื•ืชืจ ืจื™ืง).

ื”ืขืจื›ื™ื ื”ื ื•ืชืจื™ื ืžืฆื‘ื™ืขื™ื ืขืœ ืงื‘ืฆื™ื ื‘ื™ื ืืจื™ื™ื ืฉื•ื ื™ื ืฉืฆืจื™ืš ืœื ืชื— / ืœื‘ืฆืข ืœืคื ื™ ื‘ื™ืฆื•ืข ื”-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;
};

ื”ืžื’ืฃ ื”ืžื”ื™ืžืŸ ืฉืœ ืฉืจื“ื™ื ื’ืจ. Intel Boot Guard
ื”ืฉื“ื” 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
};

ื›ืขืช ื‘ืจื•ืจ ืฉืื—ื“ ื”ืขืจื›ื™ื ืžืฆื‘ื™ืข ืขืœ ืžื™ืงื•ืžื• ืฉืœ ื”-ACM ื”ื‘ื™ื ืืจื™ ืฉืœ ื”ื”ืคืขืœื” ืฉืœ Intel BG. ืžื‘ื ื” ื”ื›ื•ืชืจืช ืฉืœ ื‘ื™ื ืืจื™ ื–ื” ืื•ืคื™ื™ื ื™ ืœืžื•ื“ื•ืœื™ ืงื•ื“ ืฉืคื•ืชื—ื• ืขืœ ื™ื“ื™ ืื™ื ื˜ืœ (ACMs, ืขื“ื›ื•ื ื™ ืžื™ืงืจื•ืงื•ื“, ืงื˜ืขื™ ืงื•ื“ Intel 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];
};

ื”ืžื’ืฃ ื”ืžื”ื™ืžืŸ ืฉืœ ืฉืจื“ื™ื ื’ืจ. Intel Boot Guard
ื”ืžืขื‘ื“ ื˜ื•ืขืŸ ืืช ื”ื‘ื™ื ืืจื™ ื”ื–ื” ืœืชื•ืš ื”ืžื˜ืžื•ืŸ ืฉืœื•, ืžืืžืช ื•ืžืคืขื™ืœ.

ืื™ื ื˜ืœ BG ืืชื—ื•ืœ ACM

ื›ืชื•ืฆืื” ืžื ื™ืชื•ื— ื”ืขื‘ื•ื“ื” ืฉืœ ACM ื–ื”, ื”ืชื‘ืจืจ ืฉื”ื•ื ืขื•ืฉื” ืืช ื”ืคืขื•ืœื•ืช ื”ื‘ืื•ืช:

  • ืžืงื‘ืœ ืž-Intel ME ืืช ืชืฆื•ืจืช Intel BG ืฉื ื›ืชื‘ื” ืœื ืชื™ื›ื™ื ืฉืœ ืขืจื›ืช ื”ืฉื‘ื‘ื™ื (FPFs);
  • ืžื•ืฆื ืžื ื™ืคืกื˜ื™ื ืฉืœ KEYM ื•-IBBM, ืžืืžืช ืื•ืชื.

ื›ื“ื™ ืœืžืฆื•ื ืืช ื”ืžื ื™ืคืกื˜ื™ื ื”ืœืœื•, ACM ืžืฉืชืžืฉืช ื’ื ื‘ื˜ื‘ืœืช FIT, ืฉื™ืฉ ืœื” ืฉื ื™ ืกื•ื’ื™ื ืฉืœ ืขืจื›ื™ื ื›ื“ื™ ืœื”ืฆื‘ื™ืข ืขืœ ืžื‘ื ื™ื ืืœื” (ืจืื” FIT_ENTRY_TYPES ืœืžืขืœื”).

ื‘ื•ืื• ื ืกืชื›ืœ ืžืงืจื•ื‘ ืขืœ ื”ืžื ื™ืคืกื˜ื™ื. ื‘ืžื‘ื ื” ืฉืœ ื”ืžื ื™ืคืกื˜ ื”ืจืืฉื•ืŸ, ืื ื• ืจื•ืื™ื ืžืกืคืจ ืงื‘ื•ืขื™ื ืœื ื‘ืจื•ืจื™ื, hash ืฉืœ ื”ืžืคืชื— ื”ืฆื™ื‘ื•ืจื™ ืžื”ืžื ื™ืคืกื˜ ื”ืฉื ื™, ื•ืžืคืชื— OEM Root ืฆื™ื‘ื•ืจื™ ื—ืชื•ื ื›ืžื‘ื ื” ืžืงื•ื ืŸ:

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];
};

ื”ืžื’ืฃ ื”ืžื”ื™ืžืŸ ืฉืœ ืฉืจื“ื™ื ื’ืจ. Intel Boot Guard
ื›ื“ื™ ืœืืžืช ืืช ื”ืžืคืชื— ื”ืฆื™ื‘ื•ืจื™ ืฉืœ ืžืคืชื— ื”ืฉื•ืจืฉ OEM, ืื ื• ื ื–ื›ื™ืจ ื›ื™ ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘-hash SHA256 ืžื”ื ืชื™ื›ื™ื, ืืฉืจ ื‘ืจื’ืข ื–ื” ื›ื‘ืจ ื”ืชืงื‘ืœ ืž-Intel ME.

ื‘ื•ืื• ื ืขื‘ื•ืจ ืœืžื ื™ืคืกื˜ ื”ืฉื ื™. ื”ื•ื ืžื•ืจื›ื‘ ืžืฉืœื•ืฉื” ืžื‘ื ื™ื:

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
};

ื”ืฉื ื™ ืžื›ื™ืœ ืืช ื”-Hash SHA256 ืฉืœ ื”-IBB ื•ืืช ืžืกืคืจ ื”ืžืชืืจื™ื ื”ืžืชืืจื™ื ืืช ืชื•ื›ืŸ ื”-IBB (ื›ืœื•ืžืจ ืžืžื” ืžื—ื•ืฉื‘ ื”-hash):

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 (ืžืื•ืžืช ืขืœ ื™ื“ื™ ื”-hash SHA256 ืžื”ืžื ื™ืคืกื˜ ื”ืจืืฉื•ืŸ) ื•ื”ื—ืชื™ืžื” ืฉืœ ื”ืžื ื™ืคืกื˜ ื”ื–ื”:

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

ื”ืžื’ืฃ ื”ืžื”ื™ืžืŸ ืฉืœ ืฉืจื“ื™ื ื’ืจ. Intel Boot Guard
ืื–, ืขื•ื“ ืœืคื ื™ ืชื—ื™ืœืช ื‘ื™ืฆื•ืข ื”-UEFI BIOS, ื”ืžืขื‘ื“ ื™ืฉื™ืง ืืช ACM, ืืฉืจ ื™ืืžืช ืืช ื”ืื•ืชื ื˜ื™ื•ืช ืฉืœ ืชื•ื›ืŸ ื”ืกืขื™ืคื™ื ืขื ืงื•ื“ ื”ืคืื–ื” SEC ื•-PEI. ืœืื—ืจ ืžื›ืŸ, ื”ืžืขื‘ื“ ื™ื•ืฆื ืžื”-ACM, ื ืข ืœืื•ืจืš ื•ืงื˜ื•ืจ RESET ื•ืžืชื—ื™ืœ ืœื”ืคืขื™ืœ ืืช ื”-BIOS.

ื”ืžื—ื™ืฆื” ื”ืžืื•ืžืชืช ืฉืœ PEI ื—ื™ื™ื‘ืช ืœื”ื›ื™ืœ ืžื•ื“ื•ืœ ืฉื™ื‘ื“ื•ืง ืืช ืฉืืจ ื”-BIOS (ืงื•ื“ DXE). ืžื•ื“ื•ืœ ื–ื” ื›ื‘ืจ ืžืคื•ืชื— ืขืœ ื™ื“ื™ IBV (ืกืคืง BIOS ืขืฆืžืื™) ืื• ืกืคืง ื”ืžืขืจื›ืช ืขืฆืžื•. ื›ื™ ืจืง ืžืขืจื›ื•ืช Lenovo ื•-Gigabyte ื”ืชื‘ืจืจื• ื›ืขื•ืžื“ื•ืช ืœืจืฉื•ืชื ื• ื•ื‘ืขืœื•ืช ืชืžื™ื›ื” ืฉืœ Intel BG, ื‘ื•ืื• ื ื‘ื—ืŸ ืืช ื”ืงื•ื“ ืฉื—ื•ืœืฅ ืžืžืขืจื›ื•ืช ืืœื•.

ืžื•ื“ื•ืœ UEFI BIOS LenovoVerifiedBootPei

ื‘ืžืงืจื” ืฉืœ ืœื ื•ื‘ื•, ื”ืชื‘ืจืจ ืฉืžื“ื•ื‘ืจ ื‘ืžื•ื“ื•ืœ LenovoVerifiedBootPei {B9F2AC77-54C7-4075-B42E-C36325A9468D}, ืฉืคื•ืชื— ืขืœ ื™ื“ื™ Lenovo.

ืชืคืงื™ื“ื• ื”ื•ื ืœื—ืคืฉ (ืขืœ ื™ื“ื™ GUID) ื˜ื‘ืœืช hash ืขื‘ื•ืจ ื”-DXE ื•ืœืืžืช ืืช ื”-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, ื”ืชื‘ืจืจ ืฉื–ื”ื• ืžื•ื“ื•ืœ BootGuardPei {B41956E1-7CA2-42DB-9562-168389F0F066}, ืฉืคื•ืชื— ืขืœ ื™ื“ื™ AMI, ื•ืœื›ืŸ ืงื™ื™ื ื‘ื›ืœ BIOS ืฉืœ AMI ืขื ืชืžื™ื›ื” ืฉืœ Intel BG.

ืืœื’ื•ืจื™ืชื ื”ืคืขื•ืœื” ืฉืœื• ืฉื•ื ื” ื‘ืžืงืฆืช, ืขื ื–ืืช, ื”ื•ื ืžืกืชื›ื ื‘ืื•ืชื” ืžื™ื“ื”:

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;
};

Intel Boot Guard 2.x

ื‘ื•ืื• ื ื“ื‘ืจ ื‘ืงืฆืจื” ืขืœ ื™ื™ืฉื•ื ื ื•ืกืฃ ืฉืœ Intel Boot Guard, ืฉื ืžืฆื ื‘ืžืขืจื›ืช ื—ื“ืฉื” ื™ื•ืชืจ ื”ืžื‘ื•ืกืกืช ืขืœ Intel SoC ืขื ืžื™ืงืจื•-ืืจื›ื™ื˜ืงื˜ื•ืจืช Apollo Lake - ASRock J4205-IT.

ืœืžืจื•ืช ืฉื’ืจืกื” ื–ื• ืชืฉืžืฉ ืจืง ื‘-SoCs (ืžืขืจื›ื•ืช ื—ื“ืฉื•ืช ืขื ืžื™ืงืจื•-ืืจื›ื™ื˜ืงื˜ื•ืจืช ืžืขื‘ื“ Kaby Lake ืžืžืฉื™ื›ื•ืช ืœื”ืฉืชืžืฉ ื‘-Intel Boot Guard 1.x), ื™ืฉ ืœื” ืขื ื™ื™ืŸ ืจื‘ ื‘ื‘ื—ื™ื ืช ืืคืฉืจื•ืช ืืจื›ื™ื˜ืงื˜ื•ืจื” ื—ื“ืฉื” ืขื‘ื•ืจ ืคืœื˜ืคื•ืจืžื•ืช ื”ืžื‘ื•ืกืกื•ืช ืขืœ Intel SoCs, ืืฉืจ ื ืจืืชื” ืžื•ื—ืฉื™ืช ืฉื™ื ื•ื™ื™ื, ืœืžืฉืœ:

  • ืื–ื•ืจื™ BIOS ื•-Intel ME (ืื• ืœื™ืชืจ ื“ื™ื•ืง Intel TXE, ืœืคื™ ื”ืžื™ื ื•ื— ืฉืœ Intel SoC) ื”ื ื›ืขืช ืื–ื•ืจ IFWI ืื—ื“;
  • ืœืžืจื•ืช ืฉ-Intel BG ื”ื•ืคืขืœื” ื‘ืคืœื˜ืคื•ืจืžื”, ืžื‘ื ื™ื ื›ื’ื•ืŸ FIT, KEYM, IBBM ืœื ื ืžืฆืื• ื‘ื–ื™ื›ืจื•ืŸ ื”ื‘ื–ืง;
  • ื‘ื ื•ืกืฃ ืœืœื™ื‘ื•ืช TXE ื•-ISH (x86), ื ื•ืกืคื” ืœืขืจื›ืช ื”ืฉื‘ื‘ื™ื ืœื™ื‘ื” ืฉืœื™ืฉื™ืช (ืฉื•ื‘ ARC, ืื’ื‘) - PMC (Power Management Controller), ื”ืงืฉื•ืจื” ืœื”ื‘ื˜ื—ืช ื”ืชืคืขื•ืœ ืฉืœ ืชืช-ืžืขืจื›ืช ื”ื—ืฉืžืœ ื•ืœื ื™ื˜ื•ืจ ื‘ื™ืฆื•ืขื™ื.

ื”ืžื’ืฃ ื”ืžื”ื™ืžืŸ ืฉืœ ืฉืจื“ื™ื ื’ืจ. Intel Boot Guard
ื”ืชื•ื›ืŸ ืฉืœ ืื–ื•ืจ IFWI ื”ื—ื“ืฉ ื”ื•ื ืงื‘ื•ืฆื” ืฉืœ ื”ืžื•ื“ื•ืœื™ื ื”ื‘ืื™ื:

ืงื™ื–ื•ื–
ืฉื
ืชื™ืื•ืจ

0000 2000 ืฉืขื•ืช
SMIP
ืชืฆื•ืจืช ืคืœื˜ืคื•ืจืžื” ื›ืœืฉื”ื™, ื—ืชื•ืžื” ืขืœ ื™ื“ื™ ื”ืกืคืง

0000 6000 ืฉืขื•ืช
RBEP
ืกืขื™ืฃ ืงื•ื“ ืงื•ืฉื—ื” ืฉืœ Intel TXE, x86, ื—ืชื•ื ืขืœ ื™ื“ื™ Intel

0001 0000 ืฉืขื•ืช
PMCP
ืกืขื™ืฃ ืงื•ื“ ืงื•ืฉื—ื” Intel PMC, ARC, ื—ืชื•ื ืขืœ ื™ื“ื™ Intel

0002 0000 ืฉืขื•ืช
FTPR
ืกืขื™ืฃ ืงื•ื“ ืงื•ืฉื—ื” ืฉืœ Intel TXE, x86, ื—ืชื•ื ืขืœ ื™ื“ื™ Intel

0007B000h
UCOD
ืขื“ื›ื•ื ื™ ืžื™ืงืจื•ืงื•ื“ ืฉืœ CPU ื—ืชื•ืžื™ื ืขืœ ื™ื“ื™ ืื™ื ื˜ืœ

0008 0000 ืฉืขื•ืช
IBBP
UEFI BIOS, SEC/PEI phases, x86, ืกืคืง ื—ืชื•ื

0021 8000 ืฉืขื•ืช
ISHC
ืงื˜ืข ืงื•ื“ ืฉืœ ืงื•ืฉื—ืช Intel ISH, x86, ื—ืชื•ื ืขืœ ื™ื“ื™ ื”ืกืคืง

0025 8000 ืฉืขื•ืช
NFTP
ืกืขื™ืฃ ืงื•ื“ ืงื•ืฉื—ื” ืฉืœ Intel TXE, x86, ื—ืชื•ื ืขืœ ื™ื“ื™ Intel

0036 1000 ืฉืขื•ืช
IUNP
ืœื ื™ื“ื•ืข

0038 1000 ืฉืขื•ืช
OBBP
UEFI BIOS, DXE phase, x86, ืœื ื—ืชื•ื

ื‘ืžื”ืœืš ื”ื ื™ืชื•ื— ืฉืœ ืงื•ืฉื—ืช TXE, ื”ืชื‘ืจืจ ื›ื™ ืœืื—ืจ RESET, TXE ืฉื•ืžืจ ืขืœ ื”ืžืขื‘ื“ ื‘ืžืฆื‘ ื–ื” ืขื“ ืฉื”ื•ื ืžื›ื™ืŸ ืืช ื”ืชื•ื›ืŸ ื”ื‘ืกื™ืกื™ ืฉืœ ืžืจื—ื‘ ื”ื›ืชื•ื‘ื•ืช ืขื‘ื•ืจ ื”-CPU (FIT, ACM, RESET ื•ืงื˜ื•ืจ...). ื™ืชืจื” ืžื›ืš, TXE ืžืฆื™ื‘ ืืช ื”ื ืชื•ื ื™ื ื”ืœืœื• ื‘-SRAM ืฉืœื•, ื•ืœืื—ืจ ืžื›ืŸ ื”ื•ื ืžืกืคืง ืœืžืขื‘ื“ ื‘ืื•ืคืŸ ื–ืžื ื™ ื’ื™ืฉื” ืœืฉื ื•"ืžืฉื—ืจืจ" ืื•ืชื ืž-RESET.

ืขืœ ื”ืžืฉืžืจ ืฉืœ rootkits

ื•ื‘ื›ืŸ, ืขื›ืฉื™ื• ื‘ื•ืื• ื ืขื‘ื•ืจ ืœ"ื—ื". ื’ื™ืœื™ื ื• ืคืขื ืฉื‘ืžืขืจื›ื•ืช ืจื‘ื•ืช, ืœืชื™ืื•ืจื™ ืคืœืืฉ SPI ื™ืฉ ื”ืจืฉืื•ืช ื’ื™ืฉื” ืœืื–ื•ืจื™ื ืฉืœ ื–ื™ื›ืจื•ืŸ ืคืœืืฉ SPI ื›ืš ืฉื›ืœ ื”ืžืฉืชืžืฉื™ื ื‘ื–ื™ื›ืจื•ืŸ ื”ื–ื” ื™ื›ื•ืœื™ื ื’ื ืœื›ืชื•ื‘ ื•ื’ื ืœืงืจื•ื ื›ืœ ืื–ื•ืจ. ื”ึธื”ึตืŸ. ืื™ืŸ ืกื™ื›ื•ื™.

ืœืื—ืจ ื‘ื“ื™ืงื” ืขื ื›ืœื™ ื”ืฉื™ืจื•ืช MEinfo (ืž-Intel STK), ืจืื™ื ื• ืฉืžืฆื‘ ื”ื™ื™ืฆื•ืจ ื‘ืžืขืจื›ื•ืช ืืœื• ืœื ื ืกื’ืจ, ื•ืœื›ืŸ ื ืชื™ื›ื™ื ืฉืœ ืขืจื›ืช ื”ืฉื‘ื‘ื™ื (FPFs) ื ื•ืชืจื• ื‘ืžืฆื‘ ื‘ืœืชื™ ืžื•ื’ื“ืจ. ื›ืŸ, Intel BG ืœื ืžื•ืคืขืœืช ื•ืœื ืžื•ืฉื‘ืชืช ื‘ืžืงืจื™ื ื›ืืœื”.

ืื ื—ื ื• ืžื“ื‘ืจื™ื ืขืœ ื”ืžืขืจื›ื•ืช ื”ื‘ืื•ืช (ืœื’ื‘ื™ Intel BG ื•ืžื” ืฉื™ืชื•ืืจ ื‘ื”ืžืฉืš ื”ืžืืžืจ, ื ื“ื‘ืจ ืขืœ ืžืขืจื›ื•ืช ืขื ืžื™ืงืจื•-ืืจื›ื™ื˜ืงื˜ื•ืจืช ืžืขื‘ื“ Haswell ื•ืžืขืœื”):

  • ื›ืœ ืžื•ืฆืจื™ Gigabyte;
  • ื›ืœ ืžื•ืฆืจื™ MSI;
  • 21 ื“ื’ืžื™ ืžื—ืฉื‘ ื ื™ื™ื“ ืฉืœ ืœื ื•ื‘ื• ื•-4 ื“ื’ืžื™ ืฉืจืช Lenovo.

ื›ืžื•ื‘ืŸ, ื“ื™ื•ื•ื—ื ื• ืขืœ ื”ืžืžืฆื ืœืกืคืงื™ื ืืœื”, ื›ืžื• ื’ื ืœืื™ื ื˜ืœ.

ืชื’ื•ื‘ื” ื ืื•ืชื” ื”ื’ื™ืขื” ืจืง ืž Lenovoืฉื”ื›ื™ืจ ื‘ื‘ืขื™ื” ื• ืฉื—ืจืจ ืชื™ืงื•ืŸ.

Gigabyte ื ืจืื” ืฉื”ื ืงื™ื‘ืœื• ืžื™ื“ืข ืขืœ ื”ืคื’ื™ืขื•ืช, ืืš ืœื ื”ื’ื™ื‘ื• ื‘ืฉื•ื ืฆื•ืจื”.

ืชืงืฉื•ืจืช ืขื MSI ื ืชืงืข ืœื—ืœื•ื˜ื™ืŸ ืœื‘ืงืฉืชื ื• ืœืฉืœื•ื— ืืช ืžืคืชื— ื”-PGP ื”ืฆื™ื‘ื•ืจื™ ืฉืœื ื• (ืขืœ ืžื ืช ืœืฉืœื•ื— ืœื”ื ื™ื™ืขื•ืฅ ืื‘ื˜ื—ื” ืžื•ืฆืคืŸ). ื”ื ื”ืฆื”ื™ืจื• ืฉื”ื "ื™ืฆืจืŸ ื—ื•ืžืจื” ื•ืื™ื ื ืžื™ื™ืฆืจื™ื ืžืคืชื—ื•ืช PGP".

ืื‘ืœ ื™ื•ืชืจ ืœืขื ื™ื™ืŸ. ืžื›ื™ื•ื•ืŸ ืฉื”ื ืชื™ื›ื™ื ื ื•ืชืจื™ื ื‘ืžืฆื‘ ืœื ืžื•ื’ื“ืจ, ื”ืžืฉืชืžืฉ (ืื• ื”ืชื•ืงืฃ) ื™ื›ื•ืœ ืœืชื›ื ืช ืื•ืชื ื‘ืขืฆืžื• (ื”ืงืฉื” ื‘ื™ื•ืชืจ ื”ื•ื ืžืฆื ืืช Intel STK). ื–ื” ื“ื•ืจืฉ ืืช ื”ืฉืœื‘ื™ื ื”ื‘ืื™ื.

1. ืืชื—ื•ืœ ืœืชื•ืš ืžืขืจื›ืช ื”ื”ืคืขืœื” ืฉืœ Windows (ื‘ืื•ืคืŸ ื›ืœืœื™, ื ื™ืชืŸ ืœื‘ืฆืข ืืช ื”ืฉืœื‘ื™ื ื”ืžืชื•ืืจื™ื ืœื”ืœืŸ ื’ื ืชื—ืช ืœื™ื ื•ืงืก, ืื ืืชื” ืžืคืชื— ืื ืœื•ื’ื™ ืฉืœ Intel STK ืขื‘ื•ืจ ืžืขืจื›ืช ื”ื”ืคืขืœื” ื”ืจืฆื•ื™ื”). ื‘ืืžืฆืขื•ืช ื›ืœื™ ื”ืฉื™ืจื•ืช MEinfo, ื•ื“ื ืฉื”ื ืชื™ื›ื™ื ื‘ืžืขืจื›ืช ื–ื• ืื™ื ื ืžืชื•ื›ื ืชื™ื.

ื”ืžื’ืฃ ื”ืžื”ื™ืžืŸ ืฉืœ ืฉืจื“ื™ื ื’ืจ. Intel Boot Guard
2. ืงืจื ืืช ื”ืชื•ื›ืŸ ืฉืœ ื–ื™ื›ืจื•ืŸ ื”ื‘ื–ืง ื‘ืืžืฆืขื•ืช ื›ืœื™ ื”ืชื›ื ื•ืช ื”ืคืœืืฉ.

ื”ืžื’ืฃ ื”ืžื”ื™ืžืŸ ืฉืœ ืฉืจื“ื™ื ื’ืจ. Intel Boot Guard
3. ืคืชื— ืืช ืชืžื•ื ืช ื”ืงืจื™ืื” ื‘ืืžืฆืขื•ืช ื›ืœ ื›ืœื™ ืขืจื™ื›ืช UEFI BIOS, ื‘ืฆืข ืืช ื”ืฉื™ื ื•ื™ื™ื ื”ื“ืจื•ืฉื™ื (ื”ื˜ืžื™ืข Rootkit, ืœืžืฉืœ), ืฆื•ืจ / ืขืจื•ืš ืืช ืžื‘ื ื™ KEYM ื•-IBBM ื”ืงื™ื™ืžื™ื ื‘ืื–ื•ืจ ME.

ื”ืžื’ืฃ ื”ืžื”ื™ืžืŸ ืฉืœ ืฉืจื“ื™ื ื’ืจ. Intel Boot Guard
ื”ืžื’ืฃ ื”ืžื”ื™ืžืŸ ืฉืœ ืฉืจื“ื™ื ื’ืจ. Intel Boot Guard
ื”ื—ืœืง ื”ืฆื™ื‘ื•ืจื™ ืฉืœ ืžืคืชื— RSA ืžื•ื“ื’ืฉ ื‘ืชืžื•ื ื”, ืฉื”-hash ืฉืœื• ื™ืชื›ื ืช ื‘ื ืชื™ื›ื™ื ืฉืœ ืขืจื›ืช ื”ืฉื‘ื‘ื™ื ื™ื—ื“ ืขื ืฉืืจ ืชืฆื•ืจืช Intel BG.

4. ื‘ืืžืฆืขื•ืช ื›ืœื™ ื”-Flash Image Tool, ื‘ื ื” ืชืžื•ื ืช ืงื•ืฉื—ื” ื—ื“ืฉื” (ืขืœ ื™ื“ื™ ื”ื’ื“ืจืช ืชืฆื•ืจืช Intel BG).

ื”ืžื’ืฃ ื”ืžื”ื™ืžืŸ ืฉืœ ืฉืจื“ื™ื ื’ืจ. Intel Boot Guard
5. ื›ืชื•ื‘ ืชืžื•ื ื” ื—ื“ืฉื” ืœื”ื‘ื”ื‘ ื‘ืืžืฆืขื•ืช ื›ืœื™ ื”ืชื›ื ื•ืช Flash, ื•ื“ื ื‘ืืžืฆืขื•ืช MEinfo ืฉืื–ื•ืจ ื”-ME ืžื›ื™ืœ ื›ืขืช ืืช ืชืฆื•ืจืช Intel BG.

ื”ืžื’ืฃ ื”ืžื”ื™ืžืŸ ืฉืœ ืฉืจื“ื™ื ื’ืจ. Intel Boot Guard
6. ื”ืฉืชืžืฉ ื‘ื›ืœื™ ืชื›ื ื•ืช ืคืœืืฉ ื›ื“ื™ ืœืกื’ื•ืจ ืืช ืžืฆื‘ ื”ื™ื™ืฆื•ืจ.

ื”ืžื’ืฃ ื”ืžื”ื™ืžืŸ ืฉืœ ืฉืจื“ื™ื ื’ืจ. Intel Boot Guard
7. ื”ืžืขืจื›ืช ืชืืชื—ืœ, ื•ืœืื—ืจ ืžื›ืŸ, ื‘ืืžืฆืขื•ืช MEinfo, ืชื•ื›ืœ ืœื•ื•ื“ื ืฉื”-FPFs ืžืชื•ื›ื ืชื™ื ื›ืขืช.

ื”ืžื’ืฃ ื”ืžื”ื™ืžืŸ ืฉืœ ืฉืจื“ื™ื ื’ืจ. Intel Boot Guard
ื”ืคืขื•ืœื•ืช ื”ืœืœื• ืœื ืฆื— ื”ืคืขืœ ืืช Intel BG ื‘ืžืขืจื›ืช ื–ื•. ื–ื” ื™ื”ื™ื” ื‘ืœืชื™ ืืคืฉืจื™ ืœื‘ื˜ืœ ืืช ื”ืคืขื•ืœื”, ื›ืœื•ืžืจ:

  • ืจืง ื”ื‘ืขืœื™ื ืฉืœ ื”ื—ืœืง ื”ืคืจื˜ื™ ืฉืœ ืžืคืชื— ื”ืฉื•ืจืฉ (ื›ืœื•ืžืจ ื–ื” ืฉื”ืคืขื™ืœ ืืช Intel BG) ื™ื•ื›ืœ ืœืขื“ื›ืŸ ืืช UEFI BIOS ื‘ืžืขืจื›ืช ื–ื•;
  • ืื ืชื—ื–ื™ืจ ืืช ื”ืงื•ืฉื—ื” ื”ืžืงื•ืจื™ืช ืœืžืขืจื›ืช ื–ื•, ืœืžืฉืœ, ื‘ืืžืฆืขื•ืช ืžืชื›ื ืช, ื”ื™ื ืืคื™ืœื• ืœื ืชื™ื“ืœืง (ืชื•ืฆืื” ืฉืœ ืžื“ื™ื ื™ื•ืช ืื›ื™ืคื” ื‘ืžืงืจื” ืฉืœ ืฉื’ื™ืืช ืื™ืžื•ืช);
  • ื›ื“ื™ ืœื”ื™ืคื˜ืจ ืž-UEFI BIOS ื›ื–ื”, ืืชื” ืฆืจื™ืš ืœื”ื—ืœื™ืฃ ืืช ืขืจื›ืช ื”ืฉื‘ื‘ื™ื ืขื FPFs ืžืชื•ื›ื ืชื™ื ืขื "ื ืงื™" (ื›ืœื•ืžืจ, ืœื”ืœื—ื ืžื—ื“ืฉ ืืช ืขืจื›ืช ื”ืฉื‘ื‘ื™ื ืื ื™ืฉ ืœืš ื’ื™ืฉื” ืœืชื—ื ืช ื”ืœื—ืžื” ืื™ื ืคืจื ืื“ื•ื ื‘ืžื—ื™ืจ ืฉืœ ืžื›ื•ื ื™ืช, ืื• ืคืฉื•ื˜ ืœื”ื—ืœื™ืฃ ืืช ืœื•ื— ื”ืื ).

ื›ื“ื™ ืœื”ื‘ื™ืŸ ืžื” Rootkit ื›ื–ื” ื™ื›ื•ืœ ืœืขืฉื•ืช, ืืชื” ืฆืจื™ืš ืœื”ืขืจื™ืš ืžื” ืžืืคืฉืจ ืœื‘ืฆืข ืืช ื”ืงื•ื“ ืฉืœืš ื‘ืกื‘ื™ื‘ืช UEFI BIOS. ื ื’ื™ื“, ื‘ืžืฆื‘ ื”ืคืจื™ื‘ื™ืœื’ื™ ื‘ื™ื•ืชืจ ืฉืœ ื”ืžืขื‘ื“ - SMM. ืขืจื›ืช ืฉื•ืจืฉ ื›ื–ื• ืขืฉื•ื™ื” ืœื”ื™ื•ืช ื‘ืขืœืช ื”ืžืืคื™ื™ื ื™ื ื”ื‘ืื™ื:

  • ืœื”ืชื‘ืฆืข ื‘ืžืงื‘ื™ืœ ืœืžืขืจื›ืช ื”ื”ืคืขืœื” (ืชื•ื›ืœ ืœื”ื’ื“ื™ืจ ืขื™ื‘ื•ื“ ืขืœ ื™ื“ื™ ื™ืฆื™ืจืช ืคืกื™ืงืช SMI, ืฉืชื•ืคืขืœ ืขืœ ื™ื“ื™ ื˜ื™ื™ืžืจ);
  • ื™ืฉ ืืช ื›ืœ ื”ื™ืชืจื•ื ื•ืช ืฉืœ ืœื”ื™ื•ืช ื‘ืžืฆื‘ SMM (ื’ื™ืฉื” ืžืœืื” ืœืชื•ื›ืŸ ืฉืœ ืžืฉืื‘ื™ RAM ื•ื—ื•ืžืจื”, ืกื•ื“ื™ื•ืช ืžืžืขืจื›ืช ื”ื”ืคืขืœื”);
  • ื ื™ืชืŸ ืœื”ืฆืคื™ืŸ ื•ืœืคืขื ื— ืืช ืงื•ื“ ื”-rootkit ื›ืืฉืจ ื”ื•ื ืžื•ืคืขืœ ื‘ืžืฆื‘ SMM. ื›ืœ ื”ื ืชื•ื ื™ื ื”ื–ืžื™ื ื™ื ืจืง ื‘ืžืฆื‘ SMM ื™ื›ื•ืœื™ื ืœืฉืžืฉ ื›ืžืคืชื— ื”ืฆืคื ื”. ืœื“ื•ื’ืžื”, hash ืžืงื‘ื•ืฆืช ื›ืชื•ื‘ื•ืช ื‘-SMRAM. ื›ื“ื™ ืœืงื‘ืœ ืžืคืชื— ื–ื”, ืชืฆื˜ืจืš ืœื˜ืคืก ืœ-SMM. ื•ื–ื” ื™ื›ื•ืœ ืœื”ื™ืขืฉื•ืช ื‘ืฉืชื™ ื“ืจื›ื™ื. ืžืฆื ืืช ื”-RCE ื‘ืงื•ื“ SMM ื•ื ืฆืœ ืื•ืชื•, ืื• ื”ื•ืกืฃ ืžื•ื“ื•ืœ SMM ืžืฉืœืš ืœ-BIOS, ื•ื–ื” ื‘ืœืชื™ ืืคืฉืจื™, ืžื›ื™ื•ื•ืŸ ืฉื”ืคืขืœื ื• ืืช Boot Guard.

ืœืคื™ื›ืš, ืคื’ื™ืขื•ืช ื–ื• ืžืืคืฉืจืช ืœืชื•ืงืฃ:

  • ืฆื•ืจ rootkit ืžื•ืกืชืจ, ื‘ืœืชื™ ื ื™ืชืŸ ืœื”ืกืจื” ืฉืœ ืžื˜ืจื” ืœื ื™ื“ื•ืขื” ื‘ืžืขืจื›ืช;
  • ื‘ืฆืข ืืช ื”ืงื•ื“ ืฉืœืš ืขืœ ืื—ืช ืžืœื™ื‘ื•ืช ืขืจื›ืช ื”ืฉื‘ื‘ื™ื ื‘ืชื•ืš ื”-Intel SoC, ื›ืœื•ืžืจ ืขืœ ื”-Intel ISH (ืชืกืชื›ืœ ืžืงืจื•ื‘ ืขืœ ื”ืชืžื•ื ื”).

ื”ืžื’ืฃ ื”ืžื”ื™ืžืŸ ืฉืœ ืฉืจื“ื™ื ื’ืจ. Intel Boot Guard
ื”ืžื’ืฃ ื”ืžื”ื™ืžืŸ ืฉืœ ืฉืจื“ื™ื ื’ืจ. Intel Boot Guard
ืœืžืจื•ืช ืฉื”ื™ื›ื•ืœื•ืช ืฉืœ ืชืช-ื”ืžืขืจื›ืช ืฉืœ Intel ISH ืขื“ื™ื™ืŸ ืœื ื ื—ืงืจื•, ื ืจืื” ืฉื–ื”ื• ื•ืงื˜ื•ืจ ื”ืชืงืคื” ืžืขื ื™ื™ืŸ ื ื’ื“ Intel ME.

ืžืžืฆืื™ื

  1. ื”ืžื—ืงืจ ืกื™ืคืง ืชื™ืื•ืจ ื˜ื›ื ื™ ืฉืœ ืื•ืคืŸ ื”ืคืขื•ืœื” ืฉืœ ื˜ื›ื ื•ืœื•ื’ื™ื™ืช ื”-Intel Boot Guard. ืžื™ื ื•ืก ื›ืžื” ืกื•ื“ื•ืช ื‘ืื‘ื˜ื—ื” ืฉืœ ืื™ื ื˜ืœ ื‘ืืžืฆืขื•ืช ืžื•ื“ืœ ืขืจืคื•ืœ.
  2. ืžื•ืฆื’ ืชืจื—ื™ืฉ ืชืงื™ืคื” ื”ืžืืคืฉืจ ื™ืฆื™ืจืช rootkit ื‘ืœืชื™ ื ื™ืชืŸ ืœื”ืกืจื” ื‘ืžืขืจื›ืช.
  3. ืจืื™ื ื• ืฉืžืขื‘ื“ื™ ืื™ื ื˜ืœ ืžื•ื“ืจื ื™ื™ื ืžืกื•ื’ืœื™ื ืœื”ืคืขื™ืœ ื”ืจื‘ื” ืงื•ื“ ืงื ื™ื™ื ื™ ืขื•ื“ ืœืคื ื™ ืฉื”-BIOS ืžืชื—ื™ืœ.
  4. ืคืœื˜ืคื•ืจืžื•ืช ืขื ืืจื›ื™ื˜ืงื˜ื•ืจืช Intel 64 ื”ื•ืคื›ื•ืช ืคื—ื•ืช ื•ืคื—ื•ืช ืžืชืื™ืžื•ืช ืœื”ืคืขืœืช ืชื•ื›ื ื” ื—ื•ืคืฉื™ืช: ืื™ืžื•ืช ื—ื•ืžืจื”, ืžืกืคืจ ื”ื•ืœืš ื•ื’ื“ืœ ืฉืœ ื˜ื›ื ื•ืœื•ื’ื™ื•ืช ืงื ื™ื™ื ื™ื•ืช ื•ืชืชื™ ืžืขืจื›ื•ืช (ืฉืœื•ืฉ ืœื™ื‘ื•ืช ื‘ืขืจื›ืช ื”ืฉื‘ื‘ื™ื SoC: x86 ME, x86 ISH ื•-ARC PMC).

ืžืงืœื•ืช

ืกืคืงื™ื ืฉืžืฉืื™ืจื™ื ื‘ื›ื•ื•ื ื” ืืช ืžืฆื‘ ื”ื™ื™ืฆื•ืจ ืคืชื•ื— ืฆืจื™ื›ื™ื ื‘ื”ื—ืœื˜ ืœืกื’ื•ืจ ืื•ืชื•. ืขื“ ื›ื”, ื”ื ืจืง ืขื•ืฆืžื™ื ืขื™ื ื™ื™ื ื•ืžืขืจื›ื•ืช Kaby Lake ื”ื—ื“ืฉื•ืช ืžืจืื•ืช ื–ืืช.

ืžืฉืชืžืฉื™ื ื™ื›ื•ืœื™ื ืœื”ืฉื‘ื™ืช ืืช Intel BG ื‘ืžืขืจื›ื•ืช ืฉืœื”ื (ื”ืžื•ืฉืคืขื•ืช ืžื”ืคื’ื™ืขื•ืช ื”ืžืชื•ืืจืช) ืขืœ ื™ื“ื™ ื”ืคืขืœืช ื›ืœื™ ื”ืชื›ื ื•ืช Flash ืขื ื”ืืคืฉืจื•ืช -closemnf. ืจืืฉื™ืช, ืขืœื™ืš ืœื•ื•ื“ื (ื‘ืืžืฆืขื•ืช MEinfo) ืฉื”ืชืฆื•ืจื” ืฉืœ Intel BG ื‘ืื–ื•ืจ ME ืžืกืคืงืช ืœื›ื™ื‘ื•ื™ ืžื“ื•ื™ืง ืฉืœ ื˜ื›ื ื•ืœื•ื’ื™ื” ื–ื• ืœืื—ืจ ืชื›ื ื•ืช ื‘-FPFs.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”