Enabling Intel TXT in Fedora
Intel's Trusted Execution Technology (TXT) has always been somewhat controversial because it enables the complete lockdown of a computer system. For the DRM-loving crowd, that is seen as a feature, of course, but others, who might want to make their own choices about what code runs on their hardware, do not see it quite the same way. TXT was added to Linux in 2.6.32, without much in the way of complaints—though there were some concerns about protests—now Fedora is discussing whether to enable it for its kernels. The sticking point is not the DRM-lockdown that TXT allows, but is, instead, the fact that it requires an opaque binary "blob" in order to operate.
TXT is a means for ensuring that the code running on a system is what is intended to be run there. By looking at all of the code that the system runs, including things like BIOS, option ROMs, the bootloader, the kernel, and the initrd image, TXT can determine whether any of that code or data has been altered. The idea is to protect the integrity of the system as a whole, and to thwart rootkits or offline attacks, such as swapping in a new hard disk or BIOS for systems like voting machines, medical devices, or ATMs. As mentioned, though, it can also be used to ensure that only code signed by some authority is allowed to run on the device. For ATMs, that's probably a good thing, but if it becomes widespread, it could become a serious impediment to freedom.
As described in an article from a year ago, there are two separate components that collaborate to provide the TXT integrity checking: the tboot "trusted boot" hypervisor and an Authenticated Code Module. The latter, often referred to as the "SINIT AC", is distributed as a binary-only object, which is signed by Intel.
Because there is no source available for SINIT AC—even if there were, without Intel's keys users couldn't build and use their own—some Fedora developers are leery of enabling TXT in Fedora kernels. Stephen Smalley's request to enable TXT, which he sent to the fedora-kernel list in October 2009 shortly after TXT was added to the kernel, was quickly shot down. Eric Paris explained:
More recently, IBM has agreed to move the blob into the BIOS of its xSeries servers. That would alleviate the problem of needing to ship a binary blob to make TXT work—though it does nothing to open up the code, of course. But, that announcement led Paris to reopen the discussion on enabling TXT. In a fairly long message, he lays out the case for enabling the feature. Because xSeries users will be able to use TXT without installing the Intel blob, he sees it as a desirable feature for Fedora:
But Fedora engineering manager Tom "spot" Callaway is less enthusiastic. He notes that IBM is just taking the same binary blob and stuffing it into the BIOS. He is also concerned about supporting Fedora users:
In the non-IBM Xseries case (which is by far, the more common one for Fedora), we would be enabling this option solely to enable proprietary binary blobs during the boot process. In my opinion, given that it is not possible at all for us to troubleshoot or bug fix systems in such a scenario, we should not imply to our userbase that it is supportable by enabling this kernel option.
Smalley thinks that getting TXT into Fedora would allow more testing, but Callaway isn't convinced that's necessarily a good thing:
And then, it breaks. And we get bugs filed. Which we have absolutely 0 chance of being able to fix.
Others see the SINIT AC blob as no different than the firmware blobs that are required to
make various hardware function—and are shipped by Fedora. Callaway
counters that the firmware "is the only way to enable that
hardware to work.
" But, as Chris Wright points out, that leads to an inconsistency: "And TXT needs SINIT AC to work.
It's just inconsistent reasoning.
"
If the proposal were to distribute SINIT AC with Fedora, the situation
would be more "analogous
", Callaway said, "but Intel already tried that, and it
doesn't meet the strict guidelines we have defined in Fedora for what is
considered acceptable firmware
". Red Hat has apparently tried to
convince Intel to open up the SINIT AC code, but without success.
The core difference, at least in Callaway's mind, seems to be that users will be
depending on this code, which they cannot inspect, for the security of
their systems. Faulty firmware for other hardware may make the system
unstable or fail entirely, but that firmware isn't vouching for the
security of the whole system as the SINIT AC does. TXT "requires that we explicitly trust a third party
vendor for security. [...] This makes me extremely uncomfortable, and also makes me wonder why the
NSA seems comfortable with such a scenario in practice.
"
Callaway is referring to the US National Security
Agency (NSA), which is where Smalley works. But, as Smalley points out, adding TXT doesn't really change
anything: "And you were already dependent on Intel for correct
operation of their hardware. Nothing new to see here, move along...
"
Red Hat's James Morris, who seems a bit surprised that the TXT code made it
into the kernel without any ACKs from the security subsystem folks, is also
a bit concerned about the secrecy
surrounding the code: "I really hope the secrecy of the AC module is not part of its security
design.
" He also noted that bugs in the SINIT AC were recently used
to break TXT, but he doesn't see any technical barriers to enabling it in
the Fedora kernel. The security of TXT is not reliant on "keeping the
SINIT module closed source
", according to Smalley, but Intel
"adamantly
" refuses to open source it, Callaway said.
It's not clear why Intel is being so secretive, nor why there isn't support for other signing keys on AC modules. That, at least, would allow others to potentially create alternative AC modules. Intel may believe that "security through obscurity" will help prevent exploits, though there is good reason to believe that it won't—and hasn't.
No conclusion was reached in the thread, though one would guess that Callaway's opinions would carry a fair amount of weight. Had Intel originally placed SINIT AC in the BIOS, rather than providing it as a separate—and separately upgradable—component, it seems likely that this issue would not have reared its head. Certainly users who really want TXT support can build their own kernels, as was suggested, but then they will be on their own for support. That may not be much of an issue for Fedora users, who don't have much of a support plan beyond what the distribution provides, but it will affect RHEL users—and that may be the real target of this effort.
Depending on hardware vendors for security solutions is not without pitfalls, but we are already dependent on them for the correct functioning of our systems, which includes security. It's a question of how far one wants to follow the rabbit hole. Until there are fully free hardware solutions, there will always be hardware dependencies. Its hard to imagine that RHEL, at least, doesn't get TXT support at some point; Fedora would make a good testbed for that support.
| Index entries for this article | |
|---|---|
| Security | Integrity management |
| Security | Signing code |