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

Multi-Roundtrip TA Installation #43

Closed
hannestschofenig opened this issue Jul 27, 2020 · 8 comments
Closed

Multi-Roundtrip TA Installation #43

hannestschofenig opened this issue Jul 27, 2020 · 8 comments

Comments

@hannestschofenig
Copy link
Collaborator

If a TA installation that contains a SUIT manifest requires further interactions to perform a complete installation of dependencies then the TEEP Agent has to be given the ability to tell the TAM that further interactions are needed.

Hence, I should suggest to add the possibility to continue the TA installation after the TrustedAppInstall message.

Here is an example of what I have in mind:

+------------+           +-------------+
| TAM        |           |TEEP Agent   |
+------------+           +-------------+

  TrustedAppInstall ---->

                   <----   Continue

  TrustedAppInstall ---->

                           Success

                   <----    or

                           Error
@dthaler
Copy link
Collaborator

dthaler commented Oct 10, 2020

What is the use case for this? I can't think of one right now where this would be needed.

@hannestschofenig
Copy link
Collaborator Author

Manifests can be bundled with and without binaries. Additionally, a binary may have a dependency on another binary.

In those cases where the provided manifest came without a binary or when there is another binary needed (as a dependency) then we need to have a way for the TEEP Agent to get back to the TAM and inform the TAM that more binaries are needed.

(The same may be true for personalization data or configuration data that is referenced as a dependency.)

The mechanism above is what I am proposing to address this use case.

@dthaler
Copy link
Collaborator

dthaler commented Oct 18, 2020

In those cases where the provided manifest came without a binary or when there is another binary needed (as a dependency) then we need to have a way for the TEEP Agent to get back to the TAM and inform the TAM that more binaries are needed.

Since the TAM gets the list of TAs installed, then the TAM should be able to install the dependencies before pushing down the dependent manifest. Thus, success of a dependency install means the TAM can now do a TrustedAppInstall that depends on it.

(The same may be true for personalization data or configuration data that is referenced as a dependency.)

The mechanism above is what I am proposing to address this use case.

The only case I can think of where you have to pend things is if the personalization data comes via a different TAM.
E.g., an encrypted TA binary that one needs to get the key from another TAM (the case we discussed at the f2f editors meeting that ming hosted). We said then that the personalization data would be configured just like any TA would be (hence the "trusted component" language in the other PR). In such a case, I would propose just delaying the Success/Error response until it's done... the TEEP agent would initiate a new connection to the other TAM (as identified in the dependencies in the SUIT manifest), since it cannot complete the SUIT manifest install steps until that is done.

The "continue" proposal would not work in this case with different TAMs, whereas the approach I describe above does not need any "Continue" response and works with multiple TAMs.

@hannestschofenig
Copy link
Collaborator Author

You are making the TAM do all the dependency resolution upfront while I am trying to add a solution to the case where the client also does some degree of dependency resolution.

@dthaler
Copy link
Collaborator

dthaler commented Nov 1, 2020

You are making the TAM do all the dependency resolution upfront

No I am not. See my statement above which shows a client driven mechanism:

I would propose just delaying the Success/Error response until it's done... the TEEP agent would initiate a new connection to the other TAM (as identified in the dependencies in the SUIT manifest)

dthaler added a commit that referenced this issue Nov 19, 2020
Addresses issue #81

Adds a TODO where issue #43 resolution would affect text
(possibly among other places)

Signed-off-by: Dave Thaler <dthaler@ntdev.microsoft.com>
dthaler added a commit that referenced this issue Nov 19, 2020
Per IETF 109 side meeting discussion
Addresses part of issue #43 but not all of it

Signed-off-by: Dave Thaler <dthaler@ntdev.microsoft.com>
dthaler added a commit that referenced this issue Nov 19, 2020
Addresses issue #81

Adds a TODO where issue #43 resolution would affect text
(possibly among other places)

Signed-off-by: Dave Thaler <dthaler@ntdev.microsoft.com>
dthaler added a commit that referenced this issue Nov 20, 2020
Per IETF 109 side meeting discussion
Addresses part of issue #43 but not all of it

Signed-off-by: Dave Thaler <dthaler@ntdev.microsoft.com>
dthaler added a commit that referenced this issue Jan 8, 2021
Addresses issue #81

Adds a TODO where issue #43 resolution would affect text
(possibly among other places)

Signed-off-by: Dave Thaler <dthaler@ntdev.microsoft.com>
@dthaler
Copy link
Collaborator

dthaler commented Feb 22, 2021

Slide 7 of the TEEP protocol presentation covered this issue at IETF 109

The proposed resolution is:

Agent’s SUIT processor resolves dependencies, and doesn’t respond to initial Install until all dependencies are resolved and SUIT processing completes

The thing to note is that we still need to provide freshness (replay protection) of SUIT reports, so if we use a token or nonce, then the TAM has to store it while the install is outstanding.

@dthaler
Copy link
Collaborator

dthaler commented Jul 12, 2021

Issue #141 tracks the freshness discussion.

@dthaler
Copy link
Collaborator

dthaler commented Jul 12, 2021

Fixed in draft-06

@mcd500 mcd500 closed this as completed Mar 8, 2022
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

4 participants