-
Notifications
You must be signed in to change notification settings - Fork 9
docs: add Secure EC overview #40
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
jerrysxie
wants to merge
2
commits into
OpenDevicePartnership:main
Choose a base branch
from
jerrysxie:secure-ec-overview
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+83
−8
Open
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,67 @@ | ||
| # Secure EC Overview | ||
|
|
||
| The Open Device Partnership (ODP) Secure Embedded Controller (Secure EC) | ||
| project strives to build an open-source, microcontroller-agnostic embedded controller | ||
| platform for the PC ecosystem. It combines secure firmware, standardized host | ||
| interfaces, and reusable Rust components so device makers can reduce effort by building | ||
| on a standardized platform that is secure by design while focusing on their unique value added. | ||
|
|
||
| ## Goals | ||
|
|
||
| - Security by default leveraging memory-safe Rust | ||
| - Standardize communication between the host operating system and the EC across | ||
| hardware architectures and operating systems. | ||
| - Provide reusable and customizable firmware services for battery, thermal, power, USB-C, HID, | ||
| time alarms, and other common EC functions. | ||
| - Support collaboration among device makers, silicon vendors, operating-system | ||
| vendors, and the open-source community. | ||
| - Reduce platform bring-up effort through shared abstractions, reference | ||
| implementations, virtual platforms, and test tooling. | ||
|
|
||
| ## Architecture | ||
|
|
||
| Secure EC separates portable service logic from platform-specific hardware | ||
| support: | ||
|
|
||
| 1. **MCU HALs and board support** provide access to clocks, GPIO, I2C, eSPI, | ||
| I3C, and other peripherals. | ||
| 2. **Subsystem interfaces** decouple portable service logic from hardware implementations for battery, thermal, power, USB-C, HID, and other common EC subsystems. | ||
| 3. **Embedded services** implement reference application logic for EC subsystems. | ||
| 4. **Host transports and protocols** expose those services to the host through standardized | ||
| interfaces | ||
|
|
||
| ## Security Direction | ||
|
|
||
| The project is working toward an EC that is an attestable platform component | ||
| rather than an implicitly trusted boundary: | ||
|
|
||
| - **Secure boot** verifies that firmware is authorized before execution. | ||
| - **DICE** derives device identity from hardware secrets and firmware | ||
| measurements. | ||
| - **Attestation** allows host OS to assess the identity and state of the | ||
| EC. | ||
| - **Encrypted communication** provides a standardized mechanism for secure data exchange between the EC and the host OS. | ||
|
|
||
| ## Current Work | ||
|
|
||
| Current areas of investment include: | ||
|
|
||
| - Expanding portable Rust services and drivers. | ||
| - Supporting reference MCU platforms from multiple silicon vendors. | ||
| - Developing a standardized HID communication protocol over eSPI and I3C transports with OS support. | ||
| - Starting with secure boot and working toward device identity + attestation. | ||
| - Using QEMU-based virtualized platforms for development, integration testing, and ecosystem | ||
| onboarding. | ||
| - Exploring how Rust-based Secure EC components and APIs can interoperate with Zephyr-based | ||
| systems. | ||
|
|
||
| ## Key Repositories | ||
|
|
||
| | Repository | Purpose | | ||
| | ---------- | ------- | | ||
| | [`odp-embedded-controller`](https://github.com/OpenDevicePartnership/odp-embedded-controller) | Reference EC firmware including hardware platforms and virtualized platforms. Refer to its README to get started. Secure EC top-level documentation is also included. | | ||
| | [`odp-platform-qemu-arm-virt`](https://github.com/OpenDevicePartnership/odp-platform-qemu-arm-virt) | End-to-end Secure EC test platform connecting a virtualized RISC-V EC to an Arm64 QEMU host running Windows Validation OS. | | ||
| | [`embedded-services`](https://github.com/OpenDevicePartnership/embedded-services) | Reusable EC service implementations and interfaces, including battery, thermal, HID, time and alarms, and UART services. | | ||
|
|
||
| The broader set of projects and community activity is available in the | ||
| [Open Device Partnership GitHub organization](https://github.com/OpenDevicePartnership). | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@philgweber @williampMSFT Is there a secure service repo I should highlight here? Or a EC HID spec?