คำแนะนำฉบับสมบูรณ์สำหรับคำสั่ง /dev/tpm0, /dev/tpmrm0 และ tpm2_pcrread และ tpm2_pcr_extend ใน Linux

  • TPM 2.0 อนุญาตให้วัดการบูตและคีย์ LUKS ที่เชื่อมโยงกับ PCR เหมาะอย่างยิ่งกับ PBA PIN
  • ใช้ /dev/tpmrm0 และ tpm2_pcrread/tpm2_pcrextend เพื่อจัดการ PCR
  • นโยบาย UKI + PCR ที่ลงนามทำให้การอัปเดตมีเสถียรภาพโดยไม่สูญเสียความปลอดภัย
  • บรรเทาการบูตเย็นและการดมกลิ่นด้วย PBA และการเข้ารหัสพารามิเตอร์ รักษาการกู้คืน

คำสั่ง TPM และ tpm2 ใน Linux

ในช่วงไม่กี่ปีที่ผ่านมา โมดูล TPM 2.0 ได้กลายจากความลึกลับของฮาร์ดแวร์ไปเป็นส่วนร่วมของคอมพิวเตอร์สมัยใหม่ที่มี UEFI และ Secure Boot บทความนี้จะอธิบายว่า /dev/tpm0 และ /dev/tpmrm0 คืออะไร และวิธีการใช้ tpm2_pcrread และ tpm2_pcrextend (เช่นเดียวกับคำสั่งจริงใน tpm2-tools) รวมถึงการอธิบายว่าคำสั่งเหล่านี้สอดคล้องกับนโยบายการบูตที่วัด การเข้ารหัสดิสก์ และ PCR ที่ลงนามใน Linux อย่างไร

มีเอกสารประกอบที่มีประโยชน์ แต่กระจัดกระจายอยู่ในหน้าคู่มือของ systemd รายการใน wiki และโพสต์ที่มีเนื้อหาหนาแน่นมาก ที่นี่เรารวบรวมข้อมูลสำคัญทั้งหมด (PCR, ตัวอย่างในทางปฏิบัติ, ความเสี่ยงและการป้องกัน) เพื่อให้ผู้เชี่ยวชาญด้านเทคนิค แม้จะไม่ใช่ผู้เชี่ยวชาญด้าน TPM ก็สามารถทำงานกับเครื่องมือเหล่านี้ได้โดยไม่ต้องสับสนกับรายละเอียดที่คลุมเครือ

TPM 2.0 คืออะไร และทำไมคุณถึงควรสนใจ

Trusted Platform Module คือชิปความปลอดภัยที่อยู่บนเมนบอร์ดของคุณ (หรือภายใน CPU เช่น fTPM/Intel PTT) และทำหน้าที่เป็นที่จัดเก็บที่ปลอดภัย ตัวสร้างตัวเลขสุ่ม และรูทแห่งความเชื่อถือสำหรับระบบ มันเป็นแบบ passive: ถ้าคุณไม่ใช้มัน มันก็จะไม่ทำอะไรเลยแต่เมื่อคุณรวมเข้าในโฟลว์การบูตและการเข้ารหัสดิสก์แล้ว ก็จะมีการตรวจสอบความสมบูรณ์และคีย์ที่ได้รับการปกป้องด้วยฮาร์ดแวร์

ในทางปฏิบัติ TPM 2.0 อนุญาตให้คุณใช้โหมดหลักสองโหมดในการเข้ารหัสดิสก์: ก) สร้าง/บันทึกคีย์ที่แข็งแกร่งและป้องกันการใช้งานด้วย PIN พร้อมล็อคป้องกันการโจมตีแบบบรูทฟอร์ซ ข) เปิดใช้งานสิ่งที่เรียกว่าการบูตแบบวัดผล ซึ่ง ส่วนประกอบการบูตแต่ละชิ้นจะถูกวัดในบันทึก PCRดังนั้นคีย์จะถูก "แกะออก" เฉพาะในกรณีที่ระบบไม่ได้ถูกดัดแปลง (และอาจมีรหัส PIN ก่อนบูตด้วย)

/dev/tpm0 และ /dev/tpmrm0: ความแตกต่างและเวลาที่ควรใช้แต่ละอัน

ใน Linux คุณจะเห็นอุปกรณ์อักขระสองตัวเมื่อ TPM 2.0 พร้อมใช้งาน /dev/tpm0 เป็นอินเทอร์เฟซ "ดิบ" ของ TPMในขณะที่ /dev/tpmrm0 เปิดเผยการเข้าถึงผ่านตัวจัดการทรัพยากร (ผู้จัดการที่เพิ่มจำนวนไคลเอนต์ จัดการเซสชันและทรัพยากร) โดยเป็นผู้จัดการที่ tpm2-tools แนะนำในสถานการณ์ส่วนใหญ่

หากคุณไม่แน่ใจว่ามี TPM อยู่หรือไม่ คุณสามารถทดสอบแบบ Hot Test ได้ หาก /sys/class/tpm/ ว่างเปล่าหรือคำสั่ง wiki ไม่ส่งคืนสิ่งใดไม่พบ TPM: อาจไม่มีอยู่จริงหรืออาจถูกปิดใช้งานในเฟิร์มแวร์

# ¿Hay TPM 2.0?
ls /sys/class/tpm/
cat /sys/class/tpm/tpm*/tpm_version_major
# Dispositivos
ls -l /dev/tpm*

เมื่อมีโหนดอุปกรณ์ทั้งสองอยู่ tpm2-tools จะตรวจจับ /dev/tpmrm0 และใช้งานโดยอัตโนมัติ หากคุณจำเป็นต้องบังคับอุปกรณ์ เครื่องมือส่วนใหญ่จะยอมรับ –tcti หรือใช้ตัวแปรสภาพแวดล้อม TCTI แต่สำหรับงานทั่วไปมักไม่จำเป็น

TPM PCR: วิธีการทำงานและการวัด

รีจิสเตอร์การกำหนดค่าแพลตฟอร์มเป็นบันทึกที่จัดเก็บค่าแฮช (โดยปกติคือ SHA-256) ของสถานะของส่วนประกอบที่สำคัญในแต่ละเฟสการบูต พวกมันจะถูกเริ่มต้นเป็นศูนย์เมื่อเปิดเครื่องและสามารถ "ขยาย" ได้เท่านั้น: ห้ามเขียนซ้ำหรือลบ (ยกเว้นในกรณีการดีบักเช่น PCR 16)

การดำเนินการพื้นฐานคือส่วนขยาย: ค่าใหม่ = SHA256(ค่าปัจจุบัน || SHA256(ข้อมูล))นี่คือวิธีการเชื่อมโยงการวัดเข้าด้วยกันโดยไม่อนุญาตให้มีการรีเซ็ตแบบฉวยโอกาส รูปแบบนี้ใช้ในการวัดเฟิร์มแวร์ การกำหนดค่า การบูตที่ปลอดภัย เคอร์เนล initrd และพารามิเตอร์เคอร์เนล และอื่นๆ

ในอุปกรณ์สมัยใหม่ คุณจะเห็น PCR จำนวน 24 รายการ (0–23) สิ่งที่เกี่ยวข้องที่สุดในการบูต UEFI ด้วย systemd คือ:
– PCR 0: รหัสเฟิร์มแวร์
– PCR 1: การกำหนดค่าเฟิร์มแวร์ (การตั้งค่า UEFI)
– PCR 7: สถานะการบูตที่ปลอดภัยและใบรับรองที่เชื่อถือได้
– PCR 9: initrd(s) วัดโดยเคอร์เนล
– PCR 11: UKI (Unified Kernel Image) และเครื่องหมายเฟสผ่าน systemd-stub/systemd-pcrphase
– PCR 12: บรรทัดคำสั่งเคอร์เนล

อ่านและขยาย PCR ด้วย tpm2-tools: tpm2_pcrread และ tpm2_pcr_extend

ใน tpm2-tools การอ่านจะทำด้วย tpm2_pcrอ่าน และส่วนขยายด้วย tpm2_pcrextendบางครั้งคุณจะเห็นว่า "tpm2_pcr_extend" ถูกอ้างถึงการดำเนินการเชิงแนวคิดของการขยาย แต่ คำสั่งชุดจริงคือ tpm2_pcrextend.

เพื่อตรวจสอบสถานะปัจจุบันของ PCR SHA-256มันง่ายเหมือน:

# Leer PCRs en SHA-256 (ejemplos de índices habituales)
sudo tpm2_pcrread sha256:0,1,7,9,11,12

# O todos los PCRs SHA-256 disponibles
tpm2_pcrread sha256:all

หากต้องการขยาย PCR ด้วยแฮชของข้อมูลใดๆ (เช่น ตัวอย่างทางการสอน แฮชของ /etc/passwd) ให้คำนวณ SHA-256 และขยายมัน จำไว้ว่า: TPM ไม่ได้รับข้อมูลขนาดยักษ์ แต่ได้รับแฮชโดยข้อจำกัดและการออกแบบ

# 1) Guardar el hash de /etc/passwd
echo -n $(sha256sum /etc/passwd | cut -d' ' -f1) > passwd.sha

# 2) Extender PCR 7 (ejemplo) con el hash previo
sudo tpm2_pcrextend 7:sha256=$(cat passwd.sha)

# 3) Ver el nuevo valor del PCR 7
tpm2_pcrread sha256:7

หากคุณต้องการสร้างซ้ำคณิตศาสตร์ส่วนขยายภายนอก TPM คุณเชื่อมโยงค่า PCR ปัจจุบัน (ไบนารี) กับแฮชใหม่ และคุณใช้ SHA-256 อีกครั้งเพื่อตรวจสอบผลลัพธ์

สามารถรีเซ็ต PCR ได้หรือไม่?

ภายใต้สภาวะปกติไม่มี ปรัชญาคือ PCR จะเติบโตได้เฉพาะกับส่วนขยายเท่านั้นมีข้อยกเว้นหนึ่งประการ: PCR 16 มักถูกสงวนไว้สำหรับ "การดีบัก" และสามารถรีเซ็ตได้ในโฟลว์บางส่วน แต่จะไม่มีประโยชน์ในฐานะรูทความปลอดภัยของนโยบายของคุณ

Measured Boot, LUKS และ systemd-cryptenroll: การนำชิ้นส่วนต่างๆ มารวมกัน

เมื่อคุณรวม TPM เข้ากับการเข้ารหัสดิสก์ คุณสามารถ "ผูก" การปลดล็อคด้วยคีย์เข้ากับชุด PCR ได้ หากในการบูตปัจจุบัน PCR เหล่านั้นมีค่าเดียวกันกับตอนที่คุณลงทะเบียนคีย์TPM จะถูกเปิดผนึกและไดรฟ์ข้อมูล LUKS จะเปิดโดยอัตโนมัติ (มีหรือไม่มี PIN ก่อนบูต ขึ้นอยู่กับการกำหนดค่าของคุณ)

ทำได้อย่างดีด้วย systemd-cryptenroll และ systemd-cryptsetup แนวคิดคือการสร้างไดรฟ์ของคุณ ลงทะเบียนคีย์ TPM และเพิ่มคีย์การกู้คืน เพื่อที่คุณจะไม่ถูกทิ้งไว้ข้างหลังหากการวัดมีการเปลี่ยนแปลง (เช่น หลังจากการอัปเดตเฟิร์มแวร์หรือเคอร์เนล)

# Ejemplo: crear LUKS, matricular TPM y añadir recuperación (pseudoflujo)
# 1) Crear el volumen con contraseña temporal
sudo cryptsetup luksFormat /dev/nvme0n1p2

# 2) Matricular TPM en LUKS usando PCRs concretos y PIN
sudo systemd-cryptenroll \
  --tpm2-device=auto \
  --tpm2-with-pin=yes \
  --tpm2-pcrs=1+2+3+4 \
  --wipe-slot=empty \
  /dev/nvme0n1p2

# 3) Añadir clave de recuperación aleatoria
sudo systemd-cryptenroll --recovery-key /dev/nvme0n1p2

# 4) Abrir con TPM o con recovery cuando proceda
systemd-cryptsetup attach root /dev/nvme0n1p2 - tpm2-device=auto

หากคุณบังคับให้เกิดความคลาดเคลื่อน (เช่น คุณขยาย PCR 4 โดยตั้งใจ) TPM จะไม่ปล่อยคีย์อีกต่อไป และคุณจะต้องใช้คีย์กู้คืน คุณสามารถลงทะเบียน TPM ใหม่อีกครั้งด้วยค่าปัจจุบันใหม่ได้ในภายหลังโดยใช้ –wipe-slot=tpm2 และการดำเนินการอื่นของ systemd-cryptenroll

ควรเลือก PCR ตัวใดและทำไม

ยิ่งคุณเชื่อมโยง PCR ที่เกี่ยวข้องมากเท่าใด พื้นที่ผิวที่คุณลดได้ก็จะยิ่งมากขึ้นเท่านั้น แต่คุณจะต้องลงทะเบียนใหม่บ่อยขึ้นหลังจากการเปลี่ยนแปลงที่ถูกต้อง เกณฑ์ปฏิบัติบางประการ:
– PCR 7 (Secure Boot): ควรมีความเสถียรมากหากชุดคีย์ของคุณไม่เปลี่ยนแปลง
– PCR 0/1 (เฟิร์มแวร์และการกำหนดค่า): การเปลี่ยนแปลงเหล่านี้แทบจะไม่เปลี่ยนแปลงเลย จำเป็นต้องลงทะเบียนใหม่หลังจากอัปเดตเฟิร์มแวร์หรือเปลี่ยน BIOS/UEFI
– PCR 9/11/12 (เคอร์เนล, initrd, UKI และ cmdline): สิ่งเหล่านี้จะเปลี่ยนแปลงบ่อยครั้งหากคุณไม่ได้ใช้ UKI หรือลายเซ็น/นโยบายที่เสถียร

ในบางสภาพแวดล้อม พบว่ามีการเชื่อมโยง PCR 7 เท่านั้น โดยอาศัย Secure Boot ที่ตรวจสอบเคอร์เนลและ initrd หากเริ่มต้นเป็น UKI ที่ลงนาม และใช้ systemd-boot ซึ่ง ไม่อนุญาตให้แก้ไขพารามิเตอร์เคอร์เนลเมื่อ SB ทำงานอยู่วิธีนั้นใช้ได้ แต่ถ้า Secure Boot ของคุณต้องอาศัยคีย์ของบุคคลที่สาม (เช่น Microsoft 3rd Party) จะง่ายกว่าในการจัดเตรียมการบูตแบบอื่นที่รักษา PCR 7 ไว้ ดังนั้น มันไม่ใช่ตัวเลือกที่เข้มงวดที่สุด.

ลงนามนโยบาย UKI และ PCR: เสถียรภาพโดยไม่สูญเสียความมั่นคง

วิธีแก้ปัญหาที่ใช้งานได้จริงเพื่อหลีกเลี่ยงการลงทะเบียนซ้ำทุกครั้งที่คุณอัปเดตเคอร์เนลคือการใช้ UKI (Unified Kernel Image) และนโยบาย PCR ที่ลงนามแล้วคุณสร้างคู่คีย์ ผูกคีย์สาธารณะกับ TPM เมื่อลงทะเบียน และลงนาม UKI ของคุณหลังการอัปเดตแต่ละครั้ง TPM เชื่อถือลายเซ็นนั้นและอนุญาตให้ปลดล็อกได้ แม้ว่าแฮชเคอร์เนลเฉพาะจะเปลี่ยนแปลงก็ตาม

เครื่องมือ systemd-measure และตัวช่วย systemd-ukify ช่วยให้เรื่องนี้ง่ายขึ้น: แพ็กเกจ ukify kernel, initrd และ cmdline ลงใน UKI (โดยปกติจะวัดใน PCR 11) และ systemd-measure ลงนามในนโยบาย ด้วย mkinitcpio ukify สามารถผสานรวมได้เพื่อให้ หลังการติดตั้ง ลายเซ็นจะดำเนินการโดยอัตโนมัติ

# Esquema típico (pseudocomandos)
# 1) Crear claves para política PCR firmada
openssl genpkey -algorithm RSA -out /etc/kernel/pcr-initrd.key.pem -pkeyopt rsa_keygen_bits:3072
openssl req -new -x509 -key /etc/kernel/pcr-initrd.key.pem -out /etc/kernel/pcr-initrd.pub.pem -subj "/CN=UKI PCR Policy"

# 2) Configurar ukify/mkinitcpio para generar UKI y firmar política
# (consultar man ukify y systemd-measure para parámetros)

# 3) Matricular en LUKS atando PCRs y clave pública de la política
sudo systemd-cryptenroll \
  --tpm2-device=auto \
  --wipe-slot=tpm2 \
  --tpm2-with-pin=yes \
  --tpm2-pcrs=0+1+2+7 \
  --tpm2-public-key=/etc/kernel/pcr-initrd.pub.pem \
  --tpm2-public-key-pcrs=11 \
  /dev/nvme0n1p2

ด้วยวิธีนี้ นโยบายของคุณยังคงมีเสถียรภาพต่อการเปลี่ยนแปลงเคอร์เนล/initrd ตราบใดที่คุณยังคงลงนาม UKI ด้วยคีย์ของคุณหากคุณต่ออายุรหัสผ่านหรือเปลี่ยนชุด PCR คุณจะต้องลงทะเบียนใหม่อีกครั้ง

ตัวอย่างของห่วงโซ่การวัดด้วย systemd

ในระหว่างการบูต systemd-stub และ systemd-pcrphase จะขยาย PCR ในเวลาที่เฉพาะเจาะจง ตัวอย่างเช่น “enter-initrd” จะถูกบันทึกใน PCR 11โดยอนุญาตให้ปลดล็อคได้เฉพาะภายใน initrd เท่านั้น (ลดเวกเตอร์ที่ผู้โจมตีพยายามใช้คีย์ซ้ำในภายหลัง)

ในระบบที่มี UKI เนื้อหา UKI จะถูกวัดใน PCR 11 ในระบบที่ไม่มี UKI เคอร์เนลวัดค่า initrds ใน PCR 9 และ bootloader สามารถวัด cmdline ใน PCR 12 ได้ ตรวจสอบให้แน่ใจว่าคุณครอบคลุม initrd และ cmdline ในนโยบายของคุณ มิฉะนั้นใครบางคนอาจทำได้ หูหลัง initrd หรือ boot ด้วย cmdline ที่เป็นอันตราย เช่น init=/bin/ทุบตี.

ความเสี่ยงที่แท้จริง: การบูตแบบเย็น การดมกลิ่น TPM และอื่นๆ

อะไรอาจผิดพลาดได้บ้าง? มีหลายสิ่งที่ควรรู้เมื่อสร้างแบบจำลองภัยคุกคาม การโจมตีแบบบูตเย็น ยังคงใช้งานได้: หากการปลดล็อกเป็นแบบอัตโนมัติเต็มรูปแบบ ผู้โจมตีสามารถปลดล็อกซ้ำได้ไม่จำกัด มาตรการบรรเทาปัญหาที่ชัดเจนคือการกำหนดรหัส PIN ก่อนการบูต (PBA) โดยลดจำนวนครั้งในการปลดล็อกลงเหลือหนึ่งครั้งต่อรอบการจ่ายไฟ

อีกหมวดหมู่หนึ่งคือ การโจมตีแบบดมกลิ่นบนบัส TPMCPU จะร้องขอคีย์ TPM จะส่งคีย์นั้นไป หากลิงก์ถูกดักจับ คีย์อาจรั่วไหลได้ ด้วยเหตุนี้ systemd จึงนำ "การเข้ารหัสพารามิเตอร์" มาใช้เพื่อให้การแลกเปลี่ยนข้อมูลถูกเข้ารหัส อีกทางเลือกหนึ่งคือการใช้ fTPM/Intel PTT หรือหน่วยความจำที่เข้ารหัส ซึ่งช่วยลดความเสี่ยงในการถูกเปิดเผย มีการสาธิตให้สาธารณชนได้ชมในราคาที่ค่อนข้างประหยัด (แม้จะใช้ไมโครคอนโทรลเลอร์) ซึ่งแสดงให้เห็นถึงความเป็นไปได้ในการใช้งานบนแล็ปท็อปของแบรนด์ดัง

ยังมีจุดอ่อนทั้งทางวิชาการและทางปฏิบัติอีกด้วย: TPM-Fail, faultTPM (มีผลกระทบอย่างเห็นได้ชัดต่อ AMD) และกรณี บิตพิกซี่ (CVE-2023-21563)นี่ไม่ได้หมายความว่า TPM ไม่มีประโยชน์ แต่คุณควรอัปเดตเฟิร์มแวร์ของคุณให้ทันสมัย ​​ทำความเข้าใจโมเดลภัยคุกคามของคุณ และไม่ควรไว้วางใจอย่างไม่ลืมหูลืมตา

สถานะ BitLocker ต่อต้านภัยคุกคามเหล่านี้

ในโลก Windows การเข้ารหัสดิสก์ที่ได้รับความนิยมมากที่สุดคือ BitLocker ปัจจุบันมีการบันทึกว่า การกำหนดค่าเริ่มต้น (ปลดล็อคอัตโนมัติเฉพาะเมื่อใช้ TPM) มันเปิดโอกาสให้ทั้งการบูตแบบเย็นและการดักจับช่อง TPM ได้ เนื่องจากไม่ได้ใช้งานการเข้ารหัสพารามิเตอร์แบบ systemd ซึ่งทำให้คอมพิวเตอร์ขององค์กรบางเครื่องเสี่ยงต่อการถูกโจมตีภายในไม่กี่นาที

ข้อแนะนำคือให้เปิดใช้งาน การตรวจสอบสิทธิ์ก่อนการบูต ผ่านนโยบาย/รีจิสทรี หรือ CLI ซึ่งเป็นสิ่งที่ผู้ใช้ทั่วไปอาจไม่ค่อยเห็น นอกจากนี้ อย่าลืมตรวจสอบว่าคีย์กู้คืนถูกเก็บไว้ที่ไหน เพราะส่วนใหญ่มักจะอยู่ในบัญชี Microsoft ของผู้ใช้ มันเป็นอีกมุมหนึ่งของความเสี่ยง หากไม่ได้รับการควบคุม

กลเม็ดการรุก/รับ: แทนที่รูท LUKS เพื่อบังคับให้ใช้รหัสผ่านของคุณ

มีเวกเตอร์ที่น่าสนใจเมื่อไม่มีการตรวจสอบสิทธิ์ก่อนบูต ผู้โจมตีสามารถโคลนพาร์ติชัน LUKS จริงได้ แทนที่ด้วย LUKS ตัวอื่นที่มี UUID เดียวกันและรหัสผ่านที่เขารู้แล้วบูตเครื่องคอมพิวเตอร์ เนื่องจากค่าที่วัดได้ของ PCR ตรงกัน TPM จึงปล่อยคีย์ แต่ค่าที่ไม่ตรงกับ LUKS ปลอม ดังนั้น initrd จะถามหาคีย์ "recovery" การป้อนรหัสผ่านที่ผู้โจมตีทราบจะทำให้ระบบของคุณทำงานเป็น root ใน initrd และคุณสามารถควบคุมการขโมยคีย์ต้นฉบับได้ (เช่น โดยการเมาท์สำเนาจริงผ่านเครือข่ายและใช้ systemd-cryptsetup)

การบรรเทาที่ชัดเจน: เปิดใช้งานการตรวจสอบสิทธิ์ก่อนบูตใช้ประโยชน์จาก systemd-pcrphase เพื่อผูกการปลดล็อกอย่างเคร่งครัดกับเฟส initrd และพิจารณาการวัด/ผูกปริมาตร LUKS เป้าหมายด้วย (ต้องออกแบบอย่างระมัดระวังเพื่อหลีกเลี่ยงวงจรที่ไม่พึงประสงค์)

การเลือกพาร์ติชันและคีย์ที่สอง: แนวทางปฏิบัติที่ดีที่สุด

เก็บรักษา คีย์การกู้คืน จำเป็นอย่างยิ่ง: หาก TPM หรือเมนบอร์ดเสีย คีย์ที่ผูกกับ TPM ของคุณก็จะไร้ประโยชน์ LUKS อนุญาตให้มีสล็อตได้หลายช่อง (TPM ใช้ช่องหนึ่ง ส่วนการกู้คืนใช้อีกช่องหนึ่ง) นอกจากนี้ การแยกพาร์ติชัน / และ /home ออกจากกันยังมีข้อดีอีกด้วย: คุณสามารถใช้ การวัดที่เข้มงวดด้วย TPM a/ และใช้คีย์ที่แข็งแกร่งหรืออุปกรณ์ FIDO2/YubiKey สำหรับ /home ซึ่งจะลดความน่าเชื่อถือโดยรวมในกลไกเดียว

จะเกิดอะไรขึ้นเมื่อคุณอัปเดตเฟิร์มแวร์หรือเคอร์เนล?

หากคุณเปลี่ยนเฟิร์มแวร์หรือแตะตัวเลือก UEFI PCR เช่น 0/1 จะเปลี่ยนแปลงและ TPM จะไม่ปล่อยคีย์จนกว่าคุณจะลงทะเบียนใหม่อีกครั้ง สำหรับ เคอร์เนลและ initrd, การเปลี่ยนแปลงเกิดขึ้นบ่อยครั้งหากคุณไม่ได้ใช้ UKI ที่มีนโยบายแบบลงนาม การอัปเดตแต่ละครั้งอาจบังคับให้คุณใช้ตัวเลือกการกู้คืนและลงทะเบียนใหม่ในภายหลัง สำหรับ UKI ที่ลงนามแล้ว คุณเพียงแค่ลงนาม เท่านี้ก็เรียบร้อย

บันทึกและข้อสังเกตของชุมชน

ในคู่มือยอดนิยมบางเล่มของการแจกจ่ายบางประเภทมีการแนะนำไว้ ผูกเฉพาะ PCR 7 ทุกครั้งที่ใช้ UKI และ systemd-bootโดยอาศัยการป้องกันของ Secure Boot และไม่สามารถแก้ไข cmdline ได้ วิธีนี้ใช้ได้ แต่ก็มีความเสี่ยงหากพึ่งพาบุคคลที่สาม ก่อนหน้านี้เคยมีการบันทึกบั๊กที่การกด Enter จะทำให้เชลล์กู้คืนปรากฏขึ้นหลังจากปลดล็อก ดังนั้นควรอัปเดตเวอร์ชันของคุณให้เป็นเวอร์ชันล่าสุดอยู่เสมอเพื่อหลีกเลี่ยงปัญหาที่ไม่คาดคิด

ความคิดเห็นที่น่าสนใจที่ถูกแบ่งปันในปี 2025/06: ความผิดพลาดของ TPM ยังคงส่งผลกระทบต่อ AMD ในระดับหนึ่ง วิกิได้เพิ่มส่วนเฉพาะเกี่ยวกับนโยบาย PCR ที่ลงนาม และโปรแกรมติดตั้งสำหรับการแจกจ่ายที่เสนอ FDE พร้อม TPM เป็นคุณลักษณะทดลองได้รับการทดสอบแล้ว โดยพบปัญหาในทางปฏิบัติบางประการ (ต้องกู้คืนเมื่อบูตครั้งแรก ต้องพึ่งพาสแนป เข้ารหัสดิสก์คู่) ซึ่งเป็นปัญหาที่ สมควรได้รับการตรวจสอบอย่างละเอียดมากขึ้น.

การติดตามผลที่เน้นเรื่องการเข้ารหัสดิสก์ใน Windows ได้รับการเผยแพร่ในปี 2025/07 ข้อสรุปโดยรวมตอกย้ำถึงความจำเป็นของ PBA และการเข้ารหัสช่อง TPMรวมถึงการจำกัดการพึ่งพาคีย์ของบุคคลที่สามใน Secure Boot

เคล็ดลับการใช้งานด้วย tpm2-tools และ systemd

สำหรับการใช้งานในชีวิตประจำวัน: ติดตั้ง tpm2-tools และ tpm2-tss ใช้ /dev/tpmrm0 ตามค่าเริ่มต้นและ tpm2_pcrread/tpm2_pcrextend สำหรับการทดสอบและทดลองกับ PCR หลีกเลี่ยงการขยาย PCR ที่ใช้งานจริงด้วยข้อมูลที่ไม่แน่นอน: ดำเนินการนี้ในห้องปฏิบัติการหรือใช้ PCR 16 สำหรับการทดสอบ

เมื่อลงทะเบียนด้วย systemd-cryptenroll: –tpm2-device=อัตโนมัติ ตรวจจับ TPM; –tpm2-พร้อมพิน เพิ่ม PBA; –tpm2-pcrs=… เลือก PCR ของคุณ –tpm2-public-key=… และ –tpm2-public-key-pcrs=… เปิดใช้งานนโยบาย PCR ที่ลงนามแล้ว (เช่น เชื่อมโยงกับ PCR 11 สำหรับ UKI) อย่าลืม –ช่องเช็ด เมื่อคุณต้องการทำความสะอาดช่องก่อนหน้า

หากคุณไม่มี TPM และ systemd ทำให้คุณต้องรอในการบูต

ในบางครั้ง หลังจากการอัปเดต บริการจะพยายามใช้ TPM แม้ว่าเครื่องของคุณจะมองไม่เห็นก็ตาม ทำให้เกิดการหมดเวลาขณะบูต ตรวจสอบก่อนว่าไม่มี /dev/tpm* ปรากฏขึ้น หรือไม่มีรายการใน /sys/class/tpm

# Verificación rápida
ls /dev/tpm*
ls /sys/class/tpm/

หากไม่มี TPM ให้ตรวจสอบ /etc/crypttab ของคุณ ไม่มีตัวเลือกเช่น tpm2-device=autoหากมี ให้ลบออกแล้วสร้าง initrd ใหม่ คุณยังสามารถปิดใช้งานขั้นตอนการวัดบนคอมพิวเตอร์ที่ไม่มี TPM ได้ด้วย:

# 1) Eliminar referencias TPM en /etc/crypttab y regenerar initrd
sudo mkinitcpio -P    # (o dracut/rebuildinitrd según distro)

# 2) Evitar carga de módulos TPM si el firmware publica algo extraño
echo -e "blacklist tpm\nblacklist tpm_tis\nblacklist tpm_crb" | sudo tee /etc/modprobe.d/no-tpm.conf

# 3) Opcional: evitar pcrphase si te da problemas
sudo systemctl mask systemd-pcrphase.service

วิธีนี้จะช่วยลดการรอคอยที่ไม่จำเป็นหากอุปกรณ์ของคุณขาด TPM หากคุณเปิดใช้งาน TPM ใน BIOS/UEFI ในภายหลังลบแบล็คลิสต์และเปิดหน่วยเพื่อกู้คืนการวัด

แนวทางปฏิบัติที่ดีและการตัดสินใจที่ไว้วางใจ

บางคนกังวลเรื่อง TPM เพราะมันเป็น "กล่องดำ" เหมือนกับดิสก์ที่เข้ารหัสตัวเอง เรื่องนี้เป็นข้อสงสัยที่สมเหตุสมผล ประเมินโมเดลภัยคุกคามของคุณ และรักษาสมดุลระหว่างการใช้งาน ความเป็นส่วนตัว และการบำรุงรักษา สำหรับหลาย ๆ คน TPM+PBA+UKI ที่ลงนามแล้ว ถือเป็นก้าวกระโดดด้านความปลอดภัยครั้งใหญ่ที่ปราศจากอุปสรรคมากเกินไป

บนฮาร์ดแวร์ที่อนุญาตให้เพิ่ม หน่วยความจำที่เข้ารหัส และหลีกเลี่ยงการพึ่งพาคีย์ของบุคคลที่สามใน Secure Boot จำกัดการใช้คีย์ของคุณเองทุกครั้งที่ทำได้ หมั่นอัปเดตเฟิร์มแวร์และเคอร์เนลอยู่เสมอเพื่อรวมมาตรการบรรเทาปัญหาช่องโหว่ที่เผยแพร่

การเชี่ยวชาญการทำงาน /dev/tpm0, /dev/tpmrm0 และ tpm2_pcrread/tpm2_pcr_extend จะทำให้สามารถบูตได้อย่างมีการวัดผลและเข้ารหัสดิสก์ได้อย่างแข็งแกร่งใน Linux โดยการใช้ UKI และนโยบาย PCR ที่ลงนามแล้ว จะทำให้คุณสามารถทำงานได้อย่างมีเสถียรภาพ และการเพิ่ม PIN ก่อนบูตยังช่วยปกป้องคุณจากการโจมตีที่เป็นรูปธรรมมากขึ้นอีกด้วย สิ่งสำคัญคือการเลือก PCR ให้ดี ลงนามเมื่อมีการเปลี่ยนแปลงบ่อยๆ และเก็บคีย์การกู้คืนที่ดีไว้เสมอ.

Ubuntu 25.10 เบต้ามาพร้อมกับเคอร์เนล Linux 6.17
บทความที่เกี่ยวข้อง:
Ubuntu 25.10 เบต้ามาพร้อมกับ Linux 6.17 และการเปลี่ยนแปลงที่สำคัญ