SlideShare une entreprise Scribd logo
1  sur  38
Télécharger pour lire hors ligne
Skazani na firmware
S07:E02
“Na granicy światów, czyli wstęp do
ARM Trusted Firmware”
Konrad Adamczyk
Kto mówi?
● Junior Firmware Developer
● ATF/UEFI, ARMv7, ARMv8
● Student AGH, kierunek Teleinformatyka
Plan prezentacji
1. Wstęp - tryby pracy procesora
2. ARM Trusted Firmware od środka
3. Bootloadery ARM-TF
4. Secure boot w ARM-TF
5. Runtime ARM-TF a bezpieczeństwo
Plan prezentacji
1. Wstęp - tryby pracy procesora
2. ARM Trusted Firmware od środka
3. Bootloadery ARM-TF
4. Secure boot w ARM-TF
5. Runtime ARM-TF a bezpieczeństwo
Tryby pracy procesora? A po co?
● Procesor = kilka trybów pracy
● Separacja dostępu na poziomie CPU - zakres operacji per proces
● Pozwalają np. na sprzętową kontrolę dostępu do pamięci
https://rhelblog.files.wordpress.com/2015/07/user-space-vs-kernel-space-simple-container.png
Tryby pracy procesora - przykładowa mapa pamięci
https://static.docs.arm.com/100690/0200/graphics/memory_map.png
Tryby pracy procesora - dla kernela
AppAppuser
OSsvc OS
... A gdzie wirtualizacja?
ARMv6
ARM SoC
Tryby pracy procesora - wirtualizacja
AppAppuser
OSsvc OS ... A gdzie bezpieczeństwo?
hyp Hypervisor
ARM SoC
KVM/Xen
Tryby pracy procesora - świat “bezpieczny”
AppAppuser
OSsvc OS
hyp Hypervisor
ARM SoC
Non-Secure Secure
Appuser
svc
mon
ARMv7
Trusted OS
Secure Firmware
Tryby pracy procesora - świat “bezpieczny”
AppAppEL0
OSEL1 OS
EL2 Hypervisor
ARM SoC
Non-Secure Secure
AppS-EL0
EL3
ARMv8-A
Secure Firmware
S-EL1 Trusted OS
ROM Firmware
… S-EL1?
Po co?
Tryby pracy procesora - ARMv8-A
1. Niezależne tryby = niezależne rejestry SP_ELx, SPSR_ELx, ELR_ELx
2. Zredukowanie kodu wykonywanego w EL3 - wprowadzenie S-EL1
3. Co z wyjątkami?
a. W pełni programowalne (przez SCR_EL3)
b. Synchroniczne - obsługa w aktualnym EL lub wyższym EL
c. Asynchroniczne (IRQ, FIQ, SError) - obsługa w aktualnym EL lub przekierowanie do EL3
4. EL3 vs SMM (Intel)
a. Kod wykonywany w EL3 - open source, licencja BSD
b. Miejsce na implementację errat hardware’owych
c. Mimo wszystko, może stać się “kontenerem na śmieci”
ARMv8 - zmiana trybu pracy procesora
AppAppEL0
OSEL1 OS
EL2 Hypervisor
ARM SoC
Non-Secure Secure
AppS-EL0
EL3
ARMv8-A
Secure Firmware
S-EL1 Trusted OS
ROM Firmware
smc
eret
eret
eretsvc
eret
eretsvc
eretsmc
Przypominajka - patrz wykład S07:E01
Kto z Was wie, co to jest BootROM?
Ważne:
ARMv8-A po przywróceniu zasilania domyślnie uruchamia się
na poziomie EL3.
BootROM
● pamięć nieulotna tylko do odczytu (EEPROM, write-protected FLASH)
● wbudowana w SoC
● znajduje się na niej kod, który jest wykonywany jako pierwszy po
uruchomieniu systemu (po podłączeniu zasilania)
● kod dostarczany przez producenta układu
Plan prezentacji
1. Wstęp - tryby pracy procesora
2. ARM Trusted Firmware od środka
3. Bootloadery ARM-TF
4. Secure boot w ARM-TF
5. Runtime ARM-TF a bezpieczeństwo
ARM Trusted Firmware
1. Referencyjna implementacja “bezpiecznego świata” dla architektury
ARMv8-A
2. Wspierane standardy:
a. SMC Calling Convention
b. Power State Coordination Interface [PSCI]
c. Trusted Board Boot Requirements [TBBR]
3. Open source, licencja BSD
a. https://github.com/ARM-software/arm-trusted-firmware
ARM Trusted Firmware a tryby pracy procesora
AppAppEL0
OSEL1 OS
EL2 Hypervisor
ARM SoC
Non-Secure Secure
AppS-EL0
EL3
Secure Firmware
S-EL1 Trusted OS
ROM Firmware
ARM Trusted Firmware
ARM Trusted Firmware - możliwości
1. Bezpieczny proces bootowania systemu (Secure Boot via TBBR)
2. Zunifikowany proces zarządzania energią w systemie (via PSCI)
3. Zunifikowany proces aktualizacji firmware
4. Niezaufane oprogramowanie nie ma bezpośredniego dostępu do
konfiguracji poszczególnych rejestrów
Plan prezentacji
1. Wstęp - tryby pracy procesora
2. ARM Trusted Firmware od środka
3. Bootloadery ARM-TF
4. Secure boot w ARM-TF
5. Runtime ARM-TF a bezpieczeństwo
Bootloadery w ARM-TF
● BL1
● BL2
● BL31
● BL33
Sporo tego...
BLx - bootloadery wymagane przez ARM
Trusted Firmware
SCP_xxx - bootloadery dedykowanego
procesora System Control Processor
xxxU - loadery używane do aktualizacji
firmware
MCP_xxx - bootloadery dedykowanego
procesora Management Control Processor
● SCP_BL1
● SCP_BL2
● MCP_BL1
● MCP_BL2
● NS_BL1U
● BL2U
● SCP_BL2U
● NS_BL2U
● BL32
● BL1
● BL2
● BL31
● BL33
● BL32
● SCP_BL1
● SCP_BL2
● MCP_BL1
● MCP_BL2
● NS_BL1U
● BL2U
● SCP_BL2U
● NS_BL2U
Bootloadery wymagane przez ARM-TF
1. BL1
a. kod, który realizuje funkcjonalności zawarte w BootROM
b. konfiguruje DDR, ustawia rejestry kontrolne
c. ładuje BL2.
d. wykonywany na poziomie EL3, często z pamięci cache (SRAM)
2. BL2
a. minimalna inicjalizacja platformy i architektury
b. ładuje do pamięci RAM BL31/BL32/BL33
c. wykonywany na poziomie S-EL1.
3. BL31 - inaczej EL3 Runtime Firmware
a. oprogramowanie, które jest dostępne podczas działania systemu operacyjnego
b. wykonywany w EL3
c. dostępny w runtime poprzez wywołania smc
4. BL33, inaczej Non-trusted Firmware
a. UEFI/U-Boot/GRUB/OSloader
Minimalistyczny bootflow według ARM-TF
Na podstawie https://www.slideshare.net/linaroorg/lcu14-500-arm-trusted-firmware
Trusted World Non-Trusted World
Typowy bootflow według ARM-TF
Na podstawie https://www.slideshare.net/linaroorg/lcu14-500-arm-trusted-firmware
Trusted World Non-Trusted World
Bootflow według ARM-TF ze wsparciem SCP
https://www.slideshare.net/linaroorg/lcu14-500-arm-trusted-firmware
Trusted World Non-Trusted World
Plan prezentacji
1. Wstęp - tryby pracy procesora
2. ARM Trusted Firmware od środka
3. Bootloadery ARM-TF
4. Secure boot w ARM-TF
5. Runtime ARM-TF a bezpieczeństwo
Krótka dyskusja - pierwszy etap secure boot
Na jakim etapie projektowania systemu powinniśmy myśleć o bezpiecznym
uruchamianiu systemu?
● SoC gotowy, projektujemy architekturę software’u!
● BootROM w trakcie projektowania
● SoC w trakcie projektowania (rejestry, dodatkowe urządzenia)
Secure Boot w ARM-TF?
● Implementacja specyfikacji Trusted Board Boot Requirements (TBBR)
● Secure boot w ARM-TF - Trusted Board Boot
● Opisuje proces uwierzytelniania firmware od BL1 (BootROM) po BL33
● Od BL33
○ UEFI Secure Boot
○ U-Boot via Flattened Image Tree (FIT)
Trusted Board Boot - założenia i komponenty
Założenia:
● SHA-256 z Root Of Trust Public Key (ROTPK)
“wypalony” jednorazowo w platformie
● “nietykalność” BL1 (BootROM)
Komponenty:
● bootloadery BLx (w zależności od ilości użytych)
● certyfikaty dla każdego z BL3-x (key + content)
● dodatkowe certyfikaty dla BL2
CoT (Chain of Trust)
● “łańcuch” zaufania
● w ogólności, BL(x) uwierzytelnia BL(x+1)
● wykorzystuje certyfikaty kluczy oraz certyfikaty zawartości
● brak Certificate Authority (CA) przez weryfikację zawartości rozszerzeń certyfikatów
Do ustanowienia CoT potrzebujemy szeregu par kluczy:
1. Root of Trust key
2. Trusted world key
3. Non-Trusted world key
4. BL3-x key
CoT, czyli jak to naprawdę działa
Certyfikat klucza vs Certyfikat zawartości
Certyfikat klucza (key certificate)
1. Podpisany przez odpowiedni klucz na ścieżce CoT (RoT/TwK/NTwK)
2. Zawiera klucz publiczny do weryfikacji podpisanego certyfikatu zawartości
Certyfikat zawartości (content certificate)
1. Podpisany przez odpowiedni klucz którego część publiczna zawarta jest w
odpowiadającym mu certyfikacie klucza
2. Zawiera hash (SHA-256) danego obrazu BLx
Bootflow w przypadku Trusted Board Boot
Legenda:
Lista certyfikatów CoT (przypadek minimalny)
● BL2 content certificate - podpisany przez klucz prywatny ROT.
Zawiera SHA-256(BL2).
● Trusted key certificate - podpisany przez klucz prywatny ROT.
Zawiera klucz publiczny Trusted World oraz klucz publiczny Non-Trusted World.
● BL31 key certificate - podpisany przez klucz prywatny Trusted World.
Zawiera klucz publiczny BL31.
● BL31 content certificate - podpisany przez klucz prywatny BL31.
Zawiera SHA-256(BL31).
● BL33 key certificate - podpisany przez klucz prywatny Non-Trusted World.
Zawiera klucz publiczny BL33.
● BL33 content certificate - podpisany przez klucz prywatny BL33.
Zawiera SHA-256(BL33).
Rozszerzenia Trusted Board Boot
● Szyfrowanie obrazów i/lub certyfikatów
● DRAM Scrambling
○ Konieczne wsparcie kontrolera DDR
● Użycie ECDSA zamiast RSA do uwierzytelnienia
● Non-volatile counter
○ Zabezpieczenie przez atakami typu “roll-back”
Plan prezentacji
1. Wstęp - tryby pracy procesora
2. ARM Trusted Firmware od środka
3. Bootloadery ARM-TF
4. Secure boot w ARM-TF
5. Runtime ARM-TF a bezpieczeństwo
Jak od środka wygląda BL31 na przykładzie PSCI
u_register_t psci_smc_handler(uint32_t smc_fid,
u_register_t x1,
u_register_t x2,
u_register_t x3,
u_register_t x4,
void *cookie,
void *handle,
u_register_t flags)
{
(...)
switch (smc_fid) {
case PSCI_CPU_SUSPEND_AARCH64:
return psci_cpu_suspend(x1, x2, x3);
case PSCI_CPU_ON_AARCH64:
return psci_cpu_on(x1, x2, x3);
(...)
(...)
case PSCI_NODE_HW_STATE_AARCH64:
return psci_node_hw_state(x1, x2);
case PSCI_SYSTEM_SUSPEND_AARCH64:
return psci_system_suspend(x1, x2);
default:
WARN("Unimplemented PSCI Call: 0x%x n",
smc_fid);
return SMC_UNK;
}
Zalety ARM-TF:
● brak bootkitów
● unifikacja firmware od BootROMu
● uniwersalne standardy ARM (PSCI/TBBR)
Wady ARM-TF:
● potencjalne bugi w krytycznym dla bezpieczeństwa oprogramowaniu
● producenci firmware a BL31 - “kontener na śmieci”
Czy mamy się czego obawiać?
Referencje
[1] https://github.com/ARM-software/arm-trusted-firmware/tree/master/docs -
dokumentacja ARM Trusted Firmware
[2] https://www.slideshare.net/linaroorg/arm-trusted-firmareforarmv8alcu13 -
“ARM Trusted Firmware for ARMv8-A”, Andrew Thoelke, ARM
[3] https://www.slideshare.net/linaroorg/trusted-firmware-deepdivev10 -
“Trusted Firmware Deep Dive” by Dan Handley, Charles Garcia-Tobin, ARM
[4]http://infocenter.arm.com/help/topic/com.arm.doc.den0028b/ARM_DEN0028B_
SMC_Calling_Convention.pdf - SMC
[5]http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0022d/index.ht
ml - PSCI
Pytania?
Zapraszam do dyskusji!
KONTAKT:
ka@semihalf.com

Contenu connexe

Tendances

BIOS. Leksykon kieszonkowy. Wydanie III
BIOS. Leksykon kieszonkowy. Wydanie IIIBIOS. Leksykon kieszonkowy. Wydanie III
BIOS. Leksykon kieszonkowy. Wydanie IIIWydawnictwo Helion
 
Instalowanie systemów operacyjnych i oprogramowania użytkowego
Instalowanie systemów operacyjnych i oprogramowania użytkowegoInstalowanie systemów operacyjnych i oprogramowania użytkowego
Instalowanie systemów operacyjnych i oprogramowania użytkowegoSzymon Konkol - Publikacje Cyfrowe
 
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...PROIDEA
 
Procesory- rozwój, stan obecny, przykładowe parametry, zakup.
Procesory- rozwój, stan obecny, przykładowe parametry, zakup.Procesory- rozwój, stan obecny, przykładowe parametry, zakup.
Procesory- rozwój, stan obecny, przykładowe parametry, zakup.MarioPL
 
Współczesne procesory
Współczesne procesoryWspółczesne procesory
Współczesne procesoryArthi1993
 
Budowa Wewnętrzna
Budowa WewnętrznaBudowa Wewnętrzna
Budowa Wewnętrznaakeela68
 

Tendances (16)

Konfiguracja urządzeń peryferyjnych
Konfiguracja urządzeń peryferyjnychKonfiguracja urządzeń peryferyjnych
Konfiguracja urządzeń peryferyjnych
 
Podstawowe elementy systemu komputerowego
Podstawowe elementy systemu komputerowegoPodstawowe elementy systemu komputerowego
Podstawowe elementy systemu komputerowego
 
BIOS. Leksykon kieszonkowy. Wydanie III
BIOS. Leksykon kieszonkowy. Wydanie IIIBIOS. Leksykon kieszonkowy. Wydanie III
BIOS. Leksykon kieszonkowy. Wydanie III
 
2
22
2
 
Instalowanie systemów operacyjnych i oprogramowania użytkowego
Instalowanie systemów operacyjnych i oprogramowania użytkowegoInstalowanie systemów operacyjnych i oprogramowania użytkowego
Instalowanie systemów operacyjnych i oprogramowania użytkowego
 
Sieci full
Sieci fullSieci full
Sieci full
 
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
 
Zasady konfiguracji zestawów komputerowych
Zasady konfiguracji zestawów komputerowychZasady konfiguracji zestawów komputerowych
Zasady konfiguracji zestawów komputerowych
 
Procesory- rozwój, stan obecny, przykładowe parametry, zakup.
Procesory- rozwój, stan obecny, przykładowe parametry, zakup.Procesory- rozwój, stan obecny, przykładowe parametry, zakup.
Procesory- rozwój, stan obecny, przykładowe parametry, zakup.
 
Współczesne procesory
Współczesne procesoryWspółczesne procesory
Współczesne procesory
 
Instalacja sterowników urządzeń peryferyjnych
 Instalacja sterowników urządzeń peryferyjnych Instalacja sterowników urządzeń peryferyjnych
Instalacja sterowników urządzeń peryferyjnych
 
Przygotowanie podzespołów do montażu komputera osobistego
Przygotowanie podzespołów do montażu komputera osobistegoPrzygotowanie podzespołów do montażu komputera osobistego
Przygotowanie podzespołów do montażu komputera osobistego
 
Procesory
ProcesoryProcesory
Procesory
 
Wyposażenie stanowiska do naprawy komputera osobistego
Wyposażenie stanowiska do naprawy komputera osobistegoWyposażenie stanowiska do naprawy komputera osobistego
Wyposażenie stanowiska do naprawy komputera osobistego
 
Dobór urządzeń techniki komputerowej do stanowiska
Dobór urządzeń techniki komputerowej do stanowiskaDobór urządzeń techniki komputerowej do stanowiska
Dobór urządzeń techniki komputerowej do stanowiska
 
Budowa Wewnętrzna
Budowa WewnętrznaBudowa Wewnętrzna
Budowa Wewnętrzna
 

Similaire à Skazani na firmware. ARM Trusted Firmware. S07E02

WCL2013 - BitLocker w Twoim Windows 8 i w Twoim przedsiebiorstwie w oparciu o...
WCL2013 - BitLocker w Twoim Windows 8 i w Twoim przedsiebiorstwie w oparciu o...WCL2013 - BitLocker w Twoim Windows 8 i w Twoim przedsiebiorstwie w oparciu o...
WCL2013 - BitLocker w Twoim Windows 8 i w Twoim przedsiebiorstwie w oparciu o...Krzysztof Binkowski
 
Bootloadery i programy bare metal.
Bootloadery i programy bare metal.Bootloadery i programy bare metal.
Bootloadery i programy bare metal.Semihalf
 
Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?Semihalf
 
Serwer internetowy w systemie Linux
Serwer internetowy w systemie LinuxSerwer internetowy w systemie Linux
Serwer internetowy w systemie Linuxbm9ib2r5
 

Similaire à Skazani na firmware. ARM Trusted Firmware. S07E02 (7)

WCL2013 - BitLocker w Twoim Windows 8 i w Twoim przedsiebiorstwie w oparciu o...
WCL2013 - BitLocker w Twoim Windows 8 i w Twoim przedsiebiorstwie w oparciu o...WCL2013 - BitLocker w Twoim Windows 8 i w Twoim przedsiebiorstwie w oparciu o...
WCL2013 - BitLocker w Twoim Windows 8 i w Twoim przedsiebiorstwie w oparciu o...
 
Praca Dyplomowa
Praca DyplomowaPraca Dyplomowa
Praca Dyplomowa
 
Bootloadery i programy bare metal.
Bootloadery i programy bare metal.Bootloadery i programy bare metal.
Bootloadery i programy bare metal.
 
2
22
2
 
3
33
3
 
Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?
 
Serwer internetowy w systemie Linux
Serwer internetowy w systemie LinuxSerwer internetowy w systemie Linux
Serwer internetowy w systemie Linux
 

Plus de Semihalf

Embedded Debugging, czyli co kryje się w jądrze?
Embedded Debugging, czyli co kryje się w jądrze?Embedded Debugging, czyli co kryje się w jądrze?
Embedded Debugging, czyli co kryje się w jądrze?Semihalf
 
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01
Uwaga na buga! GDB w służbie programisty.  Barcamp Semihalf S09:E01Uwaga na buga! GDB w służbie programisty.  Barcamp Semihalf S09:E01
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01Semihalf
 
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018Semihalf
 
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018Semihalf
 
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018Semihalf
 
CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special. CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special. Semihalf
 
Złam zasady i stwórz wydajny stos IP przy użyciu DPDK
Złam zasady i stwórz wydajny stos IP przy użyciu DPDKZłam zasady i stwórz wydajny stos IP przy użyciu DPDK
Złam zasady i stwórz wydajny stos IP przy użyciu DPDKSemihalf
 
Wirtualizacja urządzeń PCI (SR-IOV).
Wirtualizacja urządzeń PCI (SR-IOV).Wirtualizacja urządzeń PCI (SR-IOV).
Wirtualizacja urządzeń PCI (SR-IOV).Semihalf
 
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.Semihalf
 
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?Semihalf
 
Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.Semihalf
 
Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Semihalf
 
Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.Semihalf
 
Jak napisać własny RTOS!
Jak napisać własny RTOS!Jak napisać własny RTOS!
Jak napisać własny RTOS!Semihalf
 
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.Semihalf
 
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.Semihalf
 
Stosy sieciowe w przestrzeni użytkownika.
Stosy sieciowe w przestrzeni użytkownika.Stosy sieciowe w przestrzeni użytkownika.
Stosy sieciowe w przestrzeni użytkownika.Semihalf
 
Wirtualizacja sieci na przykładzie OpenContrail vRouter.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.Wirtualizacja sieci na przykładzie OpenContrail vRouter.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.Semihalf
 
DTrace, czyli jak zobaczyć to czego nie widać.
DTrace, czyli jak zobaczyć to czego nie widać.DTrace, czyli jak zobaczyć to czego nie widać.
DTrace, czyli jak zobaczyć to czego nie widać.Semihalf
 
Efekt motyla w kodzie maszynowym.
Efekt motyla w kodzie maszynowym.Efekt motyla w kodzie maszynowym.
Efekt motyla w kodzie maszynowym.Semihalf
 

Plus de Semihalf (20)

Embedded Debugging, czyli co kryje się w jądrze?
Embedded Debugging, czyli co kryje się w jądrze?Embedded Debugging, czyli co kryje się w jądrze?
Embedded Debugging, czyli co kryje się w jądrze?
 
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01
Uwaga na buga! GDB w służbie programisty.  Barcamp Semihalf S09:E01Uwaga na buga! GDB w służbie programisty.  Barcamp Semihalf S09:E01
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01
 
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
 
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018
 
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
 
CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special. CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special.
 
Złam zasady i stwórz wydajny stos IP przy użyciu DPDK
Złam zasady i stwórz wydajny stos IP przy użyciu DPDKZłam zasady i stwórz wydajny stos IP przy użyciu DPDK
Złam zasady i stwórz wydajny stos IP przy użyciu DPDK
 
Wirtualizacja urządzeń PCI (SR-IOV).
Wirtualizacja urządzeń PCI (SR-IOV).Wirtualizacja urządzeń PCI (SR-IOV).
Wirtualizacja urządzeń PCI (SR-IOV).
 
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
 
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
 
Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.
 
Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.
 
Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.
 
Jak napisać własny RTOS!
Jak napisać własny RTOS!Jak napisać własny RTOS!
Jak napisać własny RTOS!
 
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
 
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
 
Stosy sieciowe w przestrzeni użytkownika.
Stosy sieciowe w przestrzeni użytkownika.Stosy sieciowe w przestrzeni użytkownika.
Stosy sieciowe w przestrzeni użytkownika.
 
Wirtualizacja sieci na przykładzie OpenContrail vRouter.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.Wirtualizacja sieci na przykładzie OpenContrail vRouter.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.
 
DTrace, czyli jak zobaczyć to czego nie widać.
DTrace, czyli jak zobaczyć to czego nie widać.DTrace, czyli jak zobaczyć to czego nie widać.
DTrace, czyli jak zobaczyć to czego nie widać.
 
Efekt motyla w kodzie maszynowym.
Efekt motyla w kodzie maszynowym.Efekt motyla w kodzie maszynowym.
Efekt motyla w kodzie maszynowym.
 

Skazani na firmware. ARM Trusted Firmware. S07E02

  • 1. Skazani na firmware S07:E02 “Na granicy światów, czyli wstęp do ARM Trusted Firmware” Konrad Adamczyk
  • 2. Kto mówi? ● Junior Firmware Developer ● ATF/UEFI, ARMv7, ARMv8 ● Student AGH, kierunek Teleinformatyka
  • 3. Plan prezentacji 1. Wstęp - tryby pracy procesora 2. ARM Trusted Firmware od środka 3. Bootloadery ARM-TF 4. Secure boot w ARM-TF 5. Runtime ARM-TF a bezpieczeństwo
  • 4. Plan prezentacji 1. Wstęp - tryby pracy procesora 2. ARM Trusted Firmware od środka 3. Bootloadery ARM-TF 4. Secure boot w ARM-TF 5. Runtime ARM-TF a bezpieczeństwo
  • 5. Tryby pracy procesora? A po co? ● Procesor = kilka trybów pracy ● Separacja dostępu na poziomie CPU - zakres operacji per proces ● Pozwalają np. na sprzętową kontrolę dostępu do pamięci https://rhelblog.files.wordpress.com/2015/07/user-space-vs-kernel-space-simple-container.png
  • 6. Tryby pracy procesora - przykładowa mapa pamięci https://static.docs.arm.com/100690/0200/graphics/memory_map.png
  • 7. Tryby pracy procesora - dla kernela AppAppuser OSsvc OS ... A gdzie wirtualizacja? ARMv6 ARM SoC
  • 8. Tryby pracy procesora - wirtualizacja AppAppuser OSsvc OS ... A gdzie bezpieczeństwo? hyp Hypervisor ARM SoC KVM/Xen
  • 9. Tryby pracy procesora - świat “bezpieczny” AppAppuser OSsvc OS hyp Hypervisor ARM SoC Non-Secure Secure Appuser svc mon ARMv7 Trusted OS Secure Firmware
  • 10. Tryby pracy procesora - świat “bezpieczny” AppAppEL0 OSEL1 OS EL2 Hypervisor ARM SoC Non-Secure Secure AppS-EL0 EL3 ARMv8-A Secure Firmware S-EL1 Trusted OS ROM Firmware … S-EL1? Po co?
  • 11. Tryby pracy procesora - ARMv8-A 1. Niezależne tryby = niezależne rejestry SP_ELx, SPSR_ELx, ELR_ELx 2. Zredukowanie kodu wykonywanego w EL3 - wprowadzenie S-EL1 3. Co z wyjątkami? a. W pełni programowalne (przez SCR_EL3) b. Synchroniczne - obsługa w aktualnym EL lub wyższym EL c. Asynchroniczne (IRQ, FIQ, SError) - obsługa w aktualnym EL lub przekierowanie do EL3 4. EL3 vs SMM (Intel) a. Kod wykonywany w EL3 - open source, licencja BSD b. Miejsce na implementację errat hardware’owych c. Mimo wszystko, może stać się “kontenerem na śmieci”
  • 12. ARMv8 - zmiana trybu pracy procesora AppAppEL0 OSEL1 OS EL2 Hypervisor ARM SoC Non-Secure Secure AppS-EL0 EL3 ARMv8-A Secure Firmware S-EL1 Trusted OS ROM Firmware smc eret eret eretsvc eret eretsvc eretsmc
  • 13. Przypominajka - patrz wykład S07:E01 Kto z Was wie, co to jest BootROM? Ważne: ARMv8-A po przywróceniu zasilania domyślnie uruchamia się na poziomie EL3. BootROM ● pamięć nieulotna tylko do odczytu (EEPROM, write-protected FLASH) ● wbudowana w SoC ● znajduje się na niej kod, który jest wykonywany jako pierwszy po uruchomieniu systemu (po podłączeniu zasilania) ● kod dostarczany przez producenta układu
  • 14. Plan prezentacji 1. Wstęp - tryby pracy procesora 2. ARM Trusted Firmware od środka 3. Bootloadery ARM-TF 4. Secure boot w ARM-TF 5. Runtime ARM-TF a bezpieczeństwo
  • 15. ARM Trusted Firmware 1. Referencyjna implementacja “bezpiecznego świata” dla architektury ARMv8-A 2. Wspierane standardy: a. SMC Calling Convention b. Power State Coordination Interface [PSCI] c. Trusted Board Boot Requirements [TBBR] 3. Open source, licencja BSD a. https://github.com/ARM-software/arm-trusted-firmware
  • 16. ARM Trusted Firmware a tryby pracy procesora AppAppEL0 OSEL1 OS EL2 Hypervisor ARM SoC Non-Secure Secure AppS-EL0 EL3 Secure Firmware S-EL1 Trusted OS ROM Firmware ARM Trusted Firmware
  • 17. ARM Trusted Firmware - możliwości 1. Bezpieczny proces bootowania systemu (Secure Boot via TBBR) 2. Zunifikowany proces zarządzania energią w systemie (via PSCI) 3. Zunifikowany proces aktualizacji firmware 4. Niezaufane oprogramowanie nie ma bezpośredniego dostępu do konfiguracji poszczególnych rejestrów
  • 18. Plan prezentacji 1. Wstęp - tryby pracy procesora 2. ARM Trusted Firmware od środka 3. Bootloadery ARM-TF 4. Secure boot w ARM-TF 5. Runtime ARM-TF a bezpieczeństwo
  • 19. Bootloadery w ARM-TF ● BL1 ● BL2 ● BL31 ● BL33 Sporo tego... BLx - bootloadery wymagane przez ARM Trusted Firmware SCP_xxx - bootloadery dedykowanego procesora System Control Processor xxxU - loadery używane do aktualizacji firmware MCP_xxx - bootloadery dedykowanego procesora Management Control Processor ● SCP_BL1 ● SCP_BL2 ● MCP_BL1 ● MCP_BL2 ● NS_BL1U ● BL2U ● SCP_BL2U ● NS_BL2U ● BL32 ● BL1 ● BL2 ● BL31 ● BL33 ● BL32 ● SCP_BL1 ● SCP_BL2 ● MCP_BL1 ● MCP_BL2 ● NS_BL1U ● BL2U ● SCP_BL2U ● NS_BL2U
  • 20. Bootloadery wymagane przez ARM-TF 1. BL1 a. kod, który realizuje funkcjonalności zawarte w BootROM b. konfiguruje DDR, ustawia rejestry kontrolne c. ładuje BL2. d. wykonywany na poziomie EL3, często z pamięci cache (SRAM) 2. BL2 a. minimalna inicjalizacja platformy i architektury b. ładuje do pamięci RAM BL31/BL32/BL33 c. wykonywany na poziomie S-EL1. 3. BL31 - inaczej EL3 Runtime Firmware a. oprogramowanie, które jest dostępne podczas działania systemu operacyjnego b. wykonywany w EL3 c. dostępny w runtime poprzez wywołania smc 4. BL33, inaczej Non-trusted Firmware a. UEFI/U-Boot/GRUB/OSloader
  • 21. Minimalistyczny bootflow według ARM-TF Na podstawie https://www.slideshare.net/linaroorg/lcu14-500-arm-trusted-firmware Trusted World Non-Trusted World
  • 22. Typowy bootflow według ARM-TF Na podstawie https://www.slideshare.net/linaroorg/lcu14-500-arm-trusted-firmware Trusted World Non-Trusted World
  • 23. Bootflow według ARM-TF ze wsparciem SCP https://www.slideshare.net/linaroorg/lcu14-500-arm-trusted-firmware Trusted World Non-Trusted World
  • 24. Plan prezentacji 1. Wstęp - tryby pracy procesora 2. ARM Trusted Firmware od środka 3. Bootloadery ARM-TF 4. Secure boot w ARM-TF 5. Runtime ARM-TF a bezpieczeństwo
  • 25. Krótka dyskusja - pierwszy etap secure boot Na jakim etapie projektowania systemu powinniśmy myśleć o bezpiecznym uruchamianiu systemu? ● SoC gotowy, projektujemy architekturę software’u! ● BootROM w trakcie projektowania ● SoC w trakcie projektowania (rejestry, dodatkowe urządzenia)
  • 26. Secure Boot w ARM-TF? ● Implementacja specyfikacji Trusted Board Boot Requirements (TBBR) ● Secure boot w ARM-TF - Trusted Board Boot ● Opisuje proces uwierzytelniania firmware od BL1 (BootROM) po BL33 ● Od BL33 ○ UEFI Secure Boot ○ U-Boot via Flattened Image Tree (FIT)
  • 27. Trusted Board Boot - założenia i komponenty Założenia: ● SHA-256 z Root Of Trust Public Key (ROTPK) “wypalony” jednorazowo w platformie ● “nietykalność” BL1 (BootROM) Komponenty: ● bootloadery BLx (w zależności od ilości użytych) ● certyfikaty dla każdego z BL3-x (key + content) ● dodatkowe certyfikaty dla BL2
  • 28. CoT (Chain of Trust) ● “łańcuch” zaufania ● w ogólności, BL(x) uwierzytelnia BL(x+1) ● wykorzystuje certyfikaty kluczy oraz certyfikaty zawartości ● brak Certificate Authority (CA) przez weryfikację zawartości rozszerzeń certyfikatów Do ustanowienia CoT potrzebujemy szeregu par kluczy: 1. Root of Trust key 2. Trusted world key 3. Non-Trusted world key 4. BL3-x key CoT, czyli jak to naprawdę działa
  • 29. Certyfikat klucza vs Certyfikat zawartości Certyfikat klucza (key certificate) 1. Podpisany przez odpowiedni klucz na ścieżce CoT (RoT/TwK/NTwK) 2. Zawiera klucz publiczny do weryfikacji podpisanego certyfikatu zawartości Certyfikat zawartości (content certificate) 1. Podpisany przez odpowiedni klucz którego część publiczna zawarta jest w odpowiadającym mu certyfikacie klucza 2. Zawiera hash (SHA-256) danego obrazu BLx
  • 30. Bootflow w przypadku Trusted Board Boot Legenda:
  • 31. Lista certyfikatów CoT (przypadek minimalny) ● BL2 content certificate - podpisany przez klucz prywatny ROT. Zawiera SHA-256(BL2). ● Trusted key certificate - podpisany przez klucz prywatny ROT. Zawiera klucz publiczny Trusted World oraz klucz publiczny Non-Trusted World. ● BL31 key certificate - podpisany przez klucz prywatny Trusted World. Zawiera klucz publiczny BL31. ● BL31 content certificate - podpisany przez klucz prywatny BL31. Zawiera SHA-256(BL31). ● BL33 key certificate - podpisany przez klucz prywatny Non-Trusted World. Zawiera klucz publiczny BL33. ● BL33 content certificate - podpisany przez klucz prywatny BL33. Zawiera SHA-256(BL33).
  • 32. Rozszerzenia Trusted Board Boot ● Szyfrowanie obrazów i/lub certyfikatów ● DRAM Scrambling ○ Konieczne wsparcie kontrolera DDR ● Użycie ECDSA zamiast RSA do uwierzytelnienia ● Non-volatile counter ○ Zabezpieczenie przez atakami typu “roll-back”
  • 33. Plan prezentacji 1. Wstęp - tryby pracy procesora 2. ARM Trusted Firmware od środka 3. Bootloadery ARM-TF 4. Secure boot w ARM-TF 5. Runtime ARM-TF a bezpieczeństwo
  • 34. Jak od środka wygląda BL31 na przykładzie PSCI u_register_t psci_smc_handler(uint32_t smc_fid, u_register_t x1, u_register_t x2, u_register_t x3, u_register_t x4, void *cookie, void *handle, u_register_t flags) { (...) switch (smc_fid) { case PSCI_CPU_SUSPEND_AARCH64: return psci_cpu_suspend(x1, x2, x3); case PSCI_CPU_ON_AARCH64: return psci_cpu_on(x1, x2, x3); (...) (...) case PSCI_NODE_HW_STATE_AARCH64: return psci_node_hw_state(x1, x2); case PSCI_SYSTEM_SUSPEND_AARCH64: return psci_system_suspend(x1, x2); default: WARN("Unimplemented PSCI Call: 0x%x n", smc_fid); return SMC_UNK; }
  • 35. Zalety ARM-TF: ● brak bootkitów ● unifikacja firmware od BootROMu ● uniwersalne standardy ARM (PSCI/TBBR) Wady ARM-TF: ● potencjalne bugi w krytycznym dla bezpieczeństwa oprogramowaniu ● producenci firmware a BL31 - “kontener na śmieci” Czy mamy się czego obawiać?
  • 36. Referencje [1] https://github.com/ARM-software/arm-trusted-firmware/tree/master/docs - dokumentacja ARM Trusted Firmware [2] https://www.slideshare.net/linaroorg/arm-trusted-firmareforarmv8alcu13 - “ARM Trusted Firmware for ARMv8-A”, Andrew Thoelke, ARM [3] https://www.slideshare.net/linaroorg/trusted-firmware-deepdivev10 - “Trusted Firmware Deep Dive” by Dan Handley, Charles Garcia-Tobin, ARM [4]http://infocenter.arm.com/help/topic/com.arm.doc.den0028b/ARM_DEN0028B_ SMC_Calling_Convention.pdf - SMC [5]http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0022d/index.ht ml - PSCI