I’ve seen similar set of points for several projects now, and they’re kind of frustrating, because I think there is some misconception about SB support: it’s not about supporting “fire-and-forget” installations, it’s about supporting protocol itself, like an optional feature that is still there.
What I think many people mean about SB support (an I am among them) is the ability to trust HAOS developer team, which has nothing to do with MS or signing services.
As you know, SB consists of three major parts (others not relevant here):
- Platform Key: using it, you trust the manufacturer
- Key Exchange Key: using it, you trust OS/software developer
- Image Signing Key (db): using this, you trust the specific software/building pipeline
With that, some background about my common setups (not everything is relevant, just for the whole picture):
TLDR: I manage my own Platform Key and sign KEKs I trust manually
-
Every system has my own Platform Key. With that, I’ve effectively revoked my trust to the manufacturer and took it in my own hands.
-
Due to an unfortunate reality where so few teams have their own KEK, the same goes for KEK. Here I’m not revoking my trust, but I’m forced to go through complicated process of self-signing more things than necessary to actually give that trust to the developer. And this is the place where question about OS supporting SB should actually raise itself. In better world, I would just enroll Arch/Ubuntu/Debian/HAOS/etc KEK and recent ISK of such a developer and that’s it.
-
For the same reasons, I maintain my own ISK for each system. Every system that is intended to be auto-updatable, uses full disk encryption to protect that ISK private key. Again, in better world, this part will be as easy as initial provisioning of KEK/ISK certificates from developer.
-
Anything that does not allow for persistent rootfs modifications to implement such mechanism or does not support FDE - goes into VM on the system which does.
-
MS stuff is an exception: I never trust their KEK and add two their ISKs manually.
I know, this is a complicated topic, and I’m quite dedicated to security-at-rest. It’s my passion, and not everyone share this. But it does not mean systems should not bother with this. Actually, the whole situation where everything is bound to MS signing procedure is effectively a consequence of major non-MS players willingly sticking with it. I know, just providing KEK/ISK was not enough for them: MS shit still will be “fire-and-forget” while theirs will require manual intervention, but these approaches are not mutually exclusive.
So, to your bullets:
-
With providing unsigned KEK and ISK signed by this KEK it costs nothing.
For someone with «since it’s unsigned, it can not be trusted» argument: how do you verify GPG signature of software you download from a site? Maybe you import previously untrusted certificate into your keychain? Or even better, you just compare hash sum of the binary?
-
This part is irrelevant, because shim is not used at all. And while we talking about it: here is another approach to somewhat support SB - MOK keys (curse of a secure boot, but still).
-
This becomes irrelevant either: you always sign your builds. For development, for systems without SB, for any current case where SB is disabled for HAOS to be runnable or for user not bothering with SB - nothing changes, signed system still boots as it did before. But on systems with SB and willing user - chain of trust can be easily maintained.
The only questionable part is a signing itself, but I can not suggest anything not seeing processes from inside.
My point is: SB does not enforce manufacturer-MS bundle as a root of trust. Having your own KEK and ISK signed by this KEK does not imply MS/signing services burden at all. Point of SB is to trust OS/software developer, and not trust Microsoft with right to trust something on my behalf. So, supporting SB means providing the ability to trust your software directly.
For that, developer should provide it’s KEK certificate for people to be able to enroll if they decide to do so, and signing it’s UKI with their ISK. That way developers can rotate ISK keys whenever they want without relying on the MS shit, and people can trust HAOS by simply signing and enrolling HAOS KEK. Or not bother and boot as they used to, without SB.