Poziom niżej Semihalf
-
- Technology
Unikalny w skali polskiego internetu podcast o budowie i zasadzie działania systemów wbudowanych oraz związkach krzemu wszelkiej postaci. Prowadzący są programistami firmy Semihalf i na co dzień tworzą m.in system Linux i FreeBSD. Dzielą się swoimi wieloletnimi doświadczeniami i w sposób przystępny opisują świat na styku programowania i sprzętu.
-
#009 - Skazani na firmware
Oprogramowania układowego na PC nie sposób się pozbyć. 40-letnia historia rozwoju rynku komputerów osobistych silnie związała użytkowników z Firmwarem (FW). Od BIOS po UEFI na binarnych fragmentach FW urządzeń peryferyjnych skończywszy, zawsze gdzieś w systemie czyha potencjalny cichy intruz.
Nasuwają się więc pytania: Czy jesteśmy skazani na Firmware? Czy producenci sprzętu tworzą tajną lożę i chcą zawładnąć światem poprzez szpiegowanie nieświadomych użytkowników?
W czyim interesie jest zaszywanie w krzemie instrukcji procesora weryfikujących podpis cyfrowy oprogramowania?
Na te i podobne pytania staramy się odpowiedzieć w tym odcinku podcastu Poziom Niżej.
Prowadzący: Radosław Biernacki, Marcin Wojtas, Jan Dąbroś
Hashtag: acpi, bios, coreboot, firmware, secureboot, uefi
### Plan odcinka
# 00:00 - Wprowadzenie
# 04:56 - Czym jest firmware
# 10:33 - Trochę historii - BIOS
# 17:43 - Czas obecny - UEFI
# 22:50 - EDK2
# 28:30 - CSM - czyli UEFI potrafi w BIOS
# 29:50 - Coreboot - KISS
# 31:05 - Libreboot
# 33:30 - Bootloader, czyli co następuje po…
# 35:45 - RaspberryPi jako beneficjent otwartego firmware
# 38:35 - Bootrom - czyli jak uruchamiają się nowoczesne procesory
# 42:40 - Detale wczesnych etapów uruchomienia systemu
# 45:40 - Microcode
# 48:00 - Inicjalizacja (trening) RAM
# 52:12 - Bootloader
# 56:40 - Skąd firmware bierze sterowniki? (OptionROM)
# 1:01:30 - Jak ładowany i uruchamiany jest kod kernela?
# 1:03:18 - Dlaczego kelnerowi potrzebny jest opis sprzętu i środowiska?
# 1:05:28 - Jak dokonywane są aktualizacje firmware?
# 1:09:55 - ACPI
# 1:17:25 - DeviceTree i “sprawa ARM”
# 1:21:32 - System Management BIOS (SMBIOS)
# 1:23:10 - Bezpieczeństwo, zaufanie i prywatność
# 1:26:10 - SecureBoot i VerifiedBoot
# 1:31:45 - TPM
# 1:35:50 - Podsumowanie
# 1:39:25 - Bonus
### Linki do materiałów dodatkowych:
# 22:55 - Specyfikacja UEFI - https://uefi.org/sites/default/files/resources/UEFI_Spec_2_8_final.pdf
# 23:19 - Repozytorium EDK2 - https://github.com/tianocore/edk2
# 27:07 - Implementacja "UEFI runtime services" w u-boot - https://source.denx.de/u-boot/u-boot/-/blob/master/lib/efi_loader/efi_runtime.c
# 30:18 - Repozytorium i strona główna coreboot - https://review.coreboot.org/plugins/gitiles/coreboot/+/refs/heads/master, https://www.coreboot.org/
# 31:13 - Strona główna libreboot - https://libreboot.org/
# 31:35 - Repozytorium FSP - https://github.com/intel/FSP
# 33:14 - Repozytorium oreboot - https://github.com/oreboot/oreboot
# 35:15 - Strona główna i repozytorium LinuxBoot - https://www.linuxboot.org/, https://github.com/linuxboot/linuxboot
# 44:05 - IME - https://en.wikipedia.org/wiki/Intel_Management_Engine
# 49:17 - Więcej o SPD(Serial Presence Detect) - https://en.wikipedia.org/wiki/Serial_presence_detect
# 59:16 - 1:01:30 - Sterownik do uruchamiania instrukcji... -
#008 - Zaczarowane Jabłko #2
W ósmym odcinku rozprawiamy się z potocznymi opiniami na temat wydajności procesora Apple M1.
Tym razem bierzemy pod lupę konstrukcję nowego procesora M1 firmy Apple, który wywołał spore zamieszanie na rynku ultrabooków. Bazując na własnych, bogatych doświadczeniach z architekturą ARM, weryfikujemy doniesienia medialne usuwając jednocześnie kolejne zasłony dymne, które można napotkać wśród opisów "rewelacyjnych" wyników M1. Wyjaśniamy zasady budowy nowoczesnych procesorów i podajemy źródła rzetelnej wiedzy. Staramy się również odpowiedzieć na pytanie, jak rozwiązania Apple wpłyną długofalowo na cały rynek procesorów ARM, choć przewidywanie przyszłości należy do dziedziny niezupełnie inżynierskiej.
Prowadzący: Radosław Biernacki, Maciej Czekaj, Stanisław Kardach
Hashtag: Arm, Apple, M1
### Plan odcinka, część #2
# 0:23 - Translacja kodu x86 -> ARM
# 4:30 - Rozkazy x86 potrafią operować na pamięci (model pamięci)
# 8:50 - Ograniczenia translacji
# 10:00 - Translacja vs emulacja
# 11:30 - Wydajność translacji na M1
# 13:30 - WAŻNE: różnice modelu pamięci i wyzwania translacji!
# 18:00 - M1 TSO (Total Store Ordering)
# 23:26 - Wątek poboczny: Izolacja CPU
# 28:13 - koniec wątku pobocznego
# 28:50 - Roseta 1 i Roseta 2
# 30:36 - TDP i testy porównawcze
# 35:30 - Segmentacja rynku zastosowań procesora
# 37:26 - Jądro OSX
# 40:42 - Troche o ograniczeniach TDP
# 44:12 - Wydajność podsystemu DRAM o SWAP
# 45:22 - Podsumowanie #4 (ewolucja a nie rewolucja)
# 46:40 - Polityka informacyjna Apple
# 49:43 - wątek poboczny: Historia bywa przewrotna, Apple vs IBM, wertykalna struktura Apple
# 51:47 - koniec wątku pobocznego
# 52:55 - ARM otwiera ISA?!?
# 56:30 - wątek poboczny: Linux i samo-modyfikujący się kod
# 1:00:47 - koniec wątku pobocznego
# 1:01:20 - Apple AMX
# 1:06:30 - Czy ARM przejmie rynek PC?
# 1:10:35 - Zakończenie
### Linki
# 0:23 - Translacja X86 -> ARM:
- Jak robi to Apple:
- Jak Transitive umarł: https://www.itjungle.com/2011/09/26/tfh092611-story06/
- Jak robi to Microsoft:
- Niskopoziomowa analiza: https://blogs.blackberry.com/en/2019/09/teardown-windows-10-on-arm-x86-emulation
- Kompleksowa analiza WOW64: https://wbenny.github.io/2018/11/04/wow64-internals.html
- Qemu User Mode Emulation: https://qemu.readthedocs.io/en/latest/user/index.html
- Narzędzia do skrośnego przygotowywania dystrybucji Debiana/Ubuntu: https://wiki.debian.org/EmDebian/CrossDebootstrap
# 18:00 - TSO
- Slajdy poglądowe o Total Store Ordering: https://www.cis.upenn.edu/~devietti/classes/cis601-spring2016/sc_tso.pdf
- Hack do włączania dla każdego procesu w OSX na M1: https://github.com/saagarjha/TSOEnabler
# 25:00 - Łatki kernela do "Total CPU Isolation"
https://lwn.net/Articles/816298/
# 28:50 - Roseta1 i Roseta 2
- Rosetta 2: https://appleinsider.com/inside/rosetta-2
- Rosetta 1 (w 2006 przy przejściu PowerPC -> Intel) będąca modyfikacją technologii QuickTransit:
- a href="https://en.wikipedia.org/wiki/QuickTransit"... -
#008 - Zaczarowane Jabłko #1
W ósmym odcinku rozprawiamy się z potocznymi opiniami na temat wydajności procesora Apple M1.
Tym razem bierzemy pod lupę konstrukcję nowego procesora M1 firmy Apple, który wywołał spore zamieszanie na rynku ultrabooków. Bazując na własnych, bogatych doświadczeniach z architekturą ARM, weryfikujemy doniesienia medialne usuwając jednocześnie kolejne zasłony dymne, które można napotkać wśród opisów "rewelacyjnych" wyników M1. Wyjaśniamy zasady budowy nowoczesnych procesorów i podajemy źródła rzetelnej wiedzy. Staramy się również odpowiedzieć na pytanie, jak rozwiazania Apple wpłyną długofalowo na cały rynek procesorów ARM, choć przewidywanie przyszłości należy do dziedziny niezupełnie inżynierskiej.
Prowadzący: Radosław Biernacki, Maciej Czekaj, Stanisław Kardach
Hashtag: Arm, Apple, M1
### Plan odcinka, część #1
# 0:23 - Wstęp
# 4:44 - Na jakiej podstawie analizujemy procesor
# 6:14 - Czy ISA ARM ma znaczenie?
# 8:30 - Jak działa nowoczesny procesor
# 11:20 - Dlaczego wszystkie procesory działają bardzo podobnie
# 12:55 - Odstępstwa od procesorów superskalarnych
# 14:34 - W czym faktycznie różnią się procesory
# 18:20 - Na co procesor wydatkuje energię elektryczną
# 20:50 - Dlaczego nie zawsze więcej znaczy lepiej
# 24:30 - Coś za coś - czyli konsumpcja energii a wydajność
# 30:00 - Gdzie jest magia w jabłku? - dlaczego M1 jest tak wydajny?
# 32:40 - Jak działają mikro-benchmarki
# 39:37 - Podsystem pamięci w M1
# 50:30 - Interconnect jako sieć pakietowa
# 51:47 - Nietypowy cache L3 w M1?
# 57:29 - L2 jako punkt koherencji w M1? (słynny NSObjects i ref counting)
# 1:04:32 - Podsumowanie #1
# 1:07:43 - Opóźnienie L1 w M1
# 1:08:55 - Podsumowanie #2 (nie magia)
# 1:10:12 - Registry renaming
# 1:12:30 - Dekoder rozkazów i SMT
# 1:18:58 - M1 jako awangarda w mikro-architekturze?
### Linki
# 4:44 - Testy od AnandTech
https://www.anandtech.com/show/16252/mac-mini-apple-m1-tested
# 13:02 - VLIW
https://en.wikipedia.org/wiki/Very_long_instruction_word
# 13:25 - Alternatywne architektury procesorów
Microsoft EDGE ISA - procesor grafowy
https://www.theregister.com/2018/06/18/microsoft_e2_edge_windows_10/
Ian Goddard o EDGE CPU i Mill CPU
https://millcomputing.com/topic/microsoft-e2-edge-processor/
Procesor RAW
https://apps.dtic.mil/sti/pdfs/AD1007208.pdf
Procesor Mill
https://millcomputing.com/
# 24:33 - Big-little
https://www.usenix.org/system/files/conference/hotpower14/hotpower14_hahnel.pdf
# 30:30 - Parametry mikroarchitektury procesora na bazie procesorów Intela i AMD
https://en.wikichip.org/wiki/intel/microarchitectures/coffee_lake
https://en.wikichip.org/wiki/amd/microarchitectures/zen_2
# 31:59 - Andnatech, Apple M1
https://www.anandtech.com/show/16252/mac-mini-apple-m1-tested
# 49:00 - Dougall Johnson
a... -
Nowa seria podcastów "Poziom Niżej"
Czy są tu słuchacze spragnieni naszych podcastów?
Mamy dla Was dobrą wiadomość! :)
Po dłuższej przerwie wracamy z nowym cyklem.
Dziś przystawka, czyli nowa szata graficzna z zapowiedzią serii.
Pozostańcie na łączach, już wkrótce usłyszymy się w nowych odcinkach! -
#007 - Gdy bug w krzemie drzemie...
W siódmym odcinku rozmawiamy o ciekawym aspekcie naszej pracy tj o błędach w układach krzemowych.
Praca z producentami układów krzemowych daje niecodzienną możliwość zajrzenia za kulisy rewolucji naszych czasów tj miniaturyzacji układów cyfrowych. Osławione prawo Moore'a niesie ze sobą wykładniczy wzrost gęstości tranzystorów. Co za tym idzie z biegiem czasu układy stają się coraz bardziej skomplikowane a tym samym pomyłki stają się nieuniknione.
W trzech krótkich historiach opowiadanych przez członków załogi Semihalf, staramy się przybliżyć wam ciekawe strony pracy z najnowszą technologią, często niosącą bardzo intensywne tygodnie “walki” na styku oprogramowania i sprzętu. Jeśli zastanawialiście się dlaczego aktualizacje firmware (np BIOSU) są konieczne oraz dlaczego procesory zaraz po premierze rynkowej czasami po prostu nie działają jak reklamuje producent, to ten odcinek powinien odpowiedzieć na wasze pytania.
Prowadzący: Radosław Biernacki, Jan Dąbroś, Marcin Wojtas, Stanisław Kardach
Hashtag: FPGA, VHDL, Ryzen, ARM, hardware, symulator, emulator, bug
### Plan odcinka
# 6:10 - Od czego zaczyna się projektowanie układów krzemowych
# 7:30 - Testowanie i praca z SW - symulatory i emulatory
# 9:20 - Dlaczego emulacja jest czasochłonna?
# 11:50 - Narodziny krzemu - tapeout
# 15:10 - Marcin - historia wdrożenia zarządzania energią w ARMv8
# 23:30 - Janek - historia błędu przekierowania przerwań do Arm Trustzone
# 30:40 - Staszek - historia błędu w procesorze sieciowym do zastosowań DataPlane
# 34:10 - Staszek - historia błedu w ARMv8 w instrukcjach LDP/STP
# 42:08 - Łatki w firmware
# 48:47 - Quirki i upstream do kernela Linuxa
# 1:01:00 - Podsumowanie, jak błędy w krzemie manifestują się u użytkowników
### Linki
# 6:20 - Fabless chip manufacturing - https://en.wikipedia.org/wiki/Fabless_manufacturing
# 8:50 - Cadance Palladium - https://www.cadence.com/en_US/home/tools/system-design-and-verification/acceleration-and-emulation/palladium-z1.html
# 12:45 - Tape-out - https://en.wikipedia.org/wiki/Tape-out
# 18:00 - Poziomy uprzywilejowania (Exception levels) na ARMv8
Prezentacja ARM Trusted Firmware (ale z fajnym opowiadaniem jak Exception Levels działają) https://www.slideshare.net/linaroorg/arm-trusted-firmareforarmv8alcu13
Artykuł w magazynie "Programista" numer #63, 08/2017r. "Na granicy światów – technologia bezpieczeństwa ARM TrustZone"
Dość szczegółowy opis technologii ARM TrustZone http://infocenter.arm.com/help/topic/com.arm.doc.prd29-genc-009492c/PRD29-GENC-009492C_trustzone_security_whitepaper.pdf
# 18:35 - Power Management na ARMv8
Całość problemu opisana w magazynie “Programista” numer #56, 01/2017r. “Zarządzanie energią w ARMv8”
Opis przebiegu usypiania systemu podczas Suspend-To-Ram https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/power/suspend-and-cpuhotplug.rst
Opis funkcji zwrotnych zarządzania energią w ARM Trusted Firmware a href="https://github.com/scorp2kk/atf/blob/master/docs/platform-migration-guide.md#22-composite-power-state-framework-platform-api-modifications"... -
#006 - Bezpieczeństwo w krzemie zaklęte
W szóstym odcinku przybliżamy wam tematykę zabezpieczeń nowoczesnych procesorów i SoC
W odcinku poruszamy szereg zagadnień bezpieczeństwa których bazą są sprzętowe rozwiązania zaszyte w nowoczesnych układach scalonych znajdujących się np w każdym smartfonie. Ten z pozoru prosty przedmiot codziennego użytku posiada wbudowaną technologię której nie są w stanie złamać nawet wyspecjalizowane komórki rządowych agencji bezpieczeństwa. Staramy się pokazać, jak ogromną zasługą w zachowaniu bezpieczeństwa i poufności zarówno naszej korespondencji jak i komunikacji np z bankiem, mają te małe płatki krzemu które są cichymi towarzyszami naszych codziennych połączeń poprzez publiczną sieć Internet.
Prowadzący: Radosław Biernacki, Michał Stanek, Jan Dąbroś, Konrad Dulęba
Hashtag: ArmTrustZone, ATF, ArmTrustedFirmware, Android, Security, Trusty, TEE, OP-TEE, SecureBoot, VerifiedBoot, Firmware
### Plan odcinka
# 0:08 - Wstęp
# 1:25 - Kim jesteśmy
# 5:40 - Dlaczego rozwiązania sprzętowe są podstawą modelu bezpieczeństwa
# 9:17 - Czym są enklawy kryptograficzne
# 10:48 - Reverse engineering krzemu
# 14:45 - Arm Trust Zone
# 22:22 - Trusted Platform Module
# 24:47 - Jak i po co łączyć ATZ i TPM
# 26:18 - Czy do budowy enklawy konieczny jest element zewnętrzny
# 30:29 - Android jako modelowy przykład bezpiecznego systemu operacyjnego
# 30:50 - UID jako podstawa dla sandbox
# 32:09 - TEE (Trusty) jako podstawa enklawy kryptograficznej
# 35:30 - Full Disk Encryption
# 36:40 - File Based Encryption
# 39:03 - API do kryptografii bazowane na enklawie
# 41:00 - Luki bezpieczeństwa w TEE
# 42:16 - Enklawy jako podstawa dla DRM ;(
# 44:05 - SGX od Intela
# 48:47 - Verified Boot i Secure Boot
# 54:45 - Dlaczego nie powinno się “root’ować” smartfona
# 58:48 - Trusted Platform Module - detale działania
# 1:00:15 - TPM + Bitlocker
# 1:02:00 - Atestacja serwerów przy pomocy TPM
# 1:02:58 - Czy TPM chroni przed atakami fizycznymi? Czyli dlaczego nie szyfruj Bitlocker`em bez hasła ;)
# 1:06:45 - Czym jest Yubikey i dlaczego jeszcze go nie używasz?
# 1:09:10 - PSD2 vs Yubikey vs Smartfon
# 1:10:11 - Protected Confirmation
# 1:11:59 - Czy nadal używasz PC do przelewów?
# 1:15:32 - Zakończenie
### Linki
Trustzone TEE
https://www.trustkernel.com/uploads/pubs/TZResearch_GetMobile2018.pdf
https://www.arm.com/files/pdf/20160701_A04_ATF_Taiwan_I-Wei_Lin.pdf
TEE, Secure & Measured Boot for Samsung Pay
https://developer.samsung.com/tech-insights/pay/device-side-security
Basics of TBSA
https://www.arm.com/files/pdf/20160628_A01_ATF_Korea_Udi_Maor.pdf
Apple TouchID
https://hackernoon.com/demystifying-apples-touch-id-4883d5121b77
(Programista 2017, numer 63, artykuł Jana Dąbrosia) - tzw. Biblia Arm TrustZone :P
https://drive.google.com/drive/u/0/folders/0BwLtsK2HpuELallaSFcxb2RtR3c
Extracting ECDSA
Keys from Qualcomm’s TrustZone:
https://www.nccgroup.trust/globalassets/our-research/us/whitepapers/2019/hardwarebackedhesit.pdf
Google IO Android Securitybr...