-
Notifications
You must be signed in to change notification settings - Fork 6
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
Keylime New Architecture Design Meeting (TDB) #64
Comments
Since I wasn't able to attend the last meeting I (or maybe still 'we') would need to first understand what the other attestation protocols are doing and what they have in common, if anything, so that we can build an architecture around it. |
@stefanberger yes agree. The current idea is to start with TPM and SEV attestation report and build it from there. I'll try to add more details to this issue soon. |
@THS-on Is this page a proper description of SEV Remote Attestation? https://enarx.dev/docs/technical/amd-sev-attestation |
@stefanberger the general flow should be, but there it seems that there is some enarx specific parts in there. I found the sev-guest example generally helpful: https://github.com/AMDESE/sev-guest/blob/main/docs/ssh-key-exchange.md For the proof-of-concept vTPM inside SEV-SNP (https://github.com/svsm-vtpm/linux-svsm/blob/svsm-vtpm-preview/README-vtpm.md) implementation, the flow glued on top of Keylime can be found here: https://arxiv.org/pdf/2303.16463.pdf |
Typing up here a few thoughts about the new architecture. Not fully fleshed out, but I do consider that each of these itens could be worked on independently, unless stated otherwise:
|
What is
What is 'a |
@maugustosilva An interesting suggestion. Simplification is good if it doesn't break important use cases. Did you intend to include an item 11? I don't see it. |
Right, in the original Keylime's architecture, So, yes, this "component" is the one which executes |
Very good point! It is precisely why I was considering the (IMO) simple case where we allow the |
The "in loco tenant" model is better for our use cases. If I understand it correctly we wouldn't have to run the tenant. |
You did understand correctly. The |
... choosing which runtime policy for the monitored machine? |
Since we are discussing the architecture redesign, I would like to propose some ideas for consideration: 1 - To support multiple attestation mechanisms/roots of trust other than only the TPM, we could change the registration step for the agent to inform the list of types of quotes it can generate, and also the supported mode of operation (push or pull). If the list is not provided, it is assumed the agent can only generate the current format of quote. This will allow backwards compatibility, and also heterogeneous agents running. 2 - Based on the capabilities declared by the agent, the verifier could select which types of quote it wants from the agent by setting new parameters in the GET request. If nothing is set, then it is assumed the current format of quote is requested, again keeping backwards compatibility. 3 - The message format for the quote should be attestation mechanism agnostic, able to contain any kind of data.
The agent response could contain a list of requested quotes. If not, then it is assumed the current quote format is expected, keeping backwards compatibility. 4 - We should consider redesigning the keylime protocol to be post-quantum crypto ready and FIPS compliant. Of course PQ ready TPM hardware will take years (decades?) to be available, but I'm suggesting we make keylime flexible where we can (e.g. keys used for TLS). 5 - The exchange of 6 - mTLS is difficult to be configured due to the certificates distribution complexity. We should consider supporting other authentication mechanisms that scale better and simplify the deployment. |
Good question there are options. Having a default in the verifier, allowing the agent specify as part of registration and the tenant overriding the default. |
How is the initial registration, which is typically done via |
I thought the idea was that the registrar would do it automatically. |
The registrar would have to know the IP address of host that's going to be monitored. How does it get that? Regarding a default policy: If all the systems were the same there could be a default policy for monitoring the TPM and IMA logs but I think most environments won't have a collection of homogenous systems but they will be different and then each system will need its own policy. I don't think a default policy of monitoring 'nothing', which would apply across non-homegenous systems, would help much. |
These are good questions @stefanberger so, allow me to offer my experiences deploying Keylime in prod (the mileage will most certainly vary, but it is at least one data point from a Cloud production environment).
Finally, as you said yourself, even if we resort to an "auto-add is just for "node identity", no MB, no IMA" it would be already useful (it is at the very least a "pipe cleaner" to detect An additional point: I currently don't see a lot of heterogeneity on TPM policy (after all, in "full attestation", PCRs 0-9 and 11-14 are already "taken") but not saying that this will never be a problem. |
I guess it depends on how strict/custom tailored your policies are for those highly heterogeneous nodes that a common denominator policy may or may not exist. |
Where do errors then go to? To log files? |
Closing because the new push model proposal is now being implemented. |
Attendees
Topic
This meeting is intended to discuss on how we implement the architecture changes in Keylime
The text was updated successfully, but these errors were encountered: