NỘI DUNG
#1. Hoàn cảnh trong nước và quốc tế
Tình hình là mấy hôm nay ông Microsoft gây sóng gió giang hồ với Windows 11 quá nên dù đã dặn lòng mặc kệ sự đời nhưng cuối cùng tôi cũng không thể cưỡng lại cám dỗ mò vô các trang tin tức để la liếm. Bên cạnh một mớ thông tin lý thú thì yêu cầu phần cứng của Windows 11 cũng làm cho một nhân vật “cũ mèm” đột nhiên nổi tiếng là Trusted Platform Module – TPM. Bạn có thể tua ngược thời gian để coi lại lịch sử phát triển của TPM như hình sau.
Nguồn: https://www.electronicdesign.com
Ở đây có một điểm cần lưu ý ngay, dù TPM đúng là “cũ mèm” với tuổi đời xấp xỉ 20 năm nhưng hiểu rõ nó không phải là vấn đề đơn giản. Trừ trường hợp có công việc liên quan đến TPM (hoặc có sở thích “bệnh hoạn” thích mấy thứ hại não???), phần lớn mọi người (trong đó có tôi) đều chọn giải pháp an toàn là “đứng nhìn TPM từ xa” chứ không dại dột mà sờ mò vô chi cho mệt đầu.
Tuy nhiên, với sự kiện Windows 11 và quyết tâm “phá dớp”, kỳ này tôi sẽ xắn tay áo lên chiến đấu với thằng TPM khó chơi này. Vì nguồn lực có hạn nên tôi sẽ không chơi đôi công – đập phát ăn ngay mà dùng chiến thuật chia để trị, bắn tỉa dần dần các nội dung liên quan đến TPM.
#2. Vậy tóm lại Trusted Platform Module là gì?
Trước khi bay vô đâm chém với mấy nội dung chuyên sâu mệt óc, hiển nhiên tôi sẽ cần tia qua định nghĩa của TPM cái đã.
Nguồn: https://www.infineon.com
Với bản dịch có hơi méo mó nhưng vẫn cố gắng giữ tinh thần của định nghĩa chính chủ về TPM từ Trusted Computing Group (TCG) , tôi có: “Trusted Platform Module – TPM là một microcontroller (vi điều khiển) có thể lưu trữ một cách bảo mật các yếu tố như password, certificate, hoặc encryption key,… dùng để xác thực trên các platform (ví dụ như PC, Laptop, điện thoại hoặc thiết bị mạng – sau đây tôi gọi là platform cho ngắn gọn). TPM cũng có thể được dùng để lưu trữ các platform measurements (tôi tạm dịch làm các phép đo trên các nền tảng) nhằm đảm bảo rằng các platform vẫn đáng tin cậy.”
Với định nghĩa từ cửu âm chân kinh Wikipedia, tôi có “Trusted Platform Module (TPM, còn được biết đến như chuẩn ISO/IEC 11889) là tiêu chuẩn quốc tế về secure cryptoprocessor – tức cũng là microcontroller được thiết kế để bảo mật dạng hardware dựa trên các integrated cryptographic keys – khóa mật mã tích hợp”
Như vậy, về bản chất, TPM với hardware-based cryptography (mật mã dựa trên phần cứng) có thể đảm bảo rằng thông tin được lưu trữ trong hardware được bảo vệ tốt hơn trước các dạng tấn công bên ngoài. Ví dụ, xét kịch bản thúi heo là bạn bị con hàng nào đó tó mất laptop rồi gỡ ổ cứng gắn qua máy khác để đọc trộm dữ liệu. Tuy nhiên, khá nhọ cho đối tượng này là máy bạn đã bật Bitlocker Device Encryption (dựa trên TPM) nên ý đồ xấu xa nói trên sẽ đòi hỏi khá nhiều chất xám (và may mắn) chứ không còn đơn thuần là vặn ốc vít và cắm cáp nữa (Tôi sẽ quay lại chém gió kỹ hơn về kịch bản này sau).
Tuy nhiên, bạn cần lưu ý, thực chất TPM không thể kiểm soát các process chạy trên thiết bị mà chỉ đóng vai trò lưu trữ bảo mật (nghĩa là bảo đảm không có thằng nào được chọc ngoáy vô chỉnh sửa trái phép) các thông tin quan trọng như pre-run time configuration parameters (tôi tạm dịch thông số cấu hình trước khi chạy). Khi đó các application (ứng dụng) có vai trò quản lý sẽ dựa trên các thông tin này và policy (chính sách) liên quan đã được thiết lập trước để kiểm soát việc chạy các process.
#3. Rồi vậy thì Trusted Platform Module làm được gì?
Trước khi quyết định đâm đầu vô hành trình “khổ d*m” với các chi tiết kỹ thuật của TPM, tôi nghĩ bạn nên xem qua thử công dụng của nó trước cái đã rồi hãy quyết định xem có nên tiếp tục hay “quay đầu là bờ”.
Nguồn: https://docs.microsoft.com/
Như tôi giới thiệu ở phần đầu, hiện tại bạn có thể gặp 2 phiên bản chính là TPM 1.2 và TPM 2.0 (ở đây thì số càng to càng tốt). Với TPM 1.2 bạn sẽ có thể thực hiện các việc sau:
- Identification of devices: Nhận diện thiết bị bảo mật hơn thay vì dùng MAC/IP address vốn có thể bị giả mạo;
- Secure generation of keys: Với Hardware Random Number Generator – RNG, bạn có thể tạo các số ngẫu nhiên dựa vào phần cứng, từ đó cải tiến đáng kể độ bảo mật khi tạo khóa (đây là vị trí mà một số giải pháp bảo mật có thể gặp vấn đề);
- Secure storage of keys: Bảo mật các khóa trong quá trình lưu giữ trước các mưu đồ đen tối với software attact của các thế lực thù địch;
- Non-volatile Random Access Memory – NVRAM storage: Duy trì certificate store trong tình huống cần “vệ sinh chuồng trại” cài lại máy móc. Root keys for certificate chains, Endorsement key (EK), Decryption keys (trước khi có thể chuyển qua cho ổ cứng) hay thông tin về trạng thái của thiết bị cũng có thể lưu giữ ở đây;
- Device health attestation: Dùng để chứng thực việc “khám sức khỏe” thiết bị, ngăn ngừa tình huống mấy con hàng đã “xâm hại” thiết bị bấy nhầy nhưng vẫn còn report thiết bị đang ngon;
Với TPM 2.0, bạn sẽ có hết đám skill nói trên và còn được buff thêm:
- Algorithm agility: Linh hoạt về mặt thuật toán. Có thể dùng các dạng hash algorithm (ví dụ SHA 256) thay vì SHA-1 như trong TPM 1.2. Ngoài ra, symmetric algorithm như Advanced Encryption Standard – AES và asymmetric algorithms như Elliptic Curve Cryptography – ECC cũng được bổ sung (RSA đã có trong TPM 1.2) ;
- Enhanced authorization: Tăng cường khả năng phân quyền một cách đồng bộ cũng như mở rộng khả năng kích hoạt các chính sách phân quyền hỗ trợ multifactor/multiuser authentication;
- Quick key loading: Tăng tốc quá trình load key với symmetric thay vì asymmetric encryption;
- Non-brittle Platform Configuration Register – PCR: Thay vì “mong manh dễ vỡ” như trước, việc thay đổi PCR (tôi tạm dịch là thông tin đăng ký cấu hình trên platform) sẽ dễ dàng và linh hoạt hơn (phần này hơi khó hình dung, tôi sẽ minh họa rõ hơn sau);
- Flexible management: Tăng độ linh hoạt cho công tác quản lý với nhiều dạng authorization tách biệt;
- Identifying resources by name: Xử lý vấn đề bảo mật với Indirect references trong TPM 1.2 thông qua việc sử dụng cryptographically secure names.
Lưu ý:
- Về đám hash, tôi có giới thiệu trong nội dung Giải ngố Cryptography – Phần 2: Đảm bảo Integrity với Hashing Algorithm;
- Về symmetric và asymmetric encryption, tôi có giới thiệu trong nội dung Giải ngố Cryptography – Phần 3: Đảm bảo Confidentiality với Encryption và Diffie-Hellman Key Exchange Protocol;
- Về RSA, tôi có giới thiệu trong nội dung Giải ngố Cryptography – Phần 4: Rivest–Shamir–Adleman (RSA), Diffie-Hellman (DH) và ứng dụng trong cấu hình OpenVPN;
- Về ECC, tôi có giới thiệu trong nội dung Giải ngố Cryptography – Phần 5: Elliptic Curve Cryptography (ECC) và ứng dụng trong Blockchain;
- Về AES, tôi có giới thiệu trong nội dung Giải ngố Cryptography – Phần 6: Symmetric Encryption và bí mật về sức mạnh của Advanced Encryption Standard (AES);
Đến đây tôi xin tạm dừng nội dung chém gió giới thiệu ban đầu về TPM. Kỳ tới tôi sẽ xem xét đi sâu hơn vào các chi tiết thông qua ví dụ áp dụng cụ thể chứ nói chung chung thế này tôi thấy nó cứ nhàn nhạt thế nào ấy.