On Wed, Mar 26, 2025 at 2:53 PM Gerd Hoffman <kra...@redhat.com> wrote:
>
>   Hi,
>
> > > >    2) The security posture of the system may be different between 2 
> > > > validly
> > > > signed images. Think of Daniel's example of verbose kernel output. 
> > > > Maybe I
> > > > consider verbose kernel output already inacceptable, while RH thinks 
> > > > it's an
> > > > ok posture to have. The user needs to have the chance to differentiate
> > > > between a system booted with or without verbose kernel output.
> > > You easily get that by looking at the vTPM measurements.  So not sure
> > > what you are asking for, do you want be able to also do that without a
> > > vTPM?
> >
> > All of this should work without vTPMs. Why add complexity when you don't
> > need it? The industry is already struggling to deal with TPMs alone. There
> > are way too many potential holes in a solution where you first have to
> > reason about the integrity of your TPM before you can trust it. All of the
> > vTPM in SEV-SNP talk is a house of cards I'm happy to push (blow to keep the
> > analogy?) against as hard as I can.
>
> TPM is the only thing we have outside of confidential computing.  So
> naturally there is alot of code and infrastructure for that despite the
> complexity of TPMs.  So having vTPMs in CVMs allows to reuse that
> infrastructure and it totally makes sense to support that.
>
> That doesn't imply this is the only option to handle things.  Having the
> option to tie everything to the launch measurement makes sense too.
> Fair point.
>
> > > > Ukify.py then generates the blob along with the FUKI.
> > > Doesn't fly from a distro point of view.  The UKI is signed, so RH ships
> > > that and the customer can't modify it to update the blob, say with some
> > > additional hashes for 'db'.
> >
> > I don't follow. Is RH going to ship a UKI or a FUKI?
>
> How should I answer that one while we are still discussing the design?
>
> > And if RH ships the UKI, ukify could still take a UKI as input and
> > generate a FUKI based on it, no?
>
> Of course you can, but it'll break the RH signature.
>
> > During that process, it would generate a db which gets put at a fixed
> > location in RAM so the (RH provided) firmware picks it up and validates the
> > UKI it loads is exactly that one UKI.
>
> Well.  If you want put the db into the igvm and the igvm into the uki
> you've got a chicken-and-egg problem.  Moving the firmware from the main
> UKI to UKI add-on would solve that.

Why is embedding a public key that will sign the IGVM in the IGVM a
chicken-and-egg problem? It's only that if db were a list of
acceptable measurements, which it isn't.
I'm not sure why relying on secure boot makes any sense for
confidential computing. I still think that tearing down the VM context
and rebuilding it is more secure, given
the need for an honest launch measurement/MRTD.

For Cloud Computing, which is the only place that FUKI makes sense as
a delivery mechanism, it's more important to rely on attestation
policy that has more awareness of the current security posture of
measurements.
Secure boot conflates authentic with secure. With a supply chain
distribution standard like CoRIM, we can ensure that individual
binaries have not only authentic measurements, but also security
version numbers (SVNs) that can be compared against a shorter-lived
endorsement of what is the most up-to-date and which CVEs are known
for lower SVNs.
Revocation is just not a real thing that works. Short-lived policy is.
Policy services can be updated more simply than the UEFI variables of
every node in the fleet.



>
> > We can extend that with an additional signature flow, where the ukify
> > generated db contains a signature for the UKI instead.
>
> certificate, not signature.  But, yes, that would work.
>
> > But I would generally advise against optimizing for certificate based
> > flows until revocation is sorted out.
>
> Well, if at the end of the day we'll go pass on a 'db' both signatures
> and hashes can be used.
>
> > > Effectively we need something roughly equivalent to shim's MokList.  The
> > > distro ships a default configuration (like the cert compiled into the
> > > shim binary) which works fine for most people.  For IGVM that would be a
> > > default efi variable store compiled into the firmware binary.
> >
> > This only makes sense in a world where RH ships an SVSM and that's all you
> > want to attest. But that's a different flow from what we describe here. To
> > actually get workload attestation, you need to include your rootfs in the
> > attestation. And the only entity that can do that is the end customer. And
> > they will typically do that through something like dm-verity or fs-verity
> > and a hash provided on the kernel command line.
>
> So you'll have the RH UKI + customer add-on with the kernel command
> line.  And you need a customized igvm containing a 'db' which will allow
> both, either via certificate+signature or via hash, whatever you prefer.
>
> > > Does it make sense to simply move the firmware update sections from the
> > > main UKI to an add-on?  That would allow customers to easily use their
> > > own if they wish, without breaking the RH signature on the UKI.
> >
> > I'm still not convinced "RH signature" is a useful marker at execution time
> > of confidential workloads.
>
> If the customer agrees they can go for hashes.  If not they should be
> able to use certificates.  So patching the RH shipped UKI is not an
> option.
>
> > > RH default igvm/add-on would simply have empty 'db' and 'dbx' pages.
> > >
> > > Looks workable to me.
> >
> > I would personally consider the "RH binary adds RH signature into binary by
> > default" a backdoor, but that's you call :).
>
> It's surely possible to ship two variants, one with the RH certificates
> and one blank, so customers can pick the latter if they want allow
> specific hashes only.
>
> > I agree with the plan to amend the IGVM spec with the UEFI variable update
> > page. I don't think it should be "db" and "dbx" pages. It should be a more
> > generic. In fact, why not make it a loader UEFI (PE) binary?
>
> Not convinced a PE binary is a good idea.  Adds one more indirection for
> no obvious gain.
>
> > > > All unauthenticated data, such as locations of the UKI and its add-ons 
> > > > gets
> > > > passed as parameter to the firmware IGVM.
> > > i.e. have a IGVM parameter for opaque_addr + opaque_size instead of
> > > placing this in the vmfwupdate struct?
> >
> > It would be a pretty natural fit for it, no?
>
> Absolutely.  Just wanted to make sure we are talking about the same thing.
>
> take care,
>   Gerd
>
>


--
-Dionna Glaze, PhD, CISSP, CCSP (she/her)

Reply via email to