Skip to content
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

Tag KV slots as whether or not HMAC operations can reveal results to FW #688

Open
bluegate010 opened this issue Jan 9, 2025 · 4 comments

Comments

@bluegate010
Copy link

bluegate010 commented Jan 9, 2025

Currently, if a key is in a KV slot, the result of an HMAC operation cannot be revealed to FW. This limits the utility of KV. It would be neat if ROM/FW could tag a given KV slot as saying whether future HMAC operations on that key can have their results revealed to FW.

@mojtaba-bisheh
Copy link
Contributor

the reason we restrict HMAC tag is DICE based KDFs for Alias keys uses: CDI_NextLevel = HMAC(CDI_CurrentLevel, SHA_Measurement_NextLevel);

If FW at lower level was compromised, an attacker could exfiltrate entropy for all future keys: for(i=1;;i++) {CDI_Future = HMAC (CDI_Currentlevel, GuestFutureMeasurement[i];}

@bluegate010
Copy link
Author

FW only has access to its own CDI based on its own measurements though. If, say, the FMC is compromised, when we fix the bug we'll update the FMC, and the new FMC will get a new CDI, which the old buggy FMC never had access to. All future CDIs are therefore secure.

@bluegate010
Copy link
Author

Also, I'm not asking that we relax HMAC restrictions on current CDI values. Those can be tagged such that they have the same restrictions as today: HMAC results need to go back to KV.

But separate keys can be tagged differently, to allow HMAC results to be exported to firmware, allowing more use-cases than just DICE.

@Bryankel
Copy link
Collaborator

Bryankel commented Jan 10, 2025 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants