LWN: Comments on "The Linux Foundation's UEFI secure boot system" https://lwn.net/Articles/519244/ This is a special feed containing comments posted to the individual LWN article titled "The Linux Foundation's UEFI secure boot system". en-us Wed, 15 Oct 2025 23:02:38 +0000 Wed, 15 Oct 2025 23:02:38 +0000 https://www.rssboard.org/rss-specification lwn@lwn.net The Linux Foundation's UEFI secure boot system https://lwn.net/Articles/519534/ https://lwn.net/Articles/519534/ mjg59 <div class="FormattedComment"> Microsoft's certification requirements for x86 hardware mean that you're guaranteed the ability to remove Microsoft's keys and implement whatever security policy you want.<br> </div> Fri, 12 Oct 2012 05:54:26 +0000 The Linux Foundation's UEFI secure boot system https://lwn.net/Articles/519530/ https://lwn.net/Articles/519530/ jmorris42 <div class="FormattedComment"> If you want to do those things you need to avoid buying Microsoft's hardware. Period. They used to allow their OEM partners to sell hardware that we could repurpose. Those days are ending. These efforts are simply attempts to keep some possibility of booting Linux on Microsoft PCs.<br> <p> We need to always vote with our wallets for open hardware. But if want to continue to evangelize the unconverted we need these compromises to get Linux to boot in some fashion on their DRM encumbered hardware. No it won't be as clean or open as now.<br> </div> Fri, 12 Oct 2012 03:30:39 +0000 The Linux Foundation's UEFI secure boot system https://lwn.net/Articles/519529/ https://lwn.net/Articles/519529/ pjones <div class="FormattedComment"> It's not implemented that way - basically on BIOS you call a card's UNDI driver and it implements PXE. On UEFI, the card's option ROM implements a native UEFI driver, and PXE, protocol-wise, is handled by the system's firmware. The option ROM is *also* a signed binary or it won't be loaded.<br> <p> So the firmware downloads shim.efi from the server, and then it does whatever steps it needs to after that using UEFI APIs.<br> </div> Fri, 12 Oct 2012 03:25:05 +0000 The Linux Foundation's UEFI secure boot system https://lwn.net/Articles/519501/ https://lwn.net/Articles/519501/ Richard_J_Neill <div class="FormattedComment"> How will this whole thing interact with network booting? If I set my BIOS to boot by PXE, then what? As I understand it, once the BIOS passes control to PXE, it's handed over control to the option ROM on whatever ethernet card is present...<br> <p> Also, will the LXF make a version without the present user check? For example, if I wanted to boot a machine off Knoppix, and to ensure that every time after a power-cut, it would come up automatically and unattended? <br> </div> Thu, 11 Oct 2012 22:37:07 +0000 Present user test https://lwn.net/Articles/519466/ https://lwn.net/Articles/519466/ dlang <div class="FormattedComment"> this isn't new, I heard of malware doing this to apple keyboards years ago<br> </div> Thu, 11 Oct 2012 19:14:40 +0000 Present user test https://lwn.net/Articles/519423/ https://lwn.net/Articles/519423/ Flukas88 <div class="FormattedComment"> No, you're not.<br> </div> Thu, 11 Oct 2012 17:23:53 +0000 Present user test https://lwn.net/Articles/519409/ https://lwn.net/Articles/519409/ Cyberax <div class="FormattedComment"> Technically, some 'programmable' keyboards now have a CPU and a decent amount of RAM and can be subverted.<br> </div> Thu, 11 Oct 2012 15:37:58 +0000 The Linux Foundation's UEFI secure boot system https://lwn.net/Articles/519403/ https://lwn.net/Articles/519403/ mpalamara <div class="FormattedComment"> That's nice and I don't care. I don't want this feature of UEFI in hardware I use. I don't want any company or entity with access granting ability determining I what I can boot. Linux is not the only OS out there. Not good enough! Get rid of it!<br> </div> Thu, 11 Oct 2012 15:33:20 +0000 The Linux Foundation's UEFI secure boot system https://lwn.net/Articles/519402/ https://lwn.net/Articles/519402/ mjg59 <div class="FormattedComment"> The shim design effectively has three databases to validate against:<br> <p> 1) The UEFI spec database (db) - this is checked in order to conform to the spec<br> 2) The MOK database - this is checked in order to allow users to modify their trusted keys without having to use firmware-specific UI<br> 3) A built in database - this is baked in at build time. The idea here is for the distribution to include their public key in shim when they build it, and after that shim will trust any binaries built and signed by that distribution.<br> <p> So, for instance, the Fedora shim will have the Fedora key in (3). If the idea is to leave control up to the user then leaving (3) empty achieves that.<br> <p> This actually allows for some interesting possibilities. If a vendor wants to set up a Linux CA (which would be expensive to do properly, and potentially open to legal risks, but it *could* be done) then they could do this by simply embedding their key in (3) and getting that copy of shim signed by Microsoft. They could then provide keys that chain back to the key in (3) to whoever was interested, using whatever policy they wanted. This is a great deal easier than getting their key into every platform's firmware, but means that an overly lax security policy could result in blacklisting by Microsoft. We'll see if anyone decides to make that happen.<br> </div> Thu, 11 Oct 2012 15:29:02 +0000 The Linux Foundation's UEFI secure boot system https://lwn.net/Articles/519398/ https://lwn.net/Articles/519398/ jake <div class="FormattedComment"> <font class="QuotedText">&gt; So what shim with an empty internal key list gets you is </font><br> <font class="QuotedText">&gt; analogous to this plan</font><br> <p> Hmm, thinking further on this, what does having an "empty internal key list" actually mean? I assume it means that something gets written to the firmware in the MOK boot variable area. Does that wipe out my existing MOK keys? or just allow unsigned booting forevermore?<br> <p> I have a Fedora secure boot system installed, with its key in the MOK, now I want to boot JRandom LiveCD. It has an unsigned second-stage bootloader (GRUB2 or equivalent) and unsigned kernel. Can it use shim as its first stage? It would seem that either that would mean I lose my Fedora key in the MOK or I add an empty key that allows anything to boot thereafter. But if it uses the LF first-stage, it can boot (after I press OK) and not change the state of the system.<br> <p> Or have I got that wrong?<br> <p> thanks!<br> <p> jake<br> </div> Thu, 11 Oct 2012 15:21:03 +0000 The Linux Foundation's UEFI secure boot system https://lwn.net/Articles/519396/ https://lwn.net/Articles/519396/ rgmoore <blockquote>Is there a way to change the EFI keys programatically?</blockquote> There shouldn't be a way of doing this programatically, since it undermines the whole point of the secure boot system. The goal of the system is to make sure that you can't run unsigned code without user intervention. If you could bypass the secure boot without user intervention, then malicious code could do exactly the same thing and the system would be worthless for preventing boot sector malware. The goal of all these open source approaches to secure boot is to let open source take advantage of the real benefits of the system. Thu, 11 Oct 2012 15:14:31 +0000 Present user test https://lwn.net/Articles/519397/ https://lwn.net/Articles/519397/ raven667 <div class="FormattedComment"> Actually that sounds a lot like the smartcards used for satellite TV decryption. That would have been an interesting direction for the industry to go in.<br> </div> Thu, 11 Oct 2012 15:09:18 +0000 Present user test https://lwn.net/Articles/519395/ https://lwn.net/Articles/519395/ raven667 <div class="FormattedComment"> Well, that's physically present, isn't it? Malware didn't get the ability to manifest USB devices out of thin air like in the movies last time I checked 8-).<br> </div> Thu, 11 Oct 2012 15:07:18 +0000 The Linux Foundation's UEFI secure boot system https://lwn.net/Articles/519389/ https://lwn.net/Articles/519389/ mjg59 <div class="FormattedComment"> We're pretty reluctant to just add the "Press y to continue" code because that's something Microsoft explicitly forbid from being present in the system firmware, and there's a pretty strong incentive to be conservative. Adding the functionality would be trivial, it's really a policy thing.<br> </div> Thu, 11 Oct 2012 14:57:32 +0000 Present user test https://lwn.net/Articles/519390/ https://lwn.net/Articles/519390/ epa <div class="FormattedComment"> I meant there is no need for manual intervention at every startup. So you can install Linux on your server without worrying about it being stuck at a menu every time it reboots.<br> <p> Clearly, if you can plug in a USB key then you have physical access to the machine. The criterion for defeating malware is surely that you can't change the bootloader without physical access. Somebody with that access could equally well install a keylogger or (in principle) just replace the motherboard with a trojaned one.<br> <p> In fact, you could argue that physically plugging something in is how it should have worked from the beginning. Like an old Nintendo console, your PC or tablet device could come with a Windows cartridge installed, and if you want to boot something else you have to remove that and plug in a different cartridge (which may still allow booting Windows if you wish). Unfortunately that would make the devices a couple of dollars more expensive, so we have these shenanigans with signed bootloaders instead.<br> </div> Thu, 11 Oct 2012 14:52:00 +0000 Present user test https://lwn.net/Articles/519387/ https://lwn.net/Articles/519387/ pjones <div class="FormattedComment"> To elaborate - current generation systems don't enumerate USB in the firmware unless there's a reason to - either you've got a boot entry that points to a usb device or your software calls ReadKeyStroke()/WaitForKey()/etc. So the point at which you want to say "I'm waiting for this device to be inserted" would wind up being right after you've asked it to enumerate the USB bus. At that point, if the device is already inserted, you're still going to get a new event when it shows up. There's no distinction.<br> </div> Thu, 11 Oct 2012 14:45:01 +0000 The Linux Foundation's UEFI secure boot system https://lwn.net/Articles/519384/ https://lwn.net/Articles/519384/ jake <div class="FormattedComment"> <font class="QuotedText">&gt; So what shim with an empty internal key list gets you is analogous</font><br> <font class="QuotedText">&gt; to this plan</font><br> <p> Ah I see, thanks for the info ... does that mean that when I want to boot a LiveCD (say), I have to write stuff (even "empty" stuff) to the UEFI boot variables of the machine? Or can shim just bypass all of that and, in effect, provide the same "always present user" boot style that the LF approach takes? At some level, I guess I am asking if shim is a complete superset of the LF approach.<br> <p> There may be times or reasons that someone booting doesn't want to write to the firmware of the box ...<br> <p> jake<br> </div> Thu, 11 Oct 2012 14:40:29 +0000 Present user test https://lwn.net/Articles/519383/ https://lwn.net/Articles/519383/ pjones <div class="FormattedComment"> There's no distinction at system bootup between plugging a device in and already having a device plugged in.<br> </div> Thu, 11 Oct 2012 14:33:30 +0000 The Linux Foundation's UEFI secure boot system https://lwn.net/Articles/519379/ https://lwn.net/Articles/519379/ pjones <div class="FormattedComment"> No - that's in fact the entire point of SuSE's "MOK" system. Current shim will allow you to enroll a key or hash with physical presence during system bootup. So what shim with an empty internal key list gets you is analogous to this plan, except with this plan you have to be physically present every time, and with shim you only have to be there /once/.<br> </div> Thu, 11 Oct 2012 14:28:04 +0000 The Linux Foundation's UEFI secure boot system https://lwn.net/Articles/519377/ https://lwn.net/Articles/519377/ jake <div class="FormattedComment"> <font class="QuotedText">&gt; The Linux Foundation approach doesn't support this, and as a result is </font><br> <font class="QuotedText">&gt; pretty much useless.</font><br> <p> But, something the LF approach will do, that the shim won't (if i understand correctly), is boot an unsigned bootloader/kernel ... albeit after the user presses "OK" or whatever ... right now, for a distro that doesn't want to deal with signing their GRUB2 (or whatever) and/or their kernels, they have no way to boot in a secure-boot-enabled device.<br> <p> Or am I (as usual) missing something?<br> <p> jake<br> </div> Thu, 11 Oct 2012 14:24:09 +0000 Present user test https://lwn.net/Articles/519368/ https://lwn.net/Articles/519368/ gidoca <div class="FormattedComment"> How is plugging a USB device not a manual intervention?<br> </div> Thu, 11 Oct 2012 13:27:33 +0000 Present user test https://lwn.net/Articles/519367/ https://lwn.net/Articles/519367/ pjones <div class="FormattedComment"> No. The entire point of requiring user input - and in both cases it should be non-trivial user input - is to prove that there's a live user present. If something is deployed that wildly circumvents that, the likely outcome is that a hash of the binary in question winds up on the blacklist.<br> </div> Thu, 11 Oct 2012 13:21:48 +0000 The Linux Foundation's UEFI secure boot system https://lwn.net/Articles/519359/ https://lwn.net/Articles/519359/ vonbrand <p>"User's informed consent" when they have been conditioned to just click on any random carefully-designed-for-scary-look dialog that pops up, as otherwise you won't ever get anything done... Yeah, right. Check that one.</p> Thu, 11 Oct 2012 12:07:43 +0000 Present user test https://lwn.net/Articles/519335/ https://lwn.net/Articles/519335/ dgm <div class="FormattedComment"> Am I the only one that thinks that this is absurd?<br> </div> Thu, 11 Oct 2012 09:33:03 +0000 Present user test https://lwn.net/Articles/519332/ https://lwn.net/Articles/519332/ epa <div class="FormattedComment"> It sounds like the 'present user test' consists of requiring a couple of keystrokes to select a menu item. If so, a one-dollar USB device could send the keypresses at startup, allowing you to boot the OS of your choice without manual intervention.<br> </div> Thu, 11 Oct 2012 08:11:36 +0000 The Linux Foundation's UEFI secure boot system https://lwn.net/Articles/519317/ https://lwn.net/Articles/519317/ mjg59 <div class="FormattedComment"> Exactly. Something that requires explicit user consent (rather than the user just blindly hitting enter to make dialogs go away) is entirely reasonable here, and we've been working on solutions for that since Suse came up with an approach that make it workable.<br> </div> Thu, 11 Oct 2012 04:18:31 +0000 The Linux Foundation's UEFI secure boot system https://lwn.net/Articles/519316/ https://lwn.net/Articles/519316/ mjg59 <div class="FormattedComment"> Really? You could have just suggested it to us, since it's something that we could have implemented without any difficulty. It just doesn't seem to be useful in the form the LF have chosen.<br> </div> Thu, 11 Oct 2012 04:17:08 +0000 The Linux Foundation's UEFI secure boot system https://lwn.net/Articles/519315/ https://lwn.net/Articles/519315/ mjg59 <div class="FormattedComment"> The only way to modify the EFI key databases programmatically is to have access to the private half of one of the keys in the KEK database, which then allows you to produce signed updates to DB (the key and hash whitelist) and DBX (the corresponding blacklist). The only people who will typically have that are Microsoft and, perhaps, the motherboard vendor. If you want to modify those databases without having access to a key then you need to go through the firmware interface.<br> <p> That's the reason for the MOK design that Suse came up with. It adds an additional key database that has different constraints, permitting users to add their own keys without having to handle different firmware UIs. I've recently added bootloader-level UI code for this (located at <a href="https://github.com/mjg59/shim/tree/mok">https://github.com/mjg59/shim/tree/mok</a> ), which means that the end user can be prompted to enrol a new key at boot time without having to deal with firmware UI. The Linux Foundation approach doesn't support this, and as a result is pretty much useless.<br> </div> Thu, 11 Oct 2012 04:14:22 +0000 The Linux Foundation's UEFI secure boot system https://lwn.net/Articles/519310/ https://lwn.net/Articles/519310/ ebiederm <div class="FormattedComment"> Is there a way to change the EFI keys programatically? So that you don't need to go through an EFI user interface that is likely to be different on different motherboards to change the keys?<br> <p> If you can't get to the point making it an option to disable Microsofts key what is the point?<br> <p> <p> </div> Thu, 11 Oct 2012 03:50:44 +0000 The Linux Foundation's UEFI secure boot system https://lwn.net/Articles/519293/ https://lwn.net/Articles/519293/ geofft <div class="FormattedComment"> Booting any random junk with the user's (informed) consent is perfectly fine. The idea is to stop booting any random junk without the user's consent.<br> </div> Thu, 11 Oct 2012 01:58:37 +0000 The Linux Foundation's UEFI secure boot system https://lwn.net/Articles/519286/ https://lwn.net/Articles/519286/ mjg59 <div class="FormattedComment"> The model is that you'd still be booting the Microsoft signed loader. If you wanted to shift to using your own hash you'd need to rewrite the boot entry to stop running that, and then it'll stop booting if the bootloader ever gets updated since it registers the hash, not a key. This doesn't offer anything you're not already guaranteed to be able to do via the firmware.<br> <p> (I've read the code, thanks. I wrote most of it) <br> </div> Thu, 11 Oct 2012 01:43:55 +0000 The Linux Foundation's UEFI secure boot system https://lwn.net/Articles/519287/ https://lwn.net/Articles/519287/ pjones <div class="FormattedComment"> You are not reading the documentation correctly.<br> </div> Thu, 11 Oct 2012 01:40:27 +0000 The Linux Foundation's UEFI secure boot system https://lwn.net/Articles/519284/ https://lwn.net/Articles/519284/ ebiederm <div class="FormattedComment"> If I am reading the documentation correctly getting off the windows keys can happen in two ways.<br> <p> - Booting in setup gives you the option to install the key of the bootloader you are booting into EFI. Presumably that bootloader has not been signed by the Microsoft key.<br> <p> - There is also another program you can run LockDown.efi that you can run in setup mode that will replace all of the EFI keys.<br> <p> For more details have a look at the README<br> <p> <a href="http://git.kernel.org/?p=linux/kernel/git/jejb/efitools.git;a=blob;f=README;h=ea8ef9f9f979b9a144109d2e31cc38f805b02f8c;hb=HEAD">http://git.kernel.org/?p=linux/kernel/git/jejb/efitools.git;...</a><br> <p> </div> Thu, 11 Oct 2012 01:34:27 +0000 The Linux Foundation's UEFI secure boot system https://lwn.net/Articles/519282/ https://lwn.net/Articles/519282/ mjg59 <div class="FormattedComment"> How does it allow a transition away from the Microsoft keys? It depends on the loader being signed with the Microsoft key. <br> </div> Thu, 11 Oct 2012 01:17:31 +0000 The Linux Foundation's UEFI secure boot system https://lwn.net/Articles/519278/ https://lwn.net/Articles/519278/ ebiederm <div class="FormattedComment"> The way I read it the only keyring used is the EFI keyring.<br> <p> This approach looks very interesting as it allows a transition to a system without Microsoft's key, something that has been lacking in the other efi secure boot approaches I have seen so far.<br> <p> Thanks James<br> <p> </div> Thu, 11 Oct 2012 00:50:24 +0000 The Linux Foundation's UEFI secure boot system https://lwn.net/Articles/519277/ https://lwn.net/Articles/519277/ vonbrand <p>I guess that won't fly: This would open the door to boot any random junk.</p> Thu, 11 Oct 2012 00:30:28 +0000 The Linux Foundation's UEFI secure boot system https://lwn.net/Articles/519276/ https://lwn.net/Articles/519276/ jcm <div class="FormattedComment"> This is great news. I wondered aloud a while back about this kind of thing (the LF providing a UEFI shim) being done. It's good to see James (and presumably others) making this actually happen.<br> </div> Thu, 11 Oct 2012 00:27:11 +0000 The Linux Foundation's UEFI secure boot system https://lwn.net/Articles/519269/ https://lwn.net/Articles/519269/ pjones <div class="FormattedComment"> Should read "and have that signed". Sorry, I was responding on my phone.<br> </div> Wed, 10 Oct 2012 23:47:53 +0000 The Linux Foundation's UEFI secure boot system https://lwn.net/Articles/519263/ https://lwn.net/Articles/519263/ pjones <div class="FormattedComment"> I don't understand why they didn't build shim with no internal keyring, and have signed, instead of this. That provides a much more compelling system for small distros. <br> </div> Wed, 10 Oct 2012 23:18:14 +0000