Jump to content

# Trusted Platform Module (Polski)

From ArchWiki

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-tssAUR 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-gitAUR

  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].
PCR81 | Hash wiersza poleceń jądra | Obsługiwane przez grub i systemd-boot.
PCR91 | Hash opcji ładowania initrd i EFI | Linux mierzy opcje ładowania initrd i EFI, zasadniczo opcje cmdline jądra.
PCR101 | Zarezerwowane do wykorzystania w przyszłości |
PCR111 | Hash zunifikowanego obrazu jądra. | zobacz systemd-stub(7)
PCR121 | Nadpisany wiersz poleceń jądra, Poświadczenia | zobacz systemd-stub(7)
PCR131 | Rozszerzenia systemowe | zobacz systemd-stub(7)
PCR141 | shim - MokList, MokListX i MokSBState. | [5]
PCR151 |  | Nieużywany
PCR161 | 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.

1. 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.

Categories:

- Security (Polski)
- Hardware (Polski)

Hidden categories:

- Pages or sections flagged with Template:Expansion
- Pages with dead links

Trusted Platform Module (Polski)
Add topic