18
Slide 1 - http://www.pengutronix.de - 21.03.2015 Verified Boot mit Linux auf ARM Chemnitz, 21.3.2015 Jan Lübbe <[email protected]> ROM-Code Root-Filesystem Kernel Bootloader

Verified Boot mit Linux auf ARM - chemnitzer.linux-tage.de · Jedes Linux-System hat unentdeckte Sicherheitslücken Kommerzielle Steuerungssoftware Defense-in-Depth ist wichtig! Wir

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Verified Boot mit Linux auf ARM - chemnitzer.linux-tage.de · Jedes Linux-System hat unentdeckte Sicherheitslücken Kommerzielle Steuerungssoftware Defense-in-Depth ist wichtig! Wir

Slide 1 - http://www.pengutronix.de - 21.03.2015

Verified Boot mit Linux auf ARM

Chemnitz, 21.3.2015

Jan Lübbe <[email protected]>

ROM-Code

Root-Filesystem

Kernel

Bootloader

Page 2: Verified Boot mit Linux auf ARM - chemnitzer.linux-tage.de · Jedes Linux-System hat unentdeckte Sicherheitslücken Kommerzielle Steuerungssoftware Defense-in-Depth ist wichtig! Wir

Slide 3 - http://www.pengutronix.de - 21.03.2015

Jan Lübbe

● Linux seit 1998, Debian Developer

● Informatikstudium an der TU Braunschweig, Dipl.-Inform.

● 2008: Freelance-Linux-Entwicklung(OpenMoko, Mobilfunk-Infrastruktur & Osmocom, ...)

● Seit 2012 bei Pengutronix:Systemarchitekt im Kernel & Platform Team

Page 3: Verified Boot mit Linux auf ARM - chemnitzer.linux-tage.de · Jedes Linux-System hat unentdeckte Sicherheitslücken Kommerzielle Steuerungssoftware Defense-in-Depth ist wichtig! Wir

Slide 4 - http://www.pengutronix.de - 21.03.2015

Agenda

● Verified Boot?

● Bootloader

● Kernel

● Root-Dateisystem

● Wie geht’s weiter?

Zwischenfragen sind erwünscht!

Page 4: Verified Boot mit Linux auf ARM - chemnitzer.linux-tage.de · Jedes Linux-System hat unentdeckte Sicherheitslücken Kommerzielle Steuerungssoftware Defense-in-Depth ist wichtig! Wir

Slide 5 - http://www.pengutronix.de - 21.03.2015

Warum Verified Boot?

Attraktives Angriffsziel:

● Linuxsysteme steuern kritische Industrieprozesse● Eingebettete Systeme werden im Vergleich zu Servern

schlechter gewartet

Komplexe Software:

● Jedes Linux-System hat unentdeckte Sicherheitslücken● Kommerzielle Steuerungssoftware● Defense-in-Depth ist wichtig!

Wir können es selbst:

● SoCs mit Hareware-Support sind überall zu kaufen● Software-Support als FOSS

Page 5: Verified Boot mit Linux auf ARM - chemnitzer.linux-tage.de · Jedes Linux-System hat unentdeckte Sicherheitslücken Kommerzielle Steuerungssoftware Defense-in-Depth ist wichtig! Wir

Slide 6 - http://www.pengutronix.de - 21.03.2015

Was wollen wir schützen?

● Bootloader

● Kernel

● Dateisystem● Programme● Konfigurationsdaten● Anwendungsdaten

● Der Angreifer kann alle gespeicherten Daten manipulieren → wir wollen jede Manipulation erkennen

Page 6: Verified Boot mit Linux auf ARM - chemnitzer.linux-tage.de · Jedes Linux-System hat unentdeckte Sicherheitslücken Kommerzielle Steuerungssoftware Defense-in-Depth ist wichtig! Wir

Slide 7 - http://www.pengutronix.de - 21.03.2015

Bootvorgang

Herstellerabhängig (hier Freescale HABv4, SHA und RSA)

FIT-Image (SHA und RSA)

IMA & EVM (HMAC und RSA)

ROM-Code

Root-Filesystem

Kernel&InitRAMFS&Device-Tree

Bootloader

Page 7: Verified Boot mit Linux auf ARM - chemnitzer.linux-tage.de · Jedes Linux-System hat unentdeckte Sicherheitslücken Kommerzielle Steuerungssoftware Defense-in-Depth ist wichtig! Wir

Slide 8 - http://www.pengutronix.de - 21.03.2015

Bootloader

● Üblicherweise auf ungeschütztem Speicher (NAND, eMMC, SD)

● Hat volle Kontrolle über das System

● Muss vom ROM-Code geprüft werden● Hash des Zertifikats wird in On-Chip-Fuses gebrannt

● Enhält den Public-Key zur Prüfung des Kernel-Images

Page 8: Verified Boot mit Linux auf ARM - chemnitzer.linux-tage.de · Jedes Linux-System hat unentdeckte Sicherheitslücken Kommerzielle Steuerungssoftware Defense-in-Depth ist wichtig! Wir

Slide 9 - http://www.pengutronix.de - 21.03.2015

BootloaderSoC

ROM-Code

Fuses

Bootloader

Pubkey

Signatur

Pubkey

Page 9: Verified Boot mit Linux auf ARM - chemnitzer.linux-tage.de · Jedes Linux-System hat unentdeckte Sicherheitslücken Kommerzielle Steuerungssoftware Defense-in-Depth ist wichtig! Wir

Slide 10 - http://www.pengutronix.de - 21.03.2015

FIT-Image

● In eigener Partition oder im Root-Dateisystem

● Enthält Kernel, InitRAMFS und Device-Tree● Kann auch mehrere Varianten enthalten● Signiert ist immer eine „Konfiguration“ aus Kernel, InitRAMFS und

DT um Mix-and-Match-Angriffe zu verhindern

● Muss vom Bootloader geprüft werden● Signatur passt zum Public-Key im Bootloader

● Enhält den Public-Key zur Prüfung des Root-Dateisystems

Page 10: Verified Boot mit Linux auf ARM - chemnitzer.linux-tage.de · Jedes Linux-System hat unentdeckte Sicherheitslücken Kommerzielle Steuerungssoftware Defense-in-Depth ist wichtig! Wir

Slide 11 - http://www.pengutronix.de - 21.03.2015

FIT-Image

Bootloader

Pubkey

FIT-Image

Konfiguration

Signatur

Hashes

Kernel

Devicetree

InitRAMFS Pubkey

Page 11: Verified Boot mit Linux auf ARM - chemnitzer.linux-tage.de · Jedes Linux-System hat unentdeckte Sicherheitslücken Kommerzielle Steuerungssoftware Defense-in-Depth ist wichtig! Wir

Slide 12 - http://www.pengutronix.de - 21.03.2015

Root-Dateisystem (initial)

● ext4 oder UBIFS● Extended Attributes

● Jede Datei hat einen IMA-Hash● SHA1 oder SHA256 über den Datei-Inhalt

● Jede Datei hat eine EVM-Signatur● Wird auf dem Entwicklungsrechner mit einem Private-Key signiert● RSA-Signatur passt zum Public-Key im InitRAMFS

Page 12: Verified Boot mit Linux auf ARM - chemnitzer.linux-tage.de · Jedes Linux-System hat unentdeckte Sicherheitslücken Kommerzielle Steuerungssoftware Defense-in-Depth ist wichtig! Wir

Slide 13 - http://www.pengutronix.de - 21.03.2015

Root-Dateisystem (initial)

Root-Dateisystem

InitRAMFS Pubkey

/etc/shadow IMA-Hash EVM-Signatur

/bin/sh IMA-Hash EVM-Signatur

/sbin/init IMA-Hash EVM-Signatur

Page 13: Verified Boot mit Linux auf ARM - chemnitzer.linux-tage.de · Jedes Linux-System hat unentdeckte Sicherheitslücken Kommerzielle Steuerungssoftware Defense-in-Depth ist wichtig! Wir

Slide 14 - http://www.pengutronix.de - 21.03.2015

Root-Dateisystem (schreibbar)

● Keine RSA-Signaturen● Wir haben keinen Private-Key auf dem System● RSA ist langsam

● stattdessen SHA-HMAC● Benötigt ein Secret, dass für jedes System unterschiedlich ist● Beim ersten Zugriff wird die Signatur durch den HMAC ersetzt

● Jede Datei hat eine IMA-Hash und EVM-HMAC● Nur ein korrekt gebootetes System hat Zugriff auf das EVM-Secret● Angreifer können für manipulierte Dateien keinen passenden HMAC

berechnen

Page 14: Verified Boot mit Linux auf ARM - chemnitzer.linux-tage.de · Jedes Linux-System hat unentdeckte Sicherheitslücken Kommerzielle Steuerungssoftware Defense-in-Depth ist wichtig! Wir

Slide 15 - http://www.pengutronix.de - 21.03.2015

Root-Dateisystem (schreibbar)

Root-Dateisystem

InitRAMFS Pubkey

/etc/shadow IMA-Hash EVM-HMAC

/bin/sh IMA-Hash EVM-HMAC

/sbin/init IMA-Hash EVM-HMAC.

SoC

FusesUnique

KeyEVM-Secret

Page 15: Verified Boot mit Linux auf ARM - chemnitzer.linux-tage.de · Jedes Linux-System hat unentdeckte Sicherheitslücken Kommerzielle Steuerungssoftware Defense-in-Depth ist wichtig! Wir

Slide 16 - http://www.pengutronix.de - 21.03.2015

Demo

Page 16: Verified Boot mit Linux auf ARM - chemnitzer.linux-tage.de · Jedes Linux-System hat unentdeckte Sicherheitslücken Kommerzielle Steuerungssoftware Defense-in-Depth ist wichtig! Wir

Slide 17 - http://www.pengutronix.de - 21.03.2015

Selber machen!

● Freescale MX28● I2SE Duckbill● Olinuxino?

● Freescale MX53● USB Armory

● Freescale MX6● Cubox-i● RioT-Board

● Ohne Hardware-Support: Read-Only SPI-NOR oder eMMC + TPM

● Beispiel-BSP für MX28-Duckbill wird demnächst veröffentlicht

Page 17: Verified Boot mit Linux auf ARM - chemnitzer.linux-tage.de · Jedes Linux-System hat unentdeckte Sicherheitslücken Kommerzielle Steuerungssoftware Defense-in-Depth ist wichtig! Wir

Slide 18 - http://www.pengutronix.de - 21.03.2015

Was fehlt noch?

● Schutz von Verzeichnissen● Verhindert Verschieben, Löschen und Anlegen von Dateien● Es gibt schon Patches „directory integrity protection“

● Integration in mkfs.ext4 und mkfs.ubifs● Teilweise gibt es Patches, aber Details sind noch ungelöst

● Verschlüsselung von Anwendungsdaten mit einem Device-Key per ECryptFS

● Unterstützung für mehr SoCs:● MX53 (Zugriff auf Device-Key)● MX6 (Crypto-Einheit CAAM)● Andere Hersteller (Dokumentation?)

Page 18: Verified Boot mit Linux auf ARM - chemnitzer.linux-tage.de · Jedes Linux-System hat unentdeckte Sicherheitslücken Kommerzielle Steuerungssoftware Defense-in-Depth ist wichtig! Wir

Slide 19 - http://www.pengutronix.de - 21.03.2015

Q & A