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

adding tee operator. too much side channel? #32

Open
wants to merge 7 commits into
base: main
Choose a base branch
from

Conversation

kylehogan
Copy link
Collaborator

@kylehogan kylehogan commented Feb 21, 2023

First draft of threat model for the TEE operator.
Lots of side channel discussion (maybe too much side channel discussion).
Some of these side channels are not currently possible to mitigate.
Do we want references here?
Also see #33 which adds the TEE itself and #34 which adds the TEE manufacturer.

This was referenced Feb 21, 2023
Copy link
Collaborator

@martinthomson martinthomson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for doing this Kyle, This works for me. Tweaks suggested.

threat-model/readme.md Show resolved Hide resolved
threat-model/readme.md Outdated Show resolved Hide resolved
TODO
1. Microarchitectural side channel mitigations: microarchitectural side channels arise due to resource sharing between the TEE processes and other processes on the host machine. They can be mitigated by ensuring spatial and temporal isolation of the TEE processes though this has proved challenging in practice and no existing TEE is free of side channel leakage.
2. Speculative/transient execution mitigations: turn off speculative execution.
3. Physical access mitigations: To mitigate cold boot attacks any TEE assets stored off the trusted hardware, e.g. in DRAM, must be encrypted and integrity checked. Defending against power/acoustic/temperature side channels requires preventing the operator from observing these features or by executing TEE processes obliviously (execution is fully independent of the confidential input data).
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This might be split:

Suggested change
3. Physical access mitigations: To mitigate cold boot attacks any TEE assets stored off the trusted hardware, e.g. in DRAM, must be encrypted and integrity checked. Defending against power/acoustic/temperature side channels requires preventing the operator from observing these features or by executing TEE processes obliviously (execution is fully independent of the confidential input data).
3. To mitigate cold boot attacks any TEE assets stored off the trusted hardware, e.g. in DRAM, must be encrypted and integrity checked.
4. Defending against power/acoustic/temperature side channels requires preventing the operator from observing these features or by executing TEE processes obliviously (execution is fully independent of the confidential input data).

Though I think that the latter could be:

Defending against attacks that use power/acoustic/temperature side channels requires either preventing the operator from observing these features by limiting physical access in some way or by executing TEE processes obliviously (that is, eliminating any potential for side channel information by using computation that does not depend on the content of any confidential data).

Out of curiosity, what is the state of the art as it relates to timing side channels? You don't mention them, but these no doubt exist as well and leak information to more than just those with physical access to the machine.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this section in particular is quite rough and needs to be workshopped a bit.

I separated side channels out into microarchitectural, speculative (a special kind of microarchitectural really), and physical where this is the means an adversary uses to observe something about the program execution. The something observed is very often a timing difference. Maybe there is a better way to describe side channels that makes this more clear? Especially because some of the more traditionally physical attacks can be executed remotely now: Hertzbleed

It might also make sense to pull oblivious execution out into its own mitigation as it really applies more generally (but isn't typically a viable option due to the performance).

(agreed on splitting cold boot attacks out)

threat-model/readme.md Outdated Show resolved Hide resolved
@AramZS AramZS added the call-for-consensus We are calling for participants to reach consensus. 2 weeks from being added or handled via agenda+ label Sep 11, 2023
@AramZS AramZS added Threat Model Document This pertains to the Threat Model document and is in an editorial mode. Merge Pending Change is set to be merged pending editor or chair action. Last chance to comment. and removed call-for-consensus We are calling for participants to reach consensus. 2 weeks from being added or handled via agenda+ labels Oct 30, 2023
@AramZS AramZS added needs-work Indicates a PR or Issue needs further work before we can pick it up for further discussion or action and removed Merge Pending Change is set to be merged pending editor or chair action. Last chance to comment. labels Apr 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
needs-work Indicates a PR or Issue needs further work before we can pick it up for further discussion or action Threat Model Document This pertains to the Threat Model document and is in an editorial mode.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants