Trusted Platform Module – Nguyên lý hoạt động của Bitlocker, công cụ mã hóa dữ liệu ngon, bổ (và rẻ?)

Tiếp theo nội dung Trusted Platform Module – Ngoài việc phục vụ cho nhu cầu lên đời Windows 11 thì TPM còn để làm gì?, kỳ này tôi sẽ chém tiếp một số nội dung về TPM trước khi bàn về một công cụ bảo mật có liên quan, đó là Bitlocker. Mục tiêu bài viết này hướng đến giới thiệu nguyên lý hoạt động của Bitlocker nhằm tạo bước đệm trước khi tôi bay qua phần demo múa lửa minh họa.

#1. Các thành phần cơ bản của TPM

Trước khi có thể bàn về việc ứng dụng TPM trong Bitlocker, tôi cần tóm lược thông tin về các thành phần của TPM cái đã. Về cơ bản, có thể phân TPM thành 3 nhóm như sau:

  • Cryptographic processor: Đây là bộ xử lý các vấn đề liên quan đến mật mã như Random Number Generator – RNG (bộ tạo số ngẫu nhiên), RSA Key Generator (bộ tạo key RSA), Hash Generator (bộ tạo hash) cũng như Encryption-Decryption Signature Engine;
  • Persistent memory: Đây là kiểu bộ nhớ dài hạn, để lưu mấy thứ sử dụng lâu dài như Endorsement Key – EKStorage Root Key – SRK;
  • Versatile memory: Đây là đối tượng đa năng hay thay đổi chứ không lưu giữ dài hạn. Thằng này chủ yếu sử dụng cho Platform Configuration Registers – PCR (tôi sẽ giới thiệu kỹ hơn ở phần ứng dụng với Bitlocker trong các mục sau), Attestation Identity Keys – AIKStorage Keys.
TPM components
TPM components

Nguồn: https://en.wikipedia.org/

Lưu ý: Tôi có ghi chú các nội dung liên quan như RSA, Hash,… trong kỳ trước rồi nên không nhắc lại nữa, bạn chưa rõ thì de lại kỳ trước xem nhé

#2. Các phương thức triển khai TPM – Trusted Platform Module implementations

Điểm thứ 2 cần lưu ý trước khi đi vào ứng dụng thực tế với Bitlocker đó là các dạng triển khai của TPM. Với TPM 2.0, bạn có các dạng triển khai sau (theo thứ tự giảm dần của mức độ bảo mật):

  • Discrete TPMs:là dạng chip rời chuyên biệt với khả năng bảo mật, chống chịu cao nhất nhờ vào hardware (nếu bạn xài software thì về lý thuyết sẽ có khả năng ăn bug nên sẽ kém tin cậy hơn);
  • Integrated TPMs:là dạng chip tích hợp trên chip khác (hay có thể tạm gọi là “ăn bám” cho dễ hình dung). Chip khác ở đây có thể là chipset mainboard hoặc CPU;
  • Firmware TPMs:là dạng firmware-based (ví dụ Unified Extensible Firmware Interface UEFI) chạy trong Trusted Execution Enviroment – TEE của CPU. Dạng này đều đã được mấy ông đầu bự như Intel, AMD và Qualcom triển khai;
  • Hypervisor TPMs: là dạng “ảo” sống nhờ hypervisor trong môi trường thực thi cô lập (tôi có giới thiệu về cái Hyperviosr trong nội dung Giải ngố Virtualization – Phần 1: Bước chân vào thế giới ảo). Về lý thuyết thì thằng này có độ bảo mật xấp xỉ với Firmware TPMs;
  • Software TPMs:là phần mềm mô phỏng TPM nên mức bảo vệ của nó cũng giống như các chương trình thông thường. Phương án này cũng dễ bị ăn bug hoặc bị bón hành bởi các dạng tấn công trong môi trường thực thi thông thường. Nhìn chung cái này sẽ có giá trị trong quá trình phát triển thử nghiệm.

Các ứng dụng khác nhau có thể sẽ có yêu cầu đặc thù về dạng triển khai của TPM. Do vậy, trước khi cắm đầu vô thử nghiệm, việc đầu tiên bạn nên làm là kiểm tra thông tin về sự tương thích của TPM trên hệ thống và yêu cầu của ứng dụng.

#3. Bitlocker sơ múi được gì từ TPM?

#3.1 Bitlocker có gì hot?

Như đã giới thiệu kỳ trước, Bitlocker có thể tận dụng uy lực của TPM hướng tới việc đập tan các mưu đồ đen tối kiểu như:

  • Đòi đăng nhập hệ thống đọc dữ liệu mà không có credentials chính chủ;
  • Lượm ổ cứng gắn qua hệ thống khác để xem trộm dữ liệu;
  • Đổi cấu hình hệ thống để truy cập dữ liệu;
  • Chạy OS khác để truy cập dữ liệu.

Ngoài ra, dù có thể bạn không để ý, Bitlocker ngoài việc tăng độ bảo mật dữ liệu của bạn trước mưu đồ của phe địch, nó cần phải phải thân thiện với user chính chủ. Tức là, phải tránh việc bắt user chính chủ phải xử lý thêm nhiều bước bảo mật bổ sung để được cấp phép truy cập dữ liệu. Yêu cầu này nghe có vẻ hơi căng nhưng thực tế Bitlocker đã xử lý khá mượt (tôi sẽ làm rõ trong phần demo).

#3.2 Nguyên lý hoạt động của Bitlocker

Bitlocker hoạt động dựa vào Symmetric Encryption (cụ thể là Advanced Encryption Standard – AES trong trường hợp này). Dù hơi trái với tự nhiên, nhưng tôi nhận thấy sẽ dễ hình dung ra nguyên lý hoạt động của Bitlocker hơn nếu xem xét quá trình giải mã trước (quá trình mã hóa tôi sẽ giới thiệu kỹ hơn khi demo).

Về cơ bản, sau khi user đã kích hoạt Bitlocker và khởi động lại máy, các quá trình chính sẽ diễn ra bao gồm:

  • #0. BIOS khởi động và kích hoạt TPM;
  • #1a. Trusted/measured components tương tác với TPM để lưu giữ thông tin component measurements vào PCR (thuộc Versatile memory của TPM như tôi giới thiệu ở Mục 1);
  • #1b. Nếu PCR records khớp giá trị “chuẩn” thì TPM sẽ ói ra SRK (thuộc Persistent memory của TPM như tôi giới thiệu ở Mục 1);
  • # SRK được dùng để giải mã thông tin từ volume metadata thu về Volume Master Key – VMK;
  • #3. VMK được sử dụng để giải mã thông tin từ volume metadata thu về Full Volume Encryption Key – FVEK;
  • #4. FVEK được sử dụng để giải mã Encrypted Data thành Plaintext Data phục vụ ý đồ của user;

 

Bitlocker decryption
Bitlocker decryption

Nguồn: https://docs.microsoft.com/

Lưu ý: Một khi user bật Bitlocker trên một Disk volume, Windows sẽ tạo ra một random VMK (và một Recovery Key để phòng trường hợp thúi heo không giải mã lấy được VMK). VMK sẽ được lưu vào TPM và mã hóa với Recovery Key. Encrypted VMK sau đó được lưu vào disk header.

Nếu bạn để ý kỹ sẽ thấy mấu chốt của vấn đề bảo mật nằm ở 2 bước #1a#1b. Tôi sẽ làm rõ vấn đề quan trọng này ngay bên dưới.

#3.3 Bitlocker sử dụng TPM để bảo mật như thế nào?

Để bảo đảm quá trình truy cập dữ liệu trên không có gì sai trái (tức là dữ liệu mã hóa được giải mã và đọc với đúng thiết bị, đúng configuration và đúng user, không phải kiểu như tình huống có thằng ất ơ nào tém cái ổ cứng của bạn gắn qua máy nó đọc chẳng hạn), TPM sẽ xây dựng Chain of Trust ghi vào PCR với cùng nguyên lý như Blockchain. Mô tả quá trình tương ứng cho Bước #1a khi hệ thống khởi động được tóm lược như sau:

  1. User bấm nút Power On/ Restart;
  2. Static Root of Trust for Measures – SRTM (lưu trong ROM để ngăn việc thay đổi) được load;
  3. SRTM tính hash value của BIOS và lưu vào một record của PCR. Đây là record đầu tiên trong Chain of Trust;
  4. UEFI BIOS được load;
  5. BIOS phân tích configuration của máy bao gồm các thông tin như Hard Drive Partitioning, Master Boot Record – MBR, Bootloader, Firmware Checksums của các thành phần (ví dụ fingerprint/smartcard readers). Lúc này, giống như Blockchain, giá trị của record trước đó trong PCR được kết hợp với các giá trị mới để tính hash value cho record kế tiếp theo dạng “PCR new value = Digest of (PCR old value || data to extend)”. Đây là cơ sở để đảm bảo không thằng nào giở trò thọc gậy bánh xe, lật kèo chỉnh sửa PCR record được;
  6. Sau khi thực hiện hết công việc cần thiết, BIOS load Bootloader từ MBR để Bootloader chèn thêm các record kế tiếp;
  7. OS kernel được khởi động và con hàng này lại tiếp tục chèn thêm record cần thiết vào Chain of Trust trước khi đến thời khắc quan trọng là giải mã dữ liệu cho ứng dụng mà user yêu cầu.
SRTM
SRTM

Nguồn: https://blog.elcomsoft.com/

Đến đây, đám record trong PCR tạo thành một Chain of Trust giống như Blockchain (TPM sẽ không cho phép hiệu chỉnh PCR record đã hiện hữu mà chỉ cho thêm vào) đảm bảo cho bạn kết quả “đo đạc” trong Bước #1a là có thể tin cậy. Như vậy thằng TPM đã hoàn thành nhiệm vụ của nó. Vấn đề “phán quyết” kết quả “đo đạc” do TPM chuyển giao sẽ do một thằng có vai trò Measurement Assessment Authority phụ trách. Dựa trên các thứ gọi là Golden Measurements & Supported Attributes, Measurement Assessment Authority sẽ xác nhận kết quả có chuẩn cmn mực hay không để kêu TPM nhả cái SRK ra như trình bày trong Bước #1b. Nếu bạn đặc biệt hứng thú với vấn đề này thì có đọc thêm trong tài liệu NIST-SP 800-155 BIOS Integrity Measurement Guidelines.

Verify Integrity
Verify Integrity

Nguồn: NIST-SP 800-155 BIOS Integrity Measurement Guidelines

Quay lại vấn đề chính, nếu kết quả phân tích Chain of Trust thông qua việc đọc PCR records phát hiện hệ thống đã mất zin thì TPM nó chỉ nhìn khinh bỉ và nói “Chú mất zin rồi, anh éo nhả SRK đâu. Kêu thằng user đút Recovery Key vô đi”.

Lưu ý:

#3.4 Bitlocker “trâu” như thế đã đủ bảo mật chưa?

Câu trả lời là còn tùy bạn đang đấu với ai. Với đối thủ hạng lông (hoặc có thể lên hạng trung), nhìn chung bạn có thể không cần quá lo lắng. Tuy nhiên, vỏ quýt dày thì có móng tay nhọn, nếu bạn đụng đối thủ hạng nặng, quy trình tưởng chừng hoàn hảo trên vẫn còn có thể bị đâm thọc với một số trò ví dụ như trích VMK từ RAM (cái này thuộc một diễn biến khác, nếu có thể, tôi sẽ quay lại vấn đề này vào một ngày đẹp trời nào đó). Khi đó, có thể bạn sẽ cần thêm các giải pháp bổ sung. Ví dụ, với chiêu trích VMK từ RAM, bạn có thể sử dụng giải pháp là kết hợp TPM với PIN code như một phương án bảo vệ trong quá trình pre-boot. Trong tình huống đó, sau khi TPM xác nhận các thành phần trước khi khởi động, user sẽ được yêu cầu nhập PIN để quá trình khởi động có thể tiếp tục trước khi unlock Encrypted Volume. Ngoài PIN, bạn cũng có thể gặp dạng Startup Key như minh họa sau.

TPM encryption options
TPM encryption options

Nguồn: https://docs.microsoft.com/

Nói chung, cuộc chiến trường kỳ của phe tấn công và phe phòng thủ rất tốn giấy mực. Tôi hy vọng có thể sắp xếp để quay lại bàn kỹ thêm về vấn đề này sau.

1 thought on “Trusted Platform Module – Nguyên lý hoạt động của Bitlocker, công cụ mã hóa dữ liệu ngon, bổ (và rẻ?)”

Leave a Reply

Your email address will not be published. Required fields are marked *