Trusted Platform Module (Polski)

Powiązane artykuły
Rng-tools
Self-encrypting drives
Smartcards
Trusted Platform Module (Polski)/1.2 (Polski)
This article or section needs expansion.
Reason:
Potrzeba wyjaśnienia różnic w użytkowaniu TPM 1.2 i 2.0, obrony przed atakiem Evil Maid i Trusted boot. Uszczelnianie rejestrów PCR i używanie w połączeniu z LUKS. (Discuss in
Talk:Trusted Platform Module (Polski)
)
Trusted Platform Module
(TPM) to międzynarodowy standard bezpiecznego kryptoprocesora, który jest dedykowanym mikroprocesorem zaprojektowanym do zabezpieczania sprzętu poprzez integrację kluczy kryptograficznych w urządzeniach.
W praktyce TPM może być wykorzystywany do różnych zastosowań związanych z bezpieczeństwem, takich jak
secure boot
, przechowywanie kluczy i
generowanie liczb losowych
.
TPM jest oczywiście obsługiwany tylko na urządzeniach, które mają sprzętową obsługę TPM. Jeśli twój sprzęt obsługuje TPM, ale nie jest wyświetlany, może być konieczne włączenie go w ustawieniach BIOS-u.
Wersje
Istnieją dwie bardzo różne specyfikacje TPM: 2.0 i 1.2, które również używają różnych stosów oprogramowania. Ten artykuł opisuje tylko TPM 2.0, dla starszego TPM 1.2 zobacz
/1.2 (Polski)
.
TPM 2.0 umożliwia bezpośredni dostęp przez
/dev/tpm0
(jeden klient na raz), dostęp zarządzany przez jądro przez
/dev/tpmrm0
lub dostęp zarządzany przez demona zarządzającego zasobami
tpm2-abrmd
.
Według
członka projektu systemd, używanie
tpm2-abrmd
nie jest już zalecane. Istnieją dwie opcje narzędzi przestrzeni użytkownika,
tpm2-tools
firmy Intel i
ibm-tss
AUR
firmy IBM.
TPM 2.0 wymaga rozruchu
UEFI
; systemy rozruchowe BIOS lub Legacy mogą korzystać tylko z TPM 1.2.
Niektóre układy TPM można przełączać między wersjami 2.0 i 1.2 poprzez aktualizację oprogramowania układowego (którą można wykonać tylko ograniczoną liczbę razy).
Użycie
This article or section needs expansion.
Reason:
Ta sekcja to tylko fragment. Możesz pomóc, rozszerzając ją o informacje na temat konfigurowania i używania urządzenia TPM 2.0. (Discuss in
Talk:Trusted Platform Module (Polski)
)
Wiele zasobów informacyjnych na temat konfigurowania i korzystania z usług TPM 2.0 w codziennych zastosowaniach jest dostępnych na stronie
społeczności tpm2-software
.
Sprawdzanie wsparcia
Układ TPM 2.0 jest wymagany dla komputerów certyfikowanych do uruchamiania systemu Windows 10 od 2016-07-28.
[1]
. Linux obsługuje TPM 2.0 od wersji 3.20
[2]
i nie powinien wymagać żadnych innych kroków do włączenia w domyślnej instalacji Arch.
Dwa sposoby sprawdzenia, czy TPM 2.0 jest skonfigurowany bez specjalnego oprogramowania:
sprawdzenie logów, np. poprzez uruchomienie
journalctl -k --grep=tpm
jako root
odczytanie wartości
/sys/class/tpm/tpm0/device/description
[3]
lub
/sys/class/tpm/tpm0/tpm_version_major
Szyfrowanie danych w spoczynku (at-rest) za pomocą LUKS
Istnieją dwie metody odblokowania woluminu LUKS przy użyciu modułu TPM.  Można użyć
Clevis
lub
#systemd-cryptenroll
.
Korzystając z obu metod, zaszyfrowany wolumin lub woluminy można odblokować za pomocą kluczy przechowywanych w module TPM, automatycznie podczas rozruchu lub ręcznie w późniejszym czasie.  Użycie TPM do tego celu gwarantuje, że dyski nie zostaną odblokowane, chyba że spełnione zostaną określone warunki, takie jak brak modyfikacji oprogramowania układowego i brak wyłączenia
Secure Boot
(patrz
#Dostęp do rejestrów PCR
).
Warning
Jeśli użyjesz tej metody na woluminie głównym, oznacza to, że tak długo, jak wspomniane wcześniej warunki są spełnione, komputer
odblokuje się automatycznie
podczas uruchamiania bez konieczności wprowadzania hasła szyfrowania.
Oznacza to, że dostęp do danych jest chroniony w przypadku kradzieży tylko zaszyfrowanego dysku, ale nie w przypadku kradzieży całego komputera.
Należy pamiętać, że ta metoda zwiększa podatność na
ataki zimnego rozruchu
, ponieważ nawet jeśli komputer był wyłączony przez długi czas (zapewniając całkowite wyczyszczenie pamięci), atakujący może po prostu włączyć go i poczekać, aż moduł TPM automatycznie załaduje klucz. Może to stanowić zagrożenie dla celów o wysokiej wartości.
systemd-cryptenroll
Zobacz
systemd-cryptenroll#Trusted Platform Module
.
SSH
W przypadku kluczy SSH zabezpieczonych TPM dostępne są dwie opcje:
ssh-tpm-agent
— Agent kompatybilny z ssh-agent używający kluczy wspieranych przez TPM.
https://github.com/Foxboron/ssh-tpm-agent
||
ssh-tpm-agent-git
AUR
Zobacz
Przechowywanie kluczy ssh wewnątrz modułu TPM: ssh-tpm-agent
.
tpm2-pkcs11
— Interfejs PKCS#11 dla sprzętu Trusted Platform Module 2.0.
https://github.com/tpm2-software/tpm2-pkcs11
||
tpm2-pkcs11
Zobacz
Konfiguracja SSH
i
Używanie TPM do uwierzytelniania SSH
(2020-01).
GnuPG
This article or section needs expansion.
Reason:
Dodanie instrukcji sprawdzania modułu TPM w celu określenia obsługiwanych przez niego kluczy. (Discuss in
Talk:Trusted Platform Module (Polski)
)
GnuPG
, od wersji 2.3, obsługuje przenoszenie kompatybilnych kluczy do TPM. Instrukcje można znaleźć na stronie
Używanie TPM z GnuPG 2.3
.
Inne dobre przykłady wykorzystania TPM 2.0
Konfiguracja bezpiecznego rozruchu + TPM 2
[
dead link
2025-03-15—HTTP 404]
(2018-06, Debian)
Using the TPM - It's Not Rocket Science (Anymore)
- Johannes Holland & Peter Huewe (2020-11, Youtube): przykłady dla OpenSSL z
tpm2-tss-engine
.
Dostęp do rejestrów PCR
Rejestry konfiguracji platformy (PCR) zawierają skróty, które można odczytać w dowolnym momencie, ale można je zapisać tylko za pomocą operacji rozszerzenia, która zależy od poprzedniej wartości skrótu, tworząc w ten sposób rodzaj łańcucha bloków. Są one przeznaczone do sprawdzania integralności sprzętu i oprogramowania platformy między uruchomieniami (np. ochrona przed
atakiem Evil Maid
).  Mogą być używane do odblokowywania kluczy szyfrujących i udowadniania, że uruchomiono prawidłowy system operacyjny.
Specyfikacja TCG PC Client Specific Platform Firmware Profile Specification
definiuje używane rejestry, a
rejestr Linux TPM PCR
przypisuje używające ich komponenty systemu Linux.
Rejestry są następujące:
PCR
Użycie
Uwagi
PCR0
Kod wykonywalny oprogramowania układowego systemu głównego (inaczej oprogramowanie układowe)
Może ulec zmianie po aktualizacji UEFI
PCR1
Dane oprogramowania układowego systemu podstawowego (inaczej ustawienia UEFI)
PCR2
Rozszerzony lub rozszerzalny kod wykonywalny
PCR3
Rozszerzone lub podłączane dane oprogramowania układowego
Ustawienie podczas fazy rozruchu Boot Device Select UEFI
PCR4
Kod menedżera rozruchu i próby rozruchu
Mierzy menedżera rozruchu i urządzenia, z których oprogramowanie sprzętowe próbowało uruchomić komputer.
PCR5
Konfiguracja i dane menedżera rozruchu
Może mierzyć konfigurację programów ładujących; zawiera tabelę partycji GPT
PCR6
Wznowienie od zdarzeń stanu zasilania S4 i S5
PCR7
Stan bezpiecznego rozruchu
Zawiera pełną zawartość PK/KEK/db, a także określone certyfikaty używane do walidacji każdej aplikacji rozruchowej
[4]
.
PCR8
1
Hash wiersza poleceń jądra
Obsługiwane przez
grub
i
systemd-boot
.
PCR9
1
Hash opcji ładowania initrd i EFI
Linux mierzy opcje ładowania initrd i EFI, zasadniczo opcje cmdline jądra.
PCR10
1
Zarezerwowane do wykorzystania w przyszłości
PCR11
1
Hash
zunifikowanego obrazu jądra
.
zobacz
systemd-stub(7)
PCR12
1
Nadpisany wiersz poleceń jądra, Poświadczenia
zobacz
systemd-stub(7)
PCR13
1
Rozszerzenia systemowe
zobacz
systemd-stub(7)
PCR14
1
shim - MokList, MokListX i MokSBState.
[5]
PCR15
1
Nieużywany
PCR16
1
Debug
Może być używany i resetowany w dowolnym momencie. Może nie występować w oficjalnej wersji oprogramowania sprzętowego.
PCR23
Obsługa aplikacji
System operacyjny może ustawić i zresetować ten PCR.
Przypadek użycia zdefiniowany przez system operacyjny i może się różnić w zależności od różnych dystrybucji Linuksa i urządzeń z systemem Windows.
W systemie Windows BitLocker używa PCR8-11 (Legacy) lub PCR11-14 (UEFI) do własnych celów.
Dokumentacja od tianocore
[6]
.
tpm2-totp
ułatwia tę kontrolę za pomocą ludzkiego obserwatora i dedykowanego zaufanego urządzenia.
Bieżące wartości PCR można wyświetlić za pomocą
systemd-analyze(1)
:
$ systemd-analyze pcrs
Lub alternatywnie z
tpm2_pcrread(1)
z
tpm2-tools
:
# tpm2_pcrread
Rozwiązywanie problemów
Odblokowanie TPM2 LUKS2 nadal wymaga podania hasła
Jeśli postępowałeś zgodnie z
instrukcja opisana powyżej
w celu automatycznego odblokowania urządzeń luks2 z zarejestrowanymi kluczami w module sprzętowym TPM2, ale nadal otrzymujesz monit o wprowadzenie hasła podczas etapu rozruchu initramfs. Konieczne może być
wczesne załadowanie
modułu jądra (jego nazwę można uzyskać za pomocą
systemd-cryptenroll --tpm2-device=list
), który jest odpowiedzialny za obsługę konkretnego modułu TPM2.
Zobacz także
Gentoo:Trusted Platform Module
Narzędzie do testowania TPM-JS:
kod źródłowy
-
wersja internetowa
.