-
33c3 preroll music
-
Herald: So, the last speaker for this
morning is Trammell. He is doing
-
awesome research on "Bootstrapping
more secure laptops or servers" and
-
he is doing that basically by moving the
root of trust into the write-protected room.
-
He is building an open-source custom
firmware, so big ups for that, and also
-
encouraging the research on this field
which I believe it's super interesting.
-
Thanks!
applause
-
applause
-
Trammel Hudson: So I'm Trammell Hudson
with Two Sigma Investments, and for the
-
past several years I've been researching
firmware security vulnerabilities
-
and looked at how they affect systems.
Two years ago, I presented my work
-
on Thunderstrike here at CCC. And this was
the first firmware attack against MacBooks
-
that allowed an attacker to override
the motherboard bootrom.
-
The year after that, I collaborated with
Xeno Kovah and Corey Kallenberg
-
from LegbaCore - both of whom
are now at Apple, doing firmware work.
-
And we ported a bunch of Windows UEFI
vulnerabilities over to the Mac, and
-
showed that the software platform - the
UEFI software platform, you know - allowed
-
very portable attacks to be done. This
also allowed a remote attacker with code
-
execution on your machine to override the
motherboard bootrom. But, more than just
-
breaking things, what we like to do is
take the things apart and understand how
-
they work and document them, so that other
people can build systems on top of them.
-
And that's why I'm really excited to be
talking to you all about my project
-
"Heads", which is a open source
firmware and boot loader
-
for laptops and servers.
The name is kind of a play
-
on the popular 'Tails' distribution
which is a stateless Linux
-
for when you don't want to leave any traces
of what you're doing on your machine.
-
Heads is for the opposite case: it's where
you want to be able to trust the machine,
-
and you want to be able to trust that the
data you store on the machine is safe
-
and unmodified. And, let's back up
for a quick minute and just talk about
-
why firmware security is so important,
that this is the code that is
-
executed by the CPU when it comes out of
reset. This is the first instruction that
-
the CPU executes. And so it's in a really
privileged position to be able to
-
circumvent any sort of OS or other
policies. And there's no shortage of talks
-
that you can watch on interesting
attack vectors using firmware-based
-
malware. One that I really liked
was last year at DEFCON. The
-
Intel Advanced Threat Research
presented an attack that showed
-
how firmware could - malicious firmware -
could circumvent the hypervisors. They
-
then went further and showed how buggy
firmware allowed a unprivileged guest
-
inside a virtual machine to escalate into
privileges inside the hypervisor. And for
-
that reason, it's really important that
firmware vulnerabilities and firmware bugs
-
have a way to get patched. These aren't
just theoretical research vulnerabilities,
-
either. We know that there are malicious
organizations and hacking groups that are
-
selling firmware rootkits to whoever will
pay - including nation-state adversaries,
-
that are using them for their persistent
threats. And they are very persistent,
-
because they are in the motherboard
bootrom So you've reinstalled the OS -
-
they're still there, you swap out the hard
drive - they're still there. And some
-
vendors are even bundling these rootkits
into their official ROMs. That they are
-
using them to install the bloatware, or
whatever adware they want to put into the
-
OS. So even after you reinstall a clean
version of the OS, this particular vendors
-
system would install its own additions.
Some of those had vulnerabilities that
-
could then be exploited by attackers. This
particular case, the vendor received
-
enough bad press, that they released a
firmware update that patched this
-
vulnerability. And they had to do that.
This wasn't something that the users could
-
do on their own - they couldn't update the
the firmware in their machine the
-
way they do with their operating system or
an application. And in fact, most firmware
-
vulnerabilities never see patches get
deployed out to the end-user.
-
Part of the reason for that is that the
the firmware is usually four or five
-
companies, removed from the end-user. That
there's the open source reference
-
implementation from Intel, called eh
TianoCore or EDK II. When vulnerabilities
-
are patched in there, they have to get
pulled by the independent BIOS vendor, and
-
merged into the IBV tree, and then the
BIOS vendor sells that to the device
-
manufacturers. So they have to package up
a release the thing gets pulled by the
-
device manufacturer. It has to get QA'd it
against however many motherboards they
-
want to test it on. And then it has to get
again pulled by the original equipment
-
manufacturer to get rebranded and whatever
value they want to add. And then sometimes
-
it has to go through the operating system
vendor to even make it out to the end-
-
user. And as a result of this, most of the
time, products do not receive any updates
-
after they've been sold. There's one
exception: in this chart you can see that
-
Apple builds their own firmware, and in my
work with them, I've been really pleased
-
that they've rolled out patches for eight
years of hardware. Which is above and
-
beyond what any other firmware vendor is
doing right now. When EFI was introduced,
-
it brought a lot of complexity, and the
Linux community was very skeptical as to
-
what the value was going to be provided by
all this complexity. It's basically an
-
entire operating systems worth of code.
And it's not, that the 16-bit real-mode
-
BIOS was all that much better. In fact, it
had its own set of issues. But it was
-
small, it was simple, it did one thing, it
did it okay. And it took a long time for
-
UEFI to even become widely supported. But
even now most systems ship with both the
-
UEFI and a BIOS compatibility module. So
they've basically doubled their attack
-
surface for potential bugs and
vulnerabilities. So the state of the
-
firmware world today is that updates are
rare, patches, if they ever come out, take
-
a long time to make it through the
process.
-
Users can't fix things on their own, and
we can't see what's inside, since most of
-
them are built with closed source
components - and that's not a great state
-
for something that is as privileged as a
firmware. So it's my belief, that firmware
-
needs to be built with open source. It
must be flexible, so we can adapt it to
-
our needs for our systems. It needs to be
built with software that we understand and
-
we use for, in, other applications, so
that it can get widely tested and well
-
tested. It needs to be built in a
reproducible manner, so that we can be
-
secure against that build chain attacks.
And it needs to be cryptographically
-
measured, so that we can be sure that
this, what we flash on the system, is what
-
is actually running on the system. And
that's the philosophy behind Heads - it's
-
built on the free software coreboot
firmware, plus a Linux kernel in ROM, that
-
acts as a bootloader, and then a lot of
security research and tools, that help us
-
try to build slightly more secure systems.
Using Linux as a bootloader is not a
-
particularly new idea. Back in the 1990s
when we started building large scale Linux
-
clusters, we were very frustrated with the
inflexibility of DHCP and PXE booting
-
large machines, that even with those
frustrations, we built one, that was about
-
the 30th fastest in the world on the top
500. Meanwhile, my colleague Ron Minich at
-
Los Alamos was also building large
clusters, and had the observation that the
-
BIOS enumerates all the buses, initializes
a bunch of devices, finds the Linux kernel
-
and in the Linux kernel, enumerates all
the buses, initializes all the devices,
-
and he thought: "This is this is silly,
why are we doing this twice?".
-
So he had the idea to build a version of
Linux, that ran in the ROM. He called this
-
project "Linux BIOS" and it went on to
power the MRC cluster, which was the third
-
fastest machine in the world in 2003. In
2008 Linux BIOS underwent a major
-
refactoring and it was renamed to
"Coreboot". And Google chose to use
-
Coreboot as the firmware on their
Chromebooks - which are at this point the
-
only non-UEFI x86-based laptops that you
can buy. And they've done some really some
-
great work in trying to lock down the
configuration and the firmware on the
-
Chromebooks. Ron, who has only moved to
Google in 2011 and is continuing to work
-
on the Coreboot project there. So Coreboot
has three stages that it goes through as
-
it starts up the machine: the first one is
a very small amount of real-mode assembly,
-
because your modern 64-bit laptop still
boots up in real mode with 16-bit just
-
like its 1970's. So that's a very small
amount of code - about 1.5K. That in turn
-
sets up a C runtime environment with
what's called "Cache-as-RAM mode" and it
-
calls into the ROM stage which is about
70K. "Heads" has moved the TPM
-
initialization early in the ROM stage
before DRAM is set up to help measure the
-
boot block and provide a static route of
trust that's hopefully a little bit more
-
secure. And because that measurement is
done early on, our trusted computing base
-
is actually quite small. This is a
fraction of 1% of the size of a UEFI
-
firmware, which is usually about 16 MB
once it's uncompressed.
-
The ROM stage then measures and executes
the RAM stage, which does the more
-
traditional "walk the bus, find / figure
out what devices are on there", but it
-
doesn't initialize them: it just
enumerates them and generates the
-
descriptors for Linux. It also installs
the SMM handler for system management
-
mode. It then measures and jumps into the
payload - and that whole process takes
-
less than a second. So it is able to get
into the payload and actually get to the
-
user code very, very quickly. On something
like the X230 it's able to go from power
-
on to a interactive recovery shell in less
than 2 seconds. And that includes bring up
-
the TPM, doing cryptographic measurements
and assessing the state of the system.
-
Because we now have Linux at this point,
we have all the flexibility that comes
-
with that. We can implement boot scripts
with the full power of the shell or the C
-
language runtime:
we're not stuck with the limited functions
-
of UEFI. Linux supports lots of different
file systems. It supports lots of
-
different devices. It supports lots of
different encryption methods. And this
-
gives us the ability to use any of them
for your specific application. In
-
contrast, UEFI, which supports unencrypted
FAT file systems on the first drive that
-
have to be in the first 1 GiB or
something, it's really, really limited as
-
to how it can find its boot device.
There's a saying in the in the Open Source
-
community that with enough eyes all bugs
are shallow.
-
And Linux has a lot more eyes looking at
it. That the device drivers and the file
-
systems and the encryption have been
reviewed by both white hat and black hat
-
people around the world. The UEFI versions
of these do not have that same level of
-
scrutiny, so we're using both the UEFI
drivers and then having to run whatever on
-
top of it, increases the attack surface.
But by putting Linux in the ROM and
-
depending on its drivers we've reduced our
attack surface very dramatically. More
-
importantly though, Coreboot and Linux are
Open Source, so it is possible to build
-
custom versions for the device drivers
that you need, for the file systems that
-
you need. It's possible to fix bugs when
they come out, and sign and install your
-
own kernels. You don't have to wait for
the vendor to get around to doing it.
-
And the third major component of heads is
a tool called "kexec", which is a system
-
call that was added for the Linux BIOS
project back in 2003 by Eric Peterman,
-
that allows a running kernel to do a
graceful shutdown and start a new kernel
-
without having to go through the reboot
process. So this allowed, on their
-
application, it allowed them to do very
fast reboots of their cluster nodes. And
-
in the "Heads" case, it allows us to act
as a bootloader where we can find the real
-
kernel, that you want to run, and exec it.
Because "Heads" is quite small. It has to
-
fit in 4 MB of ROM. So it's not something
that you learn to run as a day-to-day sort
-
of OS. Hopefully this won't explode on me
again.
-
Because we have the Bourne Shell, most of
the policies and the startup scripts in
-
"Heads" are implemented as as shell
scripts. In this case we were able to pass
-
in a new set of command line parameters, a
new initial RAM disk, and in this case we
-
can even start a hypervisor. And all of
that can happen very very quickly, as well
-
as with with a good degree of security.
So, those are the building blocks that
-
"Heads" is built on: Coreboot, Linux and
tools like "kexec". But it now gives us a
-
really nice platform to begin
experimenting with additional security
-
features. And before we go too deep down
the rabbit hole of, you know, security and
-
threat models, I want to quote my friend
Steph, who said that, "Your threat model
-
is not my threat model."
But you know your threat model is okay as
-
well, that we all have different things we
want to protect, from different attackers,
-
who are willing to spend different amounts
of effort to go after them. And the nice
-
thing about having an open source is: We
can build systems tailored to your
-
individual threat model. So a lot of these
things may not actually apply to your
-
specific threats, but the fact that we can
build them is a great capability. Last
-
year Joanna Rutkowska reminded us that
firmware is not just in our CPU. Firmware
-
is in our Wi-Fi card. It is in our GPU. It
is in our SSD. It is in our keyboards. And
-
all of these devices might be trying to
subvert the boot process.
-
One way to handle that is to take Peter
Stuge's advice of disassembling the
-
machine and ripping out anything we can't
control. If this is your threat model, his
-
instructions are really worth following.
They're really thorough about what pieces
-
are potentially of concern. And you're
going, right now, you'll have to open up
-
your laptop to install "Heads." It's not
quite as easy as it is to install most
-
Linux distributions, because we have to
flash it into the motherboard boot ROM.
-
While we're in there, now, we take
advantage of some features that, to the
-
best of my knowledge, no UEFI system is
using. These flash chips have a hardware
-
write-protect mode, where you can specify
part of the chip is write-only. Excuse me.
-
Is read-only, write-once. And this gives
us our immutable boot block in which to
-
store the trusted computing base, the TCB,
so that we can measure the rest of the
-
system. We also then suggest disconnecting
the write-protect PIN from the
-
motherboard, which protects against
certain classes of attacks, like the Intel
-
close chassis adapter, that allows
external JTAG of the CPU.
-
Depending on your threat model you might
want to cover that chip in epoxy as well,
-
to frustrate Evil Maid attacks that want
to do a physical programming on it.
-
Disconnecting the write-protect PIN also
serves to protect from other devices on
-
the machine that have access to those
PINs. Devices like the Management Engine,
-
which is a really scary CPU inside the
CPU. Rudolf Marek two years ago at CCC
-
called it the "Matroyshka CPU".
And Igor Skochinsky detailed what are the
-
capabilities of the management engine. And
they're really worrisome, that it runs a
-
opaque obfuscated blob of code about 5 MiB
that the CPU can't see. The management
-
engine can read and write all of main
memory. It can read from the keyboard and
-
video. It can receive Java bytecodes over
the network and execute them on behalf of
-
someone outside the machine. And it's
listening on the network even when the
-
system is powered off.
So this is basically a rootkit inside the
-
chipset, as some folks have called it. So
that concerned me a lot, and I spent some
-
time looking at how its firmware images
are built, and realized that we can build
-
modified, reduced functionality firmware
for it that removes all of the rootkit
-
functions, and just leaves the "CPU bring
up" module. This takes that 5 MiB and
-
shrinks it down to about about 40 KiB of
space. So we don't know exactly what it's
-
doing in that 40 KiB, but we at least know
it doesn't have a device driver, or a Java
-
Virtual Machine, or a lot of the other
functions.
-
And we've successfully done this on both
Sandy Bridge and Ivy Bridge like the X230
-
ThinkPads as well as modern Skylake CPUs
like the Chell Chromebook. And that's
-
really encouraging, that if we can apply
this to more modern hardware, that allows
-
us to, you know, move away from our five-
year-old ThinkPads to something a little
-
shinier. The management engine isn't the
only device that might be trying subvert
-
the boot process. Again Johanna showed us
there are lots of things to be worried
-
about. Intel's UEFI architects, Yao and
Zimmer, recommend that firmware turn on
-
the IOMMU, now called VTD, to protect
against rogue devices. To the best of my
-
knowledge, since they've written this
guide, no UEFI firmware is taking
-
advantage of the IOMMU. So, it's a great
piece of hardware to have, but it doesn't
-
help if you don't turn it on. Linux,
meanwhile has no problem taking advantage
-
of it, so we use it, what we get
essentially - we get that DMA protection
-
for free by using Linux as our bootloader
in the ROM. Another way devices, rogue
-
devices, can try to interfere with the
boot process is by providing option ROMs,
-
which are executable code to be run by the
BIOS, that have a sort of a device driver.
-
And this code can do things like about log
keystrokes and then try to exfiltrate
-
passwords as we see here. That problem was
initially reported in 2007 by John Heasman
-
at BlackHat, again by Snare in 2012, and
again by my work on Thunderstrike. And as
-
of last week a official fix has finally
rolled out for it to close that particular
-
vulnerability.
Folks who are using coreboot have this as
-
a option that they can say, this, I am
concerned about this threat, let me let me
-
fix this, let me disable this function.
And they point out that it might cause
-
degraded functionality, but that's
something you can QA on your own system.
-
And in practice with Linux as your
bootloader in the ROM, you don't use the
-
option ROMs for anything. Everything is
done with with Linux's own device drivers,
-
so you're not dependent on the whatever
limited functionality the option ROM
-
provided.
So, now that we have we've taken our
-
building blocks and we hopefully have
protected the boot process, and hopefully
-
the code that's running is what we think
it is, we need to turn to how do we secure
-
the secrets on the machine. And I'm a huge
fan of the TPM, the Trusted Platform
-
Module, now I know in the free software
community it's been largely unwelcome. It
-
has not received a very welcome reception,
because of the way it's been used for DRM
-
and other other user-hostile things. Since
we control the TPM from the first
-
instruction in the in the boot block,
we're able to use it in ways that we want
-
to, so we don't have to enable DRM, but we
can use it to protect our secrets. And the
-
the way that it does that, is it keeps
track of what code is executed as the
-
system boots, and it hashes that code into
special registers called PCRs. And the
-
idea is that, you can extend the PCR by
hashing the next module of code, and then
-
hashing that with the previous hash, and
this creates a chain of trust that allows
-
to say: If these hashes match the expected
values, only the code, that we want to
-
have run, has run. And then the TPM will
only decrypt the the disk encryption key
-
if those PCRs match, which means that the
code that we want to have run, is what has
-
been executed. This means if someone
manages to overwrite the, the non-write
-
protected part of the ROM, that would
change those measurements and the TPM
-
won't reveal the key to them. It also
takes a user password and that password is
-
validated by the TPM hardware itself,
which gives us hardware rate-limiting on
-
how often an attacker can try. It also
gives us the ability to do hardware-based
-
retry limits, so that the TPM will flush
the key, if they if an attacker in
-
possession of your machine tries too long.
That does mean there's now another way to
-
lose your disk encryption key.
And there's the the old joke about there
-
are two types of people with encrypted
drives - those who have lost data due to
-
forgetting their key, and and those who
will. So what "Heads" does, when you
-
generate your key, is, it takes that key
and splits it into multiple pieces, that
-
you can then share either to friends or to
backup services, where each piece doesn't
-
let you decrypt it. But you can combine
them with Shamir secret sharing to
-
regenerate the cryptographic disk
encryption key.
-
We're also able to take advantage of best
practices like using the, including the
-
disk encryption key headers in the PCRs
that we use to seal the disks. This avoids
-
a certain class of Evil Maid attack, where
someone swaps out your drive; may not be
-
in your threat model, but it is easy to
deal with just a few lines of shell
-
script. So we hopefully we now trust that
the system is running the code we think it
-
is, but how does it prove to us that it is
actually our machine, that someone hasn't
-
snuck into our hotel room and swapped out
everything and left, left up, carefully
-
replaced our stickers to make us believe
we're typing our password into to our own
-
computer. Some anti-Evil Maid toolkits
will encrypt a secret, secret phrase, and
-
then display it to you if and only if the
PCR is match, but that's subject to a
-
replay attack. What Matthew Garrett
demonstrated last year at 32C3, was, using
-
the time, a time-based one-time password
used by Google Authenticator to protect
-
the firmware and have it attest to the
user, that it is unmodified. So when the
-
system boots, and it goes through
measuring all of the various components
-
the, the TPM will only release the secret
if those PCRs match. The firmware then
-
hashes that along with the current time
and generates a six digit value that it
-
prints on the screen. You compare that to
what's on your phone and that tells you
-
whether or not you can trust the machine.
It's a, it's a great idea, and it's
-
implemented again as a very small shell
script to read, read the value from the
-
TPM, unseal it and then compute the
the hash of it.
-
This also allows us to start making a
transition from the TPM-rooted, a TPM
-
static route of trust to a PGP-based
trust, where most importantly, this is a
-
TPM key - excuse me, this is a PGP key,
that you, the owner of the computer
-
control, not some random vendor or some
random hardware device manufacturer that's
-
going to lose the key and allow malware
like Stuxnet to use it to circumvent
-
security. The boot script
in "Heads", again, it's a
-
small shell script, is able to use a GPG
to verify the next stages of the, the
-
hypervisor, the initial RAM disk and the
kernel. And it also then uses the the
-
TPM's counters to help prevent against
rollback, where someone takes your drive
-
and rolls it back to a previous version,
perhaps with a vulnerability that they can
-
exploit. So this, this
allows the, allows us to be
-
sure, that not only are we running the
firmware, the OS that we think we should
-
be running, it ensures us that someone
hasn't been able to substitute one that, a
-
vulnerable version. Having the
PGP key also allows us to take
-
advantage of an idea from Android and
Chrome OS which is the the dm-verity read-
-
only root filesystem - this hashes all of
the blocks and that hashes all of the the
-
hashes and so on up until it gets to a
root hash in the tree that is then signed.
-
This allows the kernel, on every read
access, in logarithmic time to verify the
-
essentially a signature on that data. This
does require a read-only root filesystem,
-
but it gives us even more confidence that
the system has been untampered with. Once
-
you're running your OS, it's good to have
you know some security conscious thoughts
-
as well, you know. Heads is mostly focused
on, "how do we securely transition to an
-
OS" and that OS you run is up to you. I
like Qubes - it's reasonably secure, it's
-
highly recommended by people who know
about endpoint security. And the Qubes
-
team recognizes that firmware security is
a vital piece of system security. For
-
their next release, Qubes are for -
they're going to require the machines have
-
open source firmware, such as coreboot.
And I hope that Heads is going to be a
-
piece of that. I've also been working with
with the Qubes software and have modified
-
it to work with things like the dm-verity
read-only root filesystem. This now allows
-
the user to lock down the configuration,
so that someone can't tamper with their
-
their setup. It also gives you a recovery
mode that allows you to fix things up and
-
re-sign the OS. Reproducible builds are
really important so that everyone can
-
verify what that the builds match what
they should. In the case of of Heads we
-
have a lot of upstream dependencies that
aren't reproducible so we're working with
-
them to try to patch them. We've patched
Xen - they've accepted that commit. We've
-
also built some tools to let you build
initial RAM disks in a reproducible way.
-
This works with Qubes, with Heads, and
we're hoping to other Linux distributions
-
pick it up as well.
All of our tree is cryptographically
-
signed, so hopefully GitHub is not trying
to slip in any patches. And it is open
-
source so we encourage anyone to read
through it. No NDA is required, unlike most
-
of the UEFI sources. So that's sort of the
state of where things are - it's pretty
-
much in very beta, but it is usable. But
there are a lot of areas where we could
-
continue to do research - things like the
embedded controllers on Chromebooks are
-
open source. We can use those to help with
our root of trust as well. Porting
-
coreboot to more modern platforms would
let us take advantage of things like
-
tamper switches and Intel Boot Guard. I'm
also working on porting coreboot over to
-
server platforms so that we can use it for
more secure cloud hosting. Servers have a
-
very different threat model from from
laptops, and a lot of things have firmware
-
that we have to be concerned about. One
collaboration I'm looking at there is with
-
the open BMC project to be able to take
advantage of the open source in the
-
management controller for the servers. And
I'm also collaborating with the Mass Open
-
Cloud project that's trying to build
secure bare metal clouds. I'm cautiously
-
optimistic about enclaves and how they
will help us with the security, especially
-
in a environment where we control the
firmware and we can ensure that the
-
enclaves are set up in a safe way. There
are a lot of issues on GitHub, again,
-
please welcome contributions. I hope
everyone gets inspired to to work on the
-
installing this on their laptop. And if if
you are interested I'll be hanging out at
-
the coreboot assembly later today and
occasionally this week. The coreboot team
-
has a bunch of people here. They have
flash programmers and can help you install
-
coreboot on your laptop. The source code
for Heads is available on GitHub, and a
-
annotated version of this talk is up on my
website, and welcome comments and feedback
-
on it. So thank you all for coming to hear
about this project I hope that everyone is
-
and you know as excited about open source
firmware as I am and I'd love to take any
-
questions that you all have.
-
Applause
-
Question: Thanks for your great talk -
this is very interesting. Do you have any
-
advice for the 95% of us who are stuck on
non coreboot compatible laptops.
-
Trammell: Buy a Chromebook?
Laughter
-
Trammell: It's hard to trust the closed-
source firmware. It certainly; there are
-
people we have to trust - there are
institutions we have to trust. We have to
-
trust Intel to some extent, and Intel is
responsible for, you know, both our CPUs
-
and a lot of the firmware. Depending on
your threat model, firmware attacks may
-
not be a huge concern for your particular
machine. Or they might be, you know, of
-
grave concern, in which case even just
doing some of the things that Peter Stuge
-
suggested of clipping the write-protect
pin on the on the chip, removing things
-
that might be hostile and attacking your
system. His guides are really good one to
-
follow for the hardware security.
Question: I was wondering if you also
-
support ARM - I just saw Intel laptops so
I was just wondering.
-
Trammell: So ARM it has a lot of
advantages as a CPU. It only has 20 years
-
of legacy baggage rather than 40. And the
boot process on it is much much simpler
-
since it doesn't have to go through real
mode to long mode to paging and all the
-
other steps. The downside to a lot of ARMs
is that they their boot code is a few is
-
on die and outside of the control of the
user. Luckily, most of that boot code is
-
fairly simple, and can establish - and
some of them will establish a hardware
-
root of trust. But in general, yeah that
the ARM to U-Boot to whatever seems to
-
work out pretty well. I know there's been
some interest in, "can U-Boot be replaced
-
with a Linux BIOS or coreboot like thing",
and I suspect the folks at the booth would
-
be able to talk more about that.
Question: And then just a followup - so if
-
coreboot or Libreboot supports the
platform - Heads will work too right?
-
Trammell: Essentially yes, yeah.
Heads is a payload for coreboot.
-
Question: OK.
Herald: It's there on the left.
-
Signal Angel: Thank you - there's a
question from the Internet about coreboot.
-
Coreboot has blobs included and, for
example, binary blobs from Intel with all
-
the firmware support package and all that
stuff. How can we call coreboot secure,
-
then, in the light of this - let alone
open source?
-
Trammell: So the intel FSP is a
significant concern. This is the firmware
-
support package that is required to
initialize the memory controllers on on
-
modern Intel cpus. On older CPUs, such as
the the Sandy Bridge and Ivy Bridge, the
-
coreboot and Libreboot are able to
initialize the memory natively without
-
having to go into the FSB. However, if you
look at what coreboot is doing in the MRC
-
on those platforms, it tends to just be
poking a bunch of registers with values
-
that seem to work. And it's modern memory
controllers are so complex that, and Intel
-
is unwilling to document them, that
without extensive NDA's that it's very
-
hard to build any sort of memory
initialization. So what we can't say it's
-
a hundred percent free software, we can at
least we can ensure that the FSP is
-
measured and it's unchanging. We can also
look at the state of things that it sets
-
up and include those in our measurements.
So even if it doesn't get us one hundred
-
percent open source - and as far as I know
the only system that does that right now
-
is bunnies' Novena laptop. At least we can
measure it and we can know that it hasn't
-
been tampered with from
what we initially installed.
-
Question: And before so this is a great
project and I'd like to ask why you did
-
certain architectural decisions. The
specific combination of Linux and shell.
-
So why didn't you choose a BSD kernel which
are usually perceived to be more secure
-
and of a higher quality, and why did you
choose a shell over let's say, Python
-
or Haskell, which are also often
perceived of higher quality?
-
Trammell: There is a lot of desire to
support Python in Heads. The downside is
-
that there's a very limited space: the
X230 bootrom, for instance, has 4
-
megabytes of available space. The Python
interpreter is a couple megs already. In
-
terms of why Linux over BSD - the kexec
system call is a core component of this:
-
to be able to do a graceful shut down and
transfer from the Linux kernel to another
-
kernel or - to any multi-boot compliant
kernels, which includes BSD. It is a
-
necessary feature if it, if BSD had such
functionality, that it would be a fine
-
just a choice for the the internal boot
ROM/boot loader.
-
Question: Thanks for great work. How to
perform updates of coreboot and its
-
payload when it's binaries used in
measurement for releasing encryption key
-
then when you update coreboot this
measurement will change and you will know
-
no longer will be able to boot the system
- how to solve that problem?
-
Trammell: So migrating encryption keys
with TPM requires a explicit step of
-
retrieving the key from the TPM with the
current configuration and then resealing
-
it with the new configuration. One
advantage of a reproducible build is the
-
hashes of the of all the firmware stages
can be published - it can be pre-computed,
-
and then the PCR values can be pre-
computed so you can read you can seal the
-
keys for the new values. In terms of the
update process for the Heads payload - one
-
of the things that we're working on is
being able to have an even more minimal
-
heads that has just a USB device driver
that you can boot into, copy your new
-
payload, and then install that elsewhere
on the chip. And part of that process
-
would involve resealing any of the keys
that you need to transfer.
-
Herald: Another question from the
Internet.
-
Signal Angel: Thank you. On your webpage
you implemented Heads on ThinkPads only.
-
How much work is still needed to translate
this to, let's say, non-ThinkPads?
-
Trammell: ThinkPads are really popular
with the security community. It's quite
-
interesting to look out at you know the
hall here and see how many ThinkPads there
-
are. And as a result the coreboot
community has been very supportive of
-
ThinkPads. There's, other than the
ThinkPads and the Chromebooks, there
-
aren't a lot of devices that support
coreboot out of the box. And that's
-
something that I hope would change - I
hope that some OEMs would realize there's
-
value in provide an open source firmware
and move to move to using it. Both as a
-
cost-saving measure as well as a freedom
measure. In terms of the difficulty
-
important coreboot to a platform - I
haven't successfully done that yet, but I
-
suspect the people at the assembly would
be happy to discuss that further.
-
Question: Would you plan to rework
embedded controller firmware on ThinkPads
-
because it's remain close at birth which
still has an access to PC bus and probably
-
couldn't be trusted.
Trammell: So your question is how do we
-
how do we replace the EC?
Question: Yes do plan to replace EC with
-
open source firmware as in the
Chromebooks?
-
Trammell: So the Chromebook has open
source EC. The part of building coreboot
-
for Chromebook involves installing the ARM
cross compiler to build the EC firmware.
-
And the Chromebooks actually have a really
elegant protocol for the EC to attest to
-
the CPU that is running the firmware that
you think it is running. On other
-
platforms, this would require a lot more
research. The doc; many of the EC chipsets
-
have data sheets available, so it's
possible to read through and see how they
-
work. And most of them have updatable
firmware. In case of the ThinkPads,
-
there's a module in the ThinkPad BIOS that
will do that update. There's, we would
-
need to figure out what that protocol
looks like.
-
Question: Sorry yes I mean if you have
working prototype on ThinkPads probably
-
want to add remaining business open
sources EC on ThinkPads as well in the
-
first place.
Trammell: I'm sorry, I don't think I
-
understood your follow-up.
Question: Okay. So if you if you have a
-
working prototype on ThinkPads and only on
ThinkPads, will you finish somewhat soon
-
current existing prototype of open source
EC exists in college shade by Lincoln's or
-
you are playing to extend your work on
other platforms and finish this bits
-
later.
Trammell: Yeah right now I have not
-
personally made any progress on the
ThinkPad EC. I was looking into it because
-
I have a modified keyboard on my ThinkPad
that that needs to updated EC firmware,
-
but I haven't actually gotten into that.
This is a area of open research
-
Signal Angel: Thank you, two quick
questions from the IRC - are you planning
-
to use systemd in the boot process
is the first one
-
Laughter
Signal Angel: And the second one let's say
-
you flash your firmware at the Congress
right here with the help of a hardware
-
programmer. Can you update when there's a
new version or do you have to currently
-
need the hardware access to update?
Trammell: Right now you can update
-
afterwards at great risk, because you can
leave the flash writeable, which would
-
allow you to flash after the fact. We are
still working on a good procedure for
-
doing software-only firmware updates once
the immutable boot block is installed. And
-
to the other question - did I mention that
we are really short on space and we don't
-
want to put any large applications like
systemd on there.
-
Questioner: It was like good one, thanks.
-
applause
-
postroll music
-
subtitles created by c3subtitles.de
in the year 2018