linuxboot / linuxboot/heads

Overcomming space limitations for fancy features

Open
#818 11 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Makefile
Stars
1.6k
Forks
211
Avg merge
4d 21h
Merged PRs (30d)
6

Description

One of the most popular type of issue here looks like this:

> Can we add library _X_ to allow _Y_, because it will be _(really cool/more secure/easier to use/etc.)_.

And the most popular type of answer is:

> Sure, but that adds _N>1MB_ of storage and it definitely won't work on the X320 as it only has 4MB of storage on the flash chip.

But the whole point of `heads` is that it validates user signed content which it subsequently kexecs into. So how about loading modules from the boot partition, signed with a key stored on the _TPM_?

_Heads_ will be able to validate the integrity and signatures of the modules stored in the boot directory prior to loading them using the secret stored in the _TPM_. If we can protect the secret so it is not exposed to the subsequently booted OS, this system would allow for lot of bloat and plenty of storage for additional features. We will still be encouraged to minimise the total size of modules as it would slow down boot times, but it will give us more freedom, especially on older systems like the X320.

So the core question is whether we can protect a secret on the _TPM_ and reserve it exclusively for _Heads_? Are there any major problems I'm missing?

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing Heads' TPM integration and the path that validates and kexecs signed content, then check how modules in the boot directory are discovered. Determine whether a TPM secret can be reserved for Heads and kept from the subsequently booted OS; done means documenting the security constraints and a feasible design.

Written by the indexing model from the issue text.

Assessment

Tech stack
linux
Domain
operating-systems, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.