<- Back to the timetable

Bootstraping a slightly more secure laptop

Trammell Hudson

Heads builds on several years of firmware security research focused on firmware vulnerabilities ("Thunderstrike: EFI bootkits for Apple Macbooks" and "Thunderstrike 2") as well as many other CCC talks ("Hardening hardware and choosing a #goodBIOS", "Beyond anti evil maid", "Towards (reasonably) trustworthy x86 laptops", etc.) and combines these ideas into a single system. It is not just another Linux distribution - it combines physical hardening and flash security features with custom Coreboot firmware and a Linux boot loader in ROM. This moves the root of trust into the write-protected ROM and prevents further modifications to the bootup code. Controlling the first instruction the CPU executes allows Heads to measure every step of the boot process into the TPM, which makes it possible to attest to the user or a remote system that the firmware has not been tampered with. While modern Intel CPUs require binary blobs to boot, these non-Free components are included in the measurements and are at least guaranteed to be unchanging. Once the system is in a known good state, the TPM is used as a hardware key storage to decrypt the drive. Additionally, the hypervisor, kernel and initrd images are signed by keys controlled by the user, and the OS uses a signed, immutable root filesystem so that any software exploits that attempt to gain persistence will be detected. While all of these firmware and software changes don't secure the system against every possible attack vector, they address several classes of attacks against the boot process and physical hardware that have been neglected in traditional installations, hopefully raising the difficulty beyond what most attackers are willing to spend.

Download Slides
PDF ZIP JSON
0:00:09 - 0:00:12
0:00:13 - 0:00:17
0:01:29 - 0:01:32
0:01:33 - 0:01:43
0:02:06 - 0:02:20
0:02:45 - 0:02:47
0:02:58 - 0:03:32
0:03:42 - 0:03:52
0:04:30 - 0:04:39
0:04:39 - 0:04:42
0:05:09 - 0:05:38
0:06:25 - 0:06:28
0:06:32 - 0:06:40
0:06:44 - 0:06:52
0:07:58 - 0:08:01
0:08:05 - 0:08:26
0:08:54 - 0:09:34
0:10:36 - 0:10:41
0:10:45 - 0:11:02
0:11:06 - 0:11:19
0:11:19 - 0:11:34
0:11:42 - 0:11:50
0:11:53 - 0:12:12
0:12:12 - 0:12:25
0:13:09 - 0:13:24
0:13:46 - 0:14:09
0:14:25 - 0:14:27
0:14:29 - 0:14:36
0:14:39 - 0:14:54
0:15:25 - 0:15:44
0:15:57 - 0:16:02
0:16:07 - 0:16:15
0:16:22 - 0:16:25
0:16:29 - 0:16:36
0:17:00 - 0:17:10
0:17:19 - 0:17:28
0:17:34 - 0:17:37
0:18:29 - 0:18:38
0:19:06 - 0:19:47
0:19:49 - 0:19:54
0:19:58 - 0:20:01
0:20:11 - 0:20:16
0:20:57 - 0:21:00
0:21:01 - 0:21:07
0:21:17 - 0:21:43
0:22:00 - 0:22:06
0:22:10 - 0:22:26
0:22:37 - 0:22:56
0:22:56 - 0:23:01
0:23:04 - 0:23:12
0:23:29 - 0:23:41
0:24:02 - 0:24:05
0:24:05 - 0:24:14
0:24:14 - 0:24:27
0:24:27 - 0:24:42
0:24:56 - 0:25:18
0:25:22 - 0:25:25
0:25:45 - 0:25:56
0:25:57 - 0:25:59
0:25:59 - 0:26:12
0:26:23 - 0:26:27
0:26:27 - 0:27:08
0:27:08 - 0:27:16
0:27:38 - 0:27:41
0:27:44 - 0:27:50
0:27:57 - 0:28:13
0:28:25 - 0:28:27
0:28:27 - 0:28:32
0:28:32 - 0:28:37
0:28:42 - 0:28:50
0:29:12 - 0:29:17
0:29:21 - 0:29:47
0:30:39 - 0:31:06
0:31:09 - 0:31:17
0:31:49 - 0:31:54
0:32:08 - 0:32:12
0:32:13 - 0:32:20
0:32:41 - 0:32:49
0:32:49 - 0:32:53
0:32:54 - 0:33:03
0:38:13 - 0:39:12
0:44:30 - 0:44:55
0:46:15 - 0:46:44
0:47:26 - 0:47:30
0:47:31 - 0:47:35
0:47:36 - 0:47:41