Mã hóa toàn bộ ổ đĩa với TPM 2.0 trên Ubuntu 24.04: Bảo mật mà không phiền phức

Ubuntu tutorial - IT technology blog
Ubuntu tutorial - IT technology blog

Nỗi ám ảnh mang tên “Gõ mật khẩu Boot” mỗi sáng

Bạn ngồi xuống quán cà phê, mở laptop Ubuntu lên và phải đợi 30 giây chỉ để gõ một dãy passphrase dài dằng dặc trước khi máy thực sự khởi động. Nếu bạn quản lý khoảng 20-30 máy trạm cho team dev, việc này không chỉ gây phiền mà còn làm gián đoạn các kịch bản tự động hóa hoặc khởi động lại server từ xa.

Rủi ro thực tế còn lớn hơn thế. Nếu không mã hóa, một kẻ trộm chỉ mất chưa đầy 2 phút để tháo ổ cứng, gắn vào box di động và sao chép toàn bộ source code hay dữ liệu khách hàng của bạn. LUKS (Linux Unified Key Setup) truyền thống giải quyết được vấn đề bảo mật, nhưng lại đánh đổi bằng sự tiện dụng.

Tại dự án trước đây, mình từng chứng kiến cảnh cả team than phiền vì quy định bắt buộc mã hóa ổ đĩa. Sáng nào anh em cũng mất hứng làm việc chỉ vì cái màn hình đen xì đòi mật khẩu LUKS. Đó là lý do mình chuyển hướng sang tận dụng sức mạnh của chip TPM có sẵn trên máy.

Tại sao LUKS truyền thống vẫn khiến chúng ta mệt mỏi?

Cơ chế cũ lưu khóa giải mã (encryption key) đằng sau một mật khẩu do con người ghi nhớ. Khi máy khởi động, hệ thống nạp một môi trường tối giản (initramfs) và đứng đợi bạn nhập passphrase để giải mã Master Key trong RAM.

Cách làm này tồn tại hai lỗ hổng lớn:

  • Rủi ro vật lý: Mật khẩu có thể bị quay lén (shoulder surfing) hoặc bị bẻ khóa nếu người dùng đặt quá đơn giản.
  • Sự gián đoạn: Server không thể tự phục hồi sau khi mất điện hoặc cập nhật Kernel từ xa. Nó sẽ kẹt vĩnh viễn ở bước nhập mật khẩu nếu không có người can thiệp trực tiếp.

Dữ liệu cần được bảo vệ bằng định danh phần cứng, thứ mà kẻ trộm không thể mang đi dễ dàng như một mảnh giấy ghi mật khẩu.

TPM 2.0: Chìa khóa bảo mật nằm ngay trên Mainboard

Hiện nay có nhiều cách để tự động hóa việc mở khóa, nhưng TPM 2.0 (Trusted Platform Module) là lựa chọn tối ưu nhất. Đây là một con chip chuyên dụng nằm trên bo mạch chủ của hầu hết laptop và PC từ năm 2018 trở lại đây.

Thay vì dựa vào trí nhớ của bạn, TPM lưu trữ khóa mã hóa và chỉ giải phóng nó khi các chỉ số an toàn của hệ thống (như Secure Boot, cấu hình BIOS) khớp hoàn toàn với trạng thái ban đầu. Nếu ai đó tháo ổ cứng của bạn sang máy khác, con chip TPM ở máy đó sẽ không có khóa, và dữ liệu vẫn là một đống ký tự vô nghĩa.

Triển khai thực tế trên Ubuntu 24.04 LTS

Với phiên bản Noble Numbat (24.04), Canonical đã tích hợp sẵn tùy chọn TPM vào bộ cài đặt. Bạn không còn phải gõ hàng chục dòng lệnh phức tạp như trên các bản cũ. Mình đã thử nghiệm trên dàn máy Dell Latitude của công ty và kết quả là máy boot thẳng vào màn hình login chỉ trong chưa đầy 15 giây.

Bước 1: Kiểm tra phần cứng

Đảm bảo máy của bạn đã bật các tính năng sau trong BIOS/UEFI:

  • TPM 2.0: Thường nằm trong mục Security.
  • UEFI Mode: Tắt hoàn toàn Legacy/CSM.
  • Secure Boot: Kích hoạt để tạo chuỗi tin cậy (Chain of Trust).

Bước 2: Cài đặt mới với tùy chọn Hardware-backed

Trong quá trình cài đặt Ubuntu 24.04, tại màn hình “Disk Selection”, hãy thực hiện:

  1. Nhấn vào Advanced Features…
  2. Chọn dòng LVM with encryption.
  3. Đánh dấu vào ô Hardware-backed encryption (TPM).

Hệ thống sẽ tự động sử dụng systemd-cryptenroll để liên kết khóa LUKS với chip TPM của máy.

Bước 3: Quản lý Recovery Key (Bắt buộc)

TPM rất an toàn, nhưng nó cũng rất nhạy cảm. Nếu bạn cập nhật BIOS hoặc thay đổi phần cứng, TPM sẽ từ chối nhả khóa. Lúc này, Recovery Key là cứu cánh duy nhất.

Để xem thông tin các slot khóa, hãy dùng lệnh:

sudo cryptsetup luksDump /dev/nvme0n1p3

(Lưu ý: Thay nvme0n1p3 bằng tên phân vùng thực tế của bạn).

Hãy sao lưu chuỗi Recovery Key vào một trình quản lý mật khẩu hoặc in ra giấy cất vào két sắt. Đừng lưu nó ngay trên chính chiếc máy đang mã hóa.

Bước 4: Nâng cấp cho hệ thống đã cài đặt LUKS thường

Nếu bạn lỡ cài Ubuntu theo cách cũ và muốn chuyển sang dùng TPM, hãy cài đặt công cụ hỗ trợ:

sudo apt update && sudo apt install tpm2-tools systemd-cryptenroll

Sau đó, liên kết ổ đĩa với TPM bằng lệnh:

sudo systemd-cryptenroll --tpm2-device=auto --tpm2-pcrs=0+7 /dev/nvme0n1p3

Ở đây, pcrs=0+7 có nghĩa là khóa sẽ chỉ mở nếu BIOS (PCR 0) và trạng thái Secure Boot (PCR 7) không bị thay đổi. Nếu kẻ gian cố tình tắt Secure Boot để load một OS độc hại, TPM sẽ lập tức phong tỏa khóa.

Lưu ý để tránh mất dữ liệu đáng tiếc

Dưới đây là những kinh nghiệm mình rút ra sau khi triển khai cho nhiều hệ thống:

  • Cảnh giác khi update BIOS: Firmware mới thường làm thay đổi chỉ số PCR. Hãy luôn sẵn sàng Recovery Key trong tay trước khi nhấn nút Update BIOS. Sau khi vào được OS, hãy chạy lại lệnh cryptenroll để cập nhật chỉ số PCR mới vào TPM.
  • Vấn đề Dual Boot: Nếu chạy song song Windows (BitLocker) và Ubuntu, hai hệ điều hành có thể xung đột khi ghi đè các chỉ số PCR. Cách an toàn nhất là dùng hai ổ cứng vật lý độc lập.
  • Nguyên tắc Backup: Mã hóa cực kỳ nghiêm ngặt. Nếu chip TPM hỏng và bạn mất Recovery Key, dữ liệu coi như mất trắng 100%. Luôn có một bản backup dữ liệu quan trọng trên Cloud hoặc ổ cứng rời không mã hóa.

Sử dụng TPM 2.0 trên Ubuntu 24.04 là bước tiến lớn về trải nghiệm. Bạn vừa có được sự bảo mật cấp độ doanh nghiệp, vừa giữ được sự thoải mái khi sử dụng máy tính hàng ngày.

Share: