Re: [DISCUSSION] svsm: attestation + CocoonFs:

Arun Menon <[email protected]> Thu, 19 Mar 2026 17:30:49 +0530
Newsgroups dev.linux.lists.coconut-svsm
Message-ID <abvlcdh_zJPWUEwG@fedora>
On Wed, Mar 11, 2026 at 05:29:30AM +0100, Nicolai Stange wrote:
> Hi Tyler,
> 
> I've been told in one of the svsm devel calls that a capability for
> storing some info in plaintext in CocoonFs would be helpful for your
> attestation efforts.
> 
> Before I go and implement something, let me ask about the nature of that
> data.
> - What exactly are you planning to store there?
> - Presumably the filesystem salt from the image header, supposed to also
>   serve as a filesystem ID ([1]), is not sufficient?
> - Is the data considered immutable over the lifetime of the FS?
> - Is it Ok if that data is not authenticated?
> 
> Thanks!
> 
> Nicolai
> 
> [1] https://coconut-svsm.github.io/cocoon-tpm/cocoonfs/cocoonfs-format.html#image-header

Hi Nicolai,

I’m jumping in here — while I’m not Tyler, I’ve been working under
his guidance on a related provisioning flow and wanted to share my
understanding to see if it aligns with the requirement being discussed.

In my current workflow, we are pre-provisioning a TPM state file
(including the EK cert) on a separate host (not necessarily confidential).
The goal is to have the SVSM-based TPM start with this known state file.

Here is how I envision the flow:
1. Provisioning: Generate a TPM state file (NVChip) externally with the EK
   cert and other metadata. The tool starts TCG TPM simulator and then
   writes an EK cert to the state file. [1]
2. Packaging: Create a CocoonFS image containing this state file, encrypted
   with a key Key1.
3. Key Management: Send Key1 to a Key Broker Service (KBS) and receive a
   wrapped version, Key2.
4. Header Storage: Store the wrapped key Key2 in the CocoonFS image
   header.

At Runtime in the SVSM: SVSM reads the header to retrieve the wrapped
key Key2. SVSM sends Key2 along with the hardware attestation report
to the KBS. The KBS validates the report and returns the unwrapped key
Key1. SVSM uses Key1 to decrypt the CocoonFS image and access the
TPM state.

To address your specific question, in this scenario, the wrapped key
Key2 needs to be accessible before the filesystem is decrypted. If
the image header can store this metadata in a way that SVSM can parse it
without the primary filesystem key, it would solve the bootstrapping
problem of how to get the key from the KBS.

Does this match the type of metadata you were considering, or was it
intended for a different purpose?


[1] https://github.com/armenon-rh/tpm_provisioner


Regards,
Arun Menon