Jump to content

# Trusted Platform Module (Polski)

3 languages

- English
- 日本語
- 中文（简体）

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