diff --git a/README.md b/README.md index 3f79315..23d966c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # Modern Intel Firmware Tool :sparkles: -This is a new utility to analyze and edit firmware images for Intel platforms. +This is a new utility to analyze and edit firmware images for [Intel platforms]( +docs/platforms.md). Based on knowledge from [`me_cleaner`](https://github.com/corna/me_cleaner), [MEAnalyzer](https://github.com/platomav/meanalyzer) and related research, diff --git a/docs/intel_flash_partitioning.drawio b/docs/intel_flash_partitioning.drawio new file mode 100644 index 0000000..d533056 --- /dev/null +++ b/docs/intel_flash_partitioning.drawio @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/intel_flash_partitioning.png b/docs/intel_flash_partitioning.png new file mode 100644 index 0000000..be7b3a1 Binary files /dev/null and b/docs/intel_flash_partitioning.png differ diff --git a/docs/platforms.md b/docs/platforms.md new file mode 100644 index 0000000..9e6ef47 --- /dev/null +++ b/docs/platforms.md @@ -0,0 +1,68 @@ +# Intel platforms + +Over the years and decades, [Intel has developed many hardware platforms]( +https://en.wikipedia.org/wiki/List_of_Intel_processors). + +Since the 4-bit 4004 in 1971, they have progressed over 8-bit up to 64-bit +systems, retaining a lot of backwards compatibility. Starting with the ICH7 +based platforms, Intel introduced their [AMT (Active Management Technology)]( +https://en.wikipedia.org/wiki/Intel_AMT_versions), an out-of-band management +solution[^1] for remote provisioning and support. + +AMT evolved with more features over time, carrying the [vPro label for machines +targeting the business market]( +https://www.intel.com/content/www/us/en/architecture-and-technology/vpro/overview.html) +and finally converging with more security features such as Boot Guard[^2], +Intel's secure boot implementation, digital content protection (DRM), and more. + +Now running on a coprocessor called the (Converged Security and) Manageability +Engine[^3], or (CS)ME for short, henceforth abbreviated as _ME_, a full second +operating system of its own is backing the platform. + +## Boot flow + +The ME has its own firmware and bootstraps an Intel platform. The main x86 cores +are held in reset until the ME releases them to boot with their own firmware. + +Both the ME firmware and the main x86 firmware are stored in the same flash part +on a mainboard, partitioned via the Intel Flash Descriptior (IFD). + +The following diagram is based on knowledge from various sources, including the +[coreboot documentation on Intel](https://doc.coreboot.org/soc/intel/fit.html). + + + +## ME classification and security + +Security researchers have analyzed the ME and divided hardware variants into 3 +generations[^4] thus far, each with their own multiple firmware versions, +including security patch releases[^5][^6]. +One core aspect in security research has been Boot Guard[^7][^8]. + +Note that the ME generations roughly correspond with the overall platform, in +that ranges of Intel platforms are expected to carry a certain ME hardware +generation and specific platforms a certain firmware version range. + +## Abbreviations + +| abbr. | expansion | +| ----- | ------------------------------------------- | +| ACM | Authenticated Code Module | +| AMT | Active Management Technology | +| CSME | Converged Security and Manageability Engine | +| DAL | Dynamic Application Loader | +| FIT | Firmware Interface Table | +| IFD | Intel Flash Descriptor | +| PTT | Platform Trust Technology | +| SPS | Server Platform Services | +| TXE | Trusted Execution Engine | +| TXT | Trusted Execution Technology | + +[^1]: +[^2]: +[^3]: +[^4]: +[^5]: +[^6]: +[^7]: +[^8]: